else
# search SMESH binaries in PATH variable
- AC_PATH_PROG(TEMP, libSMESH_Swig.py)
+ #CCRTAC_PATH_PROG(TEMP, libSMESH_Swig.py)
+ #AC_PATH_PROG(TEMP, MED_Test)
+ AC_PATH_PROG(TEMP, smesh.py)
if test "x$TEMP" != "x" ; then
SMESH_BIN_DIR=`dirname $TEMP`
SMESH_DIR=`dirname $SMESH_BIN_DIR`
#
fi
-if test -f ${SMESH_DIR}/bin/salome/libSMESH_Swig.py ; then
+#CCRTif test -f ${SMESH_DIR}/bin/salome/libSMESH_Swig.py ; then
+#if test -f ${SMESH_DIR}/bin/salome/MED_Test ; then
+if test -f ${SMESH_DIR}/bin/salome/smesh.py ; then
SMesh_ok=yes
AC_MSG_RESULT(Using SMesh module distribution in ${SMESH_DIR})
ORIG_DIR=`pwd`
CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
+SMESH_WITH_GUI="yes"
########################################################################
# Test if the KERNEL_ROOT_DIR is set correctly
# exit
#fi
+for option
+do
+ case $option in
+ -with-ihm | --with-ihm)
+ SMESH_WITH_GUI="yes"
+ break;;
+ -without-ihm | --without-ihm | -with-ihm=no | --with-ihm=no)
+ SMESH_WITH_GUI="no"
+ break;;
+ esac
+done
+
########################################################################
# Test if the GUI_ROOT_DIR is set correctly
-if test ! -d "${GUI_ROOT_DIR}"; then
- echo "failed : GUI_ROOT_DIR variable is not correct !"
- exit
+if test ${SMESH_WITH_GUI} = yes; then
+ if test ! -d "${GUI_ROOT_DIR}"; then
+ echo "failed : GUI_ROOT_DIR variable is not correct !"
+ exit
+ fi
fi
########################################################################
cd ${CONF_DIR}
ABS_CONF_DIR=`pwd`
+#######################################################################
+# Update configure.ac script: to set SMESH_WITH_GUI variable
+sed -e s/SMESH_WITH_GUI=[a-z]*/SMESH_WITH_GUI=${SMESH_WITH_GUI}/g configure.ac > configure.tmp
+mv -f configure.tmp configure.ac
+
mkdir -p salome_adm/unix/config_files
-cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files/* salome_adm/unix/config_files
-cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/pythonbe.py salome_adm/unix
+#cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files/* salome_adm/unix/config_files
+#cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/pythonbe.py salome_adm/unix
cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/SALOMEconfig.h.in salome_adm/unix
-cp -f ${GUI_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
-cp -f ${MED_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
-cp -f ${GEOM_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
+#cp -f ${GUI_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
+#cp -f ${MED_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
+#cp -f ${GEOM_ROOT_DIR}/adm_local/unix/config_files/* salome_adm/unix/config_files
# remove KERNEL deprecated configure files
-for deprecated in ac_cc_warnings.m4 ac_cxx_partial_specialization.m4 \
- check_mico.m4 config.guess ltmain.sh ac_cxx_bool.m4 ltconfig ac_cxx_typename.m4 \
- check_pthreads.m4 config.sub libtool.m4 ac_cxx_mutable.m4 missing
- do
- rm -f salome_adm/unix/config_files/${deprecated}
- done
+#for deprecated in ac_cc_warnings.m4 ac_cxx_partial_specialization.m4 \
+# check_mico.m4 config.guess ltmain.sh ac_cxx_bool.m4 ltconfig ac_cxx_typename.m4 \
+# check_pthreads.m4 config.sub libtool.m4 ac_cxx_mutable.m4 missing
+# do
+# rm -f salome_adm/unix/config_files/${deprecated}
+# done
# ____________________________________________________________________
# autom4te.cache (directory)
echo "====================================================== aclocal"
-aclocal -I adm_local/unix/config_files -I salome_adm/unix/config_files || exit 1
+if test ${SMESH_WITH_GUI} = yes; then
+ aclocal -I adm_local/unix/config_files \
+ -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
+ -I ${GUI_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${MED_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files || exit 1
+else
+ aclocal -I adm_local/unix/config_files \
+ -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
+ -I ${MED_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files || exit 1
+fi
# ____________________________________________________________________
# libtoolize creates some configuration files (ltmain.sh,
#
-AC_INIT([Salome2 Project SMESH module], [4.0.0], [gboulant@CS], [salome])
+AC_INIT([Salome2 Project SMESH module], [4.1.1], [webmaster.salome@opencascade.com], [salome])
AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE
-PACKAGE=salome
-AC_SUBST(PACKAGE)
-
-VERSION=4.0.0
-XVERSION=0x040000
-AC_SUBST(VERSION)
+XVERSION=`echo $VERSION | awk -F. '{printf("0x%02x%02x%02x",$1,$2,$3)}'`
AC_SUBST(XVERSION)
# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
ENABLE_PTHREADS
-if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
+SMESH_WITH_GUI=yes
+
+AM_CONDITIONAL(SMESH_ENABLE_GUI, [test "${SMESH_WITH_GUI}" = "yes"])
+
+if test "${SMESH_WITH_GUI}" = "yes"; then
+
echo
echo ---------------------------------------------
-echo testing omniORB
+echo testing msg2qm
echo ---------------------------------------------
echo
-CHECK_OMNIORB
+CHECK_MSG2QM
+
+fi
+
+if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
+ echo
+ echo ---------------------------------------------
+ echo testing omniORB
+ echo ---------------------------------------------
+ echo
+
+ CHECK_OMNIORB
dnl echo
dnl echo ---------------------------------------------
dnl CHECK_MICO
-echo
-echo ---------------------------------------------
-echo default ORB : omniORB
-echo ---------------------------------------------
-echo
+ echo
+ echo ---------------------------------------------
+ echo default ORB : omniORB
+ echo ---------------------------------------------
+ echo
-DEFAULT_ORB=omniORB
+ DEFAULT_ORB=omniORB
-echo
-echo ---------------------------------------------
-echo testing Corba
-echo ---------------------------------------------
-echo
+ echo
+ echo ---------------------------------------------
+ echo testing Corba
+ echo ---------------------------------------------
+ echo
-CHECK_CORBA
+ CHECK_CORBA
-AC_SUBST_FILE(CORBA)
-corba=make_$ORB
-CORBA=adm_local/unix/$corba
+ AC_SUBST_FILE(CORBA)
+ corba=make_$ORB
+ CORBA=adm_local/unix/$corba
fi
-echo
-echo ---------------------------------------------
-echo testing openGL
-echo ---------------------------------------------
-echo
-CHECK_OPENGL
-echo
-echo ---------------------------------------------
-echo testing QT
-echo ---------------------------------------------
-echo
+if test "${SMESH_WITH_GUI}" = "yes"; then
+ echo
+ echo ---------------------------------------------
+ echo testing openGL
+ echo ---------------------------------------------
+ echo
-CHECK_QT
+ CHECK_OPENGL
-echo
-echo ---------------------------------------------
-echo testing msg2qm
-echo ---------------------------------------------
-echo
+ echo
+ echo ---------------------------------------------
+ echo testing QT
+ echo ---------------------------------------------
+ echo
-CHECK_MSG2QM
+ CHECK_QT
-echo
-echo ---------------------------------------------
-echo testing VTK
-echo ---------------------------------------------
-echo
+ echo
+ echo ---------------------------------------------
+ echo testing VTK
+ echo ---------------------------------------------
+ echo
+
+ CHECK_VTK
-CHECK_VTK
+ echo
+ echo ---------------------------------------------
+ echo Testing GUI
+ echo ---------------------------------------------
+ echo
+
+ CHECK_SALOME_GUI
+
+ echo
+ echo ---------------------------------------------
+ echo Testing full GUI
+ echo ---------------------------------------------
+ echo
+
+ CHECK_CORBA_IN_GUI
+ if test "x${CORBA_IN_GUI}" != "xyes"; then
+ echo "failed : For configure SMESH module necessary full GUI !"
+ exit
+ fi
+fi
echo
echo ---------------------------------------------
CHECK_CAS
+if test "${SMESH_WITH_GUI}" = "yes"; then
+
echo
echo ---------------------------------------------
echo Testing qwt
CHECK_QWT
+fi
+
echo
echo ---------------------------------------------
echo Testing html generators
CHECK_HTML_GENERATORS
-echo
-echo ---------------------------------------------
-echo Testing GUI
-echo ---------------------------------------------
-echo
-
-CHECK_SALOME_GUI
-
-echo
-echo ---------------------------------------------
-echo Testing full GUI
-echo ---------------------------------------------
-echo
-
-CHECK_CORBA_IN_GUI
-if test "x${CORBA_IN_GUI}" != "xyes"; then
- echo "failed : For configure SMESH module necessary full GUI !"
- exit
-fi
-
echo
echo ---------------------------------------------
echo Testing Kernel
echo
echo Configure
+if test "${SMESH_WITH_GUI}" = "yes"; then
variables="cc_ok fortran_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok qwt_ok Kernel_ok Geom_ok Med_ok"
+fi
+
+if test "${SMESH_WITH_GUI}" = "no"; then
+variables="cc_ok fortran_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok Med_ok"
+fi
for var in $variables
do
./doc/Makefile \
./doc/salome/Makefile \
./doc/salome/gui/Makefile \
+ ./doc/salome/gui/SMESH/doxyfile \
+ ./doc/salome/gui/SMESH/doxyfile_py \
./doc/salome/tui/Makefile \
./doc/salome/tui/SMESH/doxyfile \
./doc/salome/tui/SMESH/sources/static/tree.js \
./src/SMESHGUI/Makefile \
./src/SMESH_I/Makefile \
./src/SMESH_SWIG/Makefile \
+ ./src/SMESH_SWIG_WITHIHM/Makefile \
./src/StdMeshers/Makefile \
./src/StdMeshersGUI/Makefile \
./src/StdMeshers_I/Makefile \
EXTRA_DIST+=SMESH
+doxygen=@DOXYGEN@
+
usr_docs:
- cp -fr $(srcdir)/SMESH ./
- -find $(PWD) -name CVS -prune -exec rm -rf {} \;
+ cd ./SMESH; \
+ echo "Processing smeshDC.py file: "; \
+ $(doxygen) ./doxyfile_py; \
+ sed 's|../../../share/salome|$(top_srcdir)|' ./doxyfile > ./doxyfile1; \
+ mv -f doxyfile1 doxyfile; \
+ echo "Running doxygen in directory: "`pwd`; \
+ $(doxygen) ./doxyfile;
docs: usr_docs
uninstall-local:
rm -rf $(docdir)/gui/SMESH
+
+docguidir=$(docdir)/gui/SMESH
+
+nodist_docgui_DATA= SMESH/doxyfile
+nodist_docgui_DATA+= SMESH/doxyfile_py
+EXTRA_DIST+= SMESH/doxyfile.in
+EXTRA_DIST+= SMESH/doxyfile_py.in
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>About viewing meshes</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:25px; height:24px; border-style:none; }
-p.whs2 { font-weight:normal; }
-p.whs3 { margin-left:40px; }
-img_whs4 { border:none; width:404px; height:413px; border-style:none; }
-ul.whs5 { list-style:disc; }
-p.whs6 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nViewing meshes\nViewing meshes");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Viewing meshes</h1>
-
-<p>After definition of algorithms and hypotheses a new mesh is listed in
- the Object Browser. Right-click on it and select <img src="image28.gif" width="25px" height="24px" border="0" class="img_whs1"> <span
- style="font-weight: bold;"><B>Compute</B></span> - the mesh will be automatically
- displayed in the <span style="font-weight: bold;"><B>VTK 3D Viewer.</B></span>
- Alternatively click<span style="font-weight: bold;"><B> Display only</B></span>
- to hide all other objects at the same time. </p>
-
-<p> </p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>VTK 3D
- Viewer</B></span> is detailly described in the documentation on <span style="font-weight: bold;"><B>GUI
- module</B></span>.</p>
-
-<p>After the mesh has appeared in the Viewer, you can select it with left
- mouse click and get
- information about it, change its presentation parameters and access to
- other useful options by right-clicking on the selected mesh<span style="font-weight: bold;"><B>.</B></span></p>
-
-<p> </p>
-
-<p class="whs3"><img src="image15.jpg" width="404px" height="413px" border="0" class="img_whs4"></p>
-
-<p> </p>
-
-<ul type="disc" class="whs5">
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Erase all</B></span>
- - allows
- to hide all objects in the viewer</p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Update</B></span>
- - refreshes the presentation of your mesh in the Object Browser, applying
- all recent changes.</p></li>
-
- <li class=kadov-p><p><a href="files/viewing_mesh_info.htm#advanced infos" style="font-weight: bold;">Advanced Mesh Infos</a>
- - provides
- more detailed information about the mesh. </p></li>
-
- <li class=kadov-p><p class="whs6"><a href="files/viewing_mesh_info.htm#standard_infos">Standard
- Mesh Infos</a> - <span style="font-weight: normal;">provides basic information
- about the mesh.</span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><a href="files/displaying_nodes_numbers.htm">Numbering</a></B></span>
- - allows
- to display the ID numbers of all meshing elements or nodes composing your
- mesh in the viewer.</p></li>
-
- <li class=kadov-p><p class="whs6"><a href="presentation.htm" style="font-weight: bold;">Display
- Mode</a> - <span style="font-weight: normal;">allows to select between
- Wireframe, Shading and Nodes presentation.</span></p></li>
-
- <li class=kadov-p><p><a href="display_entity.htm" style="font-weight: bold;">Display Entity</a>
- - allows to display Faces, Edges or both. </p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Colors / Size</B></span>
- - allows to select color and size of meshes.</p></li>
-
- <li class=kadov-p><p><a href="transparency.htm" style="font-weight: bold;">Transparency</a>
- - allows to change the transparency of mesh elements.</p></li>
-
- <li class=kadov-p><p><a href="clipping.htm" style="font-weight: bold;">Clipping</a> - allows
- to create cross-sections of the selected objects.</p></li>
-
- <li class=kadov-p><p><a href="files/about_quality_controls.htm" style="font-weight: bold;">Quality Controls</a>
- - graphically presents various information about meshes.</p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Erase</B></span>
- - allows to hide the selected mesh from the viewer. </p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Display Only</B></span>
- -allows to display only the selected mesh, hiding all other from the viewer.</p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Dump view</B></span>
- - exports an object from the viewer in bmp, png, jpg or jpeg image format.
- </p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Change background</B></span>
- - allows to redefine the background color. By default it is black. </p></li>
-</ul>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Adding Quadratic Nodes and Elements</title>
-<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-left:40px; }
-img_whs2 { border:none; width:148px; height:168px; border-style:none; }
-img_whs3 { border:none; width:332px; height:350px; float:none; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nAdding quadratic elements");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Adding Quadratic Elements</h1>
-
-<p>MESH modules allows you to work with <span style="font-weight: bold;"><B>Quadratic
- Elements</B></span>.</p>
-
-<p>Quadratic Edge in not a straight but a broken line and can be defined
- by three points: first, middle and last. All more complex <span style="font-weight: bold;"><B>Quadratic
- Elements</B></span> differ from ordinary ones in that they consist of Quadratic
- Edges.</p>
-
-<p class=TODO
- style="font-family: 'Arial Black', sans-serif; font-style: italic;">To
- add a quadratic element to your mesh:</p>
-
-<p class="whs1">1. Select your mesh in the Object Browser
- or in the 3D viewer.</p>
-
-<p class="whs1">2. From the <span style="font-weight: bold;"><B>Modification
- </B></span>menu choose the <span style="font-weight: bold;"><B>Add </B></span>item
- and select one of the following: </p>
-
-<p class="whs1"><img src="image152.gif" width="148px" height="168px" border="0" class="img_whs2"></p>
-
-<p class="whs1">To create any <span style="font-weight: bold;"><B>Quadratic
- Element </B></span>specify the nodes which will form your triangle by selecting
- them in the 3D viewer with pressed Shift button. Their numbers will appear
- in the dialog box as <span style="font-weight: bold;"><B>Corner Nodes</B></span>
- (alternatively you can just input numbers in this field without selection).The
- edges formed by the corner nodes will appear in the table. To define the
- middle nodes for each edge double-click on the respective field and input
- the number of the node. All edges and the object formed by them will be
- displayed in the Object browser. When all edges are defined you will be
- able to click <span style="font-weight: bold;"><B>OK</B></span> or <span style="font-weight: bold;"><B>Apply</B></span>
- button to add the element to the mesh. </p>
-
-<p class="whs1"> <img src="pics/aqt.png" x-maintain-ratio="TRUE" width="332px" height="350px" border="0" class="img_whs3"></p>
-
-<p class="whs1"><span style="font-weight: bold;"><B>Reverse</B></span>
- button for Quadratic Edges switches the first and the last nodes. <span
- style="margin-left: 40px;">For all other elements it reverses the element.
- </span></p>
-
-<p class="whs1"> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Aspect ratio 3D</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:416px; height:385px; border-style:none; }
-img_whs2 { border:none; width:30px; height:30px; float:none; border-style:none; }
-ul.whs3 { list-style:disc; }
-img_whs4 { border:none; width:258px; height:246px; border-style:none; float:left; }
-img_whs5 { border:none; width:133px; height:56px; border-style:none; }
-img_whs6 { border:none; width:425px; height:192px; border-style:none; }
-img_whs7 { border:none; width:89px; height:32px; border-style:none; }
-img_whs8 { border:none; width:569px; height:386px; float:none; border-style:none; }
-p.whs9 { margin-left:40px; }
-img_whs10 { border:none; width:24px; height:26px; border-style:none; }
-p.whs11 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs11 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nAspect ratio 3D");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Aspect ratio 3D</h1>
-
-<p><img src="image86.jpg" width="416px" height="385px" border="0" class="img_whs1"></p>
-
-<p> </p>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs2"> The Aspect Ratio 3D mesh quality criterion calculates
- the same parameter as the <a href="files/aspect_ratio.htm">Aspect ratio</a>
- criterion, but it is applied to 3D mesh elements: tetrahedrons, pentahedrons,
- hexahedrons, etc. </p>
-
-<p> </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p><img src="image20.gif" width="258px" height="246px" align="left" border="0" class="img_whs4">The <span style="font-weight: bold;"><B>Aspect
- Ratio</B></span> of a <span style="font-weight: bold;"><B>tetrahedron</B></span>
- 3D element is calculated by the formula:</p></li>
-</ul>
-
-<p> </p>
-
-<p> </p>
-
-<p><img src="image19.gif" width="133px" height="56px" border="0" class="img_whs5">,</p>
-
-<p> </p>
-
-<p>where <span style="font-weight: bold; font-style: italic;"><I><B>S</B></I></span><span
- style="font-weight: bold;
- font-style: italic;
- vertical-align: Sub;"><I><B>K</B></I></span> is the sum of surfaces of the faces
- of К and <span style="font-weight: bold; font-style: italic;"><I><B>V</B></I></span><span
- style="vertical-align: Sub;
- font-weight: bold;
- font-style: italic;"><I><B>K</B></I></span> is the volume of К :</p>
-
-<p> </p>
-
-<p><img src="image18.gif" width="425px" height="192px" border="0" class="img_whs6">T</p>
-
-<p> </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p>Other element types like quadrangle, pentahedron
- and hexahedron use the following formula:</p></li>
-</ul>
-
-<p><img src="image30.gif" width="89px" height="32px" border="0" class="img_whs7"> , where <span style="font-weight: bold; font-style: italic;"><I><B>Q</B></I></span><span
- style="vertical-align: Sub;
- font-weight: bold;
- font-style: italic;"><I><B>i</B></I></span> represents the value of <span style="font-weight: bold; font-style: italic;"><I><B>Q</B></I></span><span
- style="vertical-align: Sub;
- font-weight: bold;
- font-style: italic;"><I><B>k</B></I></span> for all possible simplexes (of the
- same dimension as the element) that compose the element.</p>
-
-<p>For example, a hexahedron is split in 6 tetrahedrons, the <span style="font-weight: bold;"><B>Aspect
- ratio 3D</B></span> is calculated for each of them, then the greatest <span
- style="font-weight: bold; font-style: italic;"><I><B>Q</B></I></span><span style="vertical-align: Sub;
- font-weight: bold;
- font-style: italic;"><I><B>k</B></I></span> is considered to be the <span
- style="font-weight: bold;"><B>Aspect ratio 3D</B></span>
- criterion for the whole hexahedron.</p>
-
-<p><img src="pics/image139.gif" x-maintain-ratio="TRUE" width="569px" height="386px" border="0" class="img_whs8"></p>
-
-<p> </p>
-
-<p class=TODO>To apply the Aspect Ratio 3D quality criterion to your mesh:</p>
-
-<p class=TODO> </p>
-
-<p class="whs9">1. Display your mesh in the viewer.</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">2. Choose <span style="font-weight: bold;"><B>Controls
- > Aspect Ratio 3D </B></span>or click <img src="image144.gif" width="24px" height="26px" border="0" class="img_whs10"> button of the toolbar.
- Your mesh will be displayed in the viewer with its elements colored according
- to the applied mesh quality control criterion:</p>
-
-<p> </p>
-
-<p class="whs11"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of an <span style="font-weight: bold;"><B><a href="quality_controls.htm#bookmark11">Aspect
- Ratio 3D</B></span> quality control</a> operation. </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Borders at multi-connection</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; width:223px; height:213px; border-style:none; }
-p.whs4 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs4 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nBorders at multi-connection");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Borders at multi-connection</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1">This mesh quality control highlights borders of faces
- consisting of edges belonging to several faces. The amount of faces is
- specified by user.</p>
-
-<p> </p>
-
-<p class="whs2"><img src="image151.gif" width="223px" height="213px" border="0" class="img_whs3"></p>
-
-<p> </p>
-
-<p>In this picture the borders at multi-connection are displayed in blue.</p>
-
-<p> </p>
-
-<p class="whs4"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark1">Borders
- at Multi-Connection quality control</a> operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Borders at multiconnection 2D</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-img_whs2 { border:none; width:420px; height:312px; border-style:none; }
-p.whs3 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs3 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nBorders at multi-connection 2D");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Borders at multi-connection 2D</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1">This mesh quality control highlights borders of elements
- of mesh, consisting of edges belonging to several elements of mesh. </p>
-
-<p> </p>
-
-<p> <img src="image127.gif" width="420px" height="312px" border="0" class="img_whs2"></p>
-
-<p> </p>
-
-<p class="whs3"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark5">Borders
- at Multi-Connection quality control</a> operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Building Compounds</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 { font-family:'Arial Black' , sans-serif; font-style:italic; }\r
-p.whs2 { margin-left:40px; }\r
-img_whs3 { border:none; width:25px; height:24px; border-style:none; }\r
-p.whs4 { margin-left:80px; }\r
-img_whs5 { border:none; width:420px; height:367px; float:none; border-style:none; }\r
-ul.whs6 { list-style:disc; }\r
-p.whs7 { margin-left:80px; margin-top:0pt; margin-bottom:0pt; }\r
-p.whs8 { margin-top:0pt; margin-bottom:0pt; margin-left:120px; }\r
-p.whs9 { margin-left:80px; margin-top:0pt; margin-bottom:0pt; font-weight:bold; }\r
-p.whs10 { margin-top:0pt; margin-bottom:0pt; font-style:italic; margin-left:24px; }\r
-img_whs11 { border:none; width:245px; height:257px; border-style:none; }\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.whs7 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs9 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs10 {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\nCreating meshes\nBuilding Compounds");\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>Building Compounds</h1>\r
-\r
-<p>Compound Mesh is a combination of several meshes.</p>\r
-\r
-<p class="whs1"> To \r
- Build a compound:</p>\r
-\r
-<p class="whs2">From the <span style="font-weight: bold;"><B>Mesh</B></span> \r
- menu select <span style="font-weight: bold;"><B>Build Compound</B></span> or \r
- click <img src="image161.gif" width="25px" height="24px" border="0" class="img_whs3"> button in the toolbar. The following dialog box will \r
- appear: </p>\r
-\r
-<p class="whs4"><img src="pics/buildcompound.png" x-maintain-ratio="TRUE" width="420px" height="367px" border="0" class="img_whs5"></p>\r
-\r
-<ul type="disc" class="whs6">\r
- \r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Name</B></span> \r
- - allows selecting the name of the resulting <span style="font-weight: bold;"><B>Compound</B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Meshes \r
- </B></span>- allows selecting the meshes which will be concatenated. They \r
- can be chosen in the Object Browser while holding <span style="font-weight: bold;"><B>Ctrl</B></span> \r
- button.</p></li>\r
- \r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Processing \r
- identical groups</B></span> - allows selecting the method of processing the \r
- namesake existing on the united meshes. They can be either </p></li>\r
- \r
- <li class=kadov-p><p class="whs8"><span style="font-weight: bold;"><B>United</B></span> \r
- - all elements of Group1 \r
- on Mesh_1 and \r
- Group1 on Mesh_2 \r
- become the elements of Group1 \r
- on the Compound_Mesh, \r
- or</p></li>\r
- \r
- <li class=kadov-p><p class="whs8"><span style="font-weight: bold;"><B>Renamed</B></span> \r
- - Group1 on \r
- Mesh_1 becomes \r
- Group1_1 and \r
- Group1 on Mesh_2 \r
- becomes Group1_2. \r
- See <span style="font-weight: bold;"><B><a href="grouping_elements.htm">Creating \r
- Groups</a></B></span> for more information about groups. </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: normal;">You \r
- can simply unite meshes or choose to</span> Merge coincident nodes and \r
- elements, <span style="font-weight: normal;">in which case it is possible \r
- to define the</span> Tolerance <span style="font-weight: normal;">for \r
- this operation.</span> </p></li>\r
-</ul>\r
-\r
-<p class="whs10">Example:</p>\r
-\r
-<p class="whs4"><img src="image160.gif" width="245px" height="257px" border="0" class="img_whs11"></p>\r
-\r
-<p> </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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Clipping</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; }
-img_whs2 { border:none; width:332px; height:327px; float:none; border-style:none; }
-p.whs3 { font-weight:bold; margin-left:40px; }
-img_whs4 { border:none; width:326px; height:199px; border-style:none; }
-p.whs5 { font-weight:bold; }
-img_whs6 { border:none; width:329px; height:210px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nViewing meshes\nClipping");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Clipping</h1>
-
-<p>Using this menu you can create cross-section views (clipping planes)
- of your mesh.</p>
-
-<p> </p>
-
-<p>To start, click on the New button. </p>
-
-<p> </p>
-
-<p class="whs1"><img src="pics/a-clipping2.png" x-maintain-ratio="TRUE" width="332px" height="327px" border="0" class="img_whs2"></p>
-
-<p> </p>
-
-<p>Now you can define the parameters of your cross-section: <span style="font-weight: bold;"><B>Orientation</B></span>
- (X-Y, X-Z
- or Y-Z); <span style="font-weight: bold;"><B>Distance </B></span>between the
- opposite extremities of the object,<span style="font-weight: bold;"> <B></B></span>if
- it is set to 0.5 the object is split in two halves; and <span style="font-weight: bold;"><B>Rotation</B></span>
- (in angle degrees) <span style="font-weight: bold;"><B>around X (Y to Z)
- </B></span>and<span style="font-weight: bold;"><B> around Y (X to Z)</B></span>.
- If the <span style="font-weight: bold;"><B>Show preview</B></span> button is
- on, you can see the clipping plane in the <span style="font-weight: bold;"><B>Object
- window. </B></span></p>
-
-<p> </p>
-
-<p class="whs3"><img src="image79.jpg" width="326px" height="199px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><span style="font-weight: normal;">If the</span>
- Auto Apply<span style="font-weight: normal;"> button is on, you can preview
- the cross-section in the</span> Object window</p>
-
-<p class="whs5"> </p>
-
-<p class="whs3"><img src="image99.gif" width="329px" height="210px" border="0" class="img_whs6"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><span style="font-weight: normal;">To get
- a new object from </span>Clipping, <span style="font-weight: normal;">click</span>
- Ok. </p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Constructing Meshes</title>
-<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; }
-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">
-<!--
-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.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);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nCreating Meshes");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Creating Meshes</h1>
-
-<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">Other examples of python
- scripts will be also updated soon to use smesh package instead of direct
- usage of idl interface. </p>
-
-<h3><a name=bookmark>Construction of a Mesh</a></h3>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a box</p>
-
-<p class="whs2">box = geompy.MakeBox(0.,
- 0., 0., 100., 200., 300.)</p>
-
-<p class="whs2">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a mesh</p>
-
-<p class="whs2">tetra = smesh.Mesh(box,
- "MeshBox")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">algo1D = tetra.Segment()</p>
-
-<p class="whs2">algo1D.NumberOfSegments(7)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">algo2D = tetra.Triangle()</p>
-
-<p class="whs2">algo2D.MaxElementArea(800.)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-
-<p class="whs2">algo3D.MaxElementVolume(900.)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">ret = tetra.Compute()</p>
-
-<p class="whs2">if ret == 0:</p>
-
-<p class="whs2"> print
- "problem when computing the mesh"</p>
-
-<p class="whs2">else:</p>
-
-<p class="whs2"> print
- "mesh computed"</p>
-
-<p class="whs2"> pass
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<h3><a name=bookmark1>Construction of a Submesh</a></h3>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">from
- geompy import *</span></p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a box</p>
-
-<p class="whs4">box = MakeBoxDXDYDZ(10., 10., 10.)</p>
-
-<p class="whs4">addToStudy(box, "Box")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># select one edge of
- the box for definition of a local hypothesis</p>
-
-<p class="whs4">p5 = MakeVertex(5., 0., 0.)</p>
-
-<p class="whs4">EdgeX = GetEdgeNearPoint(box, p5)</p>
-
-<p class="whs4">addToStudyInFather(box, EdgeX, "Edge
- [0,0,0 - 10,0,0]")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a hexahedral
- mesh on the box</p>
-
-<p class="whs4">quadra = smesh.Mesh(box, "Box : quadrangle
- 2D mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a regular
- 1D algorithm for the faces</p>
-
-<p class="whs4">algo1D = quadra.Segment()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define "NumberOfSegments"
- hypothesis to cut</p>
-
-<p class="whs5"># all the edges in
- a fixed number of segments</p>
-
-<p class="whs4">algo1D.NumberOfSegments(4)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a quadrangle
- 2D algorithm for the faces</p>
-
-<p class="whs4">quadra.Quadrangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># construct a submesh
- on the edge with a local hypothesis</p>
-
-<p class="whs4">algo_local = quadra.Segment(EdgeX)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define "Arithmetic1D"
- 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="whs4">algo_local.Arithmetic1D(1, 4)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define "Propagation"
- hypothesis that propagates all other hypotheses</p>
-
-<p class="whs5"># on all edges of the
- opposite side in case of quadrangular faces</p>
-
-<p class="whs4">algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">quadra.Compute() </p>
-
-<p class="whs4"> </p>
-
-<h3><a name=bookmark2>Editing of a mesh</a></h3>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">def PrintMeshInfo(theMesh):</p>
-
-<p class="whs4"> aMesh
- = theMesh.GetMesh()</p>
-
-<p class="whs4"> print
- "Information about mesh:"</p>
-
-<p class="whs4"> print
- "Number of nodes :
- ", aMesh.NbNodes()</p>
-
-<p class="whs4"> print
- "Number of edges :
- ", aMesh.NbEdges()</p>
-
-<p class="whs4"> print
- "Number of faces :
- ", aMesh.NbFaces()</p>
-
-<p class="whs4"> print
- "Number of volumes :
- ", aMesh.NbVolumes()</p>
-
-<p class="whs4"> pass</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a box</p>
-
-<p class="whs4">box = geompy.MakeBox(0., 0., 0., 20.,
- 20., 20.)</p>
-
-<p class="whs4">geompy.addToStudy(box, "box")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># select one edge of
- the box for definition of a local hypothesis</p>
-
-<p class="whs4">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["EDGE"])</p>
-
-<p class="whs4">edge = subShapeList[0]</p>
-
-<p class="whs4">name = geompy.SubShapeName(edge, box)</p>
-
-<p class="whs4">geompy.addToStudyInFather(box, edge, name)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh</p>
-
-<p class="whs4">tria = smesh.Mesh(box, "Mesh 2D")</p>
-
-<p class="whs4">algo1D = tria.Segment()</p>
-
-<p class="whs4">hyp1 = algo1D.NumberOfSegments(3)</p>
-
-<p class="whs4">algo2D = tria.Triangle()</p>
-
-<p class="whs4">hyp2 = algo2D.MaxElementArea(10.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a sub-mesh</p>
-
-<p class="whs4">algo_local = tria.Segment(edge)</p>
-
-<p class="whs4">hyp3 = algo_local.Arithmetic1D(1, 6)</p>
-
-<p class="whs4">hyp4 = algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">tria.Compute()</p>
-
-<p class="whs4">PrintMeshInfo(tria)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># remove a local hypothesis</p>
-
-<p class="whs4">mesh = tria.GetMesh()</p>
-
-<p class="whs4">mesh.RemoveHypothesis(edge, hyp4)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">tria.Compute()</p>
-
-<p class="whs4">PrintMeshInfo(tria)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># change the value
- of the 2D hypothesis</p>
-
-<p class="whs4">hyp2.SetMaxElementArea(2.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">tria.Compute()</p>
-
-<p class="whs4">PrintMeshInfo(tria) </p>
-
-<p class="whs6"> </p>
-
-<h3><a name=bookmark3>Export of a Mesh</a></h3>
-
-<p class="whs7">import geompy</p>
-
-<p class="whs7">import smesh</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a box</p>
-
-<p class="whs7">box = geompy.MakeBox(0.,
- 0., 0., 100., 200., 300.)</p>
-
-<p class="whs7">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a mesh</p>
-
-<p class="whs7">tetra = smesh.Mesh(box,
- "MeshBox")</p>
-
-<p class="whs6"> </p>
-
-<p class="whs7">algo1D = tetra.Segment()</p>
-
-<p class="whs7">algo1D.NumberOfSegments(7)</p>
-
-<p class="whs7"> </p>
-
-<p class="whs7">algo2D = tetra.Triangle()</p>
-
-<p class="whs7">algo2D.MaxElementArea(800.)</p>
-
-<p class="whs7"> </p>
-
-<p class="whs7">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-
-<p class="whs7">algo3D.MaxElementVolume(900.)</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># compute the mesh</p>
-
-<p class="whs7">tetra.Compute()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># export the mesh in a
- MED file</p>
-
-<p class="whs7">tetra.ExportMED("/tmp/meshMED.med",
- 0) </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body>
-<script language="JavaScript">
-<!--
-
-var gArrayCsh = new Array();
-
-var gstrWindowOption = "";
-var gstrURL = "";
-var gbWithNavPane = false;
-
-function CshEntityItem(strAliasId, nTopicNum, strUrl)
-{
- this.strAliasId = strAliasId;
- this.nTopicNum = nTopicNum;
- this.strUrl = strUrl;
-}
-
-
-//Try to get to topic number from hash string
-function GetTopicNumberAuto(strMayBeNumber)
-{
- var nNum = -1;
- if (strMayBeNumber.length >= 1)
- {
- var strTmp = strMayBeNumber;
- var iEnd = strTmp.length;
- for (var i=0; i<iEnd; i++)
- {
- var ch = strTmp.charAt(i);
- if (!((ch == "0") || (ch == "1") ||
- (ch == "2") || (ch == "3") ||
- (ch == "4") || (ch == "5") ||
- (ch == "6") || (ch == "7") ||
- (ch == "8") || (ch == "9")))
- return GetTopicNumberById(strTmp);
- }
- nNum = parseInt(strTmp);
- }
- return nNum;
-}
-
-function GetTopicNumber(strHashString)
-{
- var nTopicEndPos = strHashString.indexOf(',')
- if (nTopicEndPos == -1) { // no window option.
- return GetTopicNumberOnly(strHashString);
- }
- else {
- var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);
- var strWithNavPane = 'withnavpane=true';
- if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)
- {
- if (strWindowOption.length > strWithNavPane.length)
- gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);
- else
- gstrWindowOption = "";
- gbWithNavPane = true;
- }
- else
- gstrWindowOption = strWindowOption;
- return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));
- }
-}
-
-function GetTopicNumberOnly(strTopicString)
-{
- var nEqualPos = strTopicString.indexOf('=');
- if (nEqualPos == -1) {
- return GetTopicNumberAuto(strTopicString);
- }
- else {
- var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);
- if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {
- return parseInt(strValue);
- } else if (strTopicString.toLowerCase().indexOf("context") == 0) {
- return GetTopicNumberById(strValue);
- } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {
- gstrURL = strValue;
- return -1;
- }
-
- }
-}
-
-//Find HomePage of the WebHelp system
-// we try to get the topic from remote project if it exists.
-function RedirectToHomePage()
-{
- if (parent && parent != this && parent.goNext)
- {
- var sHome = parent.goNext();
- if (sHome != "")
- RedirectTo(sHome);
- }
-}
-
-function getHomePage()
-{
- if (parent && parent != this && parent.getRelHomePage)
- {
- return parent.getRelHomePage(document.location.href);
- }
- return "";
-}
-
-function addRemoteProject(strPath)
-{
- if (parent && parent != this && parent.addProject)
- {
- parent.addProject(strPath);
- }
-}
-
-//Redirect page to...
-function RedirectTo(strUrl)
-{
- if (gstrWindowOption.length != 0) {
- var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);
- // close current window and rename the stub window to current window.
- if (wnd)
- wnd.focus();
- if (parent)
- parent.close();
- }
- else {
- parent.document.location.href = strUrl;
- window.focus();
- }
-}
-
-//Prompt the user that we can not find...
-function FailToFind(strMsg)
-{
- RedirectToHomePage();
-}
-
-//Find topic by topic number (defined in h file)
-function FindTopicByTopicNum(nTopicNum)
-{
- var i = 0;
- var iEnd = gArrayCsh.length;
- for (i=0; i<iEnd; i++)
- {
- if (gArrayCsh[i].nTopicNum == nTopicNum)
- {
- var strURL = gArrayCsh[i].strUrl;
- if (gbWithNavPane)
- {
- var strHomePage = getHomePage();
- if (strHomePage.length != 0)
- strURL = strHomePage + strURL;
- }
- RedirectTo(strURL);
- return true;
- }
- }
- FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);
- return false;
-}
-
-var oldPrefix = "HelpIdFromHTMLHelp_"
-//Find topic by topic id (alias id defined in ali file)
-function GetTopicNumberById(strTopicId)
-{
- if (strTopicId.indexOf(oldPrefix) == 0)
- {
- strTopicId = strTopicId.substring(oldPrefix.length);
- }
-
- var i = 0;
- var iEnd = gArrayCsh.length;
- for (i=0; i<iEnd; i++)
- {
- if (gArrayCsh[i].strAliasId.toLowerCase() == strTopicId.toLowerCase())
- {
- return gArrayCsh[i].nTopicNum;
- }
- }
- gstrURL = "";
- return -1;
-}
-
-//Set Context-sensitive help entity...
-function SetCsh(n, strAliasId, nTopicNum, strUrl)
-{
- gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);
-}
-
-
-function getHash()
-{
- if (parent && parent != this)
- return parent.location.hash;
- else
- return "";
-}
-//-->
-</script>
-<script language="javascript">
-<!--
-
-
-//-->
-</script>
-<script language="javascript">
-<!--
-//Find CSH according to hash string after this page
-if (getHash().length > 0)
-{
- // VH 05/16/00 now support
- // TopicID=
- // TopicNumber=
- // RemoteURL=
- // and WindowsOptions
- // with the format #a=xxx,b=xxx,c=xxx...
- var strHashString = getHash().toString();
- // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it.
- // so here need to change it back.
- strHashString = strHashString.substring(1,strHashString.length);
- strHashString = strHashString.replace("%072%057%057", "://");
- var nTopicNum = GetTopicNumber(strHashString);
-
- if (nTopicNum != -1)
- {
- FindTopicByTopicNum(nTopicNum);
- }
- else
- {
- if (gstrURL.length > 0)
- RedirectTo(gstrURL);
- else
- RedirectToHomePage();
- }
-}
-else
-{
- RedirectToHomePage();
-}
-//-->
-</script>
-<noscript>
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>
-</noscript>
-</body>
-</html>
-
-
-
-
-
-
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body>
-<script language="JavaScript">
-<!--
-
-var gArrayCsh = new Array();
-
-var gstrWindowOption = "";
-var gstrURL = "";
-var gbWithNavPane = false;
-
-function CshEntityItem(strAliasId, nTopicNum, strUrl)
-{
- this.strAliasId = strAliasId;
- this.nTopicNum = nTopicNum;
- this.strUrl = strUrl;
-}
-
-
-//Try to get to topic number from hash string
-function GetTopicNumberAuto(strMayBeNumber)
-{
- var nNum = -1;
- if (strMayBeNumber.length >= 1)
- {
- var strTmp = strMayBeNumber;
- var iEnd = strTmp.length;
- for (var i=0; i<iEnd; i++)
- {
- var ch = strTmp.charAt(i);
- if (!((ch == "0") || (ch == "1") ||
- (ch == "2") || (ch == "3") ||
- (ch == "4") || (ch == "5") ||
- (ch == "6") || (ch == "7") ||
- (ch == "8") || (ch == "9")))
- return GetTopicNumberById(strTmp);
- }
- nNum = parseInt(strTmp);
- }
- return nNum;
-}
-
-function GetTopicNumber(strHashString)
-{
- var nTopicEndPos = strHashString.indexOf(',')
- if (nTopicEndPos == -1) { // no window option.
- return GetTopicNumberOnly(strHashString);
- }
- else {
- var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);
- var strWithNavPane = 'withnavpane=true';
- if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)
- {
- if (strWindowOption.length > strWithNavPane.length)
- gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);
- else
- gstrWindowOption = "";
- gbWithNavPane = true;
- }
- else
- gstrWindowOption = strWindowOption;
- return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));
- }
-}
-
-function GetTopicNumberOnly(strTopicString)
-{
- var nEqualPos = strTopicString.indexOf('=');
- if (nEqualPos == -1) {
- return GetTopicNumberAuto(strTopicString);
- }
- else {
- var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);
- if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {
- return parseInt(strValue);
- } else if (strTopicString.toLowerCase().indexOf("topicid") == 0) {
- return GetTopicNumberById(strValue);
- } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {
- gstrURL = strValue;
- return -1;
- }
-
- }
-}
-
-//Find HomePage of the WebHelp system
-// we try to get the topic from remote project if it exists.
-function RedirectToHomePage()
-{
- if (parent && parent != this && parent.goNext)
- {
- var sHome = parent.goNext();
- if (sHome != "")
- RedirectTo(sHome);
- }
-}
-
-function getHomePage()
-{
- if (parent && parent != this && parent.getRelHomePage)
- {
- return parent.getRelHomePage(document.location.href);
- }
- return "";
-}
-
-function addRemoteProject(strPath)
-{
- if (parent && parent != this && parent.addProject)
- {
- parent.addProject(strPath);
- }
-}
-
-//Redirect page to...
-function RedirectTo(strUrl)
-{
- if (gstrWindowOption.length != 0) {
- var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);
- // close current window and rename the stub window to current window.
- wnd.focus();
- if (parent)
- parent.close();
- }
- else {
- parent.document.location.href = strUrl;
- window.focus();
- }
-}
-
-//Prompt the user that we can not find...
-function FailToFind(strMsg)
-{
- RedirectToHomePage();
-}
-
-//Find topic by topic number (defined in h file)
-function FindTopicByTopicNum(nTopicNum)
-{
- var i = 0;
- var iEnd = gArrayCsh.length;
- for (i=0; i<iEnd; i++)
- {
- if (gArrayCsh[i].nTopicNum == nTopicNum)
- {
- var strURL = gArrayCsh[i].strUrl;
- if (gbWithNavPane)
- {
- var strHomePage = getHomePage();
- if (strHomePage.length != 0)
- strURL = strHomePage + strURL;
- }
- RedirectTo(strURL);
- return true;
- }
- }
- FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);
- return false;
-}
-
-//Find topic by topic id (alias id defined in ali file)
-function GetTopicNumberById(strTopicId)
-{
- var i = 0;
- var iEnd = gArrayCsh.length;
- for (i=0; i<iEnd; i++)
- {
- if (gArrayCsh[i].strAliasId == strTopicId)
- {
- return gArrayCsh[i].nTopicNum;
- }
- }
- gstrURL = "";
- return -1;
-}
-
-//Set Context-sensitive help entity...
-function SetCsh(n, strAliasId, nTopicNum, strUrl)
-{
- gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);
-}
-
-
-function getHash()
-{
- if (parent && parent != this)
- return parent.location.hash;
- else
- return "";
-}
-//-->
-</script>
-<script language="javascript">
-<!--
-
-
-//-->
-</script>
-<script language="javascript">
-<!--
-//Find CSH according to hash string after this page
-if (getHash().length > 0)
-{
- // VH 05/16/00 now support
- // TopicID=
- // TopicNumber=
- // RemoteURL=
- // and WindowsOptions
- // with the format #a=xxx,b=xxx,c=xxx...
- var strHashString = getHash().toString();
- // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it.
- // so here need to change it back.
- strHashString = strHashString.substring(1,strHashString.length);
- strHashString = strHashString.replace("%072%057%057", "://");
- var nTopicNum = GetTopicNumber(strHashString);
-
- if (nTopicNum != -1)
- {
- FindTopicByTopicNum(nTopicNum);
- }
- else
- {
- if (gstrURL.length > 0)
- RedirectTo(gstrURL);
- else
- RedirectToHomePage();
- }
-}
-else
-{
- RedirectToHomePage();
-}
-//-->
-</script>
-<noscript>
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>
-</noscript>
-</body>
-</html>
-
-
-
-
-
-
+++ /dev/null
-BODY {
- background-color:#ffffff;
- font-family:"Times New Roman" , serif; }
-H1 {
- font-weight:bold;
- font-size:24.0pt; }
-LI.kadov-H1 {
- font-weight:bold;
- font-size:24.0pt; }
-H2 {
- font-weight:bold;
- font-size:18.0pt; }
-LI.kadov-H2 {
- font-weight:bold;
- font-size:18.0pt; }
-H3 {
- font-weight:bold;
- font-size:14.0pt; }
-LI.kadov-H3 {
- font-weight:bold;
- font-size:14.0pt; }
-H4 {
- font-weight:bold;
- font-size:12.0pt; }
-LI.kadov-H4 {
- font-weight:bold;
- font-size:12.0pt; }
-H5 {
- font-weight:bold;
- font-size:10.0pt; }
-LI.kadov-H5 {
- font-weight:bold;
- font-size:10.0pt; }
-H6 {
- font-weight:bold;
- font-size:8.0pt; }
-LI.kadov-H6 {
- font-weight:bold;
- font-size:8.0pt; }
-P {
- font-size:12.0pt;
- margin-top:0pt;
- margin-bottom:0pt; }
-LI.kadov-P {
- font-size:12.0pt; }
-A.expandspot {
- color:#008000;
- cursor:hand;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-SPAN.expandtext {
- font-style:italic;
- font-weight:normal;
- color:#ff0000; }
-A.dropspot {
- cursor:hand;
- color:#008000;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-A.glossterm {
- color:#800000;
- cursor:hand;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-SPAN.glosstext {
- font-style:italic;
- font-weight:normal;
- color:#0000ff; }
-OL {
- margin-top:0px;
- margin-bottom:0px; }
-UL {
- margin-top:0px;
- margin-bottom:0px; }
-A:active { }
-A:hover {
- x-text-underline:Off;
- text-decoration:none; }
-A:link {
- x-text-underline:Off;
- text-decoration:none; }
-A:visited {
- x-text-underline:Off;
- text-decoration:none; }
-P.TODO {
- font-weight:normal;
- font-style:italic;
- font-family:"Arial Black" , sans-serif; }
-LI.kadov-P-CTODO {
- font-weight:normal;
- font-style:italic;
- font-family:"Arial Black" , sans-serif; }
+++ /dev/null
-BODY {
- background-color:#ffffff;
- font-family:"Times New Roman" , serif; }
-H1 {
- font-weight:bold;
- font-size:24.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H1 {
- font-weight:bold;
- font-size:24.0pt; }
-H2 {
- font-weight:bold;
- font-size:18.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H2 {
- font-weight:bold;
- font-size:18.0pt; }
-H3 {
- font-weight:bold;
- font-size:14.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H3 {
- font-weight:bold;
- font-size:14.0pt; }
-H4 {
- font-weight:bold;
- font-size:12.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H4 {
- font-weight:bold;
- font-size:12.0pt; }
-H5 {
- font-weight:bold;
- font-size:10.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H5 {
- font-weight:bold;
- font-size:10.0pt; }
-H6 {
- font-weight:bold;
- font-size:8.0pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-H6 {
- font-weight:bold;
- font-size:8.0pt; }
-P {
- font-size:12.0pt;
- margin-top:1pt;
- margin-bottom:1pt;
- font-family:"Times New Roman" , serif; }
-LI.kadov-P {
- font-size:12.0pt; }
-A.expandspot {
- color:#008000;
- cursor:hand;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-SPAN.expandtext {
- font-style:italic;
- font-weight:normal;
- color:#ff0000; }
-A.dropspot {
- cursor:hand;
- color:#008000;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-A.glossterm {
- color:#800000;
- cursor:hand;
- font-style:italic;
- x-text-underline:off;
- x-text-overline:off;
- x-text-line-through:off;
- text-decoration:none none none; }
-SPAN.glosstext {
- font-style:italic;
- font-weight:normal;
- color:#0000ff; }
-OL {
- margin-top:0px;
- margin-bottom:0px;
- font-family:"Times New Roman" , serif; }
-UL {
- margin-top:0px;
- margin-bottom:0px;
- font-family:"Times New Roman" , serif; }
-A:active { }
-A:hover {
- x-text-underline:Off;
- text-decoration:none; }
-A:link {
- x-text-underline:Off;
- text-decoration:none; }
-A:visited {
- x-text-underline:Off;
- text-decoration:none; }
-P.TODO {
- font-weight:normal;
- font-style:italic;
- font-family:"Arial Black" , sans-serif; }
-LI.kadov-P-CTODO {
- font-weight:normal;
- font-style:italic;
- font-family:"Arial Black" , sans-serif; }
-ol ol {
- margin-top:1px; }
-ol ul {
- margin-top:1px; }
-ul ul {
- margin-top:1px; }
-ul ol {
- margin-top:1px; }
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Defining hypotheses TUI</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>
-<!--
-P { margin-top:0pt; margin-bottom:0pt; }
-LI.kadov-P { }
--->
-</style><style type="text/css">
-<!--
-p.whs1 { font-weight:bold; }
-p.whs2 { font-family:'Lucida Console' , monospace; }
-p.whs3 { font-family:'Times New Roman' , serif; }
-p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
-p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
-p.whs6 { margin-top:0pt; margin-bottom:0pt; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- 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 +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Defining Hypotheses and Algorithms</h1>
-
-<h3>Defining 1D Hypotheses</h3>
-
-<p class="whs1"><a name=bookmark>1D Arithmetic</a></p>
-
-<p> </p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a box</p>
-
-<p class="whs2">box = geompy.MakeBoxDXDYDZ(10.,
- 10., 10.)</p>
-
-<p class="whs2">geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a hexahedral
- mesh on the box</p>
-
-<p class="whs2">hexa = smesh.Mesh(box,
- "Box : hexahedrical mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a Regular 1D
- algorithm for edges</p>
-
-<p class="whs2">algo1D = hexa.Segment()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Arithmetic1D"
- hypothesis to cut all edges in several segments with increasing arithmetic
- length </p>
-
-<p class="whs2">algo1D.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a quadrangle
- 2D algorithm for faces</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a hexahedron
- 3D algorithm for solids</p>
-
-<p class="whs2">hexa.Hexahedron()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
-<p class="whs2"> </p>
-
-<h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a face from
- arc and straight segment</p>
-
-<p class="whs2">px = geompy.MakeVertex(100.,
- 0. , 0.
- )</p>
-
-<p class="whs2">py = geompy.MakeVertex(0.
- , 100.,
- 0. )</p>
-
-<p class="whs2">pz = geompy.MakeVertex(0.
- , 0. ,
- 100.)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">exy = geompy.MakeEdge(px,
- py)</p>
-
-<p class="whs2">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">wire = geompy.MakeWire([exy,
- arc])</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">isPlanarFace = 1</p>
-
-<p class="whs2">face1 = geompy.MakeFace(wire,
- isPlanarFace)</p>
-
-<p class="whs2">geompy.addToStudy(face1,"Face1")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># get edges from the
- face</p>
-
-<p class="whs2">e_straight,e_arc =
- geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])</p>
-
-<p class="whs2">geompy.addToStudyInFather(face1,
- e_arc, "Arc Edge")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create hexahedral mesh</p>
-
-<p class="whs2">hexa = smesh.Mesh(face1,
- "Face : triangle mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut a straight edge in a fixed number of segments</p>
-
-<p class="whs2">algo1D = hexa.Segment()</p>
-
-<p class="whs2">algo1D.NumberOfSegments(6)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "MaxElementArea"
- hypothesis</p>
-
-<p class="whs2">algo2D = hexa.Triangle()</p>
-
-<p class="whs2">algo2D.MaxElementArea(70.0)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define a local "Deflection1D"
- hypothesis on the arc</p>
-
-<p class="whs2">algo_local = hexa.Segment(e_arc)</p>
-
-<p class="whs2">algo_local.Deflection1D(1.0)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
-<h4><a name=bookmark2>Start and End Length</a></h4>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
- geompy import *</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a box</p>
-
-<p class="whs2">box = MakeBoxDXDYDZ(10.,
- 10., 10.)</p>
-
-<p class="whs2">addToStudy(box, "Box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># get one edge of the
- box to put local hypothesis on</p>
-
-<p class="whs2">p5 = MakeVertex(5.,
- 0., 0.)</p>
-
-<p class="whs2">EdgeX = GetEdgeNearPoint(box,
- p5)</p>
-
-<p class="whs2">addToStudyInFather(box,
- EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a hexahedral
- mesh on the box</p>
-
-<p class="whs2">hexa = smesh.Mesh(box,
- "Box : hexahedrical mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># set algorithms</p>
-
-<p class="whs2">algo1D = hexa.Segment()</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
-
-<p class="whs2">hexa.Hexahedron()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs2">algo1D.NumberOfSegments(4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a local hypothesis</p>
-
-<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "StartEndLength"
- hypothesis to cut an edge in several segments with increasing geometric
- length</p>
-
-<p class="whs2">algo_local.StartEndLength(1,
- 6)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Propagation"
- 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_local.Propagation()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
-<h4><a name=bookmark3>Average Length</a></h4>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
- geompy import *</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a box</p>
-
-<p class="whs2">box = MakeBoxDXDYDZ(10.,
- 10., 10.)</p>
-
-<p class="whs2">addToStudy(box, "Box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># get one edge of the
- box to put local hypothesis on</p>
-
-<p class="whs2">p5 = MakeVertex(5.,
- 0., 0.)</p>
-
-<p class="whs2">EdgeX = GetEdgeNearPoint(box,
- p5)</p>
-
-<p class="whs2">addToStudyInFather(box,
- EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a hexahedral
- mesh on the box</p>
-
-<p class="whs2">hexa = smesh.Mesh(box,
- "Box : hexahedrical mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># set algorithms</p>
-
-<p class="whs2">algo1D = hexa.Segment()</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
-
-<p class="whs2">hexa.Hexahedron()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut all edges in a fixed number of segments</p>
-
-<p class="whs2">algo1D.NumberOfSegments(4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a sub-mesh</p>
-
-<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "LocalLength"
- hypothesis to cut an edge in several segments with the same length</p>
-
-<p class="whs2">algo_local.LocalLength(2.)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Propagation"
- 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_local.Propagation()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
-<h3>Defining 2D and 3D hypotheses</h3>
-
-<h4><a name=bookmark4>Maximum Element Area</a></h4>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4">import salome </p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a face</p>
-
-<p class="whs4">px =
- geompy.MakeVertex(100., 0. ,
- 0. )</p>
-
-<p class="whs4">py =
- geompy.MakeVertex(0. ,
- 100., 0. )</p>
-
-<p class="whs4">pz =
- geompy.MakeVertex(0. ,
- 0. , 100.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs4">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs4">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">isPlanarFace = 1</p>
-
-<p class="whs4">face = geompy.MakeFace(wire,
- isPlanarFace)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># add the face in the
- study</p>
-
-<p class="whs4">id_face = geompy.addToStudy(face,
- "Face to be meshed")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh</p>
-
-<p class="whs4">tria_mesh = smesh.Mesh(face,
- "Face : triangulation")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define 1D meshing:</p>
-
-<p class="whs4">algo = tria_mesh.Segment()</p>
-
-<p class="whs4">algo.NumberOfSegments(20)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define 2D meshing:</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"># assign triangulation
- algorithm</p>
-
-<p class="whs4">algo = tria_mesh.Triangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># apply "Max Element
- Area" hypothesis to each triangle</p>
-
-<p class="whs4">algo.MaxElementArea(100)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">tria_mesh.Compute()
- </p>
-
-<p class="whs4"> </p>
-
-<h4><a name=bookmark5>Maximum Element Volume</a></h4>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a cylinder</p>
-
-<p class="whs4">cyl = geompy.MakeCylinderRH(30.,
- 50.)</p>
-
-<p class="whs4">geompy.addToStudy(cyl,
- "cyl")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh on
- the cylinder</p>
-
-<p class="whs4">tetra = smesh.Mesh(cyl,
- "Cylinder : tetrahedrical mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># assign algorithms</p>
-
-<p class="whs4">algo1D = tetra.Segment()</p>
-
-<p class="whs4">algo2D = tetra.Triangle()</p>
-
-<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># assign 1D and 2D
- hypotheses</p>
-
-<p class="whs4">algo1D.NumberOfSegments(7)</p>
-
-<p class="whs4">algo2D.MaxElementArea(150.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># assign Max Element
- Volume hypothesis</p>
-
-<p class="whs4">algo3D.MaxElementVolume(200.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># compute the mesh</p>
-
-<p class="whs4">ret = tetra.Compute()</p>
-
-<p class="whs4">if ret == 0:</p>
-
-<p class="whs4"> print
- "probleme when computing the mesh"</p>
-
-<p class="whs4">else:</p>
-
-<p class="whs4"> print
- "Computation succeded" </p>
-
-<h4><a name=bookmark6>Length from Edges</a></h4>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create sketchers</p>
-
-<p class="whs2">sketcher1 = geompy.MakeSketcher("Sketcher:F
- 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
-
-<p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F
- 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a face from
- two wires</p>
-
-<p class="whs2">isPlanarFace = 1</p>
-
-<p class="whs2">face1 = geompy.MakeFaces([sketcher1,
- sketcher2], isPlanarFace)</p>
-
-<p class="whs2">geompy.addToStudy(face1,
- "Face1")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a mesh</p>
-
-<p class="whs2">tria = smesh.Mesh(face1,
- "Face : triangle 2D mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># Define 1D meshing</p>
-
-<p class="whs2">algo1D = tria.Segment()</p>
-
-<p class="whs2">algo1D.NumberOfSegments(2)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create and assign the
- algorithm for 2D meshing with triangles</p>
-
-<p class="whs2">algo2D = tria.Triangle()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create and assign "LengthFromEdges"
- 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">algo2D.LengthFromEdges()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p class="whs2">tria.Compute() </p>
-
-<p class="whs2"> </p>
-
-<h3>Defining Additional Hypotheses</h3>
-
-<h4><a name=bookmark7>Propagation</a></h4>
-
-<p class="whs2">from geompy import
- *</p>
-
-<p class="whs2">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a box</p>
-
-<p class="whs2">box = MakeBoxDXDYDZ(10.,
- 10., 10.)</p>
-
-<p class="whs2">addToStudy(box, "Box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># get one edge of the
- box to put local hypothesis on</p>
-
-<p class="whs2">p5 = MakeVertex(5.,
- 0., 0.)</p>
-
-<p class="whs2">EdgeX = GetEdgeNearPoint(box,
- p5)</p>
-
-<p class="whs2">addToStudyInFather(box,
- EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a hexahedral
- mesh on the box</p>
-
-<p class="whs2">hexa = smesh.Mesh(box,
- "Box : hexahedrical mesh")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># set global algorithms
- and hypotheses</p>
-
-<p class="whs2">algo1D = hexa.Segment()</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
-
-<p class="whs2">hexa.Hexahedron()</p>
-
-<p class="whs2">algo1D.NumberOfSegments(4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a sub-mesh with
- local 1D hypothesis and propagation</p>
-
-<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing length</p>
-
-<p class="whs2">algo_local.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Propagation"
- 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="whs2">algo_local.Propagation()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># compute the mesh</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span>
- </p>
-
-<h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a box</p>
-
-<p class="whs4">box = geompy.MakeBoxDXDYDZ(10.,
- 10., 10.)</p>
-
-<p class="whs4">geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs6"># 1. Create a hexahedral
- mesh on the box</p>
-
-<p class="whs4">hexa = smesh.Mesh(box,
- "Box : hexahedrical mesh")</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a Regular 1D algorithm
- for edges</p>
-
-<p class="whs4">algo1D = hexa.Segment()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a quadrangle 2D
- algorithm for faces</p>
-
-<p class="whs4">algo2D = hexa.Quadrangle()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a hexahedron 3D
- algorithm for solids</p>
-
-<p class="whs4">algo3D = hexa.Hexahedron()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># define hypotheses</p>
-
-<p class="whs4">algo1D.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># compute the mesh</p>
-
-<p class="whs4">hexa.Compute()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># 2. Create a tetrahedral
- mesh on the box</p>
-
-<p class="whs4">tetra = smesh.Mesh(box,
- "Box : tetrahedrical mesh")</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a Regular 1D algorithm
- for edges</p>
-
-<p class="whs4">algo1D = tetra.Segment()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a Mefisto 2D algorithm
- for faces</p>
-
-<p class="whs4">algo2D = tetra.Triangle()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a Netgen 3D algorithm
- for solids</p>
-
-<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># define hypotheses</p>
-
-<p class="whs4">algo1D.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs4">algo2D.LengthFromEdges()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># compute the mesh</p>
-
-<p class="whs4">tetra.Compute()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># 3. Create a tetrahedral
- mesh on the box with NETGEN_2D3D algorithm</p>
-
-<p class="whs4">tetraN = smesh.Mesh(box,
- "Box : tetrahedrical mesh by NETGEN_2D3D")</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># create a Netgen_2D3D
- algorithm for solids</p>
-
-<p class="whs4">algo3D = tetraN.Tetrahedron(smesh.FULL_NETGEN)
- </p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># define hypotheses</p>
-
-<p class="whs4">n23_params = algo3D.Parameters()</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"># compute the mesh</p>
-
-<p class="whs4">tetraN.Compute()
- </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Deleting Groups</title>
-<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; }
-img_whs2 { border:none; width:306px; height:234px; float:none; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nGrouping elements\nDeleting Groups");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Deleting Groups</h1>
-
-<p class="whs1">To delete a group in the
- <span style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>Mesh
- </B></span><span style="font-family: Arial, sans-serif;">-></span><span
- style="font-weight: bold;"><B> Delete Groups</B></span> and select one or several
- groups you wish to delete in the 3D viewer or in the Object Browser.</p>
-
-<p class="whs1">The selected groups will
- be listed in <span style="font-weight: bold;"><B>Delete groups with contents</B></span>
- menu. Then click Ok button to remove the selected groups and close the
- menu or Apply button to remove them and proceed with the selection. </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/deletegroups.png" x-maintain-ratio="TRUE" width="306px" height="234px" border="0" class="img_whs2"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">Please, note that this
- operation <span style="font-weight: bold;"><B>removes groups with their elements</B></span>.
- To delete a group and leave its elements intact, right-click on the group
- in the Object Browser and select <span style="font-weight: bold;"><B>Delete</B></span>
- in the pop-up menu or select the group and choose <span style="font-weight: bold;"><B>Edit
- -> Delete</B></span> in the <span style="font-weight: bold;"><B>Main Menu.</B></span>
- </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Display Entity</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; font-weight:bold; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; height:285px; width:260px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nViewing meshes\nDisplay Entity");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Display Entity</h1>
-
-<p>In this submenu you can choose to display only volumes, faces or edges
- or combine them. </p>
-
-<p> </p>
-
-<p class="whs1">Only Faces Only
- Edges</p>
-
-<p class="whs2"><img src="image56.jpg" height="285px" width="260px" border="0" class="img_whs3"> <img src="image58.gif" height="285px" width="260px" border="0" class="img_whs3"></p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
--- /dev/null
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "Mesh Module Reference Manual v.@VERSION@"
+OUTPUT_DIRECTORY = ./
+CREATE_SUBDIRS = NO
+OUTPUT_LANGUAGE = English
+TAB_SIZE = 5
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+
+#---------------------------------------------------------------------------
+#Input related options
+#---------------------------------------------------------------------------
+INPUT = @srcdir@/input
+FILE_PATTERNS = *.doc
+IMAGE_PATH = @srcdir@/images
+EXAMPLE_PATH = ../../../share/salome/src/SMESH_SWIG
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = ./
+HTML_HEADER = @srcdir@/static/header.html
+HTML_FOOTER = @srcdir@/static/footer.html
+#HTML_STYLESHEET = @srcdir@/static/doxygen.css
+TOC_EXPAND = YES
+DISABLE_INDEX = NO
+GENERATE_TREEVIEW = YES
+TREEVIEW_WIDTH = 300
+
+#---------------------------------------------------------------------------
+#LaTeX related option
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+
+#---------------------------------------------------------------------------
+#RTF related options
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+
+#---------------------------------------------------------------------------
+#External reference options
+#---------------------------------------------------------------------------
+TAGFILES = smeshpy_doc.tag=./smeshpy_doc
--- /dev/null
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "Mesh Module Reference Manual v.@VERSION@"
+OUTPUT_DIRECTORY = ./
+CREATE_SUBDIRS = NO
+OUTPUT_LANGUAGE = English
+USE_WINDOWS_ENCODING = NO
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = NO
+ALWAYS_DETAILED_SEC = YES
+INLINE_INHERITED_MEMB = YES
+FULL_PATH_NAMES = NO
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 5
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = YES
+BUILTIN_STL_SUPPORT = NO
+DISTRIBUTE_GROUP_DOC = NO
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = YES
+EXTRACT_PRIVATE = YES
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = NO
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = YES
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = NO
+SORT_BRIEF_DOCS = NO
+SORT_BY_SCOPE_NAME = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+MAX_INITIALIZER_LINES = 25
+SHOW_USED_FILES = NO
+SHOW_DIRECTORIES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+EXCLUDE_SYMLINKS = NO
+EXAMPLE_RECURSIVE = NO
+
+#---------------------------------------------------------------------------
+#Input related options
+#---------------------------------------------------------------------------
+INPUT = @top_srcdir@/src/SMESH_SWIG
+FILE_PATTERNS = smeshDC.py
+IMAGE_PATH = @srcdir@/images
+RECURSIVE = NO
+
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = ./smeshpy_doc
+HTML_HEADER = @srcdir@/static/header.html
+HTML_FOOTER = @srcdir@/static/footer.html
+#HTML_STYLESHEET = @srcdir@/static/doxygen.css
+TOC_EXPAND = YES
+DISABLE_INDEX = YES
+GENERATE_TREEVIEW = NO
+
+#---------------------------------------------------------------------------
+#LaTeX related option
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+
+#---------------------------------------------------------------------------
+#RTF related options
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+HIDE_UNDOC_RELATIONS = NO
+HAVE_DOT = YES
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = NO
+GROUP_GRAPHS = NO
+UML_LOOK = NO
+TEMPLATE_RELATIONS = YES
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = NO
+CALL_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = jpg
+DOT_PATH =
+DOTFILE_DIRS =
+MAX_DOT_GRAPH_WIDTH = 1024
+MAX_DOT_GRAPH_HEIGHT = 1200
+MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = NO
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+#External reference options
+#---------------------------------------------------------------------------
+GENERATE_TAGFILE = smeshpy_doc.tag
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE SYSTEM "ehelpopt.dtd">
-<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="f974c843_2d19_491f_a339_b0affd721669">
-</FILE-OPTIONS>
-<EHELP-OPTIONS FORMAT-VERSION="1.0">
- <OPTIONS ENABLED="NO" EMBEDDED="YES" MAIN-WINDOW-ONLY="NO" COMMUNITY-NOTIFY="NO" FIRST-PAGE="NOT-SET">
- </OPTIONS>
- <BUTTON-LABEL>WebSearch
- </BUTTON-LABEL>
-</EHELP-OPTIONS>
\ No newline at end of file
+++ /dev/null
-// eHelp® Corporation Dynamic HTML JavaScript
-// Copyright© 1998-2003 eHelp® Corporation.All rights reserved.
-// Version=4.82
-
-// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.
-
-//// Segment Begin -- (JavaScript 1.0)
-
-/// Section Begin - General and relative topics(JavaScript 1.0)
-
-//{{HH_SYMBOL_SECTION
-var HH_ChmFilename = "";
-var HH_WindowName = "";
-var HH_GlossaryFont = "";
-var HH_Glossary = "";
-var HH_Avenue = "";
-var HH_ActiveX = false;
-//}}HH_SYMBOL_SECTION
-
-//Begin to support previous generic parameters
-//Get the information about the browser.
-var gstrBsAgent = navigator.userAgent.toLowerCase();
-var gnBsVer = parseInt(navigator.appVersion);
-
-var gbBsOpera = (gstrBsAgent.indexOf('opera') != -1);
-var gbBsKonqueror = (gstrBsAgent.indexOf('konqueror') != -1);
-var gbBsSafari = (gstrBsAgent.indexOf('safari') != -1);
-var gbBsIE = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;
-var gbBsNS = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;
-
-var gbBsMac = (gstrBsAgent.indexOf('mac') != -1);
-var gbBsWindows = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));
-var gbBsSunOS = (gstrBsAgent.indexOf("sunos") != -1);
-
-var gbBsIE3Before = ((gbBsIE) && (gnBsVer <= 2));
-var gbBsNS3Before = ((gbBsNS) && (gnBsVer <= 3));
-
-var gbBsNS2 = ((gbBsNS) && (gnBsVer <= 2));
-var gbBsNS3 = ((gbBsNS) && (gnBsVer == 3));
-var gbBsIE300301 = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1)));
-var gbBsIE302 = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1));
-
-var gbBsNS4 = ((gbBsNS) && (gnBsVer >= 4));
-var gbBsNS6 = ((gbBsNS) && (gnBsVer >= 5));
-var gbBsNS7 = false;
-
-var gbBsIE4 = ((gbBsIE) && (gnBsVer >= 4));
-var gbBsIE5 = false;
-var gbBsIE55 = false;
-
-var gbBsOpera6 = false;
-var gbBsOpera7 = false;
-
-var gbBsKonqueror3 = false;
-
-
-
-gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;;
-if (gbBsIE)
-{
- if (parseInt(navigator.appVersion) >= 4) {
- gbBsIE4 = true;
- if (gbBsIE4) {
- var nPos = gstrBsAgent.indexOf("msie");
- var strIEversion = gstrBsAgent.substring(nPos + 5);
- var nVersion = parseFloat(strIEversion);
- if (nVersion >= 5)
- gbBsIE5 = true;
- if (nVersion >= 5.5)
- gbBsIE55 = true;
- }
- }
-}
-if (gbBsNS6)
-{
- var nPos=gstrBsAgent.indexOf("gecko");
- if(nPos!=-1)
- {
- var nPos2=gstrBsAgent.indexOf("/", nPos);
- if(nPos2!=-1)
- {
- var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));
- if (nVersion>=20020823)
- gbBsNS7=true;
- }
- }
-}
-if (gbBsOpera)
-{
- var nPos = gstrBsAgent.indexOf("opera");
- if(nPos!=-1)
- {
- var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));
- if (nVersion >= 6)
- {
- gbBsOpera6=true;
- if (nVersion >=7)
- gbBsOpera7=true;
- }
- }
-}
-if (gbBsKonqueror)
-{
- var nPos = gstrBsAgent.indexOf("konqueror");
- if(nPos!=-1)
- {
- var nVersion = parseFloat(gstrBsAgent.substring(nPos+10));
- if (nVersion >= 3)
- {
- gbBsKonqueror3=true;
- }
- }
-}
-
-function insertAdjacentHTML(obj, where, htmlStr)
-{
- if (gbBsIE || gbBsOpera7)
- {
- obj.insertAdjacentHTML(where, htmlStr);
- }
- else if (gbBsNS6 || gbBsSafari)
- {
- var r = obj.ownerDocument.createRange();
- r.setStartBefore(obj);
- var parsedHTML = r.createContextualFragment(htmlStr);
-
- switch (where){
- case 'beforeBegin':
- obj.parentNode.insertBefore(parsedHTML,obj);
- break;
- case 'afterBegin':
- obj.insertBefore(parsedHTML,obj.firstChild);
- break;
- case 'beforeEnd':
- obj.appendChild(parsedHTML);
- break;
- case 'afterEnd':
- if (obj.nextSibling){
- obj.parentNode.insertBefore(parsedHTML,obj.nextSibling);
- } else {
- obj.parentNode.appendChild(parsedHTML);
- }
- break;
- }
- }
-}
-
-// Utilities functions.
-function BsscHasExtJs()
-{
- if( gbBsIE3Before || gbBsNS3Before)
- return false;
- return true;
-}
-
-// Register event handler
-var gBsOnLoads = new Array(); // An array holds all the onload event handler.
-var gBsOnClicks = new Array(); // An array holds all the onClick event handler.
-var gBsOnUnLoads = new Array(); // An array holds all the OnUnLoad event handler.
-var gBsOnMouseOvers = new Array(); // An array holds all the OnMouseOver event handler.
-var gBsOnMouseOuts = new Array(); // An array holds all the OnMouseOut event handler.
-
-var gbOrignalOnMouseDown = null;
-
-function BsscRegisterOnLoad(funcHandler)
-{
- var nLength = gBsOnLoads.length;
- gBsOnLoads[nLength] = funcHandler;
-}
-
-function BsscRegisterOnClick(funcHandler)
-{
- var nLength = gBsOnClicks.length;
- gBsOnClicks[nLength] = funcHandler;
-}
-
-function BsscRegisterOnUnLoad(funcHandler)
-{
- var nLength = gBsOnUnLoads.length;
- gBsOnUnLoads[nLength] = funcHandler;
-}
-
-function BsscRegisterOnMouseOver(funcHandler)
-{
- var nLength = gBsOnMouseOvers.length;
- gBsOnMouseOvers[nLength] = funcHandler;
-}
-
-function BsscRegisterOnMouseOut(funcHandler)
-{
- var nLength = gBsOnMouseOuts.length;
- gBsOnMouseOuts[nLength] = funcHandler;
-}
-
-function BsGeneralOnLoad()
-{
- if (!gbBsIE4 && !gbBsNS4)
- return;
-
- // Make everything visible in navigator
- if (gbBsNS4 && !gbBsNS6) {
- // Make some special effects items visible
- for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {
- document.layers[iLayer].visibility = "show";
- document.layers[iLayer].left = 0;
- }
- }
-}
-
-// If resize the netscape browser, need to reload it.
-function BsReDo()
-{
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-// End of the local functions.
-
-// The following functions are used by the html files.
-function BSSCOnLoad()
-{
- if( !BsscHasExtJs() )
- return;
- for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--)
- gBsOnLoads[nElement]();
-}
-
-function BSSCOnClick()
-{
- if (!BsscHasExtJs()) return;
-
- for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--)
- gBsOnClicks[nElement]();
-}
-
-function BSSCOnUnload()
-{
- if (!BsscHasExtJs()) return;
- for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)
- gBsOnUnLoads[nElement]();
-}
-
-function BSSCOnMouseOver()
-{
- if (!BsscHasExtJs()) return;
- for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)
- gBsOnMouseOvers[nElement]();
-}
-
-function BSSCOnMouseOut()
-{
- if (!BsscHasExtJs()) return;
- for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--)
- {
- gBsOnMouseOuts[nElement]();
- }
-}
-// End of invocation of the event handle functions.
-
-// Add the GereralOnLoad to the onload array.
-if (typeof(BsscRegisterOnLoad) != "undefined")
-{
- BsscRegisterOnLoad(BsGeneralOnLoad);
-}
-if (gbBsNS4&&!gbBsNS6) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = BsReDo;
-}
-//End to support previous generic parameters
-
-//Begin to support previous HHActiveX invoking
-function BsHHActivateComponents()
-{
- if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))
- {
- var objBody = getElementsByTag(document,"BODY")[0];
- if( typeof(objBody) == "object" )
- {
- insertAdjacentHTML(objBody, "beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');
- if (HHComponentActivator.object)
- HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);
- }
- }
-}
-
-function BsHHActivXOnLoad()
-{
- if( gbBsIE4 )
- BsHHActivateComponents();
-}
-
-if( typeof(BsscRegisterOnLoad) != "undefined" )
-{
- BsscRegisterOnLoad(BsHHActivXOnLoad);
-}
-//End to support previous HHActiveX invoking
-
-//Begin to support previous relative topics
-//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here
-var gbPopupMenuTimeoutExpired = false;
-var gbInPopupMenu = false;
-var gbPopupMenuTopicList = null;
-var gOlddocumentClick = null;
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//
-// Popup Menu code
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-var g_bIsPopupMenuInit = false;
-function _WritePopupMenuLayer()
-{
- if (!g_bIsPopupMenuInit)
- {
- if (gbBsNS4&&!gbBsNS6) {
-//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page...
- document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");
- } else{
- document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");
- if (!(gbBsNS4&&!gbBsNS6)) {
- document.write("<STYLE TYPE='text/css'>");
- if (gbBsMac&&gbBsIE4) {
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");
- } else {
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");
- }
- document.write("</STYLE>");
- }
- }
- g_bIsPopupMenuInit = true;
- }
-}
-
-//Seek for the bsscright frame
-function _SeekFrameByName( cRoot, strName )
-{
- if( cRoot == null ) return null;
- if( cRoot.frames == null ) return null;
- if( cRoot.frames[strName] != null ) return cRoot.frames[strName];
- for (var i=0; i<cRoot.frames.length; i++)
- {
- var cObj = null;
- if (!gbBsNS6)
- cObj = _SeekFrameByName( cRoot.frames(i).document, strName );
- else
- cObj = _SeekFrameByName( cRoot.frames[i], strName );
- if( cObj != null ) return cObj;
- };
- return null;
-}
-function _GetFrameByName( cRoot, strName )
-{
- if( cRoot == null ) return null;
- var cRet = _SeekFrameByName(cRoot, strName);
- if( cRet != null ) return cRet;
- if (cRoot.parent != cRoot)
- return _GetFrameByName( cRoot.parent, strName );
- else
- return null;
-}
-
-var gfn_arguments = null;
-function _PopupMenu_Invoke(fn_arguments)
-{
- gfn_arguments = fn_arguments;
- if (gbBsOpera6&&gbBsMac)
- {
- var wndOldPopupLinks= window.open(document.location.href, "popuplinks");
- wndOldPopupLinks.close();
- setTimeout("_PopupMenu_Invoke_2();",100);
- }
- else
- {
- _PopupMenu_Invoke_2();
- }
-}
-
-function _PopupMenu_Invoke_2()
-{
- var fn_arguments = gfn_arguments;
- gfn_arguments = null;
-
- // Make sure we have reasonable arguments
- var argLen = fn_arguments.length;
- if (argLen < 3) {
- return false;
- }
-
- // Check to see if we only have one target
- var strTarget = "";
- var targetDoc = null;
- if (fn_arguments[1] == '') {
- if (BSSCPopup_IsPopup()) {
- targetDoc = parent;
- strTarget = "TARGET= _parent";
- }
- else
- targetDoc = window.document;
- } else {
- targetDoc = _GetFrameByName( parent, fn_arguments[1] );
-
- strTarget = "TARGET='" + fn_arguments[1] + "'";
- }
-
- if ((!gbBsIE4 && !gbBsNS4 && !gbBsOpera7 && !gbBsKonqueror3 &&!gbBsSafari) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {
-
- var argLen = fn_arguments.length;
-
- // Create the window that the hyperlinks will go into
- var nHeight = argLen * 15;
- var nWidth = 400;
- var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";
- strParam += ",height=" + nHeight + ",width=200";
- strParam += ",resizable";
-
- var wndTemp=null;
- // Create a temporary window first to ensure the real popup comes up on top
- if (!gbBsOpera)
- wndTemp = window.open("", "temp", strParam);
-
- // Create the real popup window
- var wndPopupLinks=null;
- if (gbBsOpera&&gbBsMac)
- {
- wndTemp = window.open(document.location.href, "temp", strParam);
- wndPopupLinks= window.open(document.location.href, "popuplinks", strParam);
- }
- else
- wndPopupLinks= window.open("", "popuplinks", strParam);
- wndPopupLinks.document.open("text/html");
-
- // Close the temporary
- if (wndTemp)
- wndTemp.close();
-
- var sHTML="<html><head></head>";
- sHTML+="<body onBlur=\'self.focus();\'>";
- var strParaLine = "";
- for (var i = 0; i < (argLen - 2) / 2; i++) {
- strParaLine = "";
- strParaLine += "<a href=\"javascript:";
- if (gbBsIE) {
- strParaLine += "onBlur=null; ";
- }
- strParaLine += "opener.location=\'";
- strParaLine += fn_arguments[2 * i + 3];
- strParaLine += "\';close();\"";
- strParaLine += strTarget;
-
- strParaLine += ">";
- strParaLine += fn_arguments[2 * i + 2];
- strParaLine += "</a>";
- strParaLine += "<br>";
- sHTML+=strParaLine;
- }
- sHTML+="</body></html>";
- wndPopupLinks.document.write(sHTML);
- wndPopupLinks.document.close();
- window.gbInPopupMenu = true;
- if (!gbBsIE) {
- wndPopupLinks.focus();
- }
- return false;
- }
-
- if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||
- ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {
- // Get the place that we will be putting the topic into
- var strURL = "";
- if (isNaN(fn_arguments[2]) || (gbPopupMenuTopicList == null)) {
- strURL = fn_arguments[3];
- }
- else {
- strURL = gbPopupMenuTopicList[fn_arguments[2]].strURL;
- }
-
- if (targetDoc != null) {
- targetDoc.location.href = strURL;
- }
- else {
- if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")
- window.open(strURL, fn_arguments[1]);
- else
- window.open(strURL);
- }
- window.gbInPopupMenu = true;
- return false;
- }
-
- var strMenu = "";
- if (gbBsNS4&&!gbBsNS6) {
- strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';
- } else {
- strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';
- if (gbBsMac) {
- strMenu += ' CELLPADDING=4';
- } else {
- strMenu += ' CELLPADDING=2';
- }
- strMenu += ' BGCOLOR=#c0c0c0>';
- }
- // Add each of the items
- var i = 2;
- while (i <= argLen - 1) {
- strMenu += '<TR><TD><NOBR>'
- // If the destination is a number then look it up in the topic list
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '"' + strTarget;
- } else {
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList[fn_arguments[i]].strURL + '"' + strTarget;
- }
- strMenu += ' onclick="PopupMenu_HandleClick(event);"';
- strMenu += ' onmouseover="PopupMenu_Over(event);"';
- strMenu += ' onmouseout="PopupMenu_Out(event);"';
- strMenu += '>';
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {
- strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';
- } else {
- strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + '</SPAN>';
- }
- strMenu += '</A></DIV></NOBR></TD></TR>';
-
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {
- i += 2;
- } else {
- i += 1;
- }
- }
- strMenu += "</TABLE>";
-
- if (gbBsMac) {
- // totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.
- strMenu +="<TABLE></TABLE>";
- }
-
- var layerPopup = null;
- var stylePopup = null;
- var nEventX = 0;
- var nEventY = 0;
- var nWindowWidth = 0;
- if (gbBsIE4 || gbBsOpera7) {
-
- layerPopup = getElement("PopupMenu");
- layerPopup.innerHTML = strMenu;
- stylePopup = layerPopup.style;
-
- _BSPSGetClientSize();
-
- // Get the position of the item causing the event (relative to its parent)
- nEventX = window.event.clientX;
- nEventY = window.event.clientY;
-
- if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {
- nEventY += document.body.scrollTop + 10;
- } else {
- nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;
- }
- stylePopup.top = nEventY;
-
- var nPopupWidth = layerPopup.scrollWidth;
- if (gbBsMac) {
- nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup.
- }
- if (nEventX + nPopupWidth + 20 > gBsClientWidth) {
- if (gBsClientWidth - nPopupWidth < 5) {
- stylePopup.left = 5;
- } else {
- stylePopup.left = gBsClientWidth - nPopupWidth - 5;
- }
- } else {
- stylePopup.left = nEventX + document.body.scrollLeft + 20;
- }
-
- stylePopup.visibility = "visible";
- if (!gOlddocumentClick && document.onclick)
- gOlddocumentClick = document.onclick;
- document.onclick = PopupMenu_HandleClick;
-
- } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) {
- layerPopup = getElement("PopupMenu");
- layerPopup.style.visibility = "hidden";
-
- if (gbBsNS6)
- {
- var e = fn_arguments[0];
- nEventX = e.pageX;
- nEventY = e.pageY;
- }
- else
- {
- nEventX = window.event.clientX;
- nEventY = window.event.clientY;
- }
- _BSPSGetClientSize();
- layerPopup.innerHTML = strMenu;
-
- if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) {
- nEventY += 20;
- } else {
- nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;
- }
-
- if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {
- if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {
- nEventX = 5;
- } else {
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;
- }
- } else {
- nEventX += 20;
- }
- layerPopup.style.top = nEventY;
- layerPopup.style.left = nEventX;
- // set again to avoid the stupid frash in netscape 6.
- layerPopup.innerHTML = strMenu;
- layerPopup.style.visibility = "visible";
- //window.captureEvents(Event.MOUSEDOWN);
- if (!gOlddocumentClick && document.onclick)
- gOlddocumentClick = document.onclick;
- window.onclick = PopupMenu_HandleClick;
- }
- else if (gbBsNS4) {
- layerPopup = document.layers.PopupMenu;
- layerPopup.visibility = "hide";
- stylePopup = layerPopup.document;
- stylePopup.write(strMenu);
- stylePopup.close();
- var e = fn_arguments[0];
- nEventX = e.pageX;
- nEventY = e.pageY;
- _BSPSGetClientSize();
- if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) {
- nEventY += 20;
- } else {
- nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20;
- }
- layerPopup.top = nEventY;
-
- if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) {
- if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) {
- nEventX = 5;
- } else {
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20;
- }
- } else {
- nEventX += 20;
- }
-
- layerPopup.left = nEventX;
-
- layerPopup.visibility = "show";
-
- window.captureEvents(Event.MOUSEDOWN);
- if (!gOlddocumentClick && document.onmousedown)
- gOlddocumentClick = document.onmousedown;
- window.onmousedown = PopupMenu_HandleClick;
- }
-
- window.gbInPopupMenu = true;
- window.gbPopupMenuTimeoutExpired = false;
- setTimeout("PopupMenu_Timeout();", 100);
- return false;
-}
-
-function PopupMenu_Timeout()
-{
- window.gbPopupMenuTimeoutExpired = true;
-}
-
-function PopupMenu_Over(e)
-{
- if (gbBsIE4||gbBsOpera7)
- e.srcElement.className = "PopupOver";
- else if (gbBsNS6)
- e.target.parentNode.className = "PopupOver";
- return;
-}
-
-function PopupMenu_Out(e)
-{
- if (gbBsIE4||gbBsOpera7)
- e.srcElement.className = "PopupNotOver";
- else if (gbBsNS6)
- e.target.parentNode.className = "PopupNotOver";
- return;
-}
-
-function PopupMenu_HandleClick(e)
-{
- if (window.gbPopupMenuTimeoutExpired) {
- window.gbInPopupMenu = false;
- if (gbBsNS4 && !gbBsNS6) {
- window.releaseEvents(Event.MOUSEDOWN);
- }
-
- var layerPopup = null;
- if (gbBsNS4&&!gbBsNS6) {
- layerPopup = document.layers.PopupMenu;
- layerPopup.visibility = "hide";
- } else {
- layerPopup = getElement("PopupMenu");
- layerPopup.style.visibility = "hidden";
- }
-
- if (gOlddocumentClick)
- {
- if (gbBsNS4 && !gbBsNS6)
- document.onmousedown = gOlddocumentClick;
- else
- document.onclick = gOlddocumentClick;
- }
- }
- return;
-}
-
-function BSSCPopup_ClickMac()
-{
- if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7))
- {
- var bClickOnAnchor = false;
- var el;
- if ((window.event != null) &&
- (window.event.srcElement != null))
- {
- el = window.event.srcElement;
- while (el != null)
- {
- if ((el.tagName == "A") || (el.tagName == "AREA")) {
- bClickOnAnchor = true;
- break;
- }
- if (el.tagName == "BODY") {
- break;
- }
- el = getParentNode(el);
- }
- }
- if (BSSCPopup_IsPopup())
- {
- if (!bClickOnAnchor) {
- parent.window.gPopupWindow = null;
- self.close();
- }
- }
- else
- {
- bClosePopupWindow = true;
- if ((bClickOnAnchor) &&
- (el.href) &&
- ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1)))
- {
- bClosePopupWindow = false;
- }
- if (bClosePopupWindow)
- {
- if (window.gPopupWindow != null && !window.gPopupWindow.closed )
- {
- window.gPopupWindow.close();
- }
- }
- }
- }
-}
-
-function BsPopupOnClick()
-{
- if (!gbBsIE4 && !gbBsOpera7)
- return;
-
- BSSCPopup_ClickMac();
-}
-
-function _BSSCOnError(message)
-{
- if(-1 != message.indexOf("denied")
- || -1 != message.indexOf("Object required"))
- return true;
-}
-
-//End to support previous relative topics
-
-/// Section End - General and relative topics (JavaScript 1.0)
-
-/// Section Begin - Popup (JavaScript 1.0)
-//Begin to support previous popup functions
-
-//variables used to isolate the browser type
-var gBsStyVisShow = null;
-var gBsStyVisHide = null;
-var gBsClientWidth = 640;
-var gBsClientHeight = 480;
-
-// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.
-var gBRateH_W = 0.618; // 1.618 Golden cut.
-var gBMaxXOfParent = 0.8;
-var gBMaxYOfParent = 0.8;
-var gBscrollHeight = 16;
-var gBscrollWidth = 16;
-var gBpermitXDelta = 3;
-var gBpermitYDelta = 3;
-
-
-var arrayPopupURL = new Array();
-var arrayAbsPopupURL = new Array();
-
-var arrayDirty = new Array();
-
-function setAbsPopupURL(nIndex, strURL)
-{
- arrayAbsPopupURL[nIndex] = strURL;
-}
-
-function getAbsPopupURL(nIndex)
-{
- if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null;
- else
- return arrayAbsPopupURL[nIndex];
-}
-
-function getPopupURL(nIndex)
-{
- if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null;
- else
- return arrayPopupURL[nIndex];
-}
-
-function getPopupID(nIndex)
-{
- return gstrPopupID + nIndex;
-}
-
-function getPopupShadowID(nIndex)
-{
- return gstrPopupShadowID + nIndex;
-}
-
-function getPopupTopicID(nIndex)
-{
- return gstrPopupTopicID + nIndex;
-}
-
-function getPopupIFrameID(nIndex)
-{
- return gstrPopupIFrameID + nIndex;
-}
-
-function getPopupIFrameName(nIndex)
-{
- return gstrPopupIFrameName + nIndex;
-}
-
-
-function getPopupTopicStyle(nIndex)
-{
- return getElement(getPopupTopicID(nIndex)).style;
-}
-
-function getPopupShadowStyle(nIndex)
-{
- return getElement(getPopupShadowID(nIndex)).style;
-}
-
-function getPopupIFrame(nIndex)
-{
- if (gbBsNS6)
- return eval("window.frames['" + getPopupIFrameName(nIndex) + "']");
- else
- return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");
-}
-
-function getPopupDivStyle(nIndex)
-{
- return getElement(getPopupID(nIndex)).style;
-}
-
-function getPopupIFrameStyle(nIndex)
-{
- return getElement(getPopupIFrameID(nIndex)).style;
-}
-
-
-function findDiv(strURL)
-{
- for (var i = 0; i < arrayPopupURL.length; i ++ ) {
- if (arrayPopupURL[i] == strURL) {
- return i;
- }
- }
- return -1;
-}
-
-var gnToken = -1;
-function takeToken()
-{
- gnToken ++;
- if (gnToken > 10000) gnToken = 0;
- return gnToken;
-}
-
-function IsValidToken(nToken)
-{
- return (gnToken == nToken);
-}
-
-function addDiv(strURL)
-{
- for (var i = 0; i < arrayPopupURL.length; i ++) {
- if (arrayPopupURL[i] == null) {
- arrayPopupURL[i] = strURL;
- return i;
- }
- }
- arrayPopupURL[i] = strURL;
- arrayDirty[i] = true;
- return i;
-}
-
-function setDirty()
-{
- for (var i = 0; i < arrayPopupURL.length; i ++ )
- arrayDirty[i] = true;
-}
-
-function IsDirty(nIndex)
-{
- if (nIndex == -1)
- return true;
- else
- if (arrayDirty.length > nIndex)
- return arrayDirty[nIndex];
- else
- return true;
-}
-
-function hideAll()
-{
- for (var i = 0; i < arrayPopupURL.length; i ++ )
- {
- getPopupDivStyle(i).visibility = gBsStyVisHide;
- getPopupIFrameStyle(i).visibility = gBsStyVisHide;
- }
-}
-
-function getCurrentPopupIFrame()
-{
- for (var i = 0; i < arrayPopupURL.length; i ++)
- if (getPopupDivStyle(i).visibility == gBsStyVisShow)
- return getPopupIFrame(i);
- return null;
-}
-
-function setClear(nIndex)
-{
- if (nIndex != -1)
- arrayDirty[nIndex] = false;
-}
-
-function _BSSCCreatePopupDiv(strURL)
-{
- var nIndex = findDiv(strURL);
- if (nIndex == -1 ) {
- nIndex = addDiv(strURL);
- BsPopup_CreateDiv(nIndex);
- }
- else {
- if (IsDirty(nIndex)) {
- if("object" == typeof(getPopupIFrame(nIndex).document))
- getPopupIFrame(nIndex).document.location.href = strURL;
- }
- }
- return nIndex;
-}
-
-//Here is the browser type
-function _BSPSGetBrowserInfo()
-{
- if (gbBsNS4&&!gbBsNS6)
- {
- gBsStyVisShow = "show";
- gBsStyVisHide = "hide";
- }
- else
- {
- gBsStyVisShow = "visible";
- gBsStyVisHide = "hidden";
- }
-}
-
-_BSPSGetBrowserInfo();
-
-//Get client size info
-function _BSPSGetClientSize()
-{
- if (gbBsNS4||gbBsKonqueror3||gbBsSafari)
- {
- gBsClientWidth = innerWidth;
- gBsClientHeight = innerHeight;
- }
- else if (gbBsIE4 || gbBsOpera7)
- {
- gBsClientWidth = document.body.clientWidth;
- gBsClientHeight = document.body.clientHeight;
- }
-}
-
-var gstrPopupID = 'BSSCPopup';
-var gstrPopupShadowID = 'BSSCPopupShadow';
-var gstrPopupTopicID = 'BSSCPopupTopic';
-var gstrPopupIFrameID = 'BSSCPopupIFrame';
-var gstrPopupIFrameName = 'BSSCPopupIFrameName';
-
-var gstrPopupSecondWindowName = 'BSSCPopup';
-
-var gPopupWindow = null;
-var gnPopupClickX = 0;
-var gnPopupClickY = 0;
-
-var gnPopupScreenClickX = 0;
-var gnPopupScreenClickY = 0;
-
-var gbPopupTimeoutExpired = false;
-
-function DHTMLPopupSupport()
-{
- if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) {
- return true;
- }
- return false;
-}
-
-function BSSCPopup_IsPopup()
-{
- if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {
- return true;
- } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) {
- return true;
- } else {
- return false;
- }
-}
-
-// If there is a hyperlink in a popup window, display the hyperlink in
-// the original window. (bsscright)
-if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) {
- document.write("<base target=\"bsscright\">");
-}
-
-// Local functions.
-function BsPopup_CreateDiv(nIndex)
-{
- if(!DHTMLPopupSupport())
- return;
- // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.
- var strPopupDiv = "<DIV ID='" + getPopupID(nIndex) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>";
- strPopupDiv += "<DIV ID='" + getPopupShadowID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#C0C0C0;\"></DIV>";
- strPopupDiv += "<DIV ID='" + getPopupTopicID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#FFFFFF;border:1px #000000 outset;\">";
- strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";
- strPopupDiv += "</DIV></DIV>";
-
- var objBody = getElementsByTag(document, "BODY")[0];
- if( typeof(objBody) != "object" )
- return;
-
- insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv);
-}
-
-function handleLoadNS()
-{
- if (this.id)
- {
- var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length));
- BSSCPopup_PostWork(nIndex);
- }
-}
-
-function BSSCPopup_PostWork(nIndex)
-{
- getPopupDivStyle(nIndex).visibility = gBsStyVisShow;
- getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow;
-
- setClear(nIndex);
- window.gbPopupTimeoutExpired = true;
-
- BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);
- if (gbBsNS6)
- getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false);
- else
- getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;
-
- if (!gbOrignalOnMouseDown && document.onmousedown)
- gbOrignalOnMouseDown = document.onmousedown;
-
- if (gbBsNS6)
- document.addEventListener("mousedown", BSSCPopupParentClicked,false);
- else
- document.onmousedown = BSSCPopupParentClicked;
-}
-
-function BSSCPopup_Timeout(nIndex, nToken)
-{
- if (!IsValidToken(nToken)) return;
-
- if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") &&
- (getPopupIFrame(nIndex).document.body != null))) {
- BSSCPopup_PostWork(nIndex);
- } else {
- setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);
- }
-}
-
-// VH 08/10/00
-// do not change target to parent if the href is using javascript
-function BSSCPopup_ChangeTargettoParent(tagsObject)
-{
- var collA = getElementsByTag(tagsObject, "A");
- BSSCPopup_ChangeTargettoParent2(collA);
-
- var collIMG = getElementsByTag(tagsObject,"IMG");
- BSSCPopup_ChangeTargettoParent2(collIMG);
-}
-
-function BSSCPopup_ChangeTargettoParent2(colls)
-{
- if (colls != null) {
- for (var j = 0; j < colls.length; j ++ )
- {
- var strtemp = colls[j].href;
- if (strtemp)
- {
- strtemp = strtemp.toLowerCase();
- if (strtemp.indexOf("javascript:") == -1)
- if (colls[j].target == "")
- colls[j].target = "_parent";
- }
- }
- }
-}
-
-function BSPSPopupTopicWinHelp(strURL)
-{
- _BSSCPopup(strURL);
- return;
-}
-
-function _BSSCPopup(strURL, width, height)
-{
- var cuswidth = 0;
- var cusheight = 0;
- if ("undefined" != typeof(width) && "undefined" != typeof(height)) {
- cuswidth = width;
- cusheight= height;
- }
-
- if (DHTMLPopupSupport()) {
- var nToken = takeToken(); // take token first.
- var nIndex = _BSSCCreatePopupDiv(strURL);
- window.gbPopupTimeoutExpired = false;
- var ntWidth = gBsClientWidth;
- var ntHeight = gBsClientHeight;
- _BSPSGetClientSize();
- if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {
- setDirty();
- }
-
- if (IsDirty(nIndex)) {
- if (gbBsMac) {
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight +")", 400);
- } else {
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);
- }
- }
- else {
- MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);
- }
- } else {
- _BSSCPopup2(strURL, cuswidth, cusheight);
- }
- return;
-}
-
-if (gbBsIE55)
-{
- var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;
- var gnBsUnload=0;
- window.onbeforeunload = window_BUnload;
-}
-
-function window_BUnload()
-{
- gnBsUnload++;
- if (gnBsUnload>1)
- return;
- for (var i = 0; i < arrayPopupURL.length; i ++)
- removeThis(document.all(getPopupID(i)));
- arrayPopupURL.length = 0;
- if (ehlpdhtm_fOldBefureUnload)
- ehlpdhtm_fOldBefureUnload();
-}
-
-function _BSSCPopup2(strURL, width, height)
-{
- if (gbBsOpera6&&gbBsMac)
- {
- var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName);
- wmTemp.close();
- setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100);
- }
- else
- _BSSCPopup3(strURL, width, height);
-}
-
-function _BSSCPopup3(strURL, width, height)
-{
- if (window.name == gstrPopupSecondWindowName) {
- window.location = strURL;
- } else {
- if (!gbBsMac || !gbBsNS4) {
- BSSCHidePopupWindow();
- }
- var nX = 0;
- var nY = 0;
- var nHeight = 300;
- var nWidth = 400;
- if (width > 0 && height > 0) {
- nHeight = height;
- nWidth = width;
- }
- _BSPSGetClientSize();
-
- nX = window.gnPopupScreenClickX;
- nY = window.gnPopupScreenClickY;
-
- if (nY + nHeight + 40 > screen.availHeight) {
- nY = screen.availHeight - nHeight - 40;
- }
- if (nX + nWidth + 40 > screen.availWidth) {
- nX = screen.availWidth - nWidth - 40;
- }
-
- // Launch a separate window
- var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";
- if (gbBsNS) {
- if (gbBsNS6) {
- strParam += ",Height=" + nHeight + ",Width=" + nWidth;
- strParam += ",screenX=" + nX + ",screenY=" + nY;
- strParam += ",dependent=yes";
- }
- else {
- strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;
- strParam += ",screenX=" + nX + ",screenY=" + nY;
- strParam += ",dependent=yes";
- }
- }
- else {
- strParam += ",height=" + nHeight + ",width=" + nWidth;
- strParam += ",left=" + nX + ",top=" + nY;
- }
- if (gbBsSafari)
- {
- if (window.gPopupWindow)
- window.gPopupWindow.close();
- window.gPopupWindow = window.open(strURL, "", strParam);
- window.gPopupWindow.name = gstrPopupSecondWindowName;
- window.gPopupWindow.moveTo(nX, nY);
- widnow.gPopupWindow.document.location.reload();
- }
- else
- {
- var wmTemp=null;
- if (gbBsKonqueror3)
- {
- if (window.gPopupWindow)
- window.gPopupWindow.close();
- }
- if (gbBsOpera&&gbBsMac)
- {
- wmTemp= window.open(document.location.href, "Temp", strParam);
- }
- window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);
- if (!gbBsIE)
- window.gPopupWindow.focus();
-
- if (wmTemp)
- wmTemp.close();
- }
-
- if (gbBsNS4)
- setEventHandle();
- else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3)
- setTimeout("setPopupFocus();", 100);
- }
- return;
-}
-
-function setEventHandle()
-{
- window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR);
- window.gPopupWindow.onclick = NonIEPopup_HandleClick;
- window.gPopupWindow.onblur = NonIEPopup_HandleBlur;
-}
-
-function setPopupFocus()
-{
- window.gPopupWindow.focus();
-}
-
-function NonIEPopup_HandleBlur(e)
-{
- window.gPopupWindow.focus();
-}
-
-function NonIEPopup_HandleClick(e)
-{
- // Because navigator will give the event to the handler before the hyperlink, let's
- // first route the event to see if we are clicking on a Popup menu in a popup.
- document.routeEvent(e);
-
- // If a popup menu is active then don't do anything with the click
- if (window.gPopupWindow.gbInPopupMenu) {
- window.gPopupWindow.captureEvents(Event.CLICK);
- window.gPopupWindow.onclick = NonIEPopup_HandleClick;
- return false;
- }
-
- // Close the popup window
- if(e.target.href)
- {
- if(e.target.href.indexOf("javascript:")==-1)
- {
- if (e.target.target=="")
- window.location.href = e.target.href;
- else
- window.open(e.target.href, e.target.target);
- this.close();
- }
- }
- else
- this.close();
- return false;
-}
-
-function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)
-{
- if (!window.getPopupIFrame(nIndex).document) {
- _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);
- return;
- }
-
- if (!IsValidToken(nToken)) return;
-
- if (gbBsNS6)
- {
- setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.
- BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);
- return;
- }
-
- if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&
- (window.getPopupIFrame(nIndex).document.body != null)) {
- if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.
- window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);
- }
- else
- {
- setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.
- BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);
- }
- } else {
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);
- }
-}
-
-function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)
-{
- if (window.gbPopupTimeoutExpired) return;
-
- if (!IsValidToken(nToken)) return;
-
- getPopupDivStyle(nIndex).visibility = gBsStyVisHide;
- getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide;
-
- // Determine the width and height for the window
- _BSPSGetClientSize();
-
- var size = new BSSCSize(0, 0);
-
- if (cuswidth <= 0 || cusheight <= 0)
- BSSCGetContentSize(window.getPopupIFrame(nIndex), size);
- else {
- size.x = cuswidth;
- size.y = cusheight;
- }
-
- // Determine the width and height for the window
- var nWidth = size.x;
- var nHeight = size.y;
-
- // for small popup size, we should allow any size.
- // The popup size should be ok if bigger than 0
- if (nWidth < 0 || nHeight < 0) return; // there must be something terribly wrong.
-
- getPopupDivStyle(nIndex).width = nWidth;
- getPopupDivStyle(nIndex).height = nHeight;
-
- getPopupShadowStyle(nIndex).width = nWidth;
- getPopupShadowStyle(nIndex).height = nHeight;
- getPopupTopicStyle(nIndex).width = nWidth;
- getPopupTopicStyle(nIndex).height = nHeight;
- if (gbBsIE55)
- {
- getPopupShadowStyle(nIndex).width = nWidth + 2;
- getPopupShadowStyle(nIndex).height = nHeight + 2;
- getPopupTopicStyle(nIndex).width = nWidth + 2;
- getPopupTopicStyle(nIndex).height = nHeight + 2;
- }
-
- getPopupIFrameStyle(nIndex).width = nWidth;
- getPopupIFrameStyle(nIndex).height = nHeight;
- if (gbBsIE55 || gbBsNS6)
- {
- getPopupIFrameStyle(nIndex).top = 0;
- getPopupIFrameStyle(nIndex).left = 0;
- }
-
- var strURL = getPopupURL(nIndex);
- if (strURL.indexOf("#") != -1&&gbBsNS6)
- getPopupIFrame(nIndex).location.reload();
- else if (strURL.indexOf("#") != -1||gbBsNS6)
- getPopupIFrame(nIndex).location.href = strURL; // reload again, this will fix the bookmark misunderstand in IE5.
-
- MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);
-}
-
-function getScrollLeft()
-{
- if (document.body.scrollLeft)
- return document.body.scrollLeft;
- else if (window.pageXOffset)
- return window.pageXOffset;
- else
- return 0;
-}
-
-function getScrollTop()
-{
- if (document.body.scrollTop)
- return document.body.scrollTop;
- else if (window.pageYOffset)
- return window.pageYOffset;
- else
- return 0;
-}
-
-
-function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)
-{
- if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.
- window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);
- return;
- }
-
- // Determine the position of the window
- var nClickX = window.gnPopupClickX;
- var nClickY = window.gnPopupClickY;
- var nTop = 0;
- var nLeft = 0;
-
- var nWidth = parseInt(getPopupDivStyle(nIndex).width);
- var nHeight = parseInt(getPopupDivStyle(nIndex).height);
-
- if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) {
- nTop = nClickY + 10;
- } else {
- nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20;
- }
- if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) {
- nLeft = nClickX;
- } else {
- nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8;
- }
-
- if (nTop < getScrollTop()) nTop = getScrollTop() + 1;
- if (nLeft< getScrollLeft()) nLeft = getScrollLeft() + 1;
-
- getPopupDivStyle(nIndex).left = nLeft;
- getPopupDivStyle(nIndex).top = nTop;
-
- // Set the location of the background blocks
- getPopupShadowStyle(nIndex).left = 6;
- getPopupShadowStyle(nIndex).top = 6;
- if (gbBsIE55)
- {
- getPopupShadowStyle(nIndex).left = 4;
- getPopupShadowStyle(nIndex).top = 4;
- }
-
- if (gbBsMac&&gbBsIE4) {
- // Total hack on the iMac to get the IFrame to position properly
- getPopupIFrameStyle(nIndex).pixelLeft = 100;
- getPopupIFrameStyle(nIndex).pixelLeft = 0;
- // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it
- getPopupIFrame(nIndex).window.BSSCOnLoad();
- }
-
- if (gbBsNS6&&IsDirty(nIndex))
- getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false);
- else
- BSSCPopup_Timeout(nIndex , nToken );
- return;
-}
-
-function BSSCSize(x, y)
-{
- this.x = x;
- this.y = y;
-}
-
-function BSSCGetContentSize(thisWindow, size)
-{
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4)
- return;
-
- if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) {
- size.x = 320;
- size.y = 180;
- return;
- }
-
- // Resize the width until it is wide enough to handle the content
- // The trick is to start wide and determine when the scrollHeight changes
- // because then we know a scrollbar is necessary. We can then go back
- // to the next widest size (for no scrollbar)
-
- var ClientRate = gBsClientHeight / gBsClientWidth;
-
-
- var GoldenSize = new BSSCSize(0,0);
- GoldenSize.x = gBsClientWidth * gBMaxXOfParent;
- GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;
-
- if (ClientRate > gBRateH_W) {
- GoldenSize.y = GoldenSize.x * gBRateH_W;
- }
- else {
- GoldenSize.x = GoldenSize.y / gBRateH_W;
- }
-
- // Try to using parent specified max x.
- var x = 0;
- var maxgoldx = GoldenSize.x;
- var maxx = gBsClientWidth * gBMaxXOfParent;
-
- // This double resize causes the document to re-render (and we need it to)
- if (!gbBsIE5)
- thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.
-
- thisWindow.resizeTo(1, 1);
- thisWindow.resizeTo(1, 1);
- thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);
- thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);
-
- var miny = thisWindow.document.body.scrollHeight + gBscrollHeight;
-
- if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can
- {
- thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);
- thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);
-
- miny = thisWindow.document.body.scrollHeight + gBscrollHeight;
- maxy = gBsClientHeight * gBMaxYOfParent;
-
- if (miny > maxy) { // the popup must have a scroll, OK let it be.
- miny = maxy;
- size.x = maxx;
- size.y = maxy;
- thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little.
- }
- else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.
- size.y = miny;
-
- // downsize from maxx , now I try to using binary divide.
- x = maxx;
- deltax = -maxx/2;
- //j = 0;
- while (true) {
- x = x + deltax;
- thisWindow.resizeTo(x, miny);
- thisWindow.resizeTo(x, miny);
- diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate;
- if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter
- deltax = Math.abs(deltax) /2;
- else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter
- deltax = -Math.abs(deltax) /2;
- else
- // the y is close enough to wanted.
- break;
- if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.
- break;
- }
- size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;
- size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight;
- thisWindow.document.body.scroll = 'no';
- }
- }
- else {
- if (thisWindow.document.body.scrollWidth > maxgoldx) {
- size.x = maxx;
- size.y = miny;
- thisWindow.document.body.scroll = 'yes';
- }
- else {
- // downsize from maxgoldx , now I try to using binary divide.
- x = maxgoldx;
- deltax = -maxgoldx/2;
- while (true) {
- x = x + deltax;
- thisWindow.resizeTo(x, miny);
- thisWindow.resizeTo(x, miny);
- diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W;
- if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter
- deltax = Math.abs(deltax) /2;
- else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter
- deltax = -Math.abs(deltax) /2;
- else
- // the y is close enough to wanted.
- break;
- if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.
- break;
- }
- size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;
- size.y = thisWindow.document.body.scrollHeight ;
- thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.
- thisWindow.resizeTo(size.x, size.y);
- if (thisWindow.document.body.scrollWidth > size.x)
- {
- size.x = thisWindow.document.body.scrollWidth;
- }
- if (thisWindow.document.body.scrollHeight > size.y)
- {
- size.y = thisWindow.document.body.scrollHeight;
- }
- }
- }
- thisWindow.resizeTo(size.x, size.y);
- thisWindow.resizeTo(size.x, size.y);
- return;
-}
-
-function BSSCPopupParentClicked()
-{
- if (!window.gbPopupTimeoutExpired) {
- return false;
- }
-
- document.onmousedown = gbOrignalOnMouseDown;
-
- // Simply hide the popup
- hideAll();
-
- window.gbPopupTimeoutExpired = false;
-
- return true;
-}
-
-function isInsideHyperLink(obj)
-{
- if (obj&&obj!=getParentNode(obj))
- {
- if (obj.tagName=="A"||obj.tagName=="IMG")
- return true;
- else
- return isInsideHyperLink(getParentNode(obj));
- }
- else
- return false;
-}
-
-function BSSCPopupClicked(e)
-{
- if (!window.gbPopupTimeoutExpired) {
- return false;
- }
-
- var popupIFrame = getCurrentPopupIFrame();
- if (popupIFrame == null) {
- return true;
- }
-
- if (gbBsIE4 && (!((popupIFrame.window.event != null) &&
- (popupIFrame.window.event.srcElement != null) &&
- isInsideHyperLink(popupIFrame.window.event.srcElement)))) {
- document.onmousedown = gbOrignalOnMouseDown;
-
- // Simply hide the popup
- hideAll();
- window.gbPopupTimeoutExpired = false;
- return true;
- }
- else if (gbBsNS6 && (!((e != null) &&
- (e.target!= null) && isInsideHyperLink(e.target))))
- {
- document.addEventListener("mousedown", gbOrignalOnMouseDown,false);
- // Simply hide the popup
- hideAll();
- window.gbPopupTimeoutExpired = false;
- return true;
- }
-}
-
-//trace the mouse over's position for hotspot
-function BSPSPopupOnMouseOver(event)
-{
- if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) {
- window.gnPopupClickX = event.clientX + getScrollLeft();
- window.gnPopupClickY = event.clientY + getScrollTop();
- window.gnPopupScreenClickX = event.screenX;
- window.gnPopupScreenClickY = event.screenY;
- } else if (gbBsSafari) {
- window.gnPopupClickX = event.clientX + getScrollLeft();
- window.gnPopupClickY = event.clientY + getScrollTop();
- window.gnPopupScreenClickX = event.screenX + window.screenX;
- window.gnPopupScreenClickY = event.screenY + window.screenY;
- } else if (gbBsNS4) {
- window.gnPopupClickX = event.pageX - window.pageXOffset;
- window.gnPopupClickY = event.pageY - window.pageYOffset;
- window.gnPopupScreenClickX = event.screenX - window.pageXOffset;
- window.gnPopupScreenClickY = event.screenY - window.pageYOffset;
- }
-}
-
-function BSSCHidePopupWindow()
-{
- if (window.gPopupWindow != null) {
- if (gbBsNS4) {
- if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {
- window.gPopupWindow.close();
- window.gPopupWindow = null;
- }
- }
- }
- return;
-}
-
-// Add the PopupOnClick to the onclick array.
-if (typeof(BsscRegisterOnClick) != "undefined")
-{
- BsscRegisterOnClick(BsPopupOnClick);
-}
-//End to support previous popup functions
-
-/// Section End - Popup (JavaScript 1.0)
-
-/// Section Begin - Embedded Stub (JavaScript 1.0)
-
-function BSSCCreatePopupDiv()
-{
- return;
-}
-
-function WritePopupMenuLayer()
-{
- if (BsscHasExtJs()) {_WritePopupMenuLayer();}
-}
-
-function BSSCPopup(strURL, width, height)
-{
- var re = new RegExp("'", 'g');
- strURL = strURL.replace(re, "%27");
-
- if (BsscHasExtJs()) {
- _BSSCPopup(strURL, width, height);
- }else{
- //Create a temporary window first to ensure the real popup comes up on top
- var wndTemp = null;
- if (!gbBsNS3) {
- wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");
- }
- // Create the real popup window
- var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");
- // Close the temporary
- if (!gbBsNS3) {
- wndTemp.close();
- } else {
- wndPopup.focus();
- }
- }
-}
-
-var gbWndTemp = null, gbWndPopupLinks = null;
-var gbstrParaTotal = "";
-
-function PopupMenu_Invoke()
-{
- if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function')
- {
- if (Number(gsSkinVersion) > 2 && IsFlashSupported())
- {
- return wfRelatedTopic(PopupMenu_Invoke.arguments);
- }
- }
- if (BsscHasExtJs()) {
- return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);
- }
- if (gbBsNS3Before || gbBsIE3Before ) {
- var argLen = PopupMenu_Invoke.arguments.length;
- if (argLen < 5) {
- window.document.location.href = PopupMenu_Invoke.arguments[3];
- return false;
- }
- gbWndTemp = null;
- gbWndPopupLinks = null;
- gbstrParaTotal = "";
- for (var i = 0; i < (argLen - 2) / 2; i++) {
- var strParaLine = "";
- if (gbBsNS2){
- strParaLine += "<a href=\"";
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];
- strParaLine += "\">"
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];
- strParaLine += "</a>";
- } else {
- strParaLine += "<a href=\"javascript:";
- strParaLine += "gotoUrl(\'";
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];
- strParaLine += "\');\"";
- if (PopupMenu_Invoke.arguments[1] != '') {
- strParaLine += " TARGET='" + PopupMenu_Invoke.arguments[1] + "'";
- }
- strParaLine += ">";
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];
- strParaLine += "</a>";
- }
- strParaLine += "<br>";
- gbstrParaTotal += strParaLine;
- }
- var nHeight = argLen * 15;
- var nWidth = 400;
- var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";
- strParam += ",height=" + nHeight + ",width=200,resizable";
-
- //Create a temporary window first to ensure the real popup comes up on top
- //var wndTemp = null;
- if (!gbBsNS3) {
- gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");
- }
- gbWndPopupLinks = window.open("", "popuplinks", strParam);
-
- setTimeout("Wait_PopupMenuReady()", 100);
- }
- return true;
-}
-
-function Wait_PopupMenuReady()
-{
- if (gbWndPopupLinks != null && "object" == typeof(gbWndPopupLinks.document)) {
- PopupMenu_InvokeReady();
- }
- else
- setTimeout("Wait_PopupMenuReady()", 100);
-}
-
-function PopupMenu_InvokeReady()
-{
- if (gbWndPopupLinks != null) {
- gbWndPopupLinks.document.open("text/html");
- gbWndPopupLinks.document.write("<html><head>");
- if (gbBsNS2) {
- gbWndPopupLinks.document.write("<base href=\"" + location +"\">");
- } else {
- //YJ: IE301,302 and NS3.x works fine
- gbWndPopupLinks.document.write("<");
- gbWndPopupLinks.document.write("script>");
- gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}");
- gbWndPopupLinks.document.write("<");
- gbWndPopupLinks.document.write("/script>");
- }
- gbWndPopupLinks.document.write("</head><body onBlur=\'self.focus();\'>");
- gbWndPopupLinks.document.write(gbstrParaTotal);
- gbWndPopupLinks.document.write("</body></html>");
- gbWndPopupLinks.document.close();
-
- // Close the temporary
- if (!gbBsNS3 && gbWndTemp != null) {
- gbWndTemp.close();
- }else {
- gbWndPopupLinks.focus();
- }
-
- return true;
- }
- return false;
-}
-
-/// Section End - Embedded Stub (JavaScript 1.0)
-
-//// Segment End -- (JavaScript 1.0)
-
-//// Segment Begin -- (JavaScript 1.2)
-/// Section Begin - kadov DHTM (JavaScript 1.2)
-
-//Begin to support extended and dropdown text effects.
-function kadovIsParagraph(el)
-{
- return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;
-}
-
-function kadovInitEachChild(el)
-{
- for(var i=0; i<getChildNodes(el).length; i++)
- {
- var child = getChildNodes(el)[i];
- if( child.tagName == "SCRIPT" || child.tagName == "!" )
- continue;
-
- if( child.id != "" )
- {
- // to wipe out the onload effects
- if (gbBsIE4&&!gbBsMac)
- {
- var onLoadEffect = child.style.getAttribute( "x-on-pageload" );
- if( (onLoadEffect != null) && (onLoadEffect > "") )
- child.style.setAttribute( "x-on-pageload", "" );
- }
-
- var href = child.getAttribute("href")
- if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )
- kadovFilePopupInit(child.id); // Init for Popup
- else if( child.className == "dropspot" || child.className == "expandspot" ||
- child.className == "glossterm" )
- kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text
- else if( child.className == "trigger")
- kadovInitTrigger(child.id);// Init for Trigger
- else
- {
- kadovInitEffects(child.id);// Init for DHTML effects
- CEngine.SetOneTargetInitialState( child.id );
- }
- }
-
- if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )
- child.start = "mouseover";// to start a AVI file. fileopen doesn't work
-
- kadovInitEachChild(child);
- }
-}
-
-function kadovRetrieveTextInner(el)
-{
- var x = "";
- if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))
- return x;
-
- if( kadovIsParagraph(el) )
- {
- var strNewID = " ";
- if( el.id != "" )
- strNewID += "id=" + el.id + "_NewSpan ";
- x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";
- }
- else
- {
- for(var i=0; i<getChildNodes(el).length; i++)
- x += kadovRetrieveTextInner( getChildNodes(el)[i] );
- }
- return x;
-}
-
-function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )
-{
- var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );
- if( nTagOpen < 0 )
- return strRawHTML;
-
- var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);
- if( nTagClose < nTagOpen )
- return strRawHTML;
-
- if( typeof(nDistance) == "number" && nDistance > 0 )
- if( (nTagClose - nTagOpen) != nDistance )
- return strRawHTML;
-
- var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;
- return kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );
-}
-
-function kadovAdjustObjectTag(strRawHTML, nStartPos)
-{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings
-
- //Is there any DTC?
- var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';
- var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';
- var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );
- if( nDTCTagOpen < 0 )
- return strRawHTML;
- var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );
- if( nDTCTagClose < nDTCTagOpen)
- return strRawHTML; // no Design Time Controls;
-
- //Is the DTC HTML Help Control?
- var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';
- var strRTObjTagClose = '</OBJECT>';
- var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );
- if( nRTObjTagOpen < nDTCTagOpen )
- return strRawHTML;
- var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );
- if( nRTObjTagClose < nRTObjTagOpen )
- return strRawHTML; // is not a HTML help control
-
- // Is it a related Topics html help control?
- var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';
- if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )
- return strRawHTML;
-
- // does the commented object tag contain a items parameters
- var strRTItemsOpen = '<param name="Items" value="';
- var strRTItemsClose = '$$**$$" >';
- var strRTItemsClose2 = '$$**$$">';
-
- var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);
- if( nRTItemsOpen < nDTCTagOpen )
- return strRawHTML;
- var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);
- if (nRTItemsClose == -1)
- nRTItemsClose = strRawHTML.indexOf(strRTItemsClose2, nRTItemsOpen);
- if( nRTItemsClose < nRTItemsOpen )
- return strRawHTML;
-
- // found a items string
- var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);
- if( strItems.length < 1 )
- return strRawHTML;
-
- // to reconstruct the item(s) param tag(s)
- var strItemsArray = strItems.split('$$**$$');
- if( strItemsArray.length < 1 )
- return strRawHTML;
- var strRunTimeItemParam = "";
- for( var i = 0; i < strItemsArray.length; i++ )
- {
- strRunTimeItemParam += '<PARAM NAME="Item' + (i+1);
- strRunTimeItemParam += '"' + ' VALUE="';
- strRunTimeItemParam += strItemsArray[i];
- strRunTimeItemParam += '">';
- }
-
- // to insert the reconstructed item params into runtime object tag
- var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);
- return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);
-}
-
-function kadovTextPopupOnLoad( el )
-{
- if( typeof(el) == "string" )
- el = getElement(el);
-
- var src = el.getAttribute( "x-use-popup" );
- var bNeedMove=true;
- if(!src&&el.id)
- {
- for (var i=0;i<gPopupData.length;i++)
- if (gPopupData[i].el==el.id)
- {
- src=gPopupData[i].popupId;
- bNeedMove=false;
- break;
- }
- }
- if(!src)
- src = el.style.getAttribute( "x-use-popup" );
- if (!src)
- return 0;
-
- var name = src;
- if( src.substr(0,1) == "#" )
- name = src.substr(1, src.length-1);
- var srcDiv = getElement(name);
- if( !srcDiv )
- return 1;
-
- if (bNeedMove)
- {
- var type = el.getAttribute( "x-popup-type" );
- if (!type)
- type = el.style.getAttribute("x-popup-type");
- if (!type)
- return 1;
- var setup = el.getAttribute( "x-tmp-setup" );
- var newId = name;
- if( newId.indexOf( "_tmp") <= 0 )
- newId += "_tmp";
-
- if( !setup)
- {
- el.setAttribute( "x-tmp-setup", 1 );
-
- if( type == "pulldown" )
- {
- var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);
- var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");
-
- //work around the bug in HH.exe that highlight the phrases when use Search tab
- //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);
-
- var strStyle = " style='display:none; position:relative;";
- var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";
-
- removeThis(srcDiv); // empty the original DIV tag
- var elParentPra = kadovFindParentParagraph(el);
- if( elParentPra )
- insertAdjacentHTML(elParentPra, "afterEnd", newDiv );
- }
- else if( type == "expanding" )
- {
- var inner = kadovRetrieveTextInner(srcDiv);
- if( inner == "" )
- inner = srcDiv.innerHTML;
- var strAdjust = kadovAdjustObjectTag(inner,0);
- var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");
- var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";
- var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + "> " + strCleanHTML + "</span>";
- removeThis(srcDiv); // empty the original DIV tag
- insertAdjacentHTML(el, "afterEnd", newSpan );
- }
- }
- }
- else
- {
- srcDiv.style.display = "none";
- }
- return 0;
-}
-
-function getElementsByTag(obj,sTagName)
-{
- if(obj.getElementsByTagName)
- return obj.getElementsByTagName(sTagName);
- else if(obj.all)
- return obj.all.tags(sTagName);
- return null;
-}
-
-function getElement(sID)
-{
- if(document.getElementById)
- return document.getElementById(sID);
- else if(document.all)
- return document.all(sID);
- return null;
-}
-
-function getParentNode(obj)
-{
- if(obj.parentNode)
- return obj.parentNode;
- else if(obj.parentElement)
- return obj.parentElement;
- return null;
-}
-
-function getChildNodes(obj)
-{
- if(obj.childNodes)
- {
- var children = new Array();
- for (var i = 0; i < obj.childNodes.length; i++)
- {
- if (obj.childNodes[i].nodeType == 1)
- children[children.length] = obj.childNodes[i];
- }
- return children;
- }
- else if(obj.children)
- return obj.children;
- return null;
-}
-
-function removeThis(obj)
-{
- if(obj.parentNode)
- obj.parentNode.removeChild(obj);
- else
- obj.outerHTML="";
-}
-
-function kadovTextPopup( el )
-{
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 )
- return;
-
- var bNeedMove=true;
-
- if (window.event)
- window.event.cancelBubble = true;
-
- if( typeof(el) == "string" )
- el = getElement(el);
-
- if (!el||el==window)
- return;
-
- var src = el.getAttribute( "x-use-popup" );
- if(!src&&el.id)
- {
- for (var i=0;i<gPopupData.length;i++)
- if (gPopupData[i].el==el.id)
- {
- src=gPopupData[i].popupId;
- bNeedMove=false;
- break;
- }
- }
- if(!src)
- src = el.style.getAttribute( "x-use-popup" );
- if(!src)
- return;
-
- var name = src;
- if( src.substr(0,1) == "#" )
- if (bNeedMove)
- name = src.substr(1, src.length-1) + "_tmp";
- else
- name = src.substr(1, src.length-1);
-
- var srcDiv = getElement(name);
- if( !srcDiv )
- return;
-
- if( srcDiv )
- {
- if( srcDiv.style.display == "" )
- srcDiv.style.display = "none";
- else
- {
- srcDiv.style.display = "";
- if( typeof(srcDiv.bInitialized) == "undefined" )
- {
- srcDiv.bInitialized = true;
- kadovInitEffects(name);
- kadovInitEachChild(srcDiv);
- }
- }
- }
- if(gbBsIE4)
- event.returnValue=false;
- return;
-}
-
-function kadovFindParentParagraph( el )
-{
- if( typeof(el) == "string" )
- el = getElement(el);
- if( (!el) || el.tagName == "BODY" )
- return null;
- if( kadovIsParagraph(getParentNode(el)) )
- return getParentNode(el);
- else
- return kadovFindParentParagraph( getParentNode(el) );
-}
-
-//Begin HTML code invoked function
-function kadovRegisterEventHandler( obj, strEvent, strEventHandler )
-{
- if( !gbBsIE4 )
- return;
- CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );
-}
-
-function textPopupData(el, popupId)
-{
- this.el = el;
- this.popupId = "#"+popupId;
-}
-
-var gPopupData = new Array();
-
-function kadovTextPopupInit( el, popupId)
-{
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3)
- return;
-
- if( typeof(el) == "string" )
- {
- if (popupId)
- {
- gPopupData[gPopupData.length]=new textPopupData(el, popupId);
- }
- el = getElement(el);
- }
-
- if( el != null )
- {
- CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(\"" + el.id +"\");" );
- CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(\"" + el.id +"\");" );
- }
-}
-//End HTML code invoked function
-
-//End to support extended and dropdown text effects.
-
-//Begin to convert iWrite format to RoboEditor Format for DHTML effects
-function kadovInitTriggersInHead( )
-{
- if( Object.xDelayedInitElements )
- {
- var x = Object.xDelayedInitElements;
- for(i=0; i<x.length; i++)
- kadovInitTrigger( x[i] );
- }
-}
-
-//Begin HTML code invoked function
-function kadovFilePopupInit( el )
-{
- if( typeof(el) == "string" )
- el = getElement(el);
-
- if( el != null )
- CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );
-}
-
-function kadovInitTrigger( element )
-{
- if( !gbBsIE4 )
- return;
- var srcElement = element;
- if( typeof(srcElement) == "string" )
- {
- srcElement = getElement(element,0);
- if(srcElement == null)
- return;
- }
-
- if( !kadovIsParentVisible(srcElement) )
- return;
-
- var targets = srcElement.getAttribute( "x-targets" );
- if (!targets)
- targets = srcElement.style.getAttribute("x-targets");
- if (!targets)
- return;
- var arrOneTarget = targets.split( "," );
- for( var i = 0; i < arrOneTarget.length; i ++ )
- bsscFXInit( element, arrOneTarget[i], null, null, null, null );
-}
-
-function kadovIsParentVisible( el )
-{
- if( typeof(el) == "string" )
- el = getElement(el);
- if( (!el) || el.tagName == "BODY" )
- return true;
- if( el.style.display == 'none' ) //el.visibility == 'hidden' ||
- return false;
- else
- return kadovIsParentVisible( getParentNode(el) );
-}
-
-function kadovInitEffects( element )
-{
- if( !gbBsIE4 )
- return;
- var srcElement = element;
- if( typeof(srcElement) == "string" )
- {
- srcElement = getElement(element,0);
- if(srcElement == null)
- return;
- }
-
- if( !kadovIsParentVisible(srcElement) )
- return;
-
- kadovInitEffect( srcElement, "x-on-hover" );
- kadovInitEffect( srcElement, "x-on-pageclick" );
- kadovInitEffect( srcElement, "x-on-pageload" );
- kadovInitEffect( srcElement, "x-on-trigger-1" );
- kadovInitEffect( srcElement, "x-on-trigger-2" );
-}
-//End HTML code invoked function
-
-function kadovInitEffect( element, prop )
-{
- var values = null;
- if( element.getAttribute( "currentStyle" ) && element.currentStyle.getAttribute)
- values = element.currentStyle.getAttribute( prop );
- else if (element.style.getAttribute)
- values = element.style.getAttribute( prop );
- if( !values )
- return;
-
- var functions = new Array();
- var nIdx = 0, nStart = 0;
- var nNext = values.indexOf( "\)", 0);
- while( nNext >= 0 && nNext < values.length )
- {
- functions[nIdx] = values.substr( nStart, nNext-nStart+1);
- nStart = nNext + 1;
- nIdx++;
- nNext = values.indexOf( "\)", nStart);
- }
-
- for( var i=0; i<functions.length; i++)
- {
- var id = element.getAttribute( "id" );
- var translatedProp = kadovTranslateProp(prop);
-
- var lp = functions[i].indexOf( "(" );
- var fnname = functions[i].substring(0, lp);
- var srcargs = functions[i].substring(lp+1, functions[i].length-1);
-
- var nClickTimes = 1;
- var arrForClickCount = srcargs.split( "," );
- for( var j = 0; j < arrForClickCount.length; j++ )
- {// to locate and get the "clicks=99" settings
- var nPageClick = arrForClickCount[j].indexOf("clicks");
- if( nPageClick >= 0 )
- {
- nPageClick = arrForClickCount[j].indexOf("=");
- if( nPageClick > 0 )
- {
- nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;
- break;
- }
- }
- }
- var args = srcargs;
- if( j < arrForClickCount.length )
- {// to strip out the "clicks=99" from the arguments string
- args = "";
- for( var k = 0; k < arrForClickCount.length; k ++ )
- {
- if( k != j )
- {
- args += arrForClickCount[k];
- if( k < arrForClickCount.length - 1 )
- args += ",";
- }
- }
- }
- bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );
- }
-}
-
-function kadovTranslateProp( prop )
-{
- switch( prop )
- {
- case "x-on-hover" : return "bsschover";
- case "x-on-pageclick" : return "bsscpageclick";
- case "x-on-pageload" : return "bsscpageload";
- case "x-on-trigger-1" : return "bssctrigger1";
- case "x-on-trigger-2" : return "bssctrigger2";
- }
- return null;
-}
-//End to convert iWrite format to RoboEditor Format for DHTML effects
-
-//Begin the definition of one entry to DHTML effects
-function bsscFXInit( trigger_ID, target_ID, event_type,
- action_type, action_setting, event_addional )
-{
- if( (!gbBsWindows && !gbBsSunOS && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID
- return; // we don't support Navigator yet
-
- if( typeof(event_type) == "string" )
- event_type = event_type.toLowerCase();
- if( typeof(action_type) == "string" )
- action_type = action_type.toLowerCase();
- if( typeof(action_setting) == "string" )
- action_setting = action_setting.toLowerCase();
-
- // to get the target element then add it to the target list
- var eleTarget = CCSSP.GetObject( target_ID );
- if( (eleTarget != null) && (event_type != null) && (action_type != null) )
- {
- CEngine.AddOneTarget( target_ID, eleTarget );
- CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);
- }
-
- // to validate the trigger_ID parameter
- if( typeof(trigger_ID) == "string" && trigger_ID != "" )
- CEngine.BuildTriggerObject( trigger_ID, target_ID );
-}
-//End the definition of one entry to DHTML effects
-
-/// Section End - kadov DHTM (JavaScript 1.2)
-
-/// Section Begin - CCSSP DHTM (JavaScript 1.2)
-
-//Begin JavaScript libary for cross-platform positioning object.
-function CCSSP(){} // constructor of CCSSP class
-
-CCSSP.GetObject = function( obj )
-{//convert object name string or reference into a valid object reference
- if( typeof(obj) == "object" )
- return obj;
- else if( typeof(obj) == "string" && obj != "")
- {
- if( gbBsNS4 )
- return eval("document." + obj);
- else
- return eval("document.all(\"" + obj + "\")");
- }
- else
- return null;
-}
-
-CCSSP.MoveObjectTo = function(obj, x, y)
-{//positioning an object at a specific pixel coordinate
- if( gbBsNS4 )
- obj.moveTo(x,y);
- else
- {
- obj.style.pixelLeft = x;
- obj.style.pixelTop = y;
- }
-}
-
-CCSSP.MoveObjectBy = function(obj, dx, dy)
-{//moveing a object by x and/or y pixel
- if( gbBsNS4 )
- obj.moveBy(dx,dy);
- else
- {
- obj.style.pixelLeft += dx;
- obj.style.pixelTop += dy;
- }
-}
-
-CCSSP.SetObjectBGColor = function(obj, color)
-{//set the background color of an object
- if( gbBsNS4 )
- obj.bgColor = color;
- else
- obj.style.backgroundColor = color;
-}
-
-CCSSP.ShowObject = function(obj, bShow)
-{// set the object to be visible or invisible
- if( gbBsNS4 )
- obj.visibility = (bShow == true) ? 'show' : 'hide';
- else
- obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.
-}
-
-CCSSP.GetObjectLeft = function(obj)
-{// retrieve the x coordinate of a posionable object
- if( gbBsNS4 )
- return obj.left;
- else
- return obj.style.pixelLeft;
-}
-
-CCSSP.GetObjectTop = function(obj)
-{// retrieve the y coordinate of a posionable object
- if( gbBsNS4 )
- return obj.top;
- else
- return obj.style.pixelTop;
-}
-
-CCSSP.GetObjectContainLeft = function(obj)
-{// retrieve the x coordinate of a posionable object relative to it's parent element
- if( gbBsNS4 )
- return obj.pageX;
- else
- {
- if( obj == document.body )
- return obj.clientLeft;
- else
- return obj.offsetLeft;
- }
-}
-
-CCSSP.GetObjectWindowLeft = function(obj)
-{// retrieve the x coordinate of a posionable object relative to browser window
- if( gbBsNS4 )
- return obj.pageX;
- else
- {
- var nOffsetWindowLeft = 0;
- for(var element = obj; element; element = element.offsetParent)
- nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element);
- return nOffsetWindowLeft;
- }
-}
-
-CCSSP.GetObjectContainTop = function(obj)
-{// retrieve the y coordinate of a posionable object relative to it's parent element
- if( gbBsNS4 )
- return obj.pageY;
- else
- {
- if( obj == document.body )
- return obj.clientTop;
- else
- return obj.offsetTop;
- }
-}
-
-CCSSP.GetObjectWindowTop = function(obj)
-{// retrieve the y coordinate of a posionable object relative to browser window
- if( gbBsNS4 )
- return obj.pageY;
- else
- {
- var nOffsetWindowTop = 0;
- for(var element = obj; element; element = element.offsetParent)
- nOffsetWindowTop += CCSSP.GetObjectContainTop(element);
- return nOffsetWindowTop;
- }
-}
-
-CCSSP.GetObjectHeight = function(obj)
-{// retrieve the height of a posionable object
- if( gbBsNS4 )
- return obj.clip.height;
- else
- return obj.offsetHeight;
-}
-
-CCSSP.GetObjectWidth = function(obj)
-{// retrieve the width of a posionable object
- if( gbBsNS4 )
- return obj.clip.width;
- else
- return obj.offsetWidth;
-}
-
-CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )
-{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined
- if (gbBsNS4 && !gbBsNS6)
- return ;
-
- var oldHandler = "";
-
- if (gbBsMac &&gbBsIE4&&!gbBsIE5)
- {
- if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")
- { //search for <SCRIPT> tag which define the event handler
- for( var i = 0; i < document.scripts.length; i++ )
- {
- var script = document.scripts[i];
- if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )
- {
- oldHandler = script.innerHTML;
- break;
- }
- }
- }
- }
- else
- {
- var oldInlineHandler = srcObj[rawEventName.toLowerCase()];
- if( oldInlineHandler != null && typeof(oldInlineHandler) != "undefined")
- {
- var functionDefinition = oldInlineHandler.toString();
- var bodyStart = functionDefinition.indexOf( "{" );
- var bodyEnd = functionDefinition.lastIndexOf( "}" );
- if( bodyStart > 0 || bodyEnd > bodyStart )
- oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );
- }
- else if( gbBsIE4 )
- { //search for <SCRIPT> tag which define the event handler
- for( var i = 0; i < document.scripts.length; i++ )
- {
- var script = document.scripts[i];
- if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )
- {
- oldHandler = script.innerHTML;
- break;
- }
- }
- }
- }
- if( oldHandler.indexOf(funcHandler) >= 0 )
- return;// to prevent register the funtion twice.
-
- if( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window
- {// other raw events will apply to layer
- var noOn = rawEventName.substring(2, rawEventName.length);
- if( typeof(noOn) == "string" && noOn.length > 3 ) {
- if (srcObj.captureEvents)
- srcObj.captureEvents( Event[noOn.toUpperCase()] );
- }
- }
-
- var newHandler = oldHandler;
- if( newHandler.length == 0 )
- newHandler = funcHandler;
- else
- newHandler += "; " + funcHandler;
-
- srcObj[rawEventName.toLowerCase()] = new Function( newHandler );
-}
-
-CCSSP.GetWindowHeight = function()
-{// retrieve the height of available content in browser window
- if( gbBsNS4 )
- return window.innerHeight;
- else
- return document.body.clientHeight;
-}
-
-CCSSP.GetWindowBottom = function()
-{// retrieve the bottom postion of browser window
- if( gbBsNS4 )
- return window.outerHeight + window.pageYOffset;
- else
- return document.body.clientHeight + document.body.scrollTop;
-}
-
-CCSSP.GetWindowWidth = function()
-{// retrieve the width of available content in browser window
- if( gbBsNS4 )
- return window.innerWidth;
- else
- return document.body.clientWidth;
-}
-
-CCSSP.GetWindowRight = function()
-{// retrieve the right postion of browser window
- if( gbBsNS4 )
- return window.outerWidth + window.pageXOffset;
- else
- return document.body.clientWidth + document.body.scrollLeft;
-}
-
-CCSSP.TrimString = function( objString, subtrim )
-{// to trim the "subtrim" in the beginning and ending of a string object
- if( typeof(subtrim) != "string" || subtrim == null )
- return objString;
- var strHead = objString.substring(0, 1);
- var strRear = objString.substring(objString.length-1, objString.length);
- if( strHead != subtrim && strRear != subtrim )
- return objString;
-
- var spacePos = objString.indexOf(subtrim);
- if( spacePos < 0 )
- return objString;
- else if( spacePos == objString.length - 1 )
- return objString.substring(0, spacePos);
- else
- {
- var newString = objString.substring( spacePos + 1, objString.length);
- return CCSSP.TrimString( newString, subtrim );
- }
-}
-
-CCSSP.TrimSpace = function( objString )
-{
- var Trim1 = CCSSP.TrimString( objString, " ");
- return CCSSP.TrimString( Trim1, "\'");
-}
-
-CCSSP.GetEventElement = function( navEventObject )
-{// to get the element who fired the current event
- if(gbBsNS4)
- if (gbBsNS6)
- return null;
- else
- navEventObject.target;
- else
- return event.srcElement;
-}
-
-CCSSP.PrepareFilter = function( Obj )
-{//to prepare for making the filter work
- Obj.style.filter = "";
- if( Obj.style.width != "" || Obj.style.height != "" || Obj.style.position == "absolute" )
- return;
- Obj.style.height = CCSSP.GetObjectHeight(Obj);
-}
-
-CCSSP.IsDescendant = function( progenitor, progeny )
-{
- if( typeof(progeny) == "undefined" || progeny == null )
- return false;
- else if( progeny == progenitor )
- return true;
- else if( progeny.id == progenitor.id )
- return true;
- else if( getParentNode(progeny) == getParentNode(progenitor))
- return false;
- else
- return CCSSP.IsDescendant( progenitor, getParentNode(progeny));
-}
-
-CCSSP.IsTextTag = function( Obj )
-{
- if( typeof( Obj.tagName ) == "undefined" )
- return false;
- return( Obj.tagName.indexOf("H") == 0 || Obj.tagName == "P" ||
- Obj.tagName == "FONT" || Obj.tagName == "SPAN" );
-}
-
-//End JavaScript libary for cross-platform positioning object.
-
-/// Section End - CCSSP DHTM (JavaScript 1.2)
-
-/// Section Begin - CCSSP DHTM 1 (JavaScript 1.2)
-
-//Begin the definition of class CTrigger
-function CTrigger( TriggerElement )
-{
- // object : the trigger element. Never be null.
- this.eleTrigger = TriggerElement;
-
- // number : the click counter number: only 3 values: 0,1,2;
- this.nCounter = 0;
-
- //object as associative array of string:
- // the associate target ID strings; one element at least.
- this.objStrTarget = new Object();
- this.eleTrigger.style.cursor = "hand";
- if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )
- this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map
-}
-
-CTrigger.prototype.AddTargetID = function( strTargetID )
-{// add one target ID string to the objStrTarget
- if( typeof(strTargetID) != "string" )
- return ;
- if( typeof(this.objStrTarget[strTargetID]) != "string" )
- this.objStrTarget[strTargetID] = strTargetID;
-}
-
-CTrigger.prototype.OnTriggerClick = function()
-{// to activate all asociated target
- var strEventType = ( (this.nCounter++)% 2 == 0 ) ?
- "bssctrigger1" : "bssctrigger2";
-
- // to enumerate associative target element's ID string
- for( var strTargetID in this.objStrTarget )
- CEngine.SendEventToOneTarget( strTargetID, strEventType );
-}
-//End the definition of class CTrigger
-
-//Begin the definition of class CTarget
-function CTarget( TargetElement )
-{
- // object : the target element. Never be null.
- this.eleTarget = TargetElement;
- this.objManager = new Object(); // object: the event manager
-}
-
-CTarget.nPageClickCounter = 0;// static class property.
-
-CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )
-{// return the action agency ( effect )object's refernece
- switch( str_action_type )
- {
- case "show":return new CAgencyShow( this.eleTarget, true ) ;
- case "hide":return new CAgencyShow( this.eleTarget, false ) ;
-
- case "flyin" :
- return new CAgencyFly(this.eleTarget, action_setting, true);
- case "flyout" :
- return new CAgencyFly(this.eleTarget, action_setting, false);
- case "spiralin" :
- return new CAgencySpiral(this.eleTarget, action_setting, true);
- case "spiralout" :
- return new CAgencySpiral(this.eleTarget, action_setting, false);
- case "zoomin" :
- return new CAgencyZoom(this.eleTarget, action_setting, true);
- case "zoomout" :
- return new CAgencyZoom(this.eleTarget, action_setting, false);
- case "elastic" :
- return new CAgencyElastic(this.eleTarget, action_setting);
-
- case "fadein" :
- return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;
- case "fadeout" :
- return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;
- case "rockrollstatic" :
- case "rockroll" :
- return (gbBsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;
-
- case "glow":
- return (gbBsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;
- case "dropshadow":
- return (gbBsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;
- case "transition" :
- return (gbBsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;
- case "blur" :
- return (gbBsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;
-
- case "fliph" : // all these 4 do NOT need any parameters
- case "flipv" :
- case "invert":
- case "gray" :
- return (gbBsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;
-
- case "fontchange": // the effects below change the style on the fly, so won't work in Navigator
- return (gbBsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;
- case "boderchange":
- case "stylechange":
- return (gbBsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;
-
- default: return null;
- }
-}
-
-CTarget.prototype.SetEventManager = function(
- one_event_type,str_action_type,action_setting,event_additional)
-{// to set the event manager with specified action
- if( typeof( one_event_type ) != "string" ||
- typeof( str_action_type ) != "string"||
- typeof( action_setting ) != "string" )
- return false;
- if( typeof(this.objManager[one_event_type]) == "undefined" )
- {
- this.objManager[one_event_type] = new Object();
- this.objManager[one_event_type].length = 0;
- }
-
- var eventAgency = this.GetAgencyObject(str_action_type,action_setting);
- if( eventAgency != null )
- {
- var ct = this.objManager[one_event_type].length ++;
- this.objManager[one_event_type][ct] = eventAgency;
-
- if( one_event_type == "bsscpageclick" )
- {// to deal with the "number of pageclick" stuff
- if( typeof(event_additional) == "number" )
- this.objManager[one_event_type][ct].nPageClick = event_additional;
- else // set the default number
- this.objManager[one_event_type][ct].nPageClick = 1;
-
- if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||
- (this.objManager[one_event_type][ct].nPageClick <
- this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )
- this.objManager.nMinPageClickIndex = ct;
- }
-
- //hide the object blindly,SetState function will take care of the final correct state
- if( ((one_event_type == "bsscpageclick") &&
- (this.objManager[one_event_type][ct].nPageClick == 1)) ||
- one_event_type == "bsscpageload" ||
- one_event_type == "bssctrigger1" )
- CCSSP.ShowObject( this.eleTarget, false );
-
- if( one_event_type == "bssctrigger1" || one_event_type == "bssctrigger2" )
- if( typeof( this.strTriggerEvent ) == "undefined" )
- this.strTriggerEvent = ( one_event_type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1";
-
- return true;
- }
- return false;
-}
-
-CTarget.prototype.OnEvent = function( strBsscEvent )
-{// response to the event ( bssc format )
- if( typeof(this.objManager[strBsscEvent]) == "object" )
- { // to get the event agency from the event manager
- var eventAgency = this.objManager[strBsscEvent];
- for( var i = 0; i < eventAgency.length; i++ )
- {
- if( strBsscEvent == "bsscpageclick" &&
- eventAgency[i].nPageClick != CTarget.nPageClickCounter )
- continue;
- else if( strBsscEvent == "bsschover" && event.type == "mouseout" )
- eventAgency[i].EndEffect();
- else // to invoke the unified function in effect object
- eventAgency[i].UpdateEffect();
- }
- }
-}
-
-CTarget.prototype.SetState = function( strBsscEvent )
-{
- if( typeof(this.objManager[strBsscEvent]) != "object" )
- return false;
-
- // to get the event agency from the event manager
- var eventAgency = this.objManager[strBsscEvent];
-
- if( strBsscEvent == "bsscpageclick" )
- {// we only set the initial state for the minium number of pageclick
- eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();
- return true;
- }
- else
- {
- for( var i = 0; i < eventAgency.length; i++ )
- eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object
- if( i > 0 )
- return true;
- else
- return false;
- }
-}
-//End the definition of class CTarget
-
-//Begin the definition of CEngine class
-function CEngine(){}// all properities are going be "class" properities
-
-// object : as associative array of trigger objects
-CEngine.objTrigger = new Object();
-// object : as associative array of target objects
-CEngine.objTarget = new Object();
-
-// Array : each element is a CAgencyXXX animation object
-CEngine.arrAnimation = new Array();
-CEngine.PerformAnimation = function( nIndex )
-{// animation : update effects function
- CEngine.arrAnimation[nIndex].UpdateEffect();
-}
-
-CEngine.AddOneTrigger = function(TriggerID,TriggerElement)
-{// add one Trigger object into the trigger array
- if( typeof(TriggerID) != "string" || TriggerElement == null ||
- typeof(TriggerElement) != "object" )
- return;
- if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )
- CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);
-}
-
-CEngine.AddOneTarget = function(TargetID, TargetElement)
-{// add one Target object into the target array
- if( typeof(TargetID) != "string" || TargetElement == null ||
- typeof(TargetElement) != "object" )
- return;
- if( typeof(CEngine.objTarget[TargetID]) != "object" )
- CEngine.objTarget[TargetID] = new CTarget( TargetElement );
-}
-
-CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )
-{// to activate one target object
- if( typeof(CEngine.objTarget[strTargetID]) == "object" )
- {
- if( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )
- {//now, the "bssctrigger1" and "bssctrigger2" work like a toggle
- if( strBsscEvent == CEngine.objTarget[strTargetID].strTriggerEvent )
- strBsscEvent = (strBsscEvent == "bssctrigger1") ? "bssctrigger2" : "bssctrigger1";
- CEngine.objTarget[strTargetID].strTriggerEvent = strBsscEvent;
- }
- CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );
- }
-}
-
-CEngine.SendEventToAllTarget = function( strBsscEvent )
-{ //to activate all target associative to the BSSC event
- for( var strTargetID in CEngine.objTarget ) //to enumerate all target
- CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );
-}
-
-CEngine.SetOneTargetInitialState = function( strTargetID )
-{// only invoked after ALL effects for the target have been set
- if( typeof(CEngine.objTarget[strTargetID]) == "object" )
- {// to get target object
- var objTarget = CEngine.objTarget[strTargetID];
- if( objTarget.SetState( "bsscpageload" ) == false )
- {
- objTarget.SetState( "bsscpageclick" );
- objTarget.SetState( "bssctrigger1" );
- }
- }
-}
-
-CEngine.AdjustPageClickCounter = function()
-{
- var nAdjustedClickCounter = CTarget.nPageClickCounter;
- var bAdjusted = false;
- for( var strTargetID in CEngine.objTarget ) //to enumerate all target
- {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter
- var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;
- if( objEventPageClick != null )
- {
- for( var i = 0; i < objEventPageClick.length; i++ )
- {
- var nOtherPageClick = objEventPageClick[i].nPageClick;
- if( nOtherPageClick == CTarget.nPageClickCounter )
- return;
- if( nOtherPageClick > CTarget.nPageClickCounter )
- {
- if( !bAdjusted )
- {
- nAdjustedClickCounter = nOtherPageClick;
- bAdjusted = true;
- }
- else if( nOtherPageClick < nAdjustedClickCounter )
- nAdjustedClickCounter = nOtherPageClick;
- }
- }
- }
- }
- CTarget.nPageClickCounter = nAdjustedClickCounter;
-}
-
-CEngine.OnPageLoad = function()
-{
- // first, to set all target's initial state
- for( var strTargetID in CEngine.objTarget )
- CEngine.SetOneTargetInitialState( strTargetID );
-
- // to invoke all target's onpageload handler
- CEngine.SendEventToAllTarget( "bsscpageload" );
-}
-
-CEngine.OnPageClick = function()
-{ // to invoke all target's onpageclick handler
- var src = CCSSP.GetEventElement( arguments[0] );
- if( src == null )
- return;
-
- var objClickedTrigger = null;
- for( var strTriggerID in CEngine.objTrigger )
- { // to detect which trigger is clicked
- if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )
- {
- objClickedTrigger = CEngine.objTrigger[strTriggerID];
- break;
- }
- }
-
- if( objClickedTrigger != null) // the clicked trigger found
- objClickedTrigger.OnTriggerClick();
- else // no trigger is clicked
- { // to send PageClick event to all target
- CTarget.nPageClickCounter++;
- CEngine.AdjustPageClickCounter();
- CEngine.SendEventToAllTarget( "bsscpageclick" );
- }
-}
-
-CEngine.OnMouseOver = function()
-{ // to invoke all target's onpageload handler
- var src = CCSSP.GetEventElement( arguments[0] );
- if( src == null )
- return;
-
- var strHoveredTargetID = null;
- for( var strTargetID in CEngine.objTarget )
- { // to detect which Target is hovering on
- if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )
- {
- strHoveredTargetID = strTargetID;
- break;
- }
- }
-
- if( strHoveredTargetID != null ) // the hovered target found
- CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );
-}
-
-CEngine.BuildTargetObject = function(target_ID,event_type,action_type,
- action_setting, event_additional)
-{// to build target object
- // to get the target object
- if( typeof( CEngine.objTarget[target_ID] ) != "object" )
- return false;// the engine's AddOneTarget function might have failed.
- var TargetObject = CEngine.objTarget[target_ID];
-
- // to prepare the parameters for the event manager
- var arrEvent = event_type.split("|"); // to split the combined event_type string
- var arrAction = action_type.split("|");//to split the combined action_type string
- for( var trim = 0; trim < arrEvent.length; trim++ )
- arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);
-
- for( trim = 0; trim < arrAction.length; trim++ )
- arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);
-
- var arrSetting = new Array();
- if( typeof(action_setting) == "string" )
- arrSetting = action_setting.split("|");// to split the combined action_setting string
- // to calibrate the arrays
- for( var i = arrSetting.length; i < arrAction.length; i++ )
- {
- if( typeof(arrSetting[i]) != "string" )
- arrSetting[i] = "";
- }
-
- // to prepare for dealing with the absolute posioning element
- TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );
- TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );
-
- if( arrEvent.length > 1 )
- {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"
- if( arrAction.length != 2 )
- return false; // if event is combined, there must be 2 actions
- for( i = 0 ; i < 2; i++ )
- {
- if( TargetObject.SetEventManager(arrEvent[i], arrAction[i],
- arrSetting[i], event_additional) == false )
- return false; // the event manager has not been set up
- }
- }
- else // the event_type string is not combined
- {
- for( i = 0 ; i < arrAction.length; i++ )
- {
- TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);
- // to validate the event manager
- if( typeof(TargetObject.objManager[event_type]) != "object" ||
- typeof(TargetObject.objManager[event_type][i]) != "object" )
- return false; // the event manager has not been set up
- }
- }
- return true;
-}
-
-CEngine.BuildTriggerObject = function(trigger_ID, target_ID)
-{// to build the trigger object
- var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string
- for( var i = 0; i < arrTrigger.length; i ++ )
- {// to get the trigger element then add it to the trigger list
- arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );
- var eleTrigger = CCSSP.GetObject( arrTrigger[i] );
- if( eleTrigger == null )
- continue; // the trigger_ID string in the HTML code maybe wrong
- CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );
-
- // to get the target object
- if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )
- continue;// the engine's AddOneTarget function might have failed.
- CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );
- }
-}
-//End the definition of CEngine class
-
-/// Section End - CCSSP DHTM 1 (JavaScript 1.2)
-
-/// Section Begin - CCSSP DHTM 2 (JavaScript 1.2)
-
-//Begin the definition of CAgencyXXXX classes
-
-//Begin of the CAgencyShow definition
-function CAgencyShow( element, bIsShow )
-{
- this.ele = element;
- this.bIsShow = bIsShow;
-}
-
-CAgencyShow.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject( this.ele, !this.bIsShow );
-}
-
-CAgencyShow.prototype.UpdateEffect = function()
-{
- CCSSP.ShowObject( this.ele, this.bIsShow );
-}
-
-CAgencyShow.prototype.EndEffect = function()
-{
- CCSSP.ShowObject( this.ele, !this.bIsShow );
-}
-// End of the CAgencyShow definition
-
-// Begin of CAgencyFly definition
-function CAgencyFly( element, settings, bIsIn )
-{
- this.ele = element;
- this.bIsIn = bIsIn;
- this.duration = 1000; // default
- this.direction = "right";
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "speed" : this.duration = 100000/arrOneSet[1]; break;
- case "direction" : this.direction = arrOneSet[1]; break;
- }
- }
-
- if( gbBsIE5 && this.ele.style.position != "absolute" )
- this.ele.style.position = "relative";
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencyFly.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject(this.ele, !this.bIsIn );
-}
-
-CAgencyFly.prototype.UpdateEffect = function()
-{
- if( this.timer == null )
- this.ResetParameters();
-
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- this.EndEffect();
- else
- {
- var newX = this.startX*(1.0-percent) + this.finalX*percent;
- var newY = this.startY*(1.0-percent) + this.finalY*percent;
- CCSSP.MoveObjectTo(this.ele, newX, newY);
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );
- }
-}
-
-CAgencyFly.prototype.EndEffect = function()
-{
- clearInterval( this.timer );
- this.timer = null;
-
- if( this.bIsIn ) // FlyIn
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);
- else // FlyOut
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);
- CCSSP.ShowObject(this.ele, this.bIsIn );
-}
-
-CAgencyFly.prototype.ResetParameters = function()
-{
- this.PrepareEffect();
- CCSSP.ShowObject(this.ele, true );
-
- this.startX = 0;
- this.startY = 0;
- this.finalX = 0;
- this.finalY = 0;
-
- var offsetLeft = CCSSP.GetObjectWindowLeft(this.ele) + this.ele.offsetWidth;
- var offsetTop = CCSSP.GetObjectWindowTop(this.ele) + this.ele.offsetHeight;
- var offsetRight = CCSSP.GetWindowRight();
- var offsetBottom = CCSSP.GetWindowBottom();
-
- if( this.bIsIn )
- { // FlyIn
- this.finalX = this.ele.ABSX;
- this.finalY = this.ele.ABSY;
-
- switch( this.direction )
- {
- case "right": this.startX = offsetRight; this.startY = this.finalY; break;
- case "left": this.startX = -offsetLeft; this.startY = this.finalY; break;
- case "down": this.startY = offsetBottom; this.startX = this.finalX; break;
- case "up": this.startY = -offsetTop; this.startX = this.finalX; break;
- case "downright":
- this.startX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;
- this.startY = this.startX; break;
- case "upright":
- this.startX = (offsetTop < offsetRight)? offsetTop : offsetRight;
- this.startY = -this.startX; break;
- case "upleft":
- this.startX = -((offsetTop < offsetRight)? offsetTop : offsetRight);
- this.startY = this.startX; break;
- case "downleft":
- this.startX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);
- this.startY = -this.startX; break;
- }
- }
- else
- { // FlyOut
- this.startX = this.ele.ABSX;
- this.startY = this.ele.ABSY;
-
- switch( this.direction )
- {
- case "right": this.finalX = offsetRight; this.finalY = this.startY; break;
- case "left": this.finalX = -offsetLeft; this.finalY = this.startY; break;
- case "down": this.finalY = offsetBottom; this.finalX = this.startX; break;
- case "up": this.finalY = -offsetTop; this.finalX = this.startX; break;
- case "downright":
- this.finalX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;
- this.finalY = this.finalX; break;
- case "upright":
- this.finalX = (offsetTop < offsetRight)? offsetTop : offsetRight;
- this.finalY = -this.finalX; break;
- case "upleft":
- this.finalX = -((offsetTop < offsetRight)? offsetTop : offsetRight);
- this.finalY = this.finalX; break;
- case "downleft":
- this.finalX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);
- this.finalY = -this.finalX; break;
- }
- }
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);
- this.startTime = (new Date()).getTime();
-}
-// End of the CAgencyFly definition
-
-// Begin of CAgencySpiral
-function CAgencySpiral( element, settings, bIsIn )
-{
- this.ele = element;
- this.bIsIn = bIsIn;
- this.duration = 1000; // default
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "speed" : this.duration = 100000/arrOneSet[1]; break;
- }
- }
-
- if( gbBsIE5 && this.ele.style.position != "absolute" )
- this.ele.style.position = "relative";
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencySpiral.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject(this.ele, !this.bIsIn );
-}
-
-CAgencySpiral.prototype.UpdateEffect = function()
-{
- if( this.timer == null )
- this.ResetParameters();
-
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- this.EndEffect();
- else
- {
- var rf = (this.bIsIn)? (1.0 - percent) : percent;
- var t = (1.0-rf) * 4.0 * Math.PI
- var rxP = (this.bIsIn)? this.startX : this.finalX;
- var ryP = (this.bIsIn)? this.startY : this.finalY;
- var rx = (Math.abs(rxP) < 200) ? Math.abs(rxP) : 200;
- var ry = (Math.abs(ryP) < 200) ? Math.abs(ryP) : 200;
-
- var newX = Math.ceil(-rf*Math.cos(t)*rx) + this.ele.ABSX;
- var newY = Math.ceil(-rf*Math.sin(t)*ry) + this.ele.ABSY;
- CCSSP.MoveObjectTo(this.ele, newX, newY);
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );
- }
-}
-
-CAgencySpiral.prototype.EndEffect = function()
-{
- clearInterval( this.timer );
- this.timer = null;
-
- if( this.bIsIn ) // In
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);
- else // Out
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);
- CCSSP.ShowObject(this.ele, this.bIsIn );
-}
-
-CAgencySpiral.prototype.ResetParameters = function()
-{
- this.PrepareEffect();
- CCSSP.ShowObject(this.ele, true );
- this.startX = (this.bIsIn)? CCSSP.GetWindowRight() : this.ele.ABSX;
- this.startY = (this.bIsIn)? CCSSP.GetWindowBottom() : this.ele.ABSY;
- this.finalX = (this.bIsIn)? this.ele.ABSX : CCSSP.GetWindowRight();
- this.finalY = (this.bIsIn)? this.ele.ABSY : CCSSP.GetWindowBottom();
-
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);
- this.startTime = (new Date()).getTime();
-}
-// End of CAgencySpiral
-
-// Begin of CAgencyElastic
-function CAgencyElastic( element, settings)
-{
- this.ele = element;
- this.duration = 1000; // default
- this.direction = "right";
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "speed" : this.duration = 100000/arrOneSet[1]; break;
- case "direction" : this.direction = arrOneSet[1]; break;
- }
- }
-
- if( gbBsIE5 && this.ele.style.position != "absolute" )
- this.ele.style.position = "relative";
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencyElastic.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject(this.ele, false );
-}
-
-CAgencyElastic.prototype.UpdateEffect = function()
-{
- if( this.timer == null )
- this.ResetParameters();
-
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- this.EndEffect();
- else
- {
- var newX = this.startX;
- var newY = this.startY;
- var rf = Math.exp(-percent*3);
- var t = percent * 1.5 * Math.PI
- var rx = (Math.abs(this.startX) > Math.abs(this.startY)) ? this.startX : this.startY;
- switch (this.direction )
- {
- case "left":
- case "right" : newX = rf*Math.cos(t)*rx + this.ele.ABSX; break;
- case "up":
- case "down" : newY = rf*Math.cos(t)*rx + this.ele.ABSX; break;
- }
- CCSSP.MoveObjectTo(this.ele, newX, newY);
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );
- }
-}
-
-CAgencyElastic.prototype.EndEffect = function()
-{
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);
- clearInterval( this.timer );
- this.timer = null;
-}
-
-CAgencyElastic.prototype.ResetParameters = function()
-{
- CCSSP.ShowObject(this.ele, true );
- this.startX = this.ele.ABSX;
- this.finalX = this.ele.ABSX;
- this.startY = this.ele.ABSY;
- this.finalY = this.ele.ABSY;
-
- switch (this.direction)
- {
- case "left": this.startX = -this.ele.offsetWidth; break;
- case "right": this.startX = this.ele.offsetWidth; break;
- case "up": this.startY = -this.ele.offsetHeight;break;
- case "down": this.startY = this.ele.offsetHeight; break;
- }
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);
- this.startTime = (new Date()).getTime();
-}
-// End of CAgencyElastic
-
-// Begin of CAgencyZoom
-function CAgencyZoom( element, settings, bIsIn)
-{
- this.ele = element;
- this.duration = 1000; // default
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "speed" : this.duration = 100000/arrOneSet[1]; break;
- }
- }
-
- this.bIsIn = bIsIn;
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencyZoom.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject(this.ele, false);
-}
-
-CAgencyZoom.prototype.UpdateEffect = function()
-{
- if( this.timer == null )
- this.ResetParameters();
-
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- this.EndEffect();
- else
- {
- var nFactorIn = Math.ceil(50+50*percent);
- var nFactorOut = Math.ceil(100+200*(1-percent));
- var AlterFontsize = ((this.bIsIn)? nFactorIn : nFactorOut) + "%";
- var AlterFactor = ((this.bIsIn)? nFactorIn : nFactorOut) / 100;
-
- this.UpdateEffectAllChildren(this.ele, AlterFontsize, AlterFactor);
- for(var index = 0; index < this.ele.all.length; index++)
- this.UpdateEffectAllChildren(this.ele.all[index], AlterFontsize, AlterFactor);
-
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );
- }
-}
-
-CAgencyZoom.prototype.UpdateEffectAllChildren = function(child, FontSize, Factor)
-{
- if( CCSSP.IsTextTag(child) )
- child.style.fontSize = FontSize;
- else
- {
- if( typeof(child.orgWidth) == "number" )
- child.style.width = Factor * child.orgWidth;
- if( typeof(child.orgHeight) == "number" )
- child.style.height = Factor * child.orgHeight;
- }
-}
-
-CAgencyZoom.prototype.EndEffect = function()
-{
- this.EndEffectAllChildren(this.ele);
- for(var index = 0; index < this.ele.all.length; index++)
- this.EndEffectAllChildren(this.ele.all[index]);
-
- clearInterval( this.timer );
- this.timer = null;
-}
-
-CAgencyZoom.prototype.EndEffectAllChildren = function( child )
-{
- if( CCSSP.IsTextTag(child) )
- child.style.fontSize = child.orgFontSize;
- else
- {
- if( typeof(child.intactWidth) != "undefined" )
- {
- child.width = child.intactWidth;
- child.height = child.intactHeight;
- }
- else if( typeof(child.style.intactPixelWidth) != "undefined" )
- {
- child.style.pixelWidth = child.style.intactPixelWidth;
- child.style.pixelHeight = child.style.intactPixelHeight;
- }
- }
-}
-
-CAgencyZoom.prototype.ResetParameters = function()
-{
- this.PrepareEffect();
- this.ResetParametersAllChildren( this.ele );
- for(var index = 0; index < this.ele.all.length; index++)
- this.ResetParametersAllChildren(this.ele.all[index]);
-
- this.startTime = (new Date()).getTime();
-}
-
-CAgencyZoom.prototype.ResetParametersAllChildren = function( child )
-{
- CCSSP.ShowObject(child, true );
- if( (child.tagName == "DIV") && (getParentNode(child).tagName == "TD") )
- child.width = "100%";// if the div is inside a cell of table, we need the this hack
-
- if( CCSSP.IsTextTag(child) )
- child.orgFontSize = child.style.fontSize;
- else
- {
- if( child.width > "" || child.height > "" )
- {
- child.orgWidth = child.intactWidth = child.width;
- child.orgHeight = child.intactHeight = child.height;
- }
- else if( ( typeof(child.orgWidth) != "number" ) && (typeof(child.orgHeight) != "number") )
- {
- child.orgWidth = child.style.intactPixelWidth = child.style.pixelWidth;
- child.orgHeight = child.style.intactPixelHeight = child.style.pixelHeight;
- }
- }
-}
-// End of CAgencyZoom
-
-//// the following effects will use IE's exclusive "filter" function ////
-// Begin of CAgencyAlpha definition
-function CAgencyAlpha( element, settings, bIsIn )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
- this.bIsIn = bIsIn;
-
- // to set the default value
- this.startOpacity = (this.bIsIn) ? 0 : 100;
- this.endOpacity = (this.bIsIn) ? 100 : 0;
-
- this.duration = 1000; // default
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "speed" : this.duration = 100000/arrOneSet[1]; break;
- }
- }
-
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencyAlpha.prototype.PrepareEffect = function()
-{// to set the visual filter function
- // the visual filter ONLY work when set by "Width and Height" or
- // absolute position for DIV, SPAN and normal tag ( such as p )
- // but, "absolute" cause the following elements overlap, so:
- CCSSP.PrepareFilter( this.ele );
- CCSSP.ShowObject(this.ele, !this.bIsIn );
-}
-
-CAgencyAlpha.prototype.UpdateEffect = function()
-{// to set the visual filter function
- if( this.timer == null )
- this.ResetParameters();
- if( typeof(this.ele.filters.alpha) != "object" )
- {
- this.EndEffect();
- return;
- }
-
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- this.EndEffect();
- else if( typeof(this.ele.filters.alpha) == "object" )
- {
- this.ele.filters.alpha.opacity = this.startOpacity*(1.0-percent) + this.endOpacity*percent;
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );
- }
-}
-
-CAgencyAlpha.prototype.EndEffect = function()
-{// to remove the visual filter function
- clearInterval( this.timer );
- this.timer = null;
- this.ele.style.filter = "";
- CCSSP.ShowObject(this.ele, this.bIsIn );
-}
-
-CAgencyAlpha.prototype.ResetParameters = function()
-{
- this.PrepareEffect();
- CCSSP.ShowObject(this.ele, true );
- this.ele.style.filter = "alpha(opacity=" + this.startOpacity + ")";
- this.startTime = (new Date()).getTime();
-}
-// End of the CAgencyAlpha definition
-
-// Begin of CAgencyWave definition
-function CAgencyWave( element, settings )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- this.duration = 0; // default
- this.strength = 10;
- this.freq = 1;
- this.lightstrength = 1;
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "duration" : this.duration = 100000/arrOneSet[1]; break;
- case "strength" : this.strength = arrOneSet[1]; break;
- case "freq" : this.freq = arrOneSet[1]; break;
- case "lightstrength" : this.lightstrength = arrOneSet[1]; break;
- }
- }
-
- this.timer = null;
- this.aniIndex = CEngine.arrAnimation.length;
- CEngine.arrAnimation[this.aniIndex] = this;
-}
-
-CAgencyWave.prototype.PrepareEffect = function()
-{// to set the visual filter function
- CCSSP.PrepareFilter(this.ele);
-
- CCSSP.ShowObject(this.ele, true );
-}
-
-CAgencyWave.prototype.UpdateEffect = function()
-{// to set the visual filter function
- if( this.timer == null )
- this.ResetParameters();
- if( typeof(this.ele.filters.wave) != "object" )
- {
- this.EndEffect();
- return;
- }
-
- if( this.duration > 0 )
- {
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;
- if( percent >= 1.0 )
- {
- this.EndEffect();
- return;
- }
- }
-
- this.ele.filters.wave.phase += 5;
- this.ele.filters.wave.phase %= 100;
- if( this.timer == null )
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 50 );
-}
-
-CAgencyWave.prototype.EndEffect = function()
-{// to remove the visual filter function
- this.ele.style.filter = "";
- clearInterval( this.timer );
- this.timer = null;
-}
-
-CAgencyWave.prototype.ResetParameters = function()
-{
- this.PrepareEffect();
- this.ele.style.filter = "wave(strength=" + this.strength + ",freq=" +
- this.freq +", lightstrength=" + this.lightstrength +",phase=0);";
- this.startTime = (new Date()).getTime();
-}
-// End of the CAgencyWave definition
-
-// Begin of CAgencyGlow definition
-function CAgencyGlow( element, settings )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- // to set the default value
- this.glowColor = "green";
- this.glowStrength = "3";
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "color" : this.glowColor = arrOneSet[1]; break;
- case "strength" : this.glowStrength = arrOneSet[1]; break;
- }
- }
-}
-
-CAgencyGlow.prototype.PrepareEffect = function()
-{
- CCSSP.PrepareFilter(this.ele);
- CCSSP.ShowObject(this.ele, true );
- if( this.ele.style.backgroundColor != "" )
- {//style.backgroundColor somehow stop the visual filter
- this.ele.intactBackgroundColor = this.ele.style.backgroundColor;
- this.ele.style.backgroundColor = "";
- }
-}
-
-CAgencyGlow.prototype.UpdateEffect = function()
-{// to set the visual filter function
- this.PrepareEffect();
- this.ele.style.filter = "glow(Color=" + this.glowColor + ", Strength=" +
- this.glowStrength + ", enabled=true" +")";
-}
-
-CAgencyGlow.prototype.EndEffect = function()
-{// to remove the visual filter function
- this.ele.style.filter = "";
- if( typeof(this.ele.intactBackgroundColor) != "undefined" )
- this.ele.style.backgroundColor = this.ele.intactBackgroundColor;
-}
-// End of the CAgencyGlow definition
-
-// Begin of CAgencyDropShadow definition
-function CAgencyDropShadow( element, settings )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- // to set the default value
- this.shadowColor = "black";
- this.shadowOffx = "1";
- this.shadowOffy = "1";
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "color" : this.shadowColor = arrOneSet[1]; break;
- case "offx" : this.shadowOffx = arrOneSet[1]; break;
- case "offy" : this.shadowOffy = arrOneSet[1]; break;
- }
- }
-}
-
-CAgencyDropShadow.prototype.PrepareEffect = function()
-{
- CCSSP.PrepareFilter(this.ele);
- CCSSP.ShowObject(this.ele, true );
-
- if( this.ele.style.backgroundColor != "" )
- {//style.backgroundColor somehow stop the visual filter
- this.ele.intactBackgroundColor = this.ele.style.backgroundColor;
- this.ele.style.backgroundColor = "";
- }
-}
-
-CAgencyDropShadow.prototype.UpdateEffect = function()
-{// to set the visual filter function
- this.PrepareEffect();
- this.ele.style.filter = "dropshadow(color=" + this.shadowColor + ", offx=" +
- this.shadowOffx + ", offy=" + this.shadowOffy + ")";
-}
-
-CAgencyDropShadow.prototype.EndEffect = function()
-{// to remove the visual filter function
- this.ele.style.filter = "";
- if( typeof(this.ele.intactBackgroundColor) != "undefined" )
- this.ele.style.backgroundColor = this.ele.intactBackgroundColor;
-}
-// End of the CAgencyDropShadow definition
-
-// Begin of CAgencyRevealTrans definition
-function CAgencyRevealTrans( element, settings )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- // to set the default value
- this.duration = 1.0; //The value is specified in seconds.milliseconds format (0.0000).
- this.transition = 0;
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "type" : this.transition = arrOneSet[1]; break;
- case "duration" : this.duration = 100/arrOneSet[1]; break;
- }
- }
-}
-
-CAgencyRevealTrans.prototype.PrepareEffect = function()
-{
- CCSSP.PrepareFilter(this.ele);
- CCSSP.ShowObject( this.ele, false);
-}
-
-CAgencyRevealTrans.prototype.UpdateEffect = function()
-{// to set the visual filter function
- if( typeof( this.ele.filters.RevealTrans ) == "object" )
- {
- if( this.ele.filters.RevealTrans.status == 2 )
- this.ele.filters.RevealTrans.stop();
- }
-
- this.PrepareEffect();
-
- this.ele.style.filter = "RevealTrans(duration=" + this.duration +
- ", transition=" + this.transition + ")";
-
- if( typeof( this.ele.filters.RevealTrans ) == "object" )
- {
- this.ele.filters.RevealTrans.apply();
- CCSSP.ShowObject( this.ele, true);
- this.ele.filters.RevealTrans.play();
- }
- else
- CCSSP.ShowObject( this.ele, true);
-}
-
-CAgencyRevealTrans.prototype.EndEffect = function()
-{
- if( typeof( this.ele.filters.RevealTrans ) == "object" )
- this.ele.filters.RevealTrans.stop();
- this.ele.style.filter = "";
-}
-// End of the CAgencyRevealTrans definition
-
-// Begin of CAgencyBlur definition
-function CAgencyBlur( element, settings )
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- // to set the default value
- this.strength = "5";
- this.direction = "90";
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "strength" : this.strength = arrOneSet[1]; break;
- case "direction" : this.direction = arrOneSet[1]; break;
- }
- }
-}
-
-CAgencyBlur.prototype.PrepareEffect = function()
-{
- CCSSP.PrepareFilter(this.ele);
- CCSSP.ShowObject(this.ele, true );
-}
-
-CAgencyBlur.prototype.UpdateEffect = function()
-{// to set the visual filter function
- CCSSP.PrepareFilter(this.ele);
- this.ele.style.filter = "blur(strength=" + this.strength +
- ", direction=" + this.direction + ")";
-}
-
-CAgencyBlur.prototype.EndEffect = function()
-{// to remove the visual filter function
- this.ele.style.filter = "";
-}
-// End of the CAgencyBlur definition
-
-// Begin of CAgencyChangeFilter definition
-function CAgencyChangeFilter( element, settings ) // flipH, flipV, invert, grey,
-{// because of "visual filter" style, this won't work in Navigator
- this.ele = element;
-
- // to set the default value
- this.filterFunction = settings;
-}
-
-CAgencyChangeFilter.prototype.PrepareEffect = function()
-{
- CCSSP.PrepareFilter(this.ele);
- CCSSP.ShowObject(this.ele, true );
-}
-
-CAgencyChangeFilter.prototype.UpdateEffect = function()
-{// to set the visual filter function
- CCSSP.PrepareFilter(this.ele);
- this.ele.style.filter = this.filterFunction;
-}
-
-CAgencyChangeFilter.prototype.EndEffect = function()
-{// to remove the visual filter function
- this.ele.style.filter = "";
-}
-// End of the CAgencyChangeFilter definition
-
-// The effects below change the style on the fly, so they won't work in Navigator
-
-// Begin of CAgencyFontChange definition,
-function CAgencyFontChange( element, settings )
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.
- this.ele = element;
-
- // to retrieve the original font style
- this.RetrieveOldFont( this.ele );
-
- // to set the default font to change
- this.newfontFamily = this.ele.oldFontFamily;
- this.newfColor = this.ele.oldColor;
- this.newtextDecoration = this.ele.oldTextDecoration;
- this.newfontWeight = this.ele.oldFontWeight;
- this.newfontStyle = this.ele.oldFontStyle;
- this.newfontSize = this.ele.oldFontSize;
- this.newBackgroundColor = this.ele.oldBackgroundColor;
-
- var arrAllSet = settings.split(",");
- for( var i = 0; i < arrAllSet.length; i ++ )
- {// to retrieve the setting
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);
- var arrOneSet = arrAllSet[i].split("=");
- for( var j = 0; j < arrOneSet.length; j++ )
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);
- switch( arrOneSet[0] )
- {
- case "font-family" : this.newfontFamily = arrOneSet[1]; break;
- case "color" : this.newfColor = arrOneSet[1]; break;
- case "underline" : this.newtextDecoration = (arrOneSet[1]=="on")? "underline" : "none"; break;
- case "bold" : this.newfontWeight = (arrOneSet[1]=="on")? "bold" : "normal"; break;
- case "italic" : this.newfontStyle = (arrOneSet[1]=="on")? "italic" : "normal"; break;
- case "size" : this.newfontSize = arrOneSet[1]; break;
- case "background-color" : this.newBackgroundColor = arrOneSet[1]; break;
- }
- }
-}
-
-CAgencyFontChange.prototype.RetrieveOldFont = function(objChild)
-{
- if( typeof(objChild.oldFontFamily) == "undefined" )
- objChild.oldFontFamily = objChild.style.fontFamily;
- if( typeof(objChild.oldColor) == "undefined" )
- objChild.oldColor = objChild.style.color;
- if( typeof(objChild.oldTextDecoration) == "undefined" )
- objChild.oldTextDecoration = objChild.style.textDecoration;
- if( typeof(objChild.oldFontWeight) == "undefined" )
- objChild.oldFontWeight = objChild.style.fontWeight;
- if( typeof(objChild.oldFontStyle) == "undefined" )
- objChild.oldFontStyle = objChild.style.fontStyle;
- if( typeof(objChild.oldFontSize) == "undefined" )
- objChild.oldFontSize = objChild.style.fontSize;
- if( typeof(objChild.oldBackgroundColor) == "undefined" )
- objChild.oldBackgroundColor = objChild.style.backgroundColor;
-}
-
-CAgencyFontChange.prototype.PrepareEffect = function()
-{
- // as for expanding text, the child is created after the constructor called
- for(var index = 0; index < this.ele.all.length; index++)
- this.RetrieveOldFont(this.ele.all[index]);
- CCSSP.ShowObject(this.ele, true );
-}
-
-CAgencyFontChange.prototype.UpdateEffect = function()
-{// to change the font
- this.PrepareEffect();
- this.UpdateEffectAllChildren( this.ele );
- for( var index = 0; index < this.ele.all.length; index++)
- this.UpdateEffectAllChildren(this.ele.all[index]);
-}
-
-CAgencyFontChange.prototype.UpdateEffectAllChildren = function(objChild)
-{
- objChild.style.fontFamily = this.newfontFamily;
- objChild.style.color = this.newfColor;
- objChild.style.textDecoration = this.newtextDecoration;
- objChild.style.fontWeight = this.newfontWeight;
- objChild.style.fontStyle = this.newfontStyle;
- objChild.style.fontSize = this.newfontSize;
- objChild.style.backgroundColor = this.newBackgroundColor;
-}
-
-CAgencyFontChange.prototype.EndEffect = function()
-{// to reinstate the original font style
- this.EndEffectAllChildren( this.ele );
- for( var index = 0; index < this.ele.all.length; index++)
- this.EndEffectAllChildren(this.ele.all[index]);
-}
-
-CAgencyFontChange.prototype.EndEffectAllChildren = function( objChild )
-{
- if( typeof(objChild.oldFontFamily) != "undefined" )
- objChild.style.fontFamily = objChild.oldFontFamily;
- if( typeof(objChild.oldColor) != "undefined" )
- objChild.style.color = objChild.oldColor;
- if( typeof(objChild.oldFontWeight) != "undefined" )
- objChild.style.fontWeight = objChild.oldFontWeight;
- if( typeof(objChild.oldFontStyle) != "undefined" )
- objChild.style.fontStyle = objChild.oldFontStyle;
- if( typeof(objChild.oldFontSize) != "undefined" )
- objChild.style.fontSize = objChild.oldFontSize;
- if( typeof(objChild.oldTextDecoration) != "undefined" )
- objChild.style.textDecoration = objChild.oldTextDecoration;
- if( typeof(objChild.oldBackgroundColor) != "undefined" )
- objChild.style.backgroundColor = objChild.oldBackgroundColor;
-}
-// End of the CAgencyFontChange definition
-
-// Begin of the CAgencyChangeStyle definition
-function CAgencyChangeStyle( element, settings )
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.
- this.ele = element;
-
- // to retrieve the original style
- this.oldstyle = this.ele.style.cssText;
-
- // to set the default style
- this.newStyle = this.oldstyle;
-
- if( typeof(settings) == "string" && settings.length > 1 )
- this.newStyle = this.oldstyle + " " + settings;
-}
-
-CAgencyChangeStyle.prototype.PrepareEffect = function()
-{
- CCSSP.ShowObject(this.ele, true );
-}
-
-CAgencyChangeStyle.prototype.UpdateEffect = function()
-{// to change the style
- this.ele.style.cssText = this.newStyle;
-}
-
-CAgencyChangeStyle.prototype.EndEffect = function()
-{// to reinstate the original style
- this.ele.style.cssText = this.oldStyle;
-}
-// End of the CAgencyChangeStyle definition
-
-//End the definition of CAgencyXXXX classes
-
-//Begin to collaborate with other event handler settings
-CCSSP.RegisterEventHandler( window, "onload", "CEngine.OnPageLoad();BSSCOnLoad();kadovInitTriggersInHead();");
-CCSSP.RegisterEventHandler( document, "onclick", "CEngine.OnPageClick();BSSCOnClick();");
-CCSSP.RegisterEventHandler( document, "onmouseover", "CEngine.OnMouseOver();BSSCOnMouseOver();" );
-CCSSP.RegisterEventHandler( document, "onmouseout", "CEngine.OnMouseOver();BSSCOnMouseOut();" );
-CCSSP.RegisterEventHandler( window, "onunload", "BSSCOnUnload();");
-//End to collaborate with other event handler settings
-
-/// Section End - CCSSP DHTM 2 (JavaScript 1.2)
-
-//// Segment End -- (JavaScript 1.2)
\ No newline at end of file
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Extrusion</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; }
-img_whs2 { border:none; width:27px; height:24px; border-style:none; }
-img_whs3 { border:none; width:411px; height:309px; float:none; border-style:none; }
-ul.whs4 { list-style:disc; }
-table.whs5 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs6 { width:50%; }
-tr.whs7 { x-cell-content-align:top; }
-td.whs8 { 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_whs9 { border:none; width:350px; height:201px; 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; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nExtrusion");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Extrusion</h1>
-
-<p>Extrusion is a type of surface meshing by generation from discretized
- lines. It is used to build mesh elements of plus one dimension than the
- swept ones. Each swept 1D element produces one or more quadrangles (or
- triangles if one node of a rotated element lays on the revolution axis).</p>
-
-<p> </p>
-
-<p class=TODO>To use extrusion:</p>
-
-<p class=TODO> </p>
-
-<p class="whs1">1. From the <span style="font-weight: bold;"><B>Modification
- </B></span>menu choose the <span style="font-weight: bold;"><B>Extrusion </B></span>item
- or click <img src="image91.gif" width="27px" height="24px" border="0" class="img_whs2"> button in the toolbar. The following dialog box
- will appear:</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/extrusionalongaline1.png" x-maintain-ratio="TRUE" width="411px" height="309px" border="0" class="img_whs3"> <img src="pics/extrusionalongaline2.png" x-maintain-ratio="TRUE" width="411px" height="309px" border="0" class="img_whs3"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">2. In this dialog box you should select </p>
-
-<ul type="disc" class="whs4">
-
- <li class=kadov-p><p class="whs1">the type of elements
- which will be extruded (1D or 2D),</p></li>
-
- <li class=kadov-p><p class="whs1">specify the IDs of
- the elements which will be extruded by selecting them in the 3D viewer
- or select the whole mesh or submesh,</p></li>
-
- <li class=kadov-p><p class="whs1">specify the vector
- along which the elements will be extruded,</p></li>
-
- <li class=kadov-p><p class="whs1">number of steps</p></li>
-</ul>
-
-<p class="whs1"> </p>
-
-<p class="whs1">3. 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=TODO
- style="margin-left: 40px;"> </p>
-
-<p> </p>
-
-<table x-use-null-cells cellspacing="0" width="100%" class="whs5">
-<col class="whs6">
-<col class="whs6">
-
-<tr valign="top" class="whs7">
-<td width="50%" class="whs8">
-<p><img src="image77.jpg" width="350px" height="201px" border="0" class="img_whs9"></td>
-<td width="50%" class="whs10">
-<p><img src="image76.jpg" width="350px" height="201px" border="0" class="img_whs9"></td></tr>
-</table>
-
-<p class=TODO> </p>
-
-<p> <span style="font-weight: bold;"><B>See
- Also</B></span> a sample TUI Script of an <a href="modifying_meshes.htm#bookmark9">Extrusion</a>
- operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Extrusion along a path</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-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">
-<!--
-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)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nExtrusion along a path");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1><img src="image101.gif" width="27px" height="24px" border="0" class="img_whs1">Extrusion along a path</h1>
-
-<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. 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> </p>
-
-<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="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 class="whs12"> </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"> </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 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. 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"> </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 class="whs12"> </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"> </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"> </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"> </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"> </p>
-
-<p> </p>
-
-<p class=TODO>To use Extrusion along a path:</p>
-
-<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_whs1"> button in the toolbar. The
- following dialog box will appear:</p>
-
-<p class="whs12"> </p>
-
-<p class=TODO
- 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="whs12"> </p>
-
-<p class="whs12">2. In the dialog box you should </p>
-
-<ul type="disc" class="whs3">
-
- <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="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="whs25">Start
- node - <span style="font-weight: normal;"> the
- first or the last node on the edge. It is used to define the direction
- of extrusion.</span></p></li>
-</ul>
-
-<p class="whs12"> </p>
-
-<p class="whs12">3. There are two optional parameters, which
- can be very useful.</p>
-
-<ul type="disc" class="whs3">
-
- <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
- 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="whs23">The shape can also
- be rotated around the path to get the resulting mesh in a helical fashion.
- 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="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="whs12"> </p>
-
-<p> <span style="font-weight: bold;"><B>See
- Also</B></span> a sample TUI Script of an <a href="modifying_meshes.htm#bookmark10">Extrusion
- along a Path</a> operation. </p>
-
-<p> </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
img_whs7 { border:none; width:22px; height:27px; border-style:none; }
img_whs8 { border:none; border-style:none; width:451px; height:506px; float:none; }
img_whs9 { border:none; width:866px; height:287px; float:none; border-style:none; }
-p.whs10 { margin-left:0px; }
-p.whs11 { margin-left:80px; }
+p.whs8 { margin-left:0px; }
+p.whs9 { margin-left:48px; }
+img_whs10 { border:none; width:310px; height:391px; float:none; border-style:none; }
+img_whs11 { border:none; width:310px; float:none; height:391px; border-style:none; }
+p.whs12 { margin-left:80px; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
<h1>Mesh infos</h1>
<p>There are two types of information boxes: <span style="font-weight: bold;"><B>Standard
- Mesh Infos</B></span> and <span style="font-weight: bold;"><B>Advanced</B></span>
- <span style="font-weight: bold;"><B>Mesh Infos.</B></span></p>
+ Mesh Infos</B></span>, <span style="font-weight: bold;"><B>Advanced Mesh Infos</B></span> and <span style="font-weight: bold;"><B>Mesh Element Info.</B></span></p>
<p> </p>
<li class=kadov-p><p class="whs2"><a
href="#advanced_infos">Advanced</a></p></li>
+
+ <li class=kadov-p><p class="whs2"><a
+ href="#element_infos">Mesh Element</a></p></li>
</ul>
<p class="whs2"> </p>
<p> </p>
-<h3><a name="advanced infos">Advanced Mesh Infos</a></h3>
+<h3><a name=advanced_infos>Advanced Mesh Infos</a></h3>
+
<p>The<span style="font-weight: bold;"><B> Advanced</B></span> <span style="font-weight: bold;"><B>Mesh
Infos </B></span>gives more information about the mesh, including the total
<p class="whs5"><img src="../pics/b-mesh_infos.png" x-maintain-ratio="TRUE" width="866px" height="287px" border="0" class="img_whs9"></p>
-<p class="whs10"> </p>
-
<p> </p>
-<p class="whs11"> </p>
+<h3><a name=element_infos>Mesh Element Infos</a></h3>
+
+<p>The <span style="font-weight: bold;"><B>Mesh Element Infos</B></span> box gives
+ basic information about the type and the coordinates of the selected mesh
+ element.</p>
+
+<p> </p>
-<p class="whs11"> </p>
+<p class="whs9"><img src="../pics/eleminfo1.png" x-maintain-ratio="TRUE" width="310px" height="391px" border="0" class="img_whs10"> <img src="../pics/eleminfo2.png" x-maintain-ratio="TRUE" width="310px" height="391px" border="0" class="img_whs11"></p>
-<p class="whs11"> </p>
+<p class="whs12"> </p>
<script type="text/javascript" language="javascript1.2">
<!--
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Free borders</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; width:278px; height:231px; float:none; border-style:none; }
-p.whs4 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs4 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nFree borders");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Free borders</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1">This mesh quality control highlights borders of faces
- consisting of edges belonging to one face only.</p>
-
-<p> </p>
-
-<p class="whs2"><img src="pics/free_borders1.png" x-maintain-ratio="TRUE" width="278px" height="231px" border="0" class="img_whs3"> </p>
-
-<p> </p>
-
-<p>In this picture the free borders are displayed in white. </p>
-
-<p> </p>
-
-<p class="whs4"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark">Free
- Borders quality control</a> operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Free_edges</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; border-style:none; width:395px; height:445px; float:none; }
-p.whs4 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs4 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nFree edges");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Free edges</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> This
- mesh quality control highlights borders of elements
- of mesh consisting of edges belonging to one element of mesh only.</p>
-
-<p> </p>
-
-<p class="whs2"><img src="pics/free_edges.png" x-maintain-ratio="TRUE" width="395px" height="445px" border="0" class="img_whs3"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">In this picture some elements of mesh have
- been deleted and the "holes" are outlined in red. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark3">Free
- Edges quality control</a> operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Grouping Elements</title>
-<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; font-family:'Times New Roman' , serif; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; }
-img_whs4 { border:none; width:430px; height:391px; float:none; border-style:none; }
-img_whs5 { border:none; float:none; width:463px; height:417px; border-style:none; }
-img_whs6 { border:none; width:541px; height:417px; float:none; border-style:none; }
-img_whs7 { border:none; width:394px; height:425px; float:none; border-style:none; }
-img_whs8 { border:none; float:none; width:368px; height:379px; border-style:none; }
-img_whs9 { border:none; float:none; width:344px; height:381px; border-style:none; }
-img_whs10 { border:none; width:314px; height:351px; float:none; border-style:none; }
-img_whs11 { border:none; float:none; width:319px; height:351px; border-style:none; }
-img_whs12 { border:none; float:none; width:304px; height:352px; border-style:none; }
-img_whs13 { border:none; width:318px; height:355px; float:none; border-style:none; }
-img_whs14 { border:none; float:none; width:318px; height:355px; border-style:none; }
-img_whs15 { border:none; float:none; width:320px; height:354px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-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 +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nGrouping Elements");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Grouping Elements</h1>
-
-<h3><a name=bookmark>Create a Standalone Group</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Get ids of all faces
- with area > 100 </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 100.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group consisting
- of faces with area > 100</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup = mesh.MakeGroupByIds("Area
- > 100", smesh.FACE, anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs4"></p>
-
-<h3><a name=bookmark5>Create a Group on Geometry</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 100., 100., 100.)</p>
-
-<p class="whs1">geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add the first face
- of the box to the study</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">subShapeList
- = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])</span></p>
-
-<p class="whs1">face = subShapeList[0]</p>
-
-<p class="whs1">geompy.addToStudyInFather(box,
- face, "face 1") </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create group of edges
- on the face</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGeomGroupE
- = geompy.CreateGroup(face, geompy.ShapeType["EDGE"])</span></p>
-
-<p class="whs1">geompy.AddObject(aGeomGroupE,
- 3)</p>
-
-<p class="whs1">geompy.AddObject(aGeomGroupE,
- 6)</p>
-
-<p class="whs1">geompy.AddObject(aGeomGroupE,
- 8)</p>
-
-<p class="whs1">geompy.AddObject(aGeomGroupE,
- 10)</p>
-
-<p class="whs1">geompy.addToStudyInFather(face,
- aGeomGroupE, "Group of Edges")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create quadrangle
- 2D mesh on the box</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">quadra
- = smesh.Mesh(box, "Box : quadrangle 2D mesh")</span></p>
-
-<p class="whs1">algo1D = quadra.Segment()</p>
-
-<p class="whs1">quadra.Quadrangle()</p>
-
-<p class="whs1">algo1D.NumberOfSegments(7)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># compute the mesh</p>
-
-<p class="whs1">quadra.Compute()</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create SMESH group
- on the face with name "SMESHGroup1"</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aSmeshGroup1
- = quadra.GroupOnGeom(face, "SMESHGroup1")</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create SMESH group
- on <aGeomGroupE> with default name</p>
-
-<p class="whs1">aSmeshGroup2 = quadra.GroupOnGeom(aGeomGroupE)
- </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark1>Edit a Group</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Get ids of all faces
- with area > 35</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 35.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area > 35, Nb = ", len(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area > 35</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Area > 35")</span></p>
-
-<p class="whs1">aGroup.Add(anIds)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Get ids of all faces
- with area > 40</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 40.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area > 40, Nb = ", len(anIds) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group of
- elements with area [35; 40] by removing elements with area > 40 from
- group aGroup</p>
-
-<p class="whs1">aGroup.Remove(anIds)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># print the result</p>
-
-<p class="whs1">aGroupElemIDs =
- aGroup.GetListOfID()</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- 35 < Area < 40, Nb = ", len(aGroupElemIDs)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(aGroupElemIDs)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- aGroupElemIDs[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs5"> <img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs6"></p>
-
-<h3><a name=bookmark2>Union of two groups</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- > 20</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 20.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area > 20, Nb = ", len( anIds ) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area > 20</p>
-
-<p class="whs1">aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE,
- "Area > 20")</p>
-
-<p class="whs1">aGroup1.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- = 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_EqualTo, 20.)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area = 20, Nb = ", len( anIds ) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area = 20</p>
-
-<p class="whs1">aGroup2 = mesh.CreateEmptyGroup(
- smesh.FACE, "Area = 20" )</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup2.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create union group
- : area >= 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup3
- = mesh.UnionGroups(aGroup1, aGroup2, "Area >= 20")</span></p>
-
-<p class="whs1">print "Criterion:
- Area >= 20, Nb = ", len(aGroup3.GetListOfID())</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- < 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 20.)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area < 20, Nb = ", len(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area < 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup4
- = mesh.CreateEmptyGroup(smesh.FACE, "Area < 20")</span></p>
-
-<p class="whs1">aGroup4.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create union group
- : area >= 20 and area < 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup5
- = mesh.UnionGroups(aGroup3, aGroup4, "Any Area")</span></p>
-
-<p class="whs1">print "Criterion:
- Any Area, Nb = ", len(aGroup5.GetListOfID())</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs7"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs8"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs9"></p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark3>Intersection of two groups</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- > 20</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 20.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area > 20, Nb = ", len(anIds) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area > 20</p>
-
-<p class="whs1">aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE,
- "Area > 20")</p>
-
-<p class="whs1">aGroup1.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- < 60</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_LessThan, 60.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area < 60, Nb = ", len(anIds) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area < 60</p>
-
-<p class="whs1">aGroup2 = mesh.CreateEmptyGroup(SMESH.FACE,
- "Area < 60")</p>
-
-<p class="whs1">aGroup2.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an intersection
- of groups : 20 < area < 60</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup3
- = mesh.IntersectGroups(aGroup1, aGroup2, "20 < Area < 60")</span></p>
-
-<p class="whs1">print "Criterion:
- 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs10"> <img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs11"> <img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs12"></p>
-
-<h3><a name=bookmark4>Cut of two groups</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- > 20</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, 20.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area > 20, Nb = ", len(anIds) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area > 20</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroupMain
- = mesh.MakeGroupByIds("Area > 20", smesh.FACE, anIds)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Criterion : AREA
- < 60</p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_LessThan, 60.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">print "Criterion:
- Area < 60, Nb = ", len(anIds) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group by
- adding elements with area < 60</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroupTool
- = mesh.MakeGroupByIds("Area < 60", smesh.FACE, anIds)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a cut of groups
- : area >= 60</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroupRes
- = mesh.CutGroups(aGroupMain, aGroupTool, "Area >= 60")</span></p>
-
-<p class="whs1">print "Criterion:
- Area >= 60, Nb = ", len(aGroupRes.GetListOfID())</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs13"> <img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs14"> <img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs15"></p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>
-<script language="javascript">
-<!--
-var strDefaultTopic = "about:blank";
-var nWebhelpNavPaneMode = 1; //1: DHTML 2:Applet 3:PureHTML 4:Noframeset
-var bNoApplet = false;
-var strPaneDHTML = "whd_nvp10.htm"; //whd_nvp10.htm if tab enabled, whnframe.htm if tab disabled.
-var strPaneApplet = "whd_nvp20.htm";
-var strPaneList = "whgdata/whnvp30.htm";
-
-var strHTML = "";
-var strPane = "";
-var nViewFrameType = -1;
-
-function CMRServer()
-{
- this.m_cAgents = new Array;
-}
-var cMRServer = new CMRServer;
-
-//figure out which mode is the best
-if (!window.gAgent)
-{
- // low end browser, we don't even try to determine it.
- document.location = "whnjs.htm";
-}
-else
-{
- if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)
- document.location = "whnjs.htm";
- else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))
- document.location = "whnjs.htm";
- else if (gbMac && gbIE4 && !gbIE5)
- document.location = "whnjs.htm";
- //figure out which mode is the best
- else
- {
- nViewFrameType=nWebhelpNavPaneMode;
- if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)
- {
- var gbDHTML=(nWebhelpNavPaneMode==1);
- if (gbNav4) nViewFrameType = 2;
- if (gbNav4&&(gnVerMinor < 4.1)) nViewFrameType = 3;
- if (gbNav4&&(gnVerMinor == 4.6)) nViewFrameType = 3;
- if (gbIE4&&gbDHTML) nViewFrameType = 1;
- if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2) nViewFrameType = 3;
- if (gbNav6&&gbDHTML) nViewFrameType = 1;
- if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2) nViewFrameType = 3;
- if (gbMac) nViewFrameType = 3;
- if (gbOpera7&&nViewFrameType == 2) nViewFrameType = 3;
- if ((bNoApplet)&&(nViewFrameType == 2)) nViewFrameType = 3;
- }
- }
-}
-
-if (nViewFrameType!=-1)
-{
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));
- //The colordepth of the 16 color on Windows is 1.
- if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))
- {
- alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");
- nViewFrameType = 3;
- }
-
- //figure out which one is navpane
- if (nViewFrameType == 1)
- strPane = strPaneDHTML;
- else if (nViewFrameType == 2)
- strPane = strPaneApplet;
- else
- strPane = strPaneList;
-
- var oParam = new Object();
- oParam.sTopic = "";
- var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);
- if (SendMessage(oMsg) && oParam.sTopic != "")
- strDefaultTopic = oParam.sTopic;
-
-
- if (nViewFrameType == 1)
- {
- //DHTML (iframe or xml based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";
- }
- else if (nViewFrameType == 2)
- {
- //applet (xml based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";
- }
- else if (nViewFrameType == 3)
- {
- //generic html (pure html based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\">";
- strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\" scrolling=\"no\"></frame>";
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";
- strHTML += "</frameset>";
- }
- else if (nViewFrameType == 4)
- {
- //no navipane at all
- strHTML += "<frameset id=\"whPfset\" border=\"0\" cols=\"100%,*\">";
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";
- strHTML += "</frameset>";
- }
-
- document.write(strHTML);
-
- RegisterListener2(window, WH_MSG_SHOWPANE);
- RegisterListener2(window, WH_MSG_HIDEPANE);
- RegisterListener2(window, WH_MSG_ISPANEVISIBLE);
- window.onunload = window_unload;
-}
-
-function window_unload()
-{
- UnRegisterListener2(window, WH_MSG_SHOWPANE);
- UnRegisterListener2(window, WH_MSG_HIDEPANE);
- UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);
-}
-
-
-function onSendMessage(oMsg)
-{
- var nMsgId = oMsg.nMessageId;
- if (nMsgId == WH_MSG_SHOWPANE)
- {
- getElement("whPfset").cols = "260,*";
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");
- if (SendMessage(onMsg))
- {
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);
- SendMessage(onMsg);
- }
- return false;
- }
- else if (nMsgId == WH_MSG_HIDEPANE)
- {
- getElement("whPfset").cols = "0,*";
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");
- SendMessage(onMsg);
- return false;
- }
- else if (nMsgId == WH_MSG_ISPANEVISIBLE)
- {
- var n = parseInt(getElement("whPfset").cols);
- if (n > 0)
- {
- oMsg.oParam.bVisible = true;
- }
- return false;
- }
- return true;
-}
-//-->
-</script>
-<body>
-<noscript>
- <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>
-</noscript>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript" src="whutils.js"></script>
-<script language="javascript">
-<!--
-var gCSHFileName = "whc_data.htm";
-var gCSHSuffixName1 = "_csh.html";
-var gCSHSuffixName2 = "_csh.htm";
-//-->
-</script>
-<script language="javascript">
-<!--
-gCSHFileName="cshdat_webhelp.htm";
-//-->
-</script>
-<script language="javascript">
-<!--
-var gasProj = new Array();
-gasProj[0] = _getPath(document.location.href);
-var gCurrent = 0;
-
-function addProject(strProj)
-{
- var len = gasProj.length;
- if (strProj)
- {
- strProj = _replaceSlash(strProj);
- if (strProj.lastIndexOf("/") != strProj.length - 1)
- strProj += "/";
- var strPPath = _getFullPath(_getPath(document.location.href), strProj);
- var bFound = false;
- for (var i = 0; i < len; i ++)
- {
- if (isSamePath(gasProj[i], strPPath))
- {
- bFound = true;
- break;
- }
- }
- if (!bFound)
- gasProj[len] = strPPath;
- }
-}
-
-function isSamePath(strPath1, strPath2)
-{
- return strPath1.toLowerCase() == strPath2.toLowerCase();
-}
-
-function goNext()
-{
- gCurrent ++;
- var len = gasProj.length;
- if (gCurrent >= len)
- return getHomePage()
- else
- frames["csh"].location = gasProj[gCurrent] + gCSHFileName;
- return "";
-}
-
-function getRelHomePage(strLocation)
-{
- var strCurPPath = _getPath(strLocation);
- var strOriPPath = _getPath(getHomePage());
- var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);
- var strURL = getHomePage() + "#" + strRelPath;
- return strURL;
-}
-
-function getHomePage()
-{
- var strHomePage;
- var strTmp = location.toString();
- var nPos = strTmp.indexOf("#");
- if (nPos != -1)
- {
- strHomePage = strTmp.substring(0, nPos);
- }
- else
- {
- strHomePage = strTmp;
- }
- var nPos1 = strHomePage.indexOf(gCSHSuffixName1);
- var nPos = strHomePage.indexOf(gCSHSuffixName2);
- if (nPos != -1)
- {
- strHomePage = strHomePage.substring(0,nPos);
- if (nPos1 != -1)
- strHomePage += ".html";
- else
- strHomePage += ".htm";
- }
- return strHomePage;
-}
-//-->
-</script>
-</head>
-<frameset rows="1,*">
-<frame name="dumb" src="about:blank"></frame>
-<frame name="csh" src="cshdat_webhelp.htm"></frame>
-</frameset>
-</html>
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript" src="whutils.js"></script>
-<script language="javascript">
-<!--
-var gCSHFileName = "whc_data.htm";
-var gCSHSuffixName1 = "_rhc.html";
-var gCSHSuffixName2 = "_rhc.htm";
-//-->
-</script>
-<script language="javascript">
-<!--
-gCSHFileName="cshdat_robohelp.htm";
-//-->
-</script>
-<script language="javascript">
-<!--
-var gasProj = new Array();
-gasProj[0] = _getPath(document.location.href);
-var gCurrent = 0;
-
-function addProject(strProj)
-{
- var len = gasProj.length;
- if (strProj)
- {
- strProj = _replaceSlash(strProj);
- if (strProj.lastIndexOf("/") != strProj.length - 1)
- strProj += "/";
- var strPPath = _getFullPath(_getPath(document.location.href), strProj);
- var bFound = false;
- for (var i = 0; i < len; i ++)
- {
- if (isSamePath(gasProj[i], strPPath))
- {
- bFound = true;
- break;
- }
- }
- if (!bFound)
- gasProj[len] = strPPath;
- }
-}
-
-function isSamePath(strPath1, strPath2)
-{
- return strPath1.toLowerCase() == strPath2.toLowerCase();
-}
-
-function goNext()
-{
- gCurrent ++;
- var len = gasProj.length;
- if (gCurrent >= len)
- return getHomePage()
- else
- frames["csh"].location = gasProj[gCurrent] + gCSHFileName;
- return "";
-}
-
-function getRelHomePage(strLocation)
-{
- var strCurPPath = _getPath(strLocation);
- var strOriPPath = _getPath(getHomePage());
- var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);
- var strURL = getHomePage() + "#" + strRelPath;
- return strURL;
-}
-
-function getHomePage()
-{
- var strHomePage;
- var strTmp = location.toString();
- var nPos = strTmp.indexOf("#");
- if (nPos != -1)
- {
- strHomePage = strTmp.substring(0, nPos);
- }
- else
- {
- strHomePage = strTmp;
- }
- var nPos1 = strHomePage.indexOf(gCSHSuffixName1);
- var nPos = strHomePage.indexOf(gCSHSuffixName2);
- if (nPos != -1)
- {
- strHomePage = strHomePage.substring(0,nPos);
- if (nPos1 != -1)
- strHomePage += ".html";
- else
- strHomePage += ".htm";
- }
- return strHomePage;
-}
-//-->
-</script>
-</head>
-<frameset rows="1,*">
-<frame name="dumb" src="about:blank"></frame>
-<frame name="csh" src="cshdat_robohelp.htm"></frame>
-</frameset>
-</html>
\ No newline at end of file
--- /dev/null
+/*!
+
+\page a1d_meshing_hypo_page 1D Meshing Hypotheses
+
+<br>
+<ul>
+<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+<li>\ref average_length_anchor "Average Length"</li>
+<li>\ref deflection_1d_anchor "Deflection 1D"</li>
+<li>\ref number_of_segments_anchor "Number of segments"</li>
+<li>\ref start_and_end_length_anchor "Start and end length"</li>
+<li>\ref automatic_length_anchor "Automatic Length"</li>
+</ul>
+
+<br>
+\anchor arithmetic_1d_anchor
+<h2>Arithmetic 1D hypothesis</h2>
+
+<b>Arithmetic 1D</b> hypothesis allows to split edges into segments with a
+length that changes in arithmetic progression (Lk = Lk-1 + d)
+beginning from a given starting length and up to a given end length.
+
+\image html a-arithmetic1d.png
+
+\image html b-ithmetic1d.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_1d_arithmetic "Defining Arithmetic 1D hypothesis" operation.
+
+<br>
+\anchor deflection_1d_anchor
+<h2>Deflection 1D hypothesis</h2>
+
+<b>Deflection 1D</b> hypothesis can be applied for meshing curvilinear edges
+composing your geometrical object. It uses only one parameter: the
+value of deflection.
+\n A geometrical edge is divided into equal segments. The maximum
+distance between a point on the edge within a segment and the line
+connecting the ends of the segment should not exceed the specified
+value of deflection . Then mesh nodes are constructed at end segment
+locations and 1D mesh elements are constructed on segments.
+
+\image html a-deflection1d.png
+
+\image html b-flection1d.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_deflection_1d "Defining Deflection 1D hypothesis" operation.
+
+<br>
+\anchor average_length_anchor
+<h2>Average Length hypothesis</h2>
+
+<b>Average Length</b> hypothesis can be applied for meshing of edges
+composing your geometrical object. Definition of this hypothesis
+consists of setting the \b length of segments, which will split these
+edges, and the \b precision of rounding. The points on the edges
+generated by these segments will represent nodes of your mesh.
+Later these nodes will be used for meshing of the faces abutting to
+these edges.
+
+The \b precision parameter is used to allow rounding a number of
+segments, calculated from the edge length and average length of
+segment, to the lower integer, if this value outstands from it in
+bounds of the precision. Otherwise, the number of segments is rounded
+to the higher integer. Use value 0.5 to provide rounding to the
+nearest integer, 1.0 for the lower integer, 0.0 for the higher
+integer. Default value is 1e-07.
+
+\image html image41.gif
+
+\image html a-averagelength.png
+
+\image html b-erage_length.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_average_length "Defining Average Length" hypothesis
+operation.
+
+<br>
+\anchor number_of_segments_anchor
+<h2>Number of segments hypothesis</h2>
+
+<b>Number of segments</b> hypothesis can be applied for meshing of edges
+composing your geometrical object. Definition of this hypothesis
+consists of setting the number of segments, which will split these
+edges. In other words your edges will be split into a definite number
+of segments with approximately the same length. The points on the
+edges generated by these segments will represent nodes of your
+mesh. Later these nodes will be used for meshing of the faces abutting
+to these edges.
+
+\image html image46.gif
+
+You can set the type of distribution for this hypothesis in the
+<b>Hypothesis Construction</b> dialog bog :
+
+\image html a-nbsegments1.png
+
+<br><b>Equidistant Distribution</b> - all segments will have the same
+length, you define only the <b>Number of Segments</b>.
+
+\image html b-mberofsegments.png
+
+<br><b>Scale Distribution</b> - each next segment differs from the
+previous according to the formula: <b>A</b>i+1 = <b>A</b>i * k, where \b k is a
+<b>Scale Factor</b>.
+
+\image html a-nbsegments2.png
+
+<br><b>Distribution with Table Density</b> - you input a number of
+pairs <b>t - F(t)</b>, where \b t ranges from 0 to 1, and the module computes the
+formula, which will rule the change of length of segments and shows
+the curve in the plot. You can select the <b>Conversion mode</b> from
+\b Exponent and <b>Cut negative</b>.
+
+\image html distributionwithtabledensity.png
+
+<br><b>Distribution with Analytic Density</b> - you input the formula,
+which will rule the change of length of segments and the module shows
+the curve in the plot.
+
+\image html distributionwithanalyticdensity.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_deflection_1d "Defining Number of Segments" hypothesis
+operation.
+
+<br>
+\anchor start_and_end_length_anchor
+<h2>Start and End Length hypothesis</h2>
+
+<b>Start and End Length</b> hypothesis allows to divide a geometrical edge
+into segments so that the first and the last segments have a specified
+length. The length of each but the first segment differs from length
+of the previous one by a constant factor. Then mesh nodes are
+constructed at segment ends location and 1D mesh elements are
+constructed on them.
+
+\image html a-startendlength.png
+
+\image html b-art_end_length.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_start_and_end_length "Defining Start and End Length"
+hypothesis operation.
+
+<br>
+\anchor automatic_length_anchor
+<h2>Automatic Length</h2>
+
+This hypothesis is automatically applied when you select <b>Assign a
+set of hypotheses</b> option in Create Mesh menu.
+
+\image html automaticlength.png
+
+The dialog box prompts you to define the quality of the future mesh by
+only one parameter, which is \b Fineness, ranging from 0 (coarse mesh,
+low number of elements) to 1 (extremely fine mesh, great number of
+elements). Compare one and the same object (sphere) meshed with
+minimum and maximum value of this parameter.
+
+\image html image147.gif
+
+\image html image148.gif
+
+*/
--- /dev/null
+/*!
+
+\page a2d_meshing_hypo_page 2D Meshing Hypotheses
+
+<br>
+<ul>
+<li>\ref max_element_area_anchor "Max Element Area"</li>
+<li>\ref length_from_edges_anchor "Length from Edges"</li>
+<li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+</ul>
+
+<br>
+\anchor max_element_area_anchor
+<h2>Max Element Area</h2>
+
+<b>Max Element Area</b> hypothesis is applied for meshing of 2D faces
+composing your geometrical object. Definition of this hypothesis
+consists of setting the <b>maximum area</b> of meshing elements (depending on
+the chosen meshing algorithm it can be <b>triangles</b> or <b>quadrangles</b>),
+which will compose the mesh of these 2D faces.
+
+\image html a-maxelarea.png
+
+\image html max_el_area.png
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_max_element_area "Maximum Element Area" hypothesis
+operation.
+
+<br>
+\anchor length_from_edges_anchor
+<h2>Length from Edges</h2>
+
+<b>Length from edges</b> hypothesis builds 2D mesh segments having a
+length calculated as an average edge length for a given wire.
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_length_from_edges "Length from Edges" hypothesis operation.
+
+<br>
+\anchor quadrangle_preference_anchor
+<h2>Quadrangle Preference</h2>
+
+This algorithm can be used only together with Quadrangle (Mapping)
+algorithm. It allows to build quadrangular meshes even if the number
+of nodes at the opposite edges of a meshed face is not equal,
+otherwise this mesh will contain some triangular elements.
+<br>
+This hypothesis has one restriction on its work: the total quantity of
+segments on all four sides of the face must be even (divisible by 2).
+*/
--- /dev/null
+/*!
+
+\page about_hypo_page About Hypotheses
+
+\n \b Hypotheses represent boundary conditions which will be taken into
+account at calculations of meshes or submeshes basing on geometrical
+objects. These hypotheses allow you to manage the level of detail of
+the resulting meshes or submeshes: when applying different hypotheses
+with different parameters you can preset the quantity of meshing
+elements which will compose your mesh. So, it will be possible to
+generate a rough or a more refined mesh or submesh.
+
+In \b MESH there are the following Basic Hypotheses (to introduce
+them, you operate numerical values):
+<ul>
+<li>\ref a1d_meshing_hypo_page "1D Hypotheses" (for meshing of
+<b>edges</b>):</li>
+<ul>
+<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+<li>\ref average_length_anchor "Average Length"</li>
+<li>\ref deflection_1d_anchor "Deflection 1D"</li>
+<li>\ref number_of_segments_anchor "Number of segments"</li>
+<li>\ref start_and_end_length_anchor "Start and end length"</li>
+<li>\ref automatic_length_anchor "Automatic Length"</li>
+</ul>
+<li>\ref a2d_meshing_hypo_page "2D Hypotheses" (for meshing of <b>faces</b>):</li>
+<ul>
+<li>\ref max_element_area_anchor "Max Element Area"</li>
+<li>\ref length_from_edges_anchor "Length from Edges"</li>
+<li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+</ul>
+<li>3D Hypothesis (for meshing of <b>volumes</b>):</li>
+<ul>
+<li>\ref max_element_volume_hypo_page "Max Element Volume"</li>
+</ul>
+</ul>
+
+There also exist some
+\ref additional_hypo_page "Additional Hypotheses":
+<ul>
+<li>Propagation of 1D Hypothesis on opposite edges</li>
+<li>Non conform mesh allowed</li>
+<li>Quadratic mesh</li>
+</ul>
+
+The choice of a hypothesis depends on:
+<ul>
+<li>the geometrical object (shape) which will be meshed</li>
+<li>the algorithm, which will be selected for meshing of this geometrical object (shape)</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page about_meshes_page About meshes
+
+\n \b MESH represents a discretization of a geometrical CAD model into
+a set of entities with a simple topology. In MESH there are two
+options of creation of meshes, you can:
+
+<ul>
+<li>generate meshes on the basis of geometrical shapes produced in the GEOM module,</li>
+<li>create your own meshes using the MESH functions destined for modification of generated meshes.</li>
+</ul>
+
+The topology of a mesh is described by the relationships between its
+entities including:
+
+<ul>
+<li>\b Node — 0D object of a mesh presented by a point with coordinates (x, y, z).</li>
+<li>\b Edge — 1D element of a mesh defined by two nodes.</li>
+<li>\b Face — 2D element of a mesh defined by three or four edges (closed contour).</li>
+<li>\b Volume — 3D element of a mesh defined by several faces.</li>
+</ul>
+
+ These entities are
+considered as topological entities and they don't
+imply any geometric representation. Only \b Nodes reference geometric
+representations of points with definite coordinates. The node entity
+will contain additional information about its position in the space
+and its relations with the meshed CAD model. Its position could be
+described in the following way:
+
+<ul>
+<li><b>2D position</b>. It is a free position defined by only two coordinates x,y.</li>
+<li><b>3D position</b>. It is a free position defined by three coordinates x,y and z. </li>
+<li><b>Surface position</b>. It characterizes the position of a node on a
+geometric surface and is defined by the u,v position in the parametric
+space of the corresponding surface.</li>
+<li><b>Line position</b>. It characterizes the position of a node on a
+geometric curve and is defined by the u parameter and the
+corresponding curve.</li>
+<li><b>Vertex position</b>. It characterizes the position of a node on a
+geometric point of the meshed CAD model and is defined by the x,y,z
+coordinates of the corresponding vertex.</li>
+</ul>
+
+<br><h2>Connections</h2>
+
+Each mesh entity bounds 0 or more mesh entities of higher
+dimension. In the same way each mesh entity is bounded by 0 or more
+mesh entities of lower dimension:
+
+<ul>
+<li>A node bounds edges, faces and volumes</li>
+<li>An edge bounds faces, and volumes</li>
+<li>A face bounds volumes</li>
+<li>A volume is bounded by faces, edges and nodes</li>
+<li>A face is bounded by edges, and nodes</li>
+<li>An edge is bounded by nodes</li>
+</ul>
+
+You can notice that there are two types of connections: \b inverse and
+\b direct connections.
+
+<br><h2>Inverse connections</h2>
+
+This relationship has a particularity that the order of bounded
+entities has not a direct meaning. Also the number of bounded entities
+is not fixed.
+
+\b Example: The edges surrounding a node. The 3rd edge has no more
+sense that the 5th one.
+
+<br><h2>Direct connections</h2>
+
+This relationship has a particularity that the order of bounding
+entities is meaningful. The number of bounding entities is fixed and
+depends on the type of the entity (hexahedron, tetrahedron,?).
+
+\b Example: An edge is composed of two nodes. A face is composed of 3
+or 4 edges depending if we are dealing with triangles or quadrangles.
+
+The connections are not only restricted to entities of one dimension
+higher or lower. For example some algorithms may be interested to
+retrieve all the faces surrounding a node.
+
+*/
--- /dev/null
+/*!
+
+\page about_quality_controls_page About quality controls
+
+\n <b>Mesh quality control</b> in MESH is destined for visual control of the generated mesh.
+
+Application of a definite quality control consists of usage of the
+corresponding algorithm, which calculates a value of a definite
+geometric characteristic (Area, Length of edges, etc) for all meshing
+elements, composing your mesh. Then all meshing elements are colored
+according the calculated values. The reference between the coloring of
+the meshing elements and these calculated values is shown with the
+help of a scalar bar, which is displayed near the presentation of your
+mesh.
+
+There are 1D, 2D and 3D quality controls.
+
+1D mesh quality controls:
+<ul>
+<li>\ref free_borders_page "Free borders"</li>
+<li>\ref borders_at_multi_connection_page "Borders at multi-connection"</li>
+<li>\ref length_page "Length"</li>
+</ul>
+
+2D mesh quality controls:
+<ul>
+<li>\ref free_edges_page "Free edges"</li>
+<li>\ref length_2d_page "Length 2D"</li>
+<li>\ref borders_at_multi_connection_2d_page "Borders at multi-connection 2D"</li>
+<li>\ref area_page "Area"</li>
+<li>\ref taper_page "Taper"</li>
+<li>\ref aspect_ratio_page "Aspect ratio"</li>
+<li>\ref minimum_angle_page "Minimum angle"</li>
+<li>\ref warping_page "Warping"</li>
+<li>\ref skew_page "Skew"</li>
+</ul>
+
+3D mesh quality controls:
+<ul>
+<li>\ref aspect_ratio_3d_page "Aspect ratio 3D"</li>
+<li>\ref volume_page "Volume"</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page adding_nodes_and_elements_page Adding nodes and elements
+
+\n In MESH you can add to your mesh different elements such as:
+
+<ul>
+<li>\ref adding_nodes_anchor "Nodes"</li>
+<li>\ref adding_edges_anchor "Edges"</li>
+<li>\ref adding_triangles_anchor "Triangles"</li>
+<li>\ref adding_quadrangles_anchor "Quadrangles"</li>
+<li>\ref adding_polygons_anchor "Polygons"</li>
+<li>\ref adding_tetrahedrons_anchor "Tetrahedrons"</li>
+<li>\ref adding_hexahedrons_anchor "Hexahedrons"</li>
+<li>\ref adding_polyhedrons_anchor "Polyhedrons"</li>
+</ul>
+
+<em>To add a node or an element to your mesh:</em>
+<ol>
+<li>Select your mesh in the Object Browser or in the 3D viewer.</li>
+
+<li>From the \b Modification menu choose the \b Add item, the
+following associated submenu will appear:</li>
+
+\image html image146.gif
+
+From this submenu select the type of element which you would like to add to your mesh.
+</ol>
+
+<b>See Also</b> sample TUI Scripts of
+\ref tui_adding_nodes_and_elements "Adding Nodes and Elements"
+operations.
+
+<br>
+\anchor adding_nodes_anchor
+<h2>Adding nodes</h2>
+
+\image html addnode.png
+
+In this dialog box set coordinates for your node in the \b Coordinates
+set of fields and click the \b Apply or \b OK button. Your node will be
+created:
+
+\image html add_node.png
+
+<br>
+\anchor adding_edges_anchor
+<h2>Adding edges</h2>
+
+\image html addedge.png
+
+In this dialog box specify the nodes which will form your edge by
+selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button. Your edge will be created:
+
+\image html add_edge.png
+
+<br>
+\anchor adding_triangles_anchor
+<h2>Adding triangles</h2>
+
+\image html addtriangle.png
+
+In this dialog box specify the nodes which will form your triangle by
+selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button. Your triangle will be created:
+
+\image html add_triangle.png
+
+<br>
+\anchor adding_quadrangles_anchor
+<h2>Adding quadrangles</h2>
+
+\image html addquadrangle.png
+
+In this dialog box specify the nodes which will form your quadrangle
+by selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button. Your quadrangle will be created:
+
+\image html add_quadrangle.png
+
+<br>
+\anchor adding_polygons_anchor
+<h2>Adding polygons</h2>
+
+\image html addpolygon.png
+
+In this dialog box specify the nodes which will form your polygon by
+selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button.
+
+\image html add_polygone.png
+
+<br>
+\anchor adding_tetrahedrons_anchor
+<h2>Adding tetrahedrons</h2>
+
+\image html addtetrahedron.png
+
+In this dialog box specify the nodes which will form your tetrahedron
+by selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button. Your tetrahedron will be created:
+
+\image html image70.jpg
+
+<br>
+\anchor adding_hexahedrons_anchor
+<h2>Adding hexahedrons</h2>
+
+\image html addhexahedron.png
+
+In this dialog box specify the nodes which will form your hexahedron
+by selecting them in the 3D viewer with pressed Shift button and click
+the \b Apply or \b OK button. Your hexahedron will be created:
+
+\image html image71.jpg
+
+<br>
+\anchor adding_polyhedrons_anchor
+<h2>Adding polyhedrons</h2>
+
+\image html a-createpolyhedralvolume.png
+
+There are two different ways to add polyhedral volumes.
+\n If you select \b Node as <b>Elements Type</b> you will specify the
+nodes which will form the faces of your polyhedron by selecting the
+nodes in the 3D viewer with pressed Shift button and clicking the \b
+Add button to add the face in the list of Faces by Nodes, which will
+form your polyhedron. Note, that it could be very useful to toggle
+Polyhedron Preview checkbox to see the results of your selection.
+\n The second way is somewhat simpler, however, there are cases when
+it does not provide you with the necessary level of precision. If you
+select \b Face as <b>Elements Type</b>, you will be able to select the faces
+which will form your polyhedron in the 3D viewer with pressed Shift
+button. If you've managed to obtain the necessary result, click the
+\b Apply or \b OK button. Your polyhedron will be created:
+
+\image html add_polyhedron.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page adding_quadratic_elements_page Adding Quadratic Elements
+
+\n MESH modules allows you to work with <b>Quadratic Elements</b>.
+
+Quadratic Edge is not a straight but a broken line and can be defined
+by three points: first, middle and last. All more complex \b Quadratic
+\b Elements differ from ordinary ones in that they consist of Quadratic
+Edges.
+
+<em>To add a quadratic element to your mesh:</em>
+<ol>
+<li>Select your mesh in the Object Browser or in the 3D viewer.</li>
+
+<li>From the \b Modification menu choose the \b Add item and select
+one of the following:
+
+\image html image152.gif
+
+To create any <b>Quadratic Element</b> specify the nodes which will form your
+triangle by selecting them in the 3D viewer with pressed Shift
+button. Their numbers will appear in the dialog box as <b>Corner Nodes</b>
+(alternatively you can just input numbers in this field without
+selection).The edges formed by the corner nodes will appear in the
+table. To define the middle nodes for each edge double-click on the
+respective field and input the number of the node. All edges and the
+object formed by them will be displayed in the Object browser. When
+all edges are defined you will be able to click \b OK or \b Apply button to
+add the element to the mesh.
+
+\image html aqt.png
+
+\b Reverse button for Quadratic Edges switches the first and the last
+nodes. For all other elements it reverses the element.
+</li>
+</ol>
+
+
+
+*/
--- /dev/null
+/*!
+
+\page additional_hypo_page Additional Hypotheses
+
+\n <b>Additional Hypotheses</b> can be applied as a supplement to the
+main hypotheses, introducing additional concepts to mesh creation.
+
+To define an <b>Additional Hypothesis</b> simply select it in
+<b>Create Mesh</b> menu. These hypotheses are actually changes in the
+rules of mesh creation and as such don't possess adjustable values.
+
+<h2>Non Conform mesh allowed hypothesis</h2>
+
+<b>Non Conform mesh allowed</b> hypothesis allows to generate non-conform
+meshes (that is, meshes having some edges ending on an edge or face of
+adjacent elements).
+
+<h2>Quadratic Mesh</h2>
+
+Quadratic Mesh hypothesis allows to build a quadratic mesh (whose
+edges are not straight but broken lines and can be defined by three
+points: first, middle and last) instead of an ordinary one.
+
+<h2>Propagation of 1D Hypothesis on opposite edges</h2>
+
+<b>Propagation of 1D Hypothesis on opposite edges</b> allows to propagate a
+hypothesis onto an opposite edge. If a local hypothesis and
+propagation are defined on an edge of a quadrangular face, the
+opposite edge will have the same hypothesis, unless another hypothesis
+has been locally defined on the opposite edge.
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_propagation "Propagation hypothesis" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page area_page Area
+
+\n \b Area mesh quality control is based on the algorithm of area
+calculation of meshing elements. It can be applied to meshes
+consisting of 2D meshing elements with 3 and 4 nodes (triangles and
+quadrangles).
+
+<em>To apply the Area quality control to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Area</b> or click <em>"Area"</em> button.
+
+\image html image35.gif
+<center><em>"Area" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image5.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_area "Area quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page aspect_ratio_page Aspect Ratio
+
+\n The <b>Aspect Ratio</b> quality criterion for mesh elements reveals
+the degree of conformity of a mesh element to the regular element of
+its type (with all edges having the same length).
+
+
+
+- The <b>Aspect Ratio</b> of a \b triangle 2D element consisting of 3
+nodes is calculated by the formula:
+
+\image html formula4.png
+
+- The <b>Aspect Ratio</b> of a \b quadrangle 2D element consisting of
+ 4 nodes is the worst (i.e. the greatest) value from all triangles
+ which can be built taking three nodes of the quadrangle. There are
+ four triangles to consider:
+
+\image html image138.gif
+
+<em>To apply the Aspect Ratio quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Aspect Ratio</b> or click <em>"Aspect
+Ratio"</em> button in the toolbar.
+
+\image html image37.gif
+<center><em>"Aspect Ratio" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image94.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_aspect_ratio "Aspect Ratio quality control" operation.
+
+*/
+
--- /dev/null
+/*!
+
+\page aspect_ratio_3d_page Aspect ratio 3D
+
+\n The <b>Aspect Ratio 3D</b> mesh quality criterion calculates the same
+parameter as the \ref aspect_ratio_page "Aspect ratio" criterion, but
+it is applied to 3D mesh elements: tetrahedrons, pentahedrons,
+hexahedrons, etc.
+
+- The <b>Aspect Ratio</b> of a \b tetrahedron 3D element is calculated
+by the formula:
+
+\image html formula1.png
+
+- Other element types like polyhedron, pentahedron and hexahedron use
+ the following formula:
+
+\image html formula2.png
+
+<em>To apply the Aspect Ratio 3D quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Aspect Ratio 3D</b> or click <em>"Aspect Ratio 3D"</em>
+button of the toolbar.
+
+\image html image144.gif
+<center><em>"Aspect Ratio 3D" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image86.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_aspect_ratio_3d "Aspect Ratio 3D quality control" operation.
+
+*/
--- /dev/null
+/*!
+
+\page basic_meshing_algos_page Basic meshing algorithms
+
+\n The MESH module contains a set of meshing algorithms, which are
+used for meshing entities (1D, 2D, 3D) composing geometrical objects.
+
+<ul>
+<li>For meshing of 1D entities (<b>edges</b>):</li>
+
+<ul>
+<li>Wire Discretisation meshing algorithm - splits a wire into a
+number of mesh segments following any 1D hypothesis.</li>
+<li>Composite Side Discretisation algorithm - allows to apply any 1D
+hypothesis to a whole side of a geometrical face even if it is
+composed of several edges provided that they form C1 curve, have the
+same hypotheses assigned and form one side in all faces of the main
+shape of a mesh.</li>
+</ul>
+
+<li>For meshing of 2D entities (<b>faces</b>):</li>
+
+<ul>
+<li>Triangle meshing algorithms (Mefisto and Netgen 1D-2D ) - Faces
+are split into triangular elements.</li>
+<li>Quadrangle meshing algorithm (Mapping) - Faces are split into
+quadrangular elements.</li>
+</ul>
+
+\image html image123.gif
+
+\image html image124.gif
+
+<li>For meshing of 3D entities (<b>volume objects</b>):</li>
+
+<ul>
+<li>Hexahedron meshing algorithm (i,j,k) - Volumes are split into
+hexahedral (cubic) elements.</li>
+<li>Tetrahedron (Netgen) meshing algorithm - Volumes are split into
+tetrahedral (pyramidal) elements.</li>
+</ul>
+
+\image html image125.gif
+
+\image html image126.gif
+</ul>
+
+There also is a number of more specific algorithms:
+<ul>
+<li>\ref projection_algos_page "for meshing by projection of another mesh"</li>
+<li>\ref radial_prism_algo_page "for meshing geometrical objects with cavities"</li>
+<li>\ref prism_3d_algo_page "for meshing prismatic shapes"</li>
+</ul>
+
+\ref constructing_meshes_page "Constructing meshes" page describes in
+detail how to apply meshing algorithms.
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_defining_meshing_algos "Define Meshing Algorithm" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page borders_at_multi_connection_page Borders at multi-connection
+
+\n This mesh quality control highlights borders of faces consisting of
+edges belonging to several faces. The amount of faces is specified by
+user.
+
+\image html image151.gif
+
+In this picture the borders at multi-connection are displayed in blue.
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_borders_at_multiconnection "Borders at Multi-Connection quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page borders_at_multi_connection_2d_page Borders at multi-connection 2D
+
+\n This mesh quality control highlights borders of elements of mesh,
+consisting of edges belonging to several elements of mesh.
+
+\image html image127.gif
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_borders_at_multiconnection_2d "Borders at Multi-Connection quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page building_compounds_page Building Compounds
+
+\n Compound Mesh is a combination of several meshes.
+
+<em>To Build a compound:</em>
+
+\par
+From the \b Mesh menu select <b>Build Compound</b> or click <em>"Build
+Compound Mesh"</em> button in the toolbar.
+
+\image html image161.gif
+<center><em>"Build Compound Mesh" button</em></center>
+
+\par
+The following dialog box will appear:
+
+\image html buildcompound.png
+
+\par
+<ul>
+<li>\b Name - allows selecting the name of the resulting \b Compound.</li>
+<li>\b Meshes - allows selecting the meshes which will be
+concatenated. They can be chosen in the Object Browser while holding
+\b Ctrl button.</li>
+<li><b>Processing identical groups</b> - allows selecting the method
+of processing the namesake existing on the united meshes.
+\n They can be either</li>
+<ul>
+<li>\b United - all elements of Group1 on Mesh_1 and Group1 on Mesh_2
+become the elements of Group1 on the Compound_Mesh, or</li>
+<li>\b Renamed - Group1 on Mesh_1 becomes Group1_1 and Group1 on Mesh_2
+becomes Group1_2. See \ref grouping_elements_page "Creating Groups"
+for more information about groups.</li>
+</ul>
+<li>You can simply unite meshes or choose to <b>Merge coincident nodes
+and elements</b>, in which case it is possible to define the \b Tolerance
+for this operation.</li>
+</ul>
+
+\n <b>Example:</b>
+
+\image html image160.gif
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page changing_orientation_of_elements_page Changing orientation of elements
+
+\n Orientation of an element is changed by reverting the order of
+nodes of the selected elements.
+
+<em>To change orientation of elements:</em>
+<ol>
+<li>Display a mesh or a submesh in the 3D viewer.</li>
+<li>In the \b Modification menu select the \b Orientation item or click
+<em>Orientation</em> button in the toolbar.
+
+\image html image79.gif
+<center><em>"Orientation" button</em></center>
+
+The following dialog box will appear:
+
+\image html orientaation1.png
+
+<ul>
+<li><b>The main list</b> shall contain the elements which will be
+reoriented. You can click on an element in the 3D viewer and it will
+be highlighted. After that click the \b Add button and the ID of this
+element will be added to the list. To remove a selected element or
+elements from the list click the \b Remove button. The \b Sort button
+allows to sort the list of elements IDs. The <b>Set filter</b> button
+allows to apply a definite filter to selection of elements of your
+group.</li>
+<li><b>Apply to all</b> radio button allows to modify the orientation
+of all elements of the currently displayed mesh or submesh.</li>
+<li><b>Select from</b> set of fields allows to choose a submesh or an
+existing group whose elements will be automatically added to the
+list.</li>
+</ul>
+
+</li>
+<li>Click the \b Apply or \b OK button to confirm the operation.</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_orientation "Change Orientation" operation.
+
+*/
--- /dev/null
+/*!
+
+\page clipping_page Clipping
+
+\n Using this menu you can create cross-section views (clipping planes)
+of your mesh.
+
+To start, click on the \em New button.
+
+\image html a-clipping2.png
+
+Now you can define the parameters of your cross-section: \b Orientation
+(X-Y, X-Z or Y-Z); \b Distance between the opposite extremities of the
+object, if it is set to 0.5 the object is split in two halves; and
+\b Rotation (in angle degrees) <b>around X</b> (Y to Z) and <b>around Y</b> (X to
+Z). If the <b>Show preview</b> button is on, you can see the clipping plane
+in the <b>3D Viewer</b>.
+
+\image html image79.jpg
+
+If the <b>Auto Apply</b> button is on, you can preview the
+cross-section in the <b>3D Viewer</b>.
+
+\image html image99.gif
+
+To get a new object from \b Clipping, click \b Ok.
+
+*/
--- /dev/null
+/*!
+
+\page constructing_groups_of_specific_elements_page Constructing groups of specific elements
+
+\n In MESH you can easily construct groups of specific elements (nodes,
+edges, faces or volumes) which will be taken from a definite submesh.
+
+<em>To construct a group of specific elements:</em>
+
+\par
+Right-click on a submesh in the Object Browser and choose the
+<b>Construct Group</b> item or select your submesh in the Object Browser and
+in the \b Mesh menu choose the <b>Construct Group</b> item. MESH will construct
+several groups consisting of elements of the definite type: nodes,
+edges, faces or volumes.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page constructing_meshes_page Constructing meshes
+
+\n Construction of a mesh consists of:
+<ul>
+<li>Selecting a geometrical object for meshing</li>
+<li>Applying \ref basic_meshing_algos_page "meshing algorithms" and
+\ref about_hypo_page "hypotheses" which will be used at computation of
+this mesh.</li>
+</ul>
+
+<em>To construct a mesh:</em>
+<ol>
+<li>In the \b Mesh menu select <b>Create Mesh</b> or click <em>"Create
+Mesh"</em> button in the toolbar.
+
+\image html image32.gif
+<center><em>"Create Mesh" button</em></center>
+
+The following dialog box will appear:
+
+\image html createmesh-inv.png
+</li>
+<li>For example, you need to mesh a 3d object.
+\n First, type the name for your mesh in the "Name" box, by default,
+it is "Mesh_1". Then select the object you wish to mesh in the Object
+Browser and click the "Add" button.
+
+\image html image120.gif
+<center><em>"Add" button</em></center>
+
+Now you can define 1d Algorithm and 1d Hypotheses, which will be
+applied to the edges of your object. (Note that any object has edges,
+even if their existence is not apparent, for example, a sphere has 4
+edges). Click the <em>"Add Hypothesis"</em> button to add a hypothesis.
+
+\image html image121.gif
+<center><em>"Add Hypothesis" button</em></center>
+
+Click the <em>"Edit Hypothesis"</em> button to define values for the
+current hypothesis.
+
+\image html image122.gif
+<center><em>"Edit Hypothesis" button</em></center>
+
+The use of additional hypotheses is optional (i.e. you may leave
+"None" in this box).
+
+Proceed in the same way with 2d and 3d Algorithms and Hypotheses, note
+that the choice of hypotheses depends on the algorithm. There must be
+one Algorithm and one or several Hypotheses for each dimension of your
+object, otherwise you will not get any mesh at all. Of course, if you
+wish to mesh a face, which is a 2d object, you don't need to define 3d
+Algorithm and Hypotheses.
+\n In the <b>Object Browser</b> the structure of the new mesh will be
+displayed as follows:
+
+\image html image88.jpg
+
+It contains:
+<ul>
+<li>a reference to the geometrical object on the basis of which the mesh has been constructed;</li>
+<li><b>Applied hypotheses</b> folder containing the references to the
+hypotheses applied to the construction of the mesh;</li>
+<li><b>Applied algorithms</b> folder containing the references to the
+algorithms applied to the construction of the mesh.</li>
+</ul>
+
+There is an alternative way to create a mesh on an object simply by
+clicking <b>Assign a set of hypotheses</b> button and selecting between
+Automatic Tetrahedralization or Hexahedralization. The program will
+automatically generate a 3D mesh with the most appropriate
+settings. In the same way you can apply this functionality for meshing
+2D objects, in which case 3D algorithms are not applied.</li>
+<li>Now, when everything is ready, select your mesh in the <b>Object
+Browser</b>. From the \b Mesh menu select \b Compute or click "Compute" button of the
+toolbar.
+
+\image html image28.gif
+<center><em>"Compute" button</em></center>
+
+The Mesh Computation information box appears.
+
+\image html meshcomputationsucceed.png
+
+If the mesh computation failed, the information about the cause of the
+failure is provided.
+
+\image html meshcomputationfail.png
+
+After you select the error, <b>Show Subshape</b> button allows
+visualizing the mesh elements that cause it.
+
+\image html failed_computation.png
+
+<b>Publish Subshape</b> button allows importing it in a separate MED
+or UNV file.
+
+<b>NOTE</b> It is possible to define a 1D or a 2D mesh in a
+python script and then use such submeshes in the construction of a 3D
+mesh. For this, there exist two algorithms: <b>Use existing edges</b> and <b>Use
+existing faces</b>. They are not entirely usable from the GUI, so a
+mesh created using these algorithms should be exported into a python
+script, edited and then imported into the GUi.
+
+Consider trying a sample script for construction of a mesh from our
+\ref tui_creating_meshes_page "TUI Scripts" section.
+</li>
+</ol>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page constructing_submeshes_page Constructing submeshes
+
+\n Construction of a submesh consists of:
+<ul>
+<li>Selecting a mesh which will encapsulate your submesh</li>
+<li>Selecting a geometrical object for meshing</li>
+<li>Applying one or several previously described
+\ref about_hypo_page "hypotheses" and
+\ref basic_meshing_algos_page "meshing algorithms" which will be used
+at computation of this submesh</li>
+</ul>
+
+<br><em>To construct a submesh:</em>
+\par
+From the \b Mesh menu select <b>Local Hyp.</b> or click <em>"Create
+Sum-mesh"</em> button in the toolbar.
+
+\image html image33.gif
+<center><em>"Create Sum-mesh" button</em></center>
+
+\par
+The following dialog box will appear:
+
+\image html createmesh-inv2.png
+
+\par
+It allows to define the \b Name, the parent \b Mesh and the \b
+Geometry (e.g. a face if the parent mesh has been built on box) of the
+submesh. You can define algorithms and hypotheses in the same way as
+in \ref constructing_meshes_page "Create mesh" menu.
+
+\par
+In the Object Browser the structure of the new submesh will be
+displayed as follows:
+
+\image html image10.jpg
+
+\par
+It contains:
+<ul>
+<li>a reference to the geometrical object on the basis of which the submesh has been constructed;</li>
+<li><b>Applied hypotheses</b> folder containing the references to the
+hypotheses applied to the construction of the submesh;</li>
+<li><b>Applied algorithms</b> folder containing the references to the
+algorithms applied to the construction of the submesh.</li>
+</ul>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_construction_submesh "Construct Submesh" operation.
+
+*/
--- /dev/null
+/*!
+
+\page convert_to_from_quadratic_mesh_page Convert to/from Quadratic Mesh
+
+\n This functionality allows you to transtorm standard meshes to
+quadratic and vice versa. See \ref adding_quadratic_elements_page "Adding quadratic elements"
+for more information about quadratic meshes.
+
+<em>To produce a conversion:</em>
+<ol>
+<li>From the Modification menu choose the Convert to/from Quadratic
+Mesh item, or click <em>"Convert to/from quadratic"</em> button in the
+toolbar.
+
+\image html image154.gif
+<center><em>"Convert to/from quadratic" button</em></center>
+
+The following dialog box will appear:
+
+\image html convert.png
+
+</li>
+<li>In this dialog box you should select:
+
+<ul>
+<li>if you wish to convert standard mesh to quadratic or quadratic to standard;</li>
+<li>if you wish to place medium nodes of the quadratic mesh on the geometry (meshed object).</li>
+</ul>
+
+\image html image156.gif
+<center>Standard mesh (coarse mesh on a torus)</center>
+
+\image html image155.gif
+<center>Quadratic mesh</center>
+
+</li>
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page creating_groups_page Creating groups
+
+\n In MESH you can create groups of elements of different types. To
+create a group of elements in the \b Mesh menu select <b>Create
+Group</b>.
+\n To create any group you should define the following:
+<ul>
+<li><b>Mesh</b> - the name of the mesh whose elements will form your
+group. You can select your mesh in the Objet Browser or in the 3D
+viewer.</li>
+<li><b>Elements Type</b> - set of radio buttons allows to select the type of
+elements which will form your group:</li>
+<ul>
+<li><b>Nodes</b></li>
+<li><b>Edges</b></li>
+<li><b>Faces</b></li>
+<li><b>Volumes</b></li>
+</ul>
+<li><b>Name</b> field allows to enter the name of your new group.</li>
+</ul>
+SALOME Platform distinguishes between the two Group types:
+<b>Standalone Group</b> and <b>Group on Geometry</b>.
+
+<br><h2>Standalone Group</h2>
+
+<b>Standalone Group</b> consists of mesh elements, which you can define in
+two possible ways.
+<ul>
+<li>Choosing them manually with the mouse in the 3D Viewer. You can
+click on an element in the 3D viewer and it will be highlighted. After
+that click the \b Add button and the ID of this element will be added to
+the list.</li>
+<li>Applying Filters. The <b>Set filter</b> button allows to apply a
+definite filter to selection of the elements of your group. See more
+about filters on the
+\ref selection_filter_library_page "Selection filter library" page.</li>
+</ul>
+To remove a selected element or elements from the list click the
+\b Remove button. The <b>Sort List</b> button allows to sort the list of IDs of
+mesh elements.
+\n <b>Select from</b> set of fields allows to choose a submesh or an existing
+group whose elements of the previously defined type will be added to
+the list of elements which will form your group.
+\n <b>Color Number</b> (integer only, ranging from 0 to 9999) - allows to
+assign to the group a certain index, for example, defining boundary
+conditions. This feature introduces a useful element of preprocessing
+in Mesh module. Note that <b>Color number</b> attribute has nothing to do
+with the colors used for the display of the elements of the group.
+
+\image html creategroup.png
+
+\image html image130.gif
+<center>In this picture the brown cells belong to a group defined manually.</center>
+
+\image html image131.gif
+<center>In this picture the brown cells belong to the group defined by the criterion
+<b>Taper > 0</b>.</center>
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_create_standalone_group "Create a Standalone Group"
+operation.
+
+<br><h2>Group on Geometry</h2>
+
+To create a group on geometry check <b>Group on geometry</b> in the \b Group
+\b type field. <b>Group on geometry</b> contains the elements of a certain type
+belonging to the selected geometrical object. To define a group select
+in the Objet Browser or in the 3D viewer a geometrical object from
+which the elements will be taken. After confirmation of the operation
+a new group of mesh elements will be created.
+
+\image html a-creategroup.png
+
+\image html image132.gif
+<center>In this picture the cells which belong to a certain face are
+selected in green.</center>
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_create_group_on_geometry "Create a Group on Geometry"
+operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page creating_meshes_page Creating meshes
+
+<ul>
+<li>\subpage about_meshes_page</li>
+<li>\subpage importing_exporting_meshes_page</li>
+<li>\subpage constructing_meshes_page</li>
+<li>\subpage defining_algos_page</li>
+<ul>
+<li>\ref basic_meshing_algos_page</li>
+<li>\ref projection_algos_page</li>
+<li>\ref radial_prism_algo_page</li>
+<li>\ref segments_around_vertex_algo_page</li>
+<li>\ref prism_3d_algo_page</li>
+</ul>
+<li>\subpage defining_hypo_page</li>
+<ul>
+<li>\ref about_hypo_page</li>
+<li>\ref a1d_meshing_hypo_page</li>
+<li>\ref a2d_meshing_hypo_page</li>
+<li>\ref max_element_volume_hypo_page</li>
+<li>\ref netgen_2d_3d_hypo_page</li>
+<li>\ref additional_hypo_page</li>
+</ul>
+<li>\subpage constructing_submeshes_page</li>
+<li>\subpage building_compounds_page</li>
+<li>\subpage editing_meshes_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page cutting_quadrangles_page Cutting quadrangles
+
+\n This operation allows to cut one or several quadrangle elements by
+addition of a supplementary edge which will connect two opposite
+corners.
+
+<em>To cut quadrangles:</em>
+<ol>
+<li>Display a mesh or a submesh in the 3D viewer.</li>
+<li>In the \b Modification menu select the <b>Cutting of quadrangles</b> item or
+click <em>"Cutting of quadrangles"</em> button in the toolbar.
+
+\image html image82.gif
+<center><em>"Cutting of quadrangles" button</em></center>
+
+The following dialog box will appear:
+
+\image html a-cuttingofquadrangles.png
+
+\par
+<ul>
+<li>The main list contains the list of quadrangles. You can click on
+an quadrangle in the 3D viewer and it will be highlighted (lock Shift
+keyboard button to select several quadrangles). Click \b Add button and
+the ID of this quadrangle will be added to the list. To remove a
+selected element or elements from the list click \b Remove button. <b>Sort
+list</b> button allows to sort the list of IDs. \b Filter button allows to
+apply a definite filter to the selection of quadrangles.</li>
+<li><b>Apply to all</b> radio button allows to modify the orientation of all
+quadrangles of the currently displayed mesh or submesh.</li>
+<li>\b Preview - provides a preview of cutting in the viewer.</li>
+</ul>
+
+<ul>
+<li>\b Criterion
+<ul>
+<li><b>Use diagonal 1-3</b> and <b>Use diagonal 2-4</b> allows to
+specify the opposite corners which will be connected by the cutting
+edge.</li>
+<li><b>Use numeric factor</b> - allows to apply the operation only to
+those objects which meet the chosen criterion (from the list of
+Quality Controls, i.e. Skew, Warping, Minimum Angle, etc.)</li>
+</ul>
+</li>
+<li><b>Select from</b> - allows to choose a submesh or an existing
+group whose quadrangle elements will be automatically added to the
+list.</li>
+</ul>
+
+</li>
+<li>Click the \b Apply or \b OK button to confirm the operation.</li>
+</ol>
+
+\image html image52.jpg
+
+\image html image51.jpg
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_cutting_quadrangles "Cutting Quadrangles" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page defining_algos_page Defining Algorithms
+
+<ul>
+<li>\subpage basic_meshing_algos_page</li>
+<li>\subpage projection_algos_page</li>
+<li>\subpage radial_prism_algo_page</li>
+<li>\subpage segments_around_vertex_algo_page</li>
+<li>\subpage prism_3d_algo_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page defining_hypo_page Defining hypotheses
+
+<ul>
+<li>\subpage about_hypo_page</li>
+<li>\subpage a1d_meshing_hypo_page</li>
+<li>\subpage a2d_meshing_hypo_page</li>
+<li>\subpage max_element_volume_hypo_page</li>
+<li>\subpage netgen_2d_3d_hypo_page</li>
+<li>\subpage additional_hypo_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page deleting_groups_page Deleting Groups
+
+\n To delete a group in the <b>Main Menu</b> select <b>Mesh -> Delete Groups</b> and
+select one or several groups you wish to delete in the 3D viewer or in
+the Object Browser.
+\n The selected groups will be listed in <b>Delete groups with contents</b>
+menu. Then click Ok button to remove the selected groups and close the
+menu or Apply button to remove them and proceed with the selection.
+
+\image html deletegroups.png
+
+\n Please, note that this operation <b>removes groups with their
+elements</b>. To delete a group and leave its elements intact, right-click
+on the group in the Object Browser and select \b Delete in the pop-up
+menu or select the group and choose <b>Edit -> Delete</b> in the <b>Main Menu</b>.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page diagonal_inversion_of_elements_page Diagonal inversion of elements
+
+\n In MESH you can inverse the diagonal (edge) of a pseudo-quadrangle
+formed by two neighboring triangles with one common edge.
+
+<em>To inverse the diagonal:</em>
+<ol>
+<li>From the \b Modification menu choose the <b>Diagonal inversion</b> item or
+click <em>"Diagonal Inversion"</em> button in the toolbar.
+
+\image html image70.gif
+<center><em>"Diagonal Inversion" button</em></center>
+
+The following dialog box shall appear:
+
+\image html diagonalinversion.png
+
+</li>
+<li>Enter the ID of the required edge in the \b Edge field or select
+this edge in the 3D viewer.</li>
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+\image html image38.jpg
+
+\image html image36.jpg
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_diagonal_inversion "Diagonal Inversion of Elements" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page display_entity_page Display Entity
+
+\n In this submenu you can choose to display only volumes, faces or
+edges or combine them.
+
+\image html image56.jpg Only Faces
+
+\image html image58.gif Only Edges
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page display_mode_page Display Mode
+
+\n By default your objects are represented as set in \b Preferences.
+\n However, right-clicking on the mesh in the <b>Object Browser</b>,
+and selecting <b>Display Mode</b>, you can display your mesh as:
+
+\image html image53.gif Wireframe
+
+\image html image37.jpg Shading
+
+\image html image56.gif Nodes
+
+\b Wireframe can combine with \b Nodes and \b Shading.
+
+\b Shading and \b Wireframe modes can combine with \b Shrink, however
+\b Nodes can't.
+
+\image html image55.gif
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page editing_groups_page Editing groups
+
+\n <em>To edit an existing group of elements:</em>
+<ol>
+<li>Select your group in the Object Browser and in the \b Mesh menu click
+the <b>Edit Group</b> item or <em>"Edit Group"</em> button in the toolbar.</li>
+
+\image html image74.gif
+<center><em>"Edit Group" button</em></center>
+
+The following dialog box will appear:
+
+\image html editgroup.png
+
+In this dialog box you can modify the name of your group and add or
+remove the elements forming it. For more information see
+\ref creating_groups_page "Creating Groups" page.
+<li>Click the \b OK or \b Apply button to confirm modification of the
+group.</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_edit_group "Edit Group" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page editing_meshes_page Editing Meshes
+
+\n After you have created a mesh or submesh with definite applied
+hypotheses and algorithms you can edit your mesh by \b assigning new
+hypotheses and algorithms or \b unassigning the applied hypotheses and
+algorithms. The editing proceeds in the same way as <b>Mesh
+Creation</b>.
+
+\image html createmesh-inv3.png
+
+You can also change values for the current hypothesis by clicking the
+<em>"Edit Hypothesis"</em> button.
+
+\image html image122.gif
+<center><em>"Edit Hypothesis" button</em></center>
+
+See how a mesh constructed on one and the same geometrical object
+changes if we apply different algorithms to it.
+
+\image html edit_mesh1.png
+
+\image html edit_mesh_remove_hyp.png
+
+\image html edit_mesh_change_value_hyp.png
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_editing_mesh "Edit Mesh" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page extrusion_page Extrusion
+
+\n Extrusion is used to build mesh elements of plus one
+dimension than the input ones. Any line or planar element can be
+extruded. Line elements will extrude into quadrilateral plane elements.
+Triangular and Quadrilateral plane elements extrude into Pentahedron
+and Hexahedron solids respectively.
+
+<em>To use extrusion:</em>
+<ol>
+<li>From the \b Modification menu choose the \b Extrusion item or click
+<em>"Extrusion"</em> button in the toolbar.
+
+\image html image91.gif
+<center><em>"Extrusion" button</em></center>
+
+The following dialog box will appear:
+
+\image html extrusionalongaline1.png
+
+\image html extrusionalongaline2.png
+</li>
+
+<li>In this dialog box you should select:
+<ul>
+<li>the type of elements which will be extruded (1D or 2D),</li>
+<li>specify the IDs of the elements which will be extruded by
+selecting them in the 3D viewer or select the whole mesh or
+submesh,</li>
+<li>specify the vector along which the elements will be extruded,</li>
+<li>number of steps.</li>
+</ul>
+<li> <b>Generate Groups</b> checkbox allows copying the groups of
+elements of the source mesh to the newly created one. </li>
+</li>
+
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+\image html image77.jpg
+
+\image html image76.jpg
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_extrusion "Extrusion" operation.
+
+*/
--- /dev/null
+/*!
+
+\page extrusion_along_path_page Extrusion along a path
+
+\n In principle, <b>Extrusion along a path</b> works in the same way
+as \b Extrusion, the main difference is that we define not a vector,
+but a path of extrusion 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:
+
+\image html mesh_for_extr_along_path.png
+
+<br><center><h2>Extrusion along a straight edge</h2>(not using base point
+or angles)</center>
+
+\image html straight_before.png
+<center>The image shows a 1D path mesh, built on a linear edge, and the initial 2D mesh.</center>
+
+\image html straight_after.png
+<center> The image shows the result of extrusion of two edges
+(#1 and #2) of the initial mesh along the path. \n Node #1 of path mesh
+has been selected as Start node.</center>
+
+<br><center><h2>Extrusion along a curvilinear edge</h2>(with and
+without angles)</center>
+
+\image html curvi_simple_before.png
+<center>The image shows a 1D path mesh, built on curvilinear edge, and
+the initial 2D mesh.</center>
+
+\image html curvi_simple_after.png
+<center>The central image shows the result of extrusion of one edge
+(#2) of the initial mesh along the path. \n Node #1 of path mesh has
+been selected as <b>Start node</b>.</center>
+
+\image html curvi_angles_after.png
+<center>The same, but using angles {45, 45, 45, 0, -45, -45, -45}</center>
+
+<br><center><h2>Extrusion along a sub-mesh</h2></center>
+
+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 <b>Shape (edge)</b>, node
+#1 as <b>Start node</b>. The angles have been defined as {10, 10, 10}. The
+middle edge (#4) of the initial mesh has been extruded.
+
+\image html edge_wire_before.png
+
+\image html edge_wire_after.png
+
+<br><center><h2>Extrusion of 2d elements along a sub-mesh</h2></center>
+
+This extrusion bases on the same path mesh as in the previous example
+but the third edge of the wire was set as <b>Shape (edge)</b> and node
+#4 as <b>Start node</b>. 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.
+
+\image html edge_wire_3d_before.png
+
+\image html edge_wire_3d_after.png
+
+<br><center><h2>Extrusion of 2d elements along a closed path</h2></center>
+
+\image html circle_simple_before.png
+<center>The image shows a path mesh built on a closed edge
+(circle).</center>
+
+\image html circle_simple_after.png
+<center>The central image shows the result of extrusion of both faces
+of the initial mesh. \n Note, that no sewing has been done, so, there are
+six coincident nodes and two coincident faces in the resulting
+mesh.</center>
+
+\image html circle_angles_after.png
+<center>The same, but using angles {45, -45, 45, -45, 45, -45, 45,
+-45}</center>
+
+<br><em>To use Extrusion along a path:</em>
+<ol>
+<li>From the \b Modification menu choose the <b>Extrusion along a
+path</b> item or click <em>"Extrusion along a path"</em> button in the toolbar.
+
+\image html image101.gif
+<center><em>"Extrusion along a path" button</em></center>
+
+The following dialog box will appear:
+
+\image html extrusion1.png
+
+\image html extrusion2.png
+</li>
+
+<li>In the dialog box you should:
+<ul>
+<li>select the type of elements which will be extruded (1D or 2D),</li>
+<li>specify the <b>IDs of the elements</b> which will be extruded by
+selecting them in the 3D viewer or <b>Select the whole mesh, submesh
+or group</b>,
+</li>
+<li>define the Path along which the elements will be extruded,
+\n Path definition consists of several elements:
+<ul>
+<li>\b Mesh - containing a 1D sub-mesh on the edge, along which proceeds the extrusion</li>
+<li><b>Shape (edge)</b> - as the mesh can be complex, the edge is used to define the sub-mesh for the path</li>
+<li><b>Start node</b> - the first or the last node on the edge. It is used to define the direction of extrusion </li>
+</ul>
+</li>
+<li> <b>Generate Groups</b> checkbox allows copying the groups of
+elements of the source mesh to the newly created one. </li>
+</ul>
+</li>
+
+<li>There are two optional parameters, which can be very useful:
+<ul>
+<li>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 <b>Base Point</b> around which the shape is rotated is
+the mass center of the shape, however, you can specify any point as
+the <b>Base Point</b> and the shape will be rotated with respect to this
+point.
+</li>
+<li>The shape can also be rotated around the path to get the resulting
+mesh in a helical fashion. You can set the values of angles at the
+right, add them to the list of angles at the left by pressing the <em>"Add"</em>
+button and remove them from the list by pressing the <em>"Remove"</em> button.
+
+\image html image105.gif
+<center><em>"Add" button</em></center>
+
+\image html image106.gif
+<center><em>"Remove" button</em></center>
+
+</li>
+</ul>
+</li>
+
+<li>Click the \b Apply or \b OK 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.
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of an
+\ref tui_extrusion_along_path "Extrusion along a Path" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page free_borders_page Free borders
+
+\n This mesh quality control highlights borders of faces consisting of
+edges belonging to one face only.
+
+\image html free_borders1.png
+
+In this picture the free borders are displayed in white.
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_free_borders "Free Borders quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page free_edges_page Free edges
+
+\n This mesh quality control highlights borders of elements of mesh
+consisting of edges belonging to one element of mesh only.
+
+\image html free_edges.png
+<center>In this picture some elements of mesh have been deleted and
+the "holes" are outlined in red.</center>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_free_edges "Free Edges quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page grouping_elements_page Grouping elements
+
+<ul>
+<li>\subpage creating_groups_page</li>
+<li>\subpage editing_groups_page</li>
+<li>\subpage using_operations_on_groups_page</li>
+<li>\subpage constructing_groups_of_specific_elements_page</li>
+<li>\subpage deleting_groups_page</li>
+<li>\subpage selection_filter_library_page</li>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page importing_exporting_meshes_page Importing and exporting meshes
+
+\n In MESH there is a functionality allowing importation/exportation
+of meshes from \b MED, \b UNV (I-DEAS 10), \b DAT (Nastran) and STL format files.
+
+<em>To import a mesh:</em>
+
+<ol>
+<li>From the \b File menu choose the \b Import item, from its sub-menu
+select the corresponding format (MED, UNV and DAT) of the file containing
+your mesh.</li>
+<li>In the standard <b>Search File</b> dialog box find the file for
+importation.</li>
+<li>Click the \b OK button.</li>
+</ol>
+
+\image html meshimportmesh.png
+
+<em>To export a mesh:</em>
+
+<ol>
+<li>Select the object you wish to export.</li>
+<li>From the \b File menu choose the \b Export item, from its sub-menu
+select the format (MED, UNV, DAT and STL) of the file which will contain your
+exported mesh.</li>
+<li>In the standard <b>Search File</b> select a location for the
+exported file and enter its name.</li>
+<li>Click the \b OK button.</li>
+</ol>
+
+\image html meshexportmesh.png
+
+<br><b>See Also</b> a sample TUI Script of an \ref tui_export_mesh "Export Mesh" operation.
+
+*/
--- /dev/null
+/*!
+
+\mainpage SMESH Module Reference Documentation
+
+<ul>
+<li>\subpage introduction_to_mesh_page</li>
+<li>\subpage running_mesh_module_page</li>
+<li>\subpage introduction_to_mesh_python_page</li>
+<li>\subpage creating_meshes_page</li>
+<ul>
+<li>\ref about_meshes_page</li>
+<li>\ref importing_exporting_meshes_page</li>
+<li>\ref constructing_meshes_page</li>
+<li>\ref defining_algos_page</li>
+<ul>
+<li>\ref basic_meshing_algos_page</li>
+<li>\ref projection_algos_page</li>
+<li>\ref radial_prism_algo_page</li>
+<li>\ref segments_around_vertex_algo_page</li>
+<li>\ref prism_3d_algo_page</li>
+</ul>
+<li>\ref defining_hypo_page</li>
+<ul>
+<li>\ref about_hypo_page</li>
+<li>\ref a1d_meshing_hypo_page</li>
+<li>\ref a2d_meshing_hypo_page</li>
+<li>\ref max_element_volume_hypo_page</li>
+<li>\ref netgen_2d_3d_hypo_page</li>
+<li>\ref additional_hypo_page</li>
+</ul>
+<li>\ref constructing_submeshes_page</li>
+<li>\ref building_compounds_page</li>
+<li>\ref editing_meshes_page</li>
+</ul>
+<li>\subpage viewing_meshes_page</li>
+<ul>
+<li>\ref viewing_meshes_overview_page</li>
+<li>\ref mesh_infos_page</li>
+<li>\ref numbering_page</li>
+<li>\ref display_mode_page</li>
+<li>\ref display_entity_page</li>
+<li>\ref transparency_page</li>
+<li>\ref clipping_page</li>
+</ul>
+<li>\subpage quality_controls_page</li>
+<ul>
+<li>\ref about_quality_controls_page</li>
+<li>\ref free_borders_page</li>
+<li>\ref borders_at_multi_connection_page</li>
+<li>\ref length_page</li>
+<li>\ref free_edges_page</li>
+<li>\ref length_2d_page</li>
+<li>\ref borders_at_multi_connection_2d_page</li>
+<li>\ref area_page</li>
+<li>\ref taper_page</li>
+<li>\ref aspect_ratio_page</li>
+<li>\ref minimum_angle_page</li>
+<li>\ref warping_page</li>
+<li>\ref skew_page</li>
+<li>\ref aspect_ratio_3d_page</li>
+<li>\ref volume_page</li>
+</ul>
+<li>\subpage grouping_elements_page</li>
+<ul>
+<li>\ref creating_groups_page</li>
+<li>\ref editing_groups_page</li>
+<li>\ref using_operations_on_groups_page</li>
+<li>\ref constructing_groups_of_specific_elements_page</li>
+<li>\ref deleting_groups_page</li>
+<li>\ref selection_filter_library_page</li>
+</ul>
+<li>\subpage modifying_meshes_page</li>
+<ul>
+<li>\ref adding_nodes_and_elements_page</li>
+<li>\ref adding_quadratic_elements_page</li>
+<li>\ref removing_nodes_and_elements_page</li>
+<li>\ref renumbering_nodes_and_elements_page</li>
+<li>\ref transforming_meshes_page</li>
+<ul>
+<li>\ref translation_page</li>
+<li>\ref rotation_page</li>
+<li>\ref symmetry_page</li>
+<li>\ref sewing_meshes_page</li>
+<li>\ref merging_nodes_page</li>
+<li>\ref merging_elements_page</li>
+</ul>
+<li>\ref moving_nodes_page</li>
+<li>\ref mesh_through_point_page</li>
+<li>\ref diagonal_inversion_of_elements_page</li>
+<li>\ref uniting_two_triangles_page</li>
+<li>\ref uniting_set_of_triangles_page</li>
+<li>\ref changing_orientation_of_elements_page</li>
+<li>\ref cutting_quadrangles_page</li>
+<li>\ref smoothing_page</li>
+<li>\ref extrusion_page</li>
+<li>\ref extrusion_along_path_page</li>
+<li>\ref revolution_page</li>
+<li>\ref pattern_mapping_page</li>
+<li>\ref convert_to_from_quadratic_mesh_page</li>
+</ul>
+<li>\subpage smeshpy_interface_page</li>
+<li>\subpage tui_scripts_page</li>
+<ul>
+<li>\ref tui_creating_meshes_page</li>
+<li>\ref tui_viewing_meshes_page</li>
+<li>\ref tui_defining_hypotheses_page</li>
+<li>\ref tui_quality_controls_page</li>
+<li>\ref tui_grouping_elements_page</li>
+<li>\ref tui_modifying_meshes_page</li>
+<li>\ref tui_transforming_meshes_page</li>
+</ul>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page introduction_to_mesh_page Introduction to MESH
+
+\n \b MESH module of SALOME is destined for:
+<ul>
+<li>\ref importing_exporting_meshes_page "import and export of meshes in MED format",</li>
+<li>\ref constructing_meshes_page "meshing geometrical models"
+previously created or imported by the GEOM component. MESH module
+allows to apply 1D, 2D, 3D meshing algorithms and a set of hypotheses:
+<ul>
+<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+<li>\ref average_length_anchor "Average Length"</li>
+<li>\ref deflection_1d_anchor "Deflection 1D"</li>
+<li>\ref number_of_segments_anchor "Number of segments"</li>
+<li>\ref start_and_end_length_anchor "Start and end length"</li>
+<li>\ref automatic_length_anchor "Automatic Length"</li>
+<li>\ref max_element_area_anchor "Max Element Area"</li>
+<li>\ref length_from_edges_anchor "Length from Edges"</li>
+<li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+<li>\ref max_element_volume_hypo_page "Max Element Volume"</li>
+</ul>
+</li>
+<li>modification of locally generated meshes by
+<ul>
+<li>\ref adding_nodes_and_elements_page "Addition" of nodes and elements</li>
+<li>\ref removing_nodes_and_elements_page "Removal" of nodes and elements </li>
+</ul>
+</li>
+<li>\ref creating_groups_page "grouping mesh elements" and
+\ref using_operations_on_groups_page "performing operations on these groups"</li>
+<li>\ref about_quality_controls_page "quality control" of meshes basing on a set of definite criteria -
+
+<b>for edges:</b>
+<ul>
+<li>\ref length_page "Length of edges"</li>
+<li>\ref borders_at_multi_connection_page "Borders at multi-connection"</li>
+<li>\ref free_borders_page "Free borders"</li>
+</ul>
+
+<b>for faces:</b>
+<ul>
+<li>\ref area_page "Area"</li>
+<li>\ref free_edges_page "Free edges"</li>
+<li>\ref borders_at_multi_connection_2d_page "Borders at multi-connection 2D"</li>
+<li>\ref length_2d_page "Length 2D"</li>
+<li>\ref minimum_angle_page "Minimum angle"</li>
+<li>\ref taper_page "Taper"</li>
+<li>\ref aspect_ratio_page "Aspect Ratio"</li>
+<li>\ref warping_page "Warping"</li>
+<li>\ref skew_page "Skew"</li>
+</ul>
+
+<b>for solids:</b>
+<ul>
+<li>\ref aspect_ratio_3d_page "Aspect ratio 3D"</li>
+<li>\ref volume_page "Volume"</li>
+</ul>
+</li>
+</ul>
+
+\image html image7.jpg
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page introduction_to_mesh_python_page Introduction to MESH module python interface
+
+\n Package smesh provides a standard API for creation and edition of meshes.
+\n Below you can see an example of usage of the package smesh for 3d mesh generation.
+
+<h2>Example of 3d mesh generation with NETGEN:</h2>
+
+\n from geompy import *
+\n import smesh
+
+<b># Geometry</b>
+\n <b># an assembly of a box, a cylinder and a truncated cone meshed with tetrahedral</b>.
+
+<b># Define values</b>
+\n name = "ex21_lamp"
+\n cote = 60
+\n section = 20
+\n size = 200
+\n radius_1 = 80
+\n radius_2 = 40
+\n height = 100
+
+<b># Build a box</b>
+\n box = MakeBox(-cote, -cote, -cote, +cote, +cote, +cote)
+
+<b># Build a cylinder</b>
+\n pt1 = MakeVertex(0, 0, cote/3)
+\n di1 = MakeVectorDXDYDZ(0, 0, 1)
+\n cyl = MakeCylinder(pt1, di1, section, size)
+
+<b># Build a truncated cone</b>
+\n pt2 = MakeVertex(0, 0, size)
+\n cone = MakeCone(pt2, di1, radius_1, radius_2, height)
+
+<b># Fuse </b>
+\n box_cyl = MakeFuse(box, cyl)
+\n piece = MakeFuse(box_cyl, cone)
+
+<b># Add in study</b>
+\n addToStudy(piece, name)
+
+<b># Create a group of faces</b>
+\n group = CreateGroup(piece, ShapeType["FACE"])
+\n group_name = name + "_grp"
+\n addToStudy(group, group_name)
+\n group.SetName(group_name)
+
+<b># Add faces in the group</b>
+\n faces = SubShapeAllIDs(piece, ShapeType["FACE"])
+\n UnionIDs(group, faces)
+
+<b># Create a mesh</b>
+
+<b># Define a mesh on a geometry</b>
+\n tetra = smesh.Mesh(piece, name)
+
+<b># Define 1D hypothesis</b>
+\n algo1d = tetra.Segment()
+\n algo1d.LocalLength(10)
+
+<b># Define 2D hypothesis</b>
+\n algo2d = tetra.Triangle()
+\n algo2d.LengthFromEdges()
+
+<b># Define 3D hypothesis</b>
+\n algo3d = tetra.Tetrahedron(smesh.NETGEN)
+\n algo3d.MaxElementVolume(100)
+
+<b># Compute the mesh</b>
+\n tetra.Compute()
+
+<b># Create a groupe of faces</b>
+\n tetra.Group(group)
+
+*/
--- /dev/null
+/*!
+
+\page length_page Length
+
+\n Length quality control criterion returns a value of length of
+edge.
+
+\image html length-crit.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_length_1d "Length quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page length_2d_page Length 2D
+
+\n This quality control criterion consists of calculation of length of
+the edges combining the meshing elements (triangles and quadrangles)
+of your mesh.
+
+<em>To apply the Length 2D quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer. </li>
+
+<li>Choose <b>Controls > Length 2D</b> or click <em>"Length 2D"</em>
+button in the toolbar.
+
+\image html image34.gif
+<center><em>"Length 2D" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion:
+
+\image html length2d.png
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_length_2d "Length 2D quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page max_element_volume_hypo_page Max Element Volume hypothesis
+
+\n <b>Max Element Volume </b> hypothesis is applied for meshing of 3D objects
+composing your geometrical object. Definition of this hypothesis
+consists of setting the <b>maximum volume</b> of 3D meshing elements
+(depending on the chosen meshing algorithm it can be \b hexahedrons or
+\b tetrahedrons), which will compose the mesh of these 3D objects.
+
+\image html a-maxelvolume.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_max_element_volume "Maximum Element Volume hypothesis" operation.
+
+*/
--- /dev/null
+/*!
+
+\page merging_elements_page Merging Elements
+
+\n This functionality allows to merge coincident elements of a mesh
+selectable in the dialog box.
+
+\image html mergeelems.png
+
+<ul>
+<li>\b Name is the name of the mesh whose elements will be merged.</li>
+<li>\b Tolerance is a maximum distance between elements sufficient for
+merging.
+<ul>
+<li>\b Detect button generates the list of coincident elements for the given
+\b Tolerance.</li>
+</ul>
+</li>
+<li><b>Coincident elements</b> is a list of groupes of elements for
+merging. All elements of each group will form one after the operation.
+<ul>
+<li>\b Remove button deletes the selected group from the list.</li>
+<li>\b Add button adds to the list a group of elements selected in the
+viewer with pressed "Shift" key.</li>
+<li><b>Select all</b> checkbox selects all groups.</li>
+</ul>
+</li>
+<li><b>Edit selected group</b> list allows editing the selected
+group:
+<br><br>
+\image html add.gif
+<center>adds to the group the element selected in the viewer.</center>
+<br>
+\image html remove.gif
+<center>removes from the group the selected element.</center>
+<br>
+\image html sort.gif
+<center>moves the selected element to the first position in the
+group. This means that all other elements will be merged into this
+one.</center><br>
+</li>
+</ul>
+</li>
+<li>To confirm your choice click \b OK or \b Apply button.</li>
+</ol>
+
+In this picture you see a triangle which coincides with one of the
+elements of the mesh. After we apply <b>Merge Elements</b> functionality, the
+triangle will be completely merged with the mesh.
+
+\image html meshtrianglemergeelem1.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_merging_elements "Merge Elements" operation.
+
+*/
--- /dev/null
+/*!
+
+\page merging_nodes_page Merging nodes
+
+\n This functionality allows user to detect groups of coincident nodes
+with desirable tolerance, edit these groups and merge.
+
+<em>To merge nodes of your mesh:</em>
+<ol>
+<li>From the \b Modification choose \b Transformation and from its
+sub-menu select the <b>Merge nodes</b> item. The following dialog box
+shall appear:
+
+\image html mergenodes.png
+
+<ul>
+<li>\b Name is the name of the mesh whose nodes will be merged.</li>
+<li>\b Tolerance is a maximum distance between nodes sufficient for
+merging.
+<ul>
+<li>\b Detect button generates the list of coincident nodes for the given
+\b Tolerance.</li>
+</ul>
+</li>
+<li><b>Coincident nodes</b> is a list of groupes of nodes for
+merging. All nodes of each group will form one after the
+operation.
+<ul>
+<li>\b Remove button deletes the selected group from the list.</li>
+<li>\b Add button adds to the list a group of nodes selected in the
+viewer with pressed "Shift" key.</li>
+<li><b>Select all</b> checkbox selects all groups.</li>
+</ul>
+</li>
+<li><b>Edit selected group</b> list allows editing the selected
+group:
+<br><br>
+\image html add.gif
+<center>adds to the group the node selected in the viewer.</center>
+<br>
+\image html remove.gif
+<center>removes from the group the selected node.</center>
+<br>
+\image html sort.gif
+<center>moves the selected node to the first position in the
+group. This means that all other nodes will be merged into this
+one.</center><br>
+</li>
+</ul>
+</li>
+<li>To confirm your choice click \b OK or \b Apply button.</li>
+</ol>
+
+\image html merging_nodes1.png
+
+\image html merging_nodes2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_merging_nodes "Merge Nodes" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page mesh_infos_page Mesh infos
+
+\n There are three information boxes: <b>Standard Mesh
+Infos</b>, <b>Advanced Mesh Infos</b> and <b> Mesh Element Info</b>.
+
+<br>
+\anchor standard_mesh_infos_anchor
+<h2>Standard Mesh Infos</h2>
+
+The <b>Standard Mesh Infos</b> box gives only the information on the
+number of elements of maximum dimension and the number of nodes in the
+mesh. However, from this Info you can learn about groups selected on
+this mesh.
+\n To view the <b>Standard Mesh Infos</b>, select your mesh or submesh
+in the <b>Object Browser</b> and select <b>Standard Mesh Infos</b>
+from the \b Mesh menu or click <em>"Standard Mesh Infos"</em> button
+in the toolbar.
+
+\image html image49.gif
+<center><em>"Standard Mesh Infos" button</em></center>
+
+The following information will be displayed:
+
+\image html a-standmeshinfo.png
+
+<br>
+\anchor advanced_mesh_infos_anchor
+<h2>Advanced Mesh Infos</h2>
+
+The <b>Advanced Mesh Infos</b> box gives more information about the mesh,
+including the total number of faces and volumes and their geometrical
+types.
+\n To view the <b>Advanced Mesh Infos</b>, select your mesh or submesh
+in the <b>Object Browser</b> and select <b>Advanced Mesh Infos</b>
+from the \b Mesh menu or click <em>"Advanced Mesh Infos"</em> button
+in the toolbar.
+
+\image html image50.gif
+<center><em>"Advanced Mesh Infos" button</em></center>
+
+The following information will be displayed:
+
+\image html advanced_mesh_infos.png
+
+In case you get Mesh Infos via a \ref tui_viewing_mesh_infos "TUI script",
+the information is displayed in Python Console.
+
+\image html b-mesh_infos.png
+
+<br>
+\anchor mesh_element_info_anchor
+<h2>Mesh Element Info</h2>
+
+The <b>Mesh Element Info</b> box gives basic information about the
+type and the coordinates of the selected mesh element.
+
+\image html eleminfo1.png
+
+\image html eleminfo2.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page mesh_through_point_page Mesh through point
+
+\n In mesh you can define a node at a certain point either by creation
+of a new node, by movement of the node closest to the point or by
+movement of any node to the point.
+
+<em>To create a mesh passing through a point:</em>
+<ol>
+<li>From the \b Modification menu choose the <b>Mesh through point</b> item or
+click <em>"Mesh to pass through a point"</em> button in the toolbar.
+
+\image html mesh_node_to_point.png
+<center><em>"Mesh to pass through a point" button</em></center>
+
+The following dialog box shall appear:
+
+\image html meshtopass.png
+
+</li>
+<li>Enter the coordinates of the point.</li>
+<li>Choose one of several methods: you can either \b Create a new node at
+the indicated point or Move the existing node to the point. In the
+latter case you can check in <b>Automatic search</b> of the closest node or
+select the necessary node manually. \b Preview check-box allows to see
+the results of the operation.</li>
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_mesh_through_point "Mesh through point" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page minimum_angle_page Minimum angle
+
+\n <b>Minimum angle</b> mesh quality criterion consists of calculation of the
+minimum value of angle between two adjacent sides of a 2D meshing
+element (triangle or quadrangle).
+
+<em>To apply the Minimum angle quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Minimum angle</b> or click <em>"Minimum Angle"</em> button.
+
+\image html image38.gif
+<center><em>"Minimum Angle" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image92.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_minimum_angle "Minimum Angle quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page modifying_meshes_page Modifying meshes
+
+<ul>
+<li>\subpage adding_nodes_and_elements_page</li>
+<li>\subpage adding_quadratic_elements_page</li>
+<li>\subpage removing_nodes_and_elements_page</li>
+<li>\subpage renumbering_nodes_and_elements_page</li>
+<li>\subpage transforming_meshes_page</li>
+<ul>
+<li>\ref translation_page</li>
+<li>\ref rotation_page</li>
+<li>\ref symmetry_page</li>
+<li>\ref sewing_meshes_page</li>
+<li>\ref merging_nodes_page</li>
+<li>\ref merging_elements_page</li>
+</ul>
+<li>\subpage moving_nodes_page</li>
+<li>\subpage mesh_through_point_page</li>
+<li>\subpage diagonal_inversion_of_elements_page</li>
+<li>\subpage uniting_two_triangles_page</li>
+<li>\subpage uniting_set_of_triangles_page</li>
+<li>\subpage changing_orientation_of_elements_page</li>
+<li>\subpage cutting_quadrangles_page</li>
+<li>\subpage smoothing_page</li>
+<li>\subpage extrusion_page</li>
+<li>\subpage extrusion_along_path_page</li>
+<li>\subpage revolution_page</li>
+<li>\subpage pattern_mapping_page</li>
+<li>\subpage convert_to_from_quadratic_mesh_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page moving_nodes_page Moving nodes
+
+\n In MESH you can change the location of any node of your mesh. In
+this case all adjacent elements (edges) will be also transformed right
+after the displaced node.
+
+<em>To displace a node:</em>
+<ol>
+<li>From the \b Modification menu choose the <b>Move node</b> item or
+click <em>"Move Node"</em> button in the toolbar.
+
+\image html image67.gif
+<center><em>"Move Node" button</em></center>
+
+The following dialog box shall appear:
+
+\image html movenodes.png
+
+</li>
+<li>Enter the ID of the required node in the <b>Node ID</b> field or
+select this node in the 3D viewer. The coordinates of your node will
+be automatically displayed in the \b Coordinates set of fields.</li>
+<li>Set new coordinates for your node in the \b Coordinates set of fields.</li>
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+\image html moving_nodes1.png
+
+\image html moving_nodes2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_moving_nodes "Moving Nodes" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page netgen_2d_3d_hypo_page Netgen 2D and 3D hypotheses
+
+\n <b>Netgen 2D</b> and <b>Netgen 3D</b> hypotheses work only with <b>Netgen 1D-2D</b> and
+<b>Netgen 1D-2D-3D</b> algorithms. These algorithms do not require
+definition of lower-level hypotheses and algorithms (2D and 1D for
+meshing 3D objects and 1D for meshing 2D objects). They prove to be
+useful if lower-level meshing is homogeneous for all wires and faces
+of the meshed object.
+
+\image html netgen2d.png
+
+<ul>
+<li><b>Name</b> - allows to define the name for the algorithm (Netgen
+2D (or 3D) Parameters by default).</li>
+<li><b>Max Size</b> - maximum linear dimensions for mesh cells.</li>
+<li><b>Second Order</b> - if this box is checked in, the algorithm will
+create second order nodes on the mesh, which actually will become
+\ref adding_quadratic_elements_page "Quadratic".</li>
+<li><b>Fineness</b> - ranging from Very Coarse to Very Fine allows to set the
+level of meshing detalization using the three parameters below. You
+can select Custom to define them manually.</li>
+<li><b>Growth rate</b> - allows to define how much the linear dimensions of
+two adjacent cells can differ (i.e. 0.3 means 30%).</li>
+<li><b>Nb. Segs per Edge</b> and <b>Nb Segs per Radius</b> - allows to define the
+minimum number of mesh segments in which edges and radiuses will be
+split.</li>
+<li><b>Allow Quadrangles</b> - allows to use quadrangle elements in a
+triangle 2D mesh. This checkbox is not present in Netgen 3D parameters
+because currently building a tetrahedral mesh with quadrangle faces is
+not possible.</li>
+<li><b>Optimize</b> - if this box is checked in, the algorithm will try to
+create regular (possessing even sides) elements.</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page numbering_page Numbering
+
+<br><h2>Displaying nodes numbers</h2>
+
+In MESH you can display the ID numbers of all nodes of your mesh in
+the viewer.
+
+<em>To display ID numbers of nodes:</em>
+<ol>
+<li>Display your mesh in the viewer</li>
+<li>Right-click on the mesh in the 3D viewer and from the associated
+pop-up menu choose <b>Numbering > Display Nodes #</b>.</li>
+</ol>
+
+It will look like as follows:
+
+\image html image96.jpg
+
+<br><h2>Displaying elements numbers</h2>
+
+In MESH you can display the ID numbers of all meshing elements
+composing your mesh in the viewer.
+
+<em>To display ID numbers of elements:</em>
+<ol>
+<li>Display your mesh in the viewer</li>
+<li>Right-click on the mesh in the 3D viewer and from the associated
+pop-up menu choose <b>Numbering > Display Elements #</b>.</li>
+</ol>
+
+It will look like as follows:
+
+\image html image95.jpg
+
+*/
+
--- /dev/null
+/*!
+
+\page pattern_mapping_page Pattern mapping
+
+<br><h2>About patterns</h2>
+
+The pattern describes a mesh to generate: positions of nodes within a
+geometrical domain and nodal connectivity of elements. As well, a
+pattern specifies the so-called key-points, i.e. nodes that will be
+located at geometrical vertices. Pattern description is stored in
+\<pattern_name\>.smp file.
+
+The smp file contains 4 sections:
+<ol>
+<li>The first line holds the number of nodes (N).</li>
+
+<li>The next N lines describe nodes coordinates. Each line holds 2
+coordinates of a node.</li>
+
+<li>A key-points line: indices of nodes to be mapped on geometrical
+vertices. An index n refers to a node described on an n-th line of
+section 2. The first node index is zero.</li>
+
+<li>The rest lines describe nodal connectivity of elements, one line
+for an element. A line holds indices of nodes forming an element. An
+index n refers to a node described on an n-th line of the section
+2. The first node index is zero. There must be 3 or 4 indices on a
+line: only 2d elements are allowed.</li>
+</ol>
+
+The 2D pattern must contain at least one element and at least one
+key-point. All key-points must lay on boundaries.
+
+An example of a simple smp file and a preview of a pattern described
+in this file:
+
+\image html image94.gif
+
+<br><h2>Application of pattern mapping</h2>
+
+<em>To apply pattern mapping to a geometrical object:</em>
+
+From the \b Modification menu choose the <b>Pattern Mapping</b> item or click
+<em>"Pattern mapping"</em> button in the toolbar.
+
+\image html image98.gif
+<center><em>"Pattern mapping" button</em></center>
+
+The following dialog box shall appear:
+
+\image html patternmapping1.png
+
+\image html patternmapping2.png
+
+To apply a pattern to a geometrical object, you should specify:
+<ul>
+<li>a face having the number of vertices equal to the number of
+key-points in the pattern; the number of key-points on internal
+boundaries of a pattern must also be equal to the number of vertices
+on internal boundaries of a face;</li>
+<li>a vertex to which the first key-point should be mapped;</li>
+<li>reverse or not the order of key-points. (The order of vertices of
+a face is counterclockwise looking from outside).</li>
+</ul>
+
+Then you either load a .smp pattern file previously created manually
+by clicking on the <em>"Load pattern"</em> button, or click on the \b
+New button for automatic generation.
+\n For an automatic generation you just specify a geometrical face
+having a mesh built on it. Mesh nodes lying on face vertices become
+key-points. Additionally, you may choose the way of getting nodes
+coordinates by <b>projecting nodes on the face</b> instead of using
+"positions on face" generated by mesher (if there is any). Faces
+having a seam edge can?t be used for automatic pattern creation.
+
+When creating a pattern from an existing mesh, there are two possible
+cases:
+<ol>
+<li>A sub-mesh on face is selected. A pattern is created from the 2d
+elements bound to a face by mesher. Node coordinates are either
+"positions on face" computed by mesher, or coordinates got by node
+projection on a geometrical surface, according to your choice.</li>
+<li>A mesh where the main shape is a face, is selected. A pattern is
+created from all the 2d elements in a mesh. If all mesh elements are
+build by mesher, the user can select the way of getting nodes
+coordinates, else all nodes are projected on a face surface.</li>
+</ol>
+
+\image html a-patterntype.png
+
+\image html a-patterntype1.png
+
+<br><h2>Mapping algorithm</h2>
+
+The mapping algorithm is as follows:
+<ol>
+<li>Key-points are set in the order that they are encountered when
+walking along a pattern boundary so that elements are on the left. The
+first key-point is preserved.
+</li>
+
+<li>Find geometrical vertices corresponding to key-points by vertices
+order in a face boundary; here, "Reverse order of key-points" flag is
+taken into account.
+
+\image html image95.gif
+</li>
+
+<li>Boundary nodes of a pattern are mapped onto edges of a face: a
+node located between certain key-points on a pattern boundary is
+mapped on a geometrical edge limited by corresponding geometrical
+vertices. Node position on an edge reflects its distance from two
+key-points.
+
+\image html image96.gif
+</li>
+
+<li>Coordinates of a non-boundary node in a parametric space of a face
+are defined as following. In a parametric space of a pattern, a node
+lays at the intersection of two iso-lines, each of which intersects a
+pattern boundary at least at two points. Knowing mapped positions of
+boundary nodes, we find where isoline-boundary intersection points are
+mapped to, and hence we can find mapped isolines direction and then,
+two node positions on two mapped isolines. The eventual mapped
+position of a node is found as an average of positions on mapped
+isolines.
+
+\image html image97.gif
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_pattern_mapping "Pattern Mapping" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page prism_3d_algo_page 3D extrusion meshing algorithm
+
+3D extrusion algorithm can be used for meshing prisms, i.e. <b>3D Shapes</b>
+defined by two opposing faces having the same number of vertices and
+edges and meshed using the \ref projection_algos_page "2D Projection"
+algorithm. These two faces should be connected by quadrangle "side"
+faces.
+
+The opposing faces can be meshed with either quadrangles or triangles,
+while the side faces should be meshed with quadrangles only.
+
+\image html image157.gif
+
+As you can see, the <b>3D extrusion</b> algorithm permits to build and to
+have in the same 3D mesh such elements as hexahedrons, prisms and
+polyhedrons.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page projection_algos_page Projection Algorithms
+
+\n Projection algorithms allow to define the mesh of a geometrical
+object by the projection of another already meshed geometrical object.
+
+<b>Projection 1D</b> algorithm permits to define the mesh of an edge
+(or group of edges)
+by the projection of another already meshed edge (or group of edges).
+\n To apply this algorithm select the edge to be meshed (indicated in
+the field \b Geometry of <b>Create mesh</b> dialog box),
+<b>Projection1D</b> in the list of 1D algorithms and click the
+<em>"Add Hypothesis"</em> button.
+The following dialog box will appear:
+
+\image html projection_1d.png
+
+In this menu you can define the \b Name of the algorithm, the algeady
+meshed source \b Edge and the \b Mesh (optional, use it if there are several
+different meshes on the same edge). It could also be necessary to
+define the orientation of edges, which is done by indicating the
+<b>Source Vertex</b> being the first point of the Source Edge and the
+<b>Target Vertex</b> being the first point of the created \b Edge. For
+a group of edges, <b>Source</b> and <b>Target</b> vertices should be
+shared by only one edge of the group. If <b>Source</b> and
+<b>Target</b> vectors are specified, the elements of the group must be ajacent.
+
+\n <b>Projection 2D</b> algorithm permits to define the mesh of a face
+(or group of faces) by the
+projection of another already meshed face (or group of faces). This
+algorithm works only
+if all edges of the target face have been meshed as 1D Projections of
+the edges of the source face.
+
+To apply this algorithm select the face to be meshed (indicated in the
+field \b Geometry of <b>Create mesh</b> dialog box), <b>Projection
+2D</b> in the list
+of 2D algorithms and click the <em>"Add Hypothesis"</em> button. The
+following dialog box will appear:
+
+\image html projection_2d.png
+
+In this menu you can define the \b Name of the algorithm, the algeady
+meshed source \b Face and the \b Mesh (optional, use it if there are several
+different meshes on the same face). It could also be necessary to
+define the orientation of mesh on the face, which is done by
+indicating two <b>Source Vertices</b>, which belong to the same edge of the
+source face, and two <b>Target Vertices</b>, which belong to the same edge of
+the created \b Face.
+
+\n <b>Projection 3D</b> algorithm permits to define the mesh of a shape by
+the projection of another already meshed shape. This algorithm works
+only if all faces and edges of the target face have been meshed as 1D
+Projections of the faces and edges of the source face. Another
+limitation is that this algorithm currently works only on boxes.
+
+To apply this algorithm select the solid to be meshed (indicated in
+the field \b Geometry of <b>Create mesh</b> dialog box), <b>Projection
+3D</b> in the list of 3D algorithms and click the button. The
+following dialog box will appear:
+
+\image html projection_3d.png
+
+In this menu you can define the \b Name of the algorithm, the algeady
+meshed source <b>3D shape</b> and the \b Mesh (optional, use it if there are
+several different meshes on the same shape). It could also be
+necessary to define the orientation of mesh on the shape, which is
+done by indicating two <b>Source Vertices</b>, which belong to the same edge
+of the source <b>3D Shape</b>, and two <b>Target Vertices</b>, which belong to the
+same edge of the source <b>3D Shape</b>.
+
+*/
+
--- /dev/null
+/*!
+
+\page quality_controls_page Quality controls
+
+<ul>
+<li>\subpage about_quality_controls_page</li>
+<li>\subpage free_borders_page</li>
+<li>\subpage borders_at_multi_connection_page</li>
+<li>\subpage length_page</li>
+<li>\subpage free_edges_page</li>
+<li>\subpage length_2d_page</li>
+<li>\subpage borders_at_multi_connection_2d_page</li>
+<li>\subpage area_page</li>
+<li>\subpage taper_page</li>
+<li>\subpage aspect_ratio_page</li>
+<li>\subpage minimum_angle_page</li>
+<li>\subpage warping_page</li>
+<li>\subpage skew_page</li>
+<li>\subpage aspect_ratio_3d_page</li>
+<li>\subpage volume_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page radial_prism_algo_page Radial Prism
+
+\n This algorithm applies to the meshing of a hollow 3D shape,
+i.e. such shape should be composed of two meshed shells: an outer
+shell and an internal shell without intersection with the outer
+shell. One of the shells should be a 2D Projection of the other
+shell. The meshes of the shells can consist both of triangles and
+quadrangles.
+
+The Radial Prism algorithm would fill the space between the two shells
+with meshes.
+
+This algorithm also needs the information concerning the number and
+distribution of mesh layers between the inner and the outer shapes.
+
+\image html number_of_layers.png
+
+Distribution of layers can be set with any of 1D Hypotheses.
+
+\image html distribution_of_layers.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page removing_nodes_and_elements_page Removing nodes and elements
+
+\n In MESH you can remove nodes and all types of cells of your mesh.
+
+<ul>
+<li>\ref removing_nodes_anchor "Nodes"</li>
+<li>\ref removing_elements_anchor "Elements"</li>
+</ul>
+
+<br>
+\anchor removing_nodes_anchor
+<h2>Removing nodes</h2>
+
+<em>To remove a node:</em>
+<ol>
+<li>Select your mesh in the Object Browser or in the 3D viewer.</li>
+
+<li>From the Modification menu choose Remove and from the associated
+submenu select the Remove nodes, or just click <em>"Remove nodes"</em>
+button in the toolbar.
+
+\image html image88.gif
+<center><em>"Remove nodes" button</em></center>
+
+The following dialog box will appear:
+
+\image html removenodes.png
+
+In this dialog box you can specify one or several nodes (with pressed
+Shift button) by choosing them in the 3D viewer.
+</li>
+</ol>
+
+\note Be careful while removing nodes because if you remove a definite
+node of your mesh all adjacent elements will be also deleted.
+
+\image html remove_nodes1.png
+
+\image html remove_nodes2.png
+
+<br>
+\anchor removing_elements_anchor
+<h2>Removing elements</h2>
+
+<em>To remove an element:</em>
+<ol>
+<li>Select your mesh in the Object Browser or in the 3D viewer.</li>
+
+<li>From the \b Modification menu choose \b Remove and from the
+associated submenu select the Remove elements, or just click
+<em>"Remove elements"</em> button in the toolbar.
+
+\image html remove_elements_icon.png
+<center><em>"Remove elements" button</em></center>
+
+The following dialog box will appear:
+
+\image html removeelements.png
+
+In this dialog box you can specify one or several elements of your
+mesh (with pressed Shift button) by choosing them in the 3D viewer.
+</li>
+<li>Click OK or Apply to confirm deletion of the specified elements.</li>
+</ol>
+
+\image html remove_elements1.png
+
+\image html remove_elements2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_removing_nodes_and_elements "Removing Nodes and Elements" operation.
+
+*/
+
--- /dev/null
+/*!
+
+\page renumbering_nodes_and_elements_page Renumbering nodes and elements
+
+\n In MESH you can renumber the nodes and elements of your mesh.
+
+<ul>
+<li>\ref renumbering_nodes_anchor "Nodes"</li>
+<li>\ref renumbering_elements_anchor "Elements"</li>
+</ul>
+
+<br>
+\anchor renumbering_nodes_anchor
+<h2>Renumbering nodes</h2>
+
+<em>To renumber the nodes of your mesh:</em>
+<ol>
+<li>In the \b Modification menu select \b Renumbering submenu and
+choose the \b Nodes item or click <em>"Renumbering nodes"</em> button
+in the toolbar.
+
+\image html image63.gif
+<center><em>"Renumbering nodes" button</em></center>
+
+The following dialog box will appear:
+
+\image html renumbernodes.png
+</li>
+
+<li>Fill the \b Mesh field by selecting your mesh in the Object
+Browser or in the 3D viewer.</li>
+<li>Click the \b Apply or \b OK button to perform the operation.</li>
+</ol>
+
+<br>
+\anchor renumbering_elements_anchor
+<h2>Renumbering elements</h2>
+
+<em>To renumber the elements of your mesh:</em>
+<ol>
+<li>In the \b Modification menu select \b Renumbering submenu and
+choose the \b Elements item or click <em>"Renumbering elements"</em>
+button in the toolbar.
+
+\image html image64.gif
+<center><em>"Renumbering elements" button</em></center>
+
+The following dialog box will appear:
+
+\image html renumberelements.png
+</li>
+
+<li>Fill the \b Mesh field by selecting your mesh in the Object
+Browser or in the 3D viewer.</li>
+<li>Click the \b Apply or \b OK button to perform the operation.</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_renumbering_nodes_and_elements "Renumbering Nodes and Elements" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page revolution_page Revolution
+
+\n Revolution is a type of surface meshing by generation from
+discretized lines. It is used to build mesh elements of plus one
+dimension than the swept ones. Each swept 1D element produces one or
+more quadrangles (or triangles if one node of a rotated element lays
+on the revolution axis).
+
+<em>To apply revolution:</em>
+<ol>
+<li>From the \b Modification menu choose the \b Revolution item or click
+<em>"Revolution"</em> button in the toolbar.
+
+\image html image92.gif
+<center><em>"Revolution" button</em></center>
+
+The following dialog box shall appear:
+
+\image html revolution1.png
+
+\image html revolution2.png
+</li>
+
+<li>
+In this dialog box you should specify:
+<ul>
+<li>the type of elements which will be extruded (1D or 2D),</li>
+<li>specify the IDs of the elements which will be revolved by
+selecting them in the 3D viewer or select the whole mesh or
+submesh,</li>
+<li>specify the axis (point and vector) around which the elements will
+be revolved,</li>
+<li>angle of rotation,</li>
+<li>number of steps,</li>
+<li>tolerance of rotation</li>
+</ul>
+<li> <b>Generate Groups</b> checkbox allows copying the groups of
+elements of the source mesh to the newly created one. </li>
+</li>
+
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+\image html image78.jpg
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_revolution "Revolution" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page rotation_page Rotation
+
+\n This geometrical operation allows to rotate in space your mesh or
+some of its elements.
+
+<em>To rotate your mesh:</em>
+\par
+From the \b Modification choose \b Transformation and from its sub-menu
+select the \b Rotation item. The following dialog box shall appear:
+
+\image html rotation.png
+\par
+In this dialog box you can specify the elements which should be
+rotated and the rotation parameters:
+<ul>
+<li>\b Axis: point and vector</li>
+<li>\b Angle of rotation</li>
+</ul>
+
+\n Toggle the corresponding checkbox to <b> Select whole mesh, submesh or group.</b>
+\n When <b>Move elements</b> radio button is selected, the source mesh (or elements) is created at the new location and erased from its previous location
+\n When <b>Copy elements</b> radio button is selected,the source mesh (or elements) is created at the new location, but it also remains at its previous location and is considered one and single mesh with the result of the rotation.
+\n When <b>Create as new mesh</b> radio button is selected, the source mesh (or elements) remains at its previous location and a new mesh is created at the new location and appears in the Object Browser with the default name MeshName_rotated (you can change this name in the adjacent box).
+\n <b> Copy groups </b> checkbox allows copying the groups of elements of the source mesh to the newly created one.
+\par
+
+
+\image html rotation1.png
+
+\image html rotation2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_rotation "Rotation" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page running_mesh_module_page Running MESH module
+
+\n To start MESH module in SALOME click "Mesh" icon in the "Modules" toolbar or
+select \b Mesh from the Choose box.
+
+\image html image25.jpg
+<center><em>"Mesh" icon</em></center>
+
+The desktop of the SALOME platform will be updated with additional
+toolbars and menus related to the \b MESH component .
+
+\image html a-viewgeneral.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page segments_around_vertex_algo_page Segments around Vertex
+
+\n <b>Segments around Vertex</b> algorithm is considered to be a 0D meshing
+algorithm, but, of course, it doesn't mesh nodes. It allows to define
+the local size of the elements in the neighborhood of a certain
+node. If we choose an object of higher dimension, it applies to all
+its tops, i.e. corners of a box. The 0D algorithm combines with the
+algorithms of higher dimensions, but it is not necessarily required
+for their successful implementation.
+
+This algorithm allows only one hypothesis.
+
+\image html lengthnearvertex.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page selection_filter_library_page Selection filter library
+
+\n Selection filter library is a powerful tool enabling to create
+filters to be used on meshes. You can access to it from the Main Menu
+via <b>Tools / Selection filter library</b>.
+
+\image html selectionfilterlibrary.png
+
+<b>Library file name</b> shows the path and the file name where your
+filters will be stored. By clicking the <em>Browse</em> button you can load an
+existing filter library.
+\n <b>Names of filters</b> lists the filters created or uploaded for
+the current study. You can \b Add or \b Delete filters.
+\n In <b>Filter name</b> box you can specify the name for your
+filter. By default it is prefixed with the corresponding entity type.
+\n Each filter can be applicable to \b Nodes, \b Edges, \b Faces or \b
+Volumes. You can combine many criteria in one filter, but they all
+must be of the same <b>Entity type</b>.
+\n The \b Add button creates a new criterion at the end of the list of
+criteria. The \b Insert button creates a new criterion before the
+selected criterion. The \b Remove button deletes the selected
+criterion. The \b Clear button deletes all criteria.
+\n Each <b>Entity type</b> has its specific list of criteria, however all
+filters have common syntax. For each criterion you should specify the
+<b>Threshold Value</b> and whether we search for the elements that should be
+\b More, \b Less or \b Equal to this \b Value. You should also specify if the
+criterion is \b Unary or \b Binary.
+\n Some criteria should have the additional parameter of \b Tolerance.
+
+When we create a <b>Standalone Group</b> using filters (for this click
+<b>Set Filters</b> button in the <b>Create Group</b> menu), the menu
+for setting filters looks a bit differently. Toggling <b>Insert filter
+in viewer</b> checkbox enables to preview the group selected with your
+current filter in the viewer.
+\n In the \b Source field you choose if the filter will be applied to
+the whole \b Mesh, the <b>Initial Selection</b> or the <b>Current Group</b>.
+\n <b>Copy from...</b> button gives you a possibility to load an
+existing filter from <b>Selection filter library</b> and <b>Add
+to...</b> button gives you a possibility to save your current filter
+in the Library.
+
+\image html a-filteronedges.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page sewing_meshes_page Sewing meshes
+
+\n In SMESH you can sew elements of different meshes. The current
+functionality allows you to sew:
+<ul>
+<li>\ref free_borders_anchor "Free borders"</li>
+<li>\ref conform_free_borders_anchor "Conform free borders"</li>
+<li>\ref border_to_side_anchor "Border to side"</li>
+<li>\ref side_elements_anchor "Side elements"</li>
+</ul>
+
+<em>To sew elements of different meshes:</em>
+<ol>
+<li>From the \b Modification menu choose the \b Transformation item
+and from its sub-menu select the \b Sewing item.</li>
+<li>Check in the dialog box one of the radio buttons corresponding to
+the type of sewing operation you would like to perform.</li>
+<li>Fill the other fields available in the dialog box.</li>
+<li>Click the \b OK or \b Apply button to perform the operation of sewing.</li>
+</ol>
+
+<br>
+\anchor free_borders_anchor
+<h2>Sew free borders</h2>
+
+This functionality allows you to unite two free borders of a 2D mesh.
+
+\image html sewing1.png
+
+For sewing free borders you should define three points on each border:
+first, second and the last node:
+<ul>
+<li>the first node specifies beginning of the border;</li>
+<li>the second node specifies the part of the border which should be
+considered (as far as the free border usually forms a closed
+contour);</li>
+<li>the last node specifies the end of the border.</li>
+</ul>
+
+You can select these nodes in the 3D viewer or define by its id.
+
+The first and the second nodes should belong to the same link of a
+face. The second and the last nodes of a border can be the same. The
+first and the last nodes of two borders can be the same. The
+corresponding end nodes of two borders will be merged. Intermediate
+nodes of two borders will be either merged or inserted into faces of
+the opposite border.
+
+The sewing algorithm is as follows:
+<ol>
+<li>The parameter (U) of each node within a border is computed. So
+that the first node has U=0.0, the last node has U=1.0, for the rest
+nodes 0.0 < U < 1.0;</li>
+<li>Compare node parameters of the two borders. If two nodes of the
+opposite borders have close parameters, they are merged, i.e. a node
+of the first border is replaced in all elements by a node of the
+second border. If a node has no node with a close parameter in the
+opposite border, it is inserted into an edge of element of the
+opposite border, an element is split. Two nodes are considered close
+enough to merge, if difference of their parameters is less than one
+fifth of minimum length of adjacent face edges on the borders.</li>
+</ol>
+
+\image html image22.jpg
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_sew_free_borders "Sew Free Borders" operation.
+
+<br>
+\anchor conform_free_borders_anchor
+<h2>Sew conform free borders</h2>
+
+This functionality can be used to unite two free borders of a 2D mesh.
+
+\image html sewing2.png
+
+The borders of meshes for sewing are defined as for "Sew free borders"
+except that the second free border is not limited and can be defined
+by the first and the second nodes only. The first nodes of two borders
+can be the same.
+
+The algorithm is following: counting nodes starting at the first ones,
+the n-th node of the first border is merged with the n-th node of the
+other border, until the end of either of borders. Nodes of the first
+border are replaced in all elements with corresponding nodes of the
+second border.
+\n For sewing conform free borders you should define three points on
+the first border and two points on the second one. User can select
+these nodes in 3D viewer or define node by its id.
+
+\image html image22.jpg
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_sew_conform_free_borders "Sew Conform Free Borders"
+operation.
+
+<br>
+\anchor border_to_side_anchor
+<h2>Sew border to side</h2>
+
+"Sew border to side" is intended to sew a free border to a mesh
+surface.
+\n The free border is defined as for "Sewing of free borders". The
+place where to sew the border is defined by two nodes, between which
+the border faces are placed, so that the first border node is merged
+with the first node on the side and the last node of the border is
+merged with the second specified node on the side.
+
+\image html sewing3.png
+
+The algorithm is following.
+<ol>
+<li>Find a sequence of linked nodes on the side such that the found
+links to be most co-directed with the links of the free border.</li>
+<li>Sew two sequences of nodes using algorithm of "Sewing of free berders".
+\n For sewing border to side you should define three points on the
+border and two points on the side. User can select these nodes in 3D
+viewer or define node by its id.</li>
+</ol>
+
+\image html image30.jpg
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_sew_meshes_border_to_side "Sew Border to Side" operation.
+
+<br>
+\anchor side_elements_anchor
+<h2>Sew side elements</h2>
+
+This operation is intended to unite two mesh surfaces.
+
+\image html sewing4.png
+
+Surfaces may be defined by either 2d or 3d elements. The number of
+given elements of the sides must be the same. The sets of given
+elements must be topologically equal, i.e. each node of one element
+set must have a corresponding node in the other element set and
+corresponding nodes must be equally linked. If there are 3d elements
+in a set, only their free faces must obey to that rule.
+\n Two corresponding nodes on each side must be specified. They must
+belong to one element and must be located on an element set boundary.
+
+Sewing algorithm finds and merges the corresponding nodes starting
+from the specified ones.
+
+\image html image31.jpg
+
+\image html image32.jpg
+
+For sewing side elements you should define elements for sewing and two
+nodes for merging on the each side. User can select these elements and
+nodes in 3D viewer or define them by its id.
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_sew_side_elements "Sew Side Elements" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page skew_page Skew
+
+\n \b Skew mesh quality criterion reflects the angle between the lines
+that join opposite sides of a quadrangle element or the greatesr angle
+between three medians in triangle elements. This mesh quality
+criterion can be applied to elements composed of 4 and 3 nodes
+(quadrangles and triangles).
+
+\image html image27.jpg
+
+<em>To apply the Skew quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Skew</b> or click <em>"Skew"</em> button of the toolbar.
+
+\image html image40.gif
+<center><em>"Skew" button </em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image93.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_skew "Skew quality control" operation.
+
+*/
--- /dev/null
+/*!
+
+\page smeshpy_interface_page Python interface smesh.py
+
+\n Python package smesh defines several classes, destined for easy and
+clear mesh creation and edition (see the \ref introduction_to_mesh_python_page "example").
+
+\n Also, please see \ref smeshDC "documentation for smesh.py"
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page smoothing_page Smoothing
+
+\n Smoothing is used to adjust the locations of element corners
+(nodes) to reduce distortions in these elements.
+
+<em>To apply smoothing to the elements of your mesh:</em>
+<ol>
+<li>Display a mesh or a submesh in the 3D viewer.</li>
+<li>In the \b Modification menu select the \b Smoothing item or click
+<em>"Smoothing"</em> button in the toolbar.
+
+\image html image84.gif
+<center><em>"Smoothing" button</em></center>
+
+The dialog box contains the following fields which should be
+specified:
+
+\image html smoothing.png
+
+<ul>
+<li><b>Id Elements</b> field allows to specify the elements which
+should be smoothed by selecting them in the 3D viewer (lock \b Shift
+button to select several elements).</li>
+<li><b>Select whole mesh, submesh or group</b> - smoothing is applied
+to the whole mesh or its part.</li>
+<li><b>Fixed nodes ids:</b> some nodes keep their location during
+smoothing. If a mesh is built on a geometry shape, the nodes built on
+geometrical edges are always fixed. If smoothing is applied to a part
+of a mesh then the boundary nodes of an elements set are also
+fixed. Any other nodes may be additionally fixed.</li>
+<li><b>Smoothing Method:</b>
+<ul>
+<li>\b Laplacian smoothing pulls a node toward the center of
+surrounding nodes directly connected to that node along an element
+edge.
+<li>\b Centroidal smoothing pulls a node toward the
+element-area-weighted centroid of the surrounding elements. </li>
+
+Typically, the Laplacian method will produce the mesh with the least element
+distortion. It is also the faster method.Centroidal smoothing usually
+produces a mesh that has more uniform element sizes. Both methods
+produce good results with "free" meshes.</li>
+</ul>
+
+\image html image83.gif
+
+</li>
+<li><b>Iteration limit:</b> both of the smoothing methods use an
+iterative procedure to converge toward a smoothed mesh. All nodes are
+smoothed according to one of the techniques shown above. Then the
+smoothing is reevaluated with the updated nodal locations. This
+process continues until the maximum number of iterations has been
+exceeded, or all elements has aspect ratio less or equal than the
+specified one.</li>
+<li><b>Max. aspect ratio</b> allows to define the quality at which the
+smoothing algorithm should stop the iterations as the target of the
+operation has been reached.</li>
+<li>When <b>in parametric space</b> radio button is checked, the
+algorithm tries to improve the shape of faces in the parametric space
+of geometrical surfaces on which they are generated, else the shape of
+faces in the 3D space is improved. </li>
+</ul>
+
+</li>
+<li>Click the \b Apply or \b OK button to confirm the operation.</li>
+</ol>
+
+\image html smoothing1.png
+
+\image html smoothing2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_smoothing "Smoothing" operation.
+
+*/
--- /dev/null
+/*!
+
+\page symmetry_page Symmetry
+
+\n This geometrical operation allows to perform a symmetrical copy of
+your mesh or some of its elements.
+
+<em>To apply symmetry to your mesh:</em>
+\par
+From the \b Modification choose \b Transformation and from its
+sub-menu select the \b Symmetry item. The following dialog box shall
+appear:
+
+\image html symmetry1.png
+
+\image html symmetry2.png
+
+\image html symmetry3.png
+
+\par
+This operation has three options, you can symmetrically copy your mesh
+or some of its elements specifying:
+<ul>
+<li>one point</li>
+<li>one axis (point and vector)</li>
+<li>one plane (point and normal)</li>
+</ul>
+
+
+\n Toggle the corresponding checkbox to <b> Select whole mesh, submesh or group.</b>
+\n When <b>Move elements</b> radio button is selected, the source mesh (or elements) is created at the new location and erased from its previous location
+\n When <b>Copy elements</b> radio button is selected,the source mesh (or elements) is created at the new location, but it also remains at its previous location and is considered one and single mesh with the result of the translation.
+\n When <b>Create as new mesh</b> radio button is selected, the source mesh (or elements) remains at its previous location and a new mesh is created at the new location and appears in the Object Browser with the default name MeshName_mirrored (you can change this name in the adjacent box).
+\n <b> Copy groups </b> checkbox allows copying the groups of elements of the source mesh to the newly created one.
+
+.
+\par
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_symmetry "Symmetry" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page taper_page Taper
+
+\n \b Taper mesh quality criterion represents the ratio of the areas
+of two triangles separated by a diagonal. So it can be calculated only
+for elements consisting of 4 nodes.
+
+\image html image25.gif
+
+<br><em>To apply the Taper quality criterion to your mesh:</em>
+
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Taper</b> or click <em>"Taper"</em> button in
+the toolbar.
+
+\image html image36.gif
+<center><em>"Taper" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image90.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_taper "Taper quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page transforming_meshes_page Transforming meshes
+
+<ul>
+<li>\subpage translation_page</li>
+<li>\subpage rotation_page</li>
+<li>\subpage symmetry_page</li>
+<li>\subpage sewing_meshes_page</li>
+<li>\subpage merging_nodes_page</li>
+<li>\subpage merging_elements_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page translation_page Translation
+
+\n This geometrical operation allows to translate in space your mesh
+or some of its elements.
+
+<em>To translate your mesh:</em>
+\par
+From the \b Modification choose \b Transformation and from its
+sub-menu select the \b Translation item. The following dialog box
+shall appear:
+
+\image html translation1.png
+
+\image html translation2.png
+
+\par
+This operation has two options, you can translate in space your mesh
+or some of its elements specifying:
+<ul>
+<li>two points (starting and ending)</li>
+<li>one vector</li>
+</ul>
+Toggle the corresponding checkbox to <b>Select whole mesh, submesh or
+group</b>.
+\n When <b>Move elements</b> radio button is selected, the source mesh (or elements) is created at the new location and erased from its previous location
+\n When <b>Copy elements</b> radio button is selected,the source mesh (or elements) is created at the new location, but it also remains at its previous location and is considered one and single mesh with the result of the translation.
+\n When <b>Create as new mesh</b> radio button is selected, the source mesh (or elements) remains at its previous location and a new mesh is created at the new location and appears in the Object Browser with the default name MeshName_translated (you can change this name in the adjacent box).
+\n <b> Copy groups </b> checkbox allows copying the groups of elements of the source mesh to the newly created one.
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_translation "Translation" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page transparency_page Transparency
+
+\image html a-transparency.png
+
+Using this slider you can set the transparency of shading. Absolutely
+transparent shading will be invisible. By default it is absolutely
+opaque.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_creating_meshes_page Creating Meshes
+
+\n First of all see \ref introduction_to_mesh_python_page "Example of 3d mesh generation",
+ which is an example of good python script style for Mesh module.
+
+<br>
+<h2>Construction of a Mesh</h2>
+
+\code
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+tetra = smesh.Mesh(box, "MeshBox")
+
+algo1D = tetra.Segment()
+algo1D.NumberOfSegments(7)
+
+algo2D = tetra.Triangle()
+algo2D.MaxElementArea(800.)
+
+algo3D = tetra.Tetrahedron(smesh.NETGEN)
+algo3D.MaxElementVolume(900.)
+
+# compute the mesh
+ret = tetra.Compute()
+if ret == 0:
+ print "problem when computing the mesh"
+else:
+ print "mesh computed"
+ pass
+\endcode
+
+<br>
+\anchor tui_construction_submesh
+<h2>Construction of a Submesh</h2>
+
+\code
+from geompy import *
+import smesh
+
+# create a box
+box = MakeBoxDXDYDZ(10., 10., 10.)
+addToStudy(box, "Box")
+
+# select one edge of the box for definition of a local hypothesis
+p5 = MakeVertex(5., 0., 0.)
+EdgeX = GetEdgeNearPoint(box, p5)
+addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
+
+# create a hexahedral mesh on the box
+quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh")
+
+# create a regular 1D algorithm for the faces
+algo1D = quadra.Segment()
+
+# define "NumberOfSegments" hypothesis to cut
+# all the edges in a fixed number of segments
+algo1D.NumberOfSegments(4)
+
+# create a quadrangle 2D algorithm for the faces
+quadra.Quadrangle()
+
+# construct a submesh on the edge with a local hypothesis
+algo_local = quadra.Segment(EdgeX)
+
+# define "Arithmetic1D" hypothesis to cut the edge in several segments with increasing arithmetic length
+algo_local.Arithmetic1D(1, 4)
+
+# define "Propagation" hypothesis that propagates all other hypotheses
+# on all edges of the opposite side in case of quadrangular faces
+algo_local.Propagation()
+
+# compute the mesh
+quadra.Compute()
+
+\endcode
+
+<br>
+\anchor tui_editing_mesh
+<h2>Editing of a mesh</h2>
+
+\code
+import geompy
+import smesh
+
+def PrintMeshInfo(theMesh):
+ aMesh = theMesh.GetMesh()
+ print "Information about mesh:"
+ print "Number of nodes : ", aMesh.NbNodes()
+ print "Number of edges : ", aMesh.NbEdges()
+ print "Number of faces : ", aMesh.NbFaces()
+ print "Number of volumes : ", aMesh.NbVolumes()
+ pass
+
+# create a box
+box = geompy.MakeBox(0., 0., 0., 20., 20., 20.)
+geompy.addToStudy(box, "box")
+
+# select one edge of the box for definition of a local hypothesis
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
+edge = subShapeList[0]
+name = geompy.SubShapeName(edge, box)
+geompy.addToStudyInFather(box, edge, name)
+
+# create a mesh
+tria = smesh.Mesh(box, "Mesh 2D")
+algo1D = tria.Segment()
+hyp1 = algo1D.NumberOfSegments(3)
+algo2D = tria.Triangle()
+hyp2 = algo2D.MaxElementArea(10.)
+
+# create a sub-mesh
+algo_local = tria.Segment(edge)
+hyp3 = algo_local.Arithmetic1D(1, 6)
+hyp4 = algo_local.Propagation()
+
+# compute the mesh
+tria.Compute()
+PrintMeshInfo(tria)
+
+# remove a local hypothesis
+mesh = tria.GetMesh()
+mesh.RemoveHypothesis(edge, hyp4)
+
+# compute the mesh
+tria.Compute()
+PrintMeshInfo(tria)
+
+# change the value of the 2D hypothesis
+hyp2.SetMaxElementArea(2.)
+
+# compute the mesh
+tria.Compute()
+PrintMeshInfo(tria)
+\endcode
+
+<br>
+\anchor tui_export_mesh
+<h2>Export of a Mesh</h2>
+
+\code
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+tetra = smesh.Mesh(box, "MeshBox")
+
+algo1D = tetra.Segment()
+algo1D.NumberOfSegments(7)
+
+algo2D = tetra.Triangle()
+algo2D.MaxElementArea(800.)
+
+algo3D = tetra.Tetrahedron(smesh.NETGEN)
+algo3D.MaxElementVolume(900.)
+
+# compute the mesh
+tetra.Compute()
+
+# export the mesh in a MED file
+tetra.ExportMED("/tmp/meshMED.med", 0)
+\endcode
+
+<br>
+<h2>How to mesh a cylinder with hexahedrons?</h2>
+Here you can see an example of python script, creating a hexahedral
+mesh on a cylinder. And a picture below the source code of the script,
+demonstrating the resulting mesh.
+\include ex24_cylinder.py
+
+\image html mesh_cylinder_hexa.png
+
+*/
--- /dev/null
+/*!
+
+\page tui_defining_hypotheses_page Defining Hypotheses and Algorithms
+
+<h2>Defining 1D Hypotheses</h2>
+
+<br>
+\anchor tui_1d_arithmetic
+<h3>1D Arithmetic</h3>
+
+\code
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(10., 10., 10.)
+geompy.addToStudy(box, "Box")
+
+# create a hexahedral mesh on the box
+hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
+
+# create a Regular 1D algorithm for edges
+algo1D = hexa.Segment()
+
+# define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length
+algo1D.Arithmetic1D(1, 4)
+
+# create a quadrangle 2D algorithm for faces
+hexa.Quadrangle()
+
+# create a hexahedron 3D algorithm for solids
+hexa.Hexahedron()
+
+# compute the mesh
+hexa.Compute()
+\endcode
+
+<br>
+\anchor tui_deflection_1d
+<h3>Deflection 1D and Number of Segments</h3>
+
+\code
+import geompy
+import smesh
+
+# create a face from arc and straight segment
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+exy = geompy.MakeEdge(px, py)
+arc = geompy.MakeArc(py, pz, px)
+
+wire = geompy.MakeWire([exy, arc])
+
+isPlanarFace = 1
+face1 = geompy.MakeFace(wire, isPlanarFace)
+geompy.addToStudy(face1,"Face1")
+
+# get edges from the face
+e_straight,e_arc = geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])
+geompy.addToStudyInFather(face1, e_arc, "Arc Edge")
+
+# create hexahedral mesh
+hexa = smesh.Mesh(face1, "Face : triangle mesh")
+
+# define "NumberOfSegments" hypothesis to cut a straight edge in a fixed number of segments
+algo1D = hexa.Segment()
+algo1D.NumberOfSegments(6)
+
+# define "MaxElementArea" hypothesis
+algo2D = hexa.Triangle()
+algo2D.MaxElementArea(70.0)
+
+# define a local "Deflection1D" hypothesis on the arc
+algo_local = hexa.Segment(e_arc)
+algo_local.Deflection1D(1.0)
+
+# compute the mesh
+hexa.Compute()
+\endcode
+
+<br>
+\anchor tui_start_and_end_length
+<h3>Start and End Length</h3>
+
+\code
+from geompy import *
+import smesh
+
+# create a box
+box = MakeBoxDXDYDZ(10., 10., 10.)
+addToStudy(box, "Box")
+
+# get one edge of the box to put local hypothesis on
+p5 = MakeVertex(5., 0., 0.)
+EdgeX = GetEdgeNearPoint(box, p5)
+addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
+
+# create a hexahedral mesh on the box
+hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
+
+# set algorithms
+algo1D = hexa.Segment()
+hexa.Quadrangle()
+hexa.Hexahedron()
+
+# define "NumberOfSegments" hypothesis to cut an edge in a fixed number of segments
+algo1D.NumberOfSegments(4)
+
+# create a local hypothesis
+algo_local = hexa.Segment(EdgeX)
+
+# define "StartEndLength" hypothesis to cut an edge in several segments with increasing geometric length
+algo_local.StartEndLength(1, 6)
+
+# define "Propagation" hypothesis that propagates all other hypothesis
+# on all edges on the opposite side in case of quadrangular faces
+algo_local.Propagation()
+
+# compute the mesh
+hexa.Compute()
+\endcode
+
+<br>
+\anchor tui_average_length
+<h3>Average Length</h3>
+
+\code
+from geompy import *
+import smesh
+
+# create a box
+box = MakeBoxDXDYDZ(10., 10., 10.)
+addToStudy(box, "Box")
+
+# get one edge of the box to put local hypothesis on
+p5 = MakeVertex(5., 0., 0.)
+EdgeX = GetEdgeNearPoint(box, p5)
+addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
+
+# create a hexahedral mesh on the box
+hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
+
+# set algorithms
+algo1D = hexa.Segment()
+hexa.Quadrangle()
+hexa.Hexahedron()
+
+# define "NumberOfSegments" hypothesis to cut all edges in a fixed number of segments
+algo1D.NumberOfSegments(4)
+
+# create a sub-mesh
+algo_local = hexa.Segment(EdgeX)
+
+# define "LocalLength" hypothesis to cut an edge in several segments with the same length
+algo_local.LocalLength(2.)
+
+# define "Propagation" hypothesis that propagates all other hypothesis
+# on all edges on the opposite side in case of quadrangular faces
+algo_local.Propagation()
+
+# compute the mesh
+hexa.Compute()
+\endcode
+
+<br><h2>Defining 2D and 3D hypotheses</h2>
+
+<br>
+\anchor tui_max_element_area
+<h3>Maximum Element Area</h3>
+
+\code
+import geompy
+import smesh
+import salome
+
+# create a face
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+vxy = geompy.MakeVector(px, py)
+arc = geompy.MakeArc(py, pz, px)
+wire = geompy.MakeWire([vxy, arc])
+
+isPlanarFace = 1
+face = geompy.MakeFace(wire, isPlanarFace)
+
+# add the face in the study
+id_face = geompy.addToStudy(face, "Face to be meshed")
+
+# create a mesh
+tria_mesh = smesh.Mesh(face, "Face : triangulation")
+
+# define 1D meshing:
+algo = tria_mesh.Segment()
+algo.NumberOfSegments(20)
+
+# define 2D meshing:
+
+# assign triangulation algorithm
+algo = tria_mesh.Triangle()
+
+# apply "Max Element Area" hypothesis to each triangle
+algo.MaxElementArea(100)
+
+# compute the mesh
+tria_mesh.Compute()
+\endcode
+
+<br>
+\anchor tui_max_element_volume
+<h3>Maximum Element Volume</h3>
+
+\code
+import geompy
+import smesh
+
+# create a cylinder
+cyl = geompy.MakeCylinderRH(30., 50.)
+geompy.addToStudy(cyl, "cyl")
+
+# create a mesh on the cylinder
+tetra = smesh.Mesh(cyl, "Cylinder : tetrahedrical mesh")
+
+# assign algorithms
+algo1D = tetra.Segment()
+algo2D = tetra.Triangle()
+algo3D = tetra.Tetrahedron(smesh.NETGEN)
+
+# assign 1D and 2D hypotheses
+algo1D.NumberOfSegments(7)
+algo2D.MaxElementArea(150.)
+
+# assign Max Element Volume hypothesis
+algo3D.MaxElementVolume(200.)
+
+# compute the mesh
+ret = tetra.Compute()
+if ret == 0:
+ print "probleme when computing the mesh"
+else:
+ print "Computation succeded"
+\endcode
+
+<br>
+\anchor tui_length_from_edges
+<h3>Length from Edges</h3>
+
+\code
+import geompy
+import smesh
+
+# create sketchers
+sketcher1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW")
+sketcher2 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW")
+
+# create a face from two wires
+isPlanarFace = 1
+face1 = geompy.MakeFaces([sketcher1, sketcher2], isPlanarFace)
+geompy.addToStudy(face1, "Face1")
+
+# create a mesh
+tria = smesh.Mesh(face1, "Face : triangle 2D mesh")
+
+# Define 1D meshing
+algo1D = tria.Segment()
+algo1D.NumberOfSegments(2)
+
+# create and assign the algorithm for 2D meshing with triangles
+algo2D = tria.Triangle()
+
+# create and assign "LengthFromEdges" hypothesis to build triangles based on the length of the edges taken from the wire
+algo2D.LengthFromEdges()
+
+# compute the mesh
+tria.Compute()
+\endcode
+
+<br><h2>Defining Additional Hypotheses</h2>
+
+<br>
+\anchor tui_propagation
+<h3>Propagation</h3>
+
+\code
+from geompy import *
+import smesh
+
+# create a box
+box = MakeBoxDXDYDZ(10., 10., 10.)
+addToStudy(box, "Box")
+
+# get one edge of the box to put local hypothesis on
+p5 = MakeVertex(5., 0., 0.)
+EdgeX = GetEdgeNearPoint(box, p5)
+addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
+
+# create a hexahedral mesh on the box
+hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
+
+# set global algorithms and hypotheses
+algo1D = hexa.Segment()
+hexa.Quadrangle()
+hexa.Hexahedron()
+algo1D.NumberOfSegments(4)
+
+# create a sub-mesh with local 1D hypothesis and propagation
+algo_local = hexa.Segment(EdgeX)
+
+# define "Arithmetic1D" hypothesis to cut an edge in several segments with increasing length
+algo_local.Arithmetic1D(1, 4)
+
+# define "Propagation" hypothesis that propagates all other 1D hypotheses
+# from all edges on the opposite side of a face in case of quadrangular faces
+algo_local.Propagation()
+
+# compute the mesh
+hexa.Compute()
+\endcode
+
+<br>
+\anchor tui_defining_meshing_algos
+<h2>Defining Meshing Algorithms</h2>
+
+\code
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(10., 10., 10.)
+geompy.addToStudy(box, "Box")
+
+# 1. Create a hexahedral mesh on the box
+hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
+
+# create a Regular 1D algorithm for edges
+algo1D = hexa.Segment()
+
+# create a quadrangle 2D algorithm for faces
+algo2D = hexa.Quadrangle()
+
+# create a hexahedron 3D algorithm for solids
+algo3D = hexa.Hexahedron()
+
+# define hypotheses
+algo1D.Arithmetic1D(1, 4)
+
+# compute the mesh
+hexa.Compute()
+
+# 2. Create a tetrahedral mesh on the box
+tetra = smesh.Mesh(box, "Box : tetrahedrical mesh")
+
+# create a Regular 1D algorithm for edges
+algo1D = tetra.Segment()
+
+# create a Mefisto 2D algorithm for faces
+algo2D = tetra.Triangle()
+
+# create a Netgen 3D algorithm for solids
+algo3D = tetra.Tetrahedron(smesh.NETGEN)
+
+# define hypotheses
+algo1D.Arithmetic1D(1, 4)
+algo2D.LengthFromEdges()
+
+# compute the mesh
+tetra.Compute()
+
+# 3. Create a tetrahedral mesh on the box with NETGEN_2D3D algorithm
+tetraN = smesh.Mesh(box, "Box : tetrahedrical mesh by NETGEN_2D3D")
+
+# create a Netgen_2D3D algorithm for solids
+algo3D = tetraN.Tetrahedron(smesh.FULL_NETGEN)
+
+# define hypotheses
+n23_params = algo3D.Parameters()
+
+# compute the mesh
+tetraN.Compute()
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_grouping_elements_page Grouping Elements
+
+<br>
+\anchor tui_create_standalone_group
+<h2>Create a Standalone Group</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Get ids of all faces with area > 100
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 100.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# create a group consisting of faces with area > 100
+aGroup = mesh.MakeGroupByIds("Area > 100", smesh.FACE, anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+\image html create_group.png
+
+<br>
+\anchor tui_create_group_on_geometry
+<h2>Create a Group on Geometry</h2>
+
+\code
+import salome
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBox(0., 0., 0., 100., 100., 100.)
+geompy.addToStudy(box, "box")
+
+# add the first face of the box to the study
+subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+face = subShapeList[0]
+geompy.addToStudyInFather(box, face, "face 1")
+
+# create group of edges on the face
+aGeomGroupE = geompy.CreateGroup(face, geompy.ShapeType["EDGE"])
+geompy.AddObject(aGeomGroupE, 3)
+geompy.AddObject(aGeomGroupE, 6)
+geompy.AddObject(aGeomGroupE, 8)
+geompy.AddObject(aGeomGroupE, 10)
+geompy.addToStudyInFather(face, aGeomGroupE, "Group of Edges")
+
+# create quadrangle 2D mesh on the box
+quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh")
+algo1D = quadra.Segment()
+quadra.Quadrangle()
+algo1D.NumberOfSegments(7)
+
+# compute the mesh
+quadra.Compute()
+
+# create SMESH group on the face with name "SMESHGroup1"
+aSmeshGroup1 = quadra.GroupOnGeom(face, "SMESHGroup1")
+
+# create SMESH group on <aGeomGroupE> with default name
+aSmeshGroup2 = quadra.GroupOnGeom(aGeomGroupE)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_edit_group
+<h2>Edit a Group</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Get ids of all faces with area > 35
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 35.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area > 35, Nb = ", len(anIds)
+
+# create a group by adding elements with area > 35
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Area > 35")
+aGroup.Add(anIds)
+
+# Get ids of all faces with area > 40
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 40.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area > 40, Nb = ", len(anIds)
+
+# create a group of elements with area [35; 40] by removing elements with area > 40 from group aGroup
+aGroup.Remove(anIds)
+
+# print the result
+aGroupElemIDs = aGroup.GetListOfID()
+
+print "Criterion: 35 < Area < 40, Nb = ", len(aGroupElemIDs)
+
+j = 1
+for i in range(len(aGroupElemIDs)):
+ if j > 20: j = 1; print ""
+ print aGroupElemIDs[i],
+ j = j + 1
+ pass
+print ""
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+\image html editing_groups1.png
+
+\image html editing_groups2.png
+
+<br>
+\anchor tui_union_of_two_groups
+<h2>Union of two groups</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : AREA > 20
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area > 20, Nb = ", len( anIds )
+
+# create a group by adding elements with area > 20
+aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20")
+aGroup1.Add(anIds)
+
+# Criterion : AREA = 20
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_EqualTo, 20.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area = 20, Nb = ", len( anIds )
+
+# create a group by adding elements with area = 20
+aGroup2 = mesh.CreateEmptyGroup( smesh.FACE, "Area = 20" )
+
+aGroup2.Add(anIds)
+
+# create union group : area >= 20
+aGroup3 = mesh.UnionGroups(aGroup1, aGroup2, "Area >= 20")
+print "Criterion: Area >= 20, Nb = ", len(aGroup3.GetListOfID())
+
+# Criterion : AREA < 20
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 20.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area < 20, Nb = ", len(anIds)
+
+# create a group by adding elements with area < 20
+aGroup4 = mesh.CreateEmptyGroup(smesh.FACE, "Area < 20")
+aGroup4.Add(anIds)
+
+# create union group : area >= 20 and area < 20
+aGroup5 = mesh.UnionGroups(aGroup3, aGroup4, "Any Area")
+print "Criterion: Any Area, Nb = ", len(aGroup5.GetListOfID())
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+\image html union_groups1.png
+
+\image html union_groups2.png
+
+\image html union_groups3.png
+
+<br>
+\anchor tui_intersection_of_two_groups
+<h2>Intersection of two groups</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : AREA > 20
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area > 20, Nb = ", len(anIds)
+
+# create a group by adding elements with area > 20
+aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20")
+aGroup1.Add(anIds)
+
+# Criterion : AREA < 60
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 60.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area < 60, Nb = ", len(anIds)
+
+# create a group by adding elements with area < 60
+aGroup2 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 60")
+aGroup2.Add(anIds)
+
+# create an intersection of groups : 20 < area < 60
+aGroup3 = mesh.IntersectGroups(aGroup1, aGroup2, "20 < Area < 60")
+print "Criterion: 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+\image html intersect_groups1.png
+
+\image html intersect_groups2.png
+
+\image html intersect_groups3.png
+
+<br>
+\anchor tui_cut_of_two_groups
+<h2>Cut of two groups</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : AREA > 20
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area > 20, Nb = ", len(anIds)
+
+# create a group by adding elements with area > 20
+aGroupMain = mesh.MakeGroupByIds("Area > 20", smesh.FACE, anIds)
+
+# Criterion : AREA < 60
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 60.)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+print "Criterion: Area < 60, Nb = ", len(anIds)
+
+# create a group by adding elements with area < 60
+aGroupTool = mesh.MakeGroupByIds("Area < 60", smesh.FACE, anIds)
+
+# create a cut of groups : area >= 60
+aGroupRes = mesh.CutGroups(aGroupMain, aGroupTool, "Area >= 60")
+print "Criterion: Area >= 60, Nb = ", len(aGroupRes.GetListOfID())
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+\image html cut_groups1.png
+
+\image html cut_groups2.png
+
+\image html cut_groups3.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_modifying_meshes_page Modifying Meshes
+
+<br>
+\anchor tui_adding_nodes_and_elements
+<h2>Adding Nodes and Elements</h2>
+
+<br>
+\anchor tui_add_node
+<h3>Add Node</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+
+# add node
+new_id = mesh.AddNode(50, 10, 0)
+print ""
+if new_id == 0: print "KO node addition."
+else: print "New Node has been added with ID ", new_id
+\endcode
+
+<br>
+\anchor tui_add_edge
+<h3>Add Edge</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+print ""
+
+# add node
+n1 = mesh.AddNode(50, 10, 0)
+if n1 == 0: print "KO node addition."
+
+# add edge
+e1 = mesh.AddEdge([n1, 38])
+if e1 == 0: print "KO edge addition."
+else: print "New Edge has been added with ID ", e1
+\endcode
+
+<br>
+\anchor tui_add_triangle
+<h3>Add Triangle</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+print ""
+
+# add node
+n1 = mesh.AddNode(50, 10, 0)
+if n1 == 0: print "KO node addition."
+
+# add triangle
+t1 = mesh.AddFace([n1, 38, 39])
+if t1 == 0: print "KO triangle addition."
+else: print "New Triangle has been added with ID ", t1
+\endcode
+
+<br>
+\anchor tui_add_quadrangle
+<h3>Add Quadrangle</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+print ""
+
+# add node
+n1 = mesh.AddNode(50, 10, 0)
+if n1 == 0: print "KO node addition."
+
+n2 = mesh.AddNode(40, 20, 0)
+if n2 == 0: print "KO node addition."
+
+# add quadrangle
+q1 = mesh.AddFace([n2, n1, 38, 39])
+if q1 == 0: print "KO quadrangle addition."
+else: print "New Quadrangle has been added with ID ", q1
+\endcode
+
+<br>
+\anchor tui_add_tetrahedron
+<h3>Add Tetrahedron</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+print ""
+
+# add node
+n1 = mesh.AddNode(50, 10, 0)
+if n1 == 0: print "KO node addition."
+
+# add tetrahedron
+t1 = mesh.AddVolume([n1, 38, 39, 246])
+if t1 == 0: print "KO tetrahedron addition."
+else: print "New Tetrahedron has been added with ID ", t1
+\endcode
+
+<br>
+\anchor tui_add_hexahedron
+<h3>Add Hexahedron</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+print ""
+
+# add nodes
+nId1 = mesh.AddNode(50, 10, 0)
+nId2 = mesh.AddNode(47, 12, 0)
+nId3 = mesh.AddNode(50, 10, 10)
+nId4 = mesh.AddNode(47, 12, 10)
+
+if nId1 == 0 or nId2 == 0 or nId3 == 0 or nId4 == 0: print "KO node addition."
+
+# add hexahedron
+vId = mesh.AddVolume([nId2, nId1, 38, 39, nId4, nId3, 245, 246])
+if vId == 0: print "KO Hexahedron addition."
+else: print "New Hexahedron has been added with ID ", vId
+\endcode
+
+<br>
+\anchor tui_add_polygon
+<h3>Add Polygon</h3>
+
+\code
+import math
+import salome
+
+import smesh
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# a method to build a polygonal mesh element with <nb_vert> angles:
+def MakePolygon (a_mesh, x0, y0, z0, radius, nb_vert):
+ al = 2.0 * math.pi / nb_vert
+ node_ids = []
+
+ # Create nodes for a polygon
+ for ii in range(nb_vert):
+ nid = mesh.AddNode(x0 + radius * math.cos(ii*al),
+ y0 + radius * math.sin(ii*al),
+ z0)
+ node_ids.append(nid)
+ pass
+
+ # Create a polygon
+ return mesh.AddPolygonalFace(node_ids)
+
+# Create three polygons
+f1 = MakePolygon(mesh, 0, 0, 0, 30, 13)
+f2 = MakePolygon(mesh, 0, 0, 10, 21, 9)
+f3 = MakePolygon(mesh, 0, 0, 20, 13, 6)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_add_polyhedron
+<h3>Add Polyhedron</h3>
+
+\code
+import salome
+import math
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# Create nodes for 12-hedron with pentagonal faces
+al = 2 * math.pi / 5.0
+cosal = math.cos(al)
+aa = 13
+rr = aa / (2.0 * math.sin(al/2.0))
+dr = 2.0 * rr * cosal
+r1 = rr + dr
+dh = rr * math.sqrt(2.0 * (1.0 - cosal * (1.0 + 2.0 * cosal)))
+hh = 2.0 * dh - dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh
+
+dd = [] # top
+cc = [] # below top
+bb = [] # above bottom
+aa = [] # bottom
+
+for i in range(5):
+ cos_bot = math.cos(i*al)
+ sin_bot = math.sin(i*al)
+
+ cos_top = math.cos(i*al + al/2.0)
+ sin_top = math.sin(i*al + al/2.0)
+
+ nd = mesh.AddNode(rr * cos_top, rr * sin_top, hh ) # top
+ nc = mesh.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) # below top
+ nb = mesh.AddNode(r1 * cos_bot, r1 * sin_bot, dh) # above bottom
+ na = mesh.AddNode(rr * cos_bot, rr * sin_bot, 0) # bottom
+ dd.append(nd) # top
+ cc.append(nc) # below top
+ bb.append(nb) # above bottom
+ aa.append(na) # bottom
+ pass
+
+# Create a polyhedral volume (12-hedron with pentagonal faces)
+MeshEditor.AddPolyhedralVolume([dd[0], dd[1], dd[2], dd[3], dd[4], # top
+ dd[0], cc[0], bb[1], cc[1], dd[1], # -
+ dd[1], cc[1], bb[2], cc[2], dd[2], # -
+ dd[2], cc[2], bb[3], cc[3], dd[3], # - below top
+ dd[3], cc[3], bb[4], cc[4], dd[4], # -
+ dd[4], cc[4], bb[0], cc[0], dd[0], # -
+ aa[4], bb[4], cc[4], bb[0], aa[0], # .
+ aa[3], bb[3], cc[3], bb[4], aa[4], # .
+ aa[2], bb[2], cc[2], bb[3], aa[3], # . above bottom
+ aa[1], bb[1], cc[1], bb[2], aa[2], # .
+ aa[0], bb[0], cc[0], bb[1], aa[1], # .
+ aa[0], aa[1], aa[2], aa[3], aa[4]], # bottom
+ [5,5,5,5,5,5,5,5,5,5,5,5])
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_removing_nodes_and_elements
+<h2>Removing Nodes and Elements</h2>
+
+<br>
+\anchor tui_removing_nodes
+<h3>Removing Nodes</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+
+# remove nodes #246 and #255
+res = mesh.RemoveNodes([246, 255])
+if res == 1: print "Nodes removing is OK!"
+else: print "KO nodes removing."
+\endcode
+
+<br>
+\anchor tui_removing_elements
+<h3>Removing Elements</h3>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+
+# remove three elements: #850, #859 and #814
+res = mesh.RemoveElements([850, 859, 814])
+if res == 1: print "Elements removing is OK!"
+else: print "KO Elements removing."
+\endcode
+
+<br>
+\anchor tui_renumbering_nodes_and_elements
+<h2>Renumbering Nodes and Elements</h2>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+
+mesh.RenumberNodes()
+
+mesh.RenumberElements()
+\endcode
+
+<br>
+\anchor tui_moving_nodes
+<h2>Moving Nodes</h2>
+
+\code
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+
+# move node #38
+mesh.MoveNode(38, 20., 10., 0.)
+\endcode
+
+<br>
+\anchor tui_mesh_through_point
+<h2>Mesh through point</h2>
+
+\code
+from geompy import *
+from smesh import *
+
+box = MakeBoxDXDYDZ(200, 200, 200)
+
+mesh = Mesh( box )
+mesh.Segment().AutomaticLength(0.1)
+mesh.Quadrangle()
+mesh.Compute()
+
+# find node at (0,0,0)
+node000 = None
+for vId in SubShapeAllIDs( box, ShapeType["VERTEX"]):
+ if node000: break
+ nodeIds = mesh.GetSubMeshNodesId( vId, True )
+ for node in nodeIds:
+ xyz = mesh.GetNodeXYZ( node )
+ if xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 :
+ node000 = node
+ pass
+ pass
+ pass
+
+if not node000:
+ raise "node000 not found"
+
+# find node000 using the tested function
+n = mesh.FindNodeClosestTo( -1,-1,-1 )
+if not n == node000:
+ raise "FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )
+
+# check if any node will be found for a point inside a box
+n = mesh.FindNodeClosestTo( 100, 100, 100 )
+if not n > 0:
+ raise "FindNodeClosestTo( 100, 100, 100 ) fails"
+
+# move node000 to a new location
+x,y,z = -10, -10, -10
+n = mesh.MeshToPassThroughAPoint( x,y,z )
+if not n == node000:
+ raise "FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )
+
+# check the coordinates of the node000
+xyz = mesh.GetNodeXYZ( node000 )
+if not ( xyz[0] == x and xyz[1] == y and xyz[2] == z) :
+ raise "Wrong coordinates: " + str( xyz ) + " != " + str( [x,y,z] )
+\endcode
+
+<br>
+\anchor tui_diagonal_inversion
+<h2>Diagonal Inversion</h2>
+
+\code
+import salome
+import smesh
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# create the following mesh:
+# .----.----.----.
+# | /| /| /|
+# | / | / | / |
+# | / | / | / |
+# |/ |/ |/ |
+# .----.----.----.
+
+bb = [0, 0, 0, 0]
+tt = [0, 0, 0, 0]
+ff = [0, 0, 0, 0, 0, 0]
+
+bb[0] = mesh.AddNode( 0., 0., 0.)
+bb[1] = mesh.AddNode(10., 0., 0.)
+bb[2] = mesh.AddNode(20., 0., 0.)
+bb[3] = mesh.AddNode(30., 0., 0.)
+
+tt[0] = mesh.AddNode( 0., 15., 0.)
+tt[1] = mesh.AddNode(10., 15., 0.)
+tt[2] = mesh.AddNode(20., 15., 0.)
+tt[3] = mesh.AddNode(30., 15., 0.)
+
+ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]])
+ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]])
+ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]])
+ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]])
+ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]])
+ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]])
+
+# inverse the diagonal bb[1] - tt[2]
+print "\nDiagonal inversion ... ",
+res = mesh.InverseDiag(bb[1], tt[2])
+if not res: print "failed!"
+else: print "done."
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_uniting_two_triangles
+<h2>Uniting two Triangles</h2>
+
+\code
+import salome
+import smesh
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# create the following mesh:
+# .----.----.----.
+# | /| /| /|
+# | / | / | / |
+# | / | / | / |
+# |/ |/ |/ |
+# .----.----.----.
+
+bb = [0, 0, 0, 0]
+tt = [0, 0, 0, 0]
+ff = [0, 0, 0, 0, 0, 0]
+
+bb[0] = mesh.AddNode( 0., 0., 0.)
+bb[1] = mesh.AddNode(10., 0., 0.)
+bb[2] = mesh.AddNode(20., 0., 0.)
+bb[3] = mesh.AddNode(30., 0., 0.)
+
+tt[0] = mesh.AddNode( 0., 15., 0.)
+tt[1] = mesh.AddNode(10., 15., 0.)
+tt[2] = mesh.AddNode(20., 15., 0.)
+tt[3] = mesh.AddNode(30., 15., 0.)
+
+ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]])
+ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]])
+ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]])
+ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]])
+ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]])
+ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]])
+
+# delete the diagonal bb[1] - tt[2]
+print "\nUnite two triangles ... ",
+res = mesh.DeleteDiag(bb[1], tt[2])
+if not res: print "failed!"
+else: print "done."
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_uniting_set_of_triangles
+<h2>Uniting a Set of Triangles</h2>
+
+\code
+import salome
+import smesh
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# create the following mesh:
+# .----.----.----.
+# | /| /| /|
+# | / | / | / |
+# | / | / | / |
+# |/ |/ |/ |
+# .----.----.----.
+
+bb = [0, 0, 0, 0]
+tt = [0, 0, 0, 0]
+ff = [0, 0, 0, 0, 0, 0]
+
+bb[0] = mesh.AddNode( 0., 0., 0.)
+bb[1] = mesh.AddNode(10., 0., 0.)
+bb[2] = mesh.AddNode(20., 0., 0.)
+bb[3] = mesh.AddNode(30., 0., 0.)
+
+tt[0] = mesh.AddNode( 0., 15., 0.)
+tt[1] = mesh.AddNode(10., 15., 0.)
+tt[2] = mesh.AddNode(20., 15., 0.)
+tt[3] = mesh.AddNode(30., 15., 0.)
+
+ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]])
+ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]])
+ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]])
+ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]])
+ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]])
+ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]])
+
+# unite a set of triangles
+print "\nUnite a set of triangles ... ",
+res = mesh.TriToQuad([ff[2], ff[3], ff[4], ff[5]], smesh.FT_MinimumAngle, 60.)
+if not res: print "failed!"
+else: print "done."
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_orientation
+<h2>Orientation</h2>
+
+\code
+import salome
+import smesh
+
+# create an empty mesh structure
+mesh = smesh.Mesh()
+
+# build five quadrangles:
+dx = 10
+dy = 20
+
+n1 = mesh.AddNode(0.0 * dx, 0, 0)
+n2 = mesh.AddNode(1.0 * dx, 0, 0)
+n3 = mesh.AddNode(2.0 * dx, 0, 0)
+n4 = mesh.AddNode(3.0 * dx, 0, 0)
+n5 = mesh.AddNode(4.0 * dx, 0, 0)
+n6 = mesh.AddNode(5.0 * dx, 0, 0)
+n7 = mesh.AddNode(0.0 * dx, dy, 0)
+n8 = mesh.AddNode(1.0 * dx, dy, 0)
+n9 = mesh.AddNode(2.0 * dx, dy, 0)
+n10 = mesh.AddNode(3.0 * dx, dy, 0)
+n11 = mesh.AddNode(4.0 * dx, dy, 0)
+n12 = mesh.AddNode(5.0 * dx, dy, 0)
+
+f1 = mesh.AddFace([n1, n2, n8 , n7 ])
+f2 = mesh.AddFace([n2, n3, n9 , n8 ])
+f3 = mesh.AddFace([n3, n4, n10, n9 ])
+f4 = mesh.AddFace([n4, n5, n11, n10])
+f5 = mesh.AddFace([n5, n6, n12, n11])
+
+# Change the orientation of the second and the fourth faces.
+mesh.Reorient([2, 4])
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_cutting_quadrangles
+<h2>Cutting Quadrangles</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# cut two quadrangles: 405 and 406
+mesh.QuadToTri([405, 406], smesh.FT_MinimumAngle)
+\endcode
+
+<br>
+\anchor tui_smoothing
+<h2>Smoothing</h2>
+
+\code
+import salome
+import geompy
+
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# select the top face
+faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType["FACE"])
+face = faces[3]
+geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face planar with hole")
+
+# create a group of faces to be smoothed
+GroupSmooth = mesh.GroupOnGeom(face, "Group of faces (smooth)", smesh.FACE)
+
+# perform smoothing
+
+# boolean SmoothObject(Object, IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method)
+res = mesh.SmoothObject(GroupSmooth, [], 20, 2., smesh.CENTROIDAL_SMOOTH)
+print "\nSmoothing ... ",
+if not res: print "failed!"
+else: print "done."
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_extrusion
+<h2>Extrusion</h2>
+
+\code
+import salome
+import geompy
+
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# select the top face
+faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType["FACE"])
+face = faces[7]
+geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face circular top")
+
+# create a vector for extrusion
+point = smesh.PointStruct(0., 0., 5.)
+vector = smesh.DirStruct(point)
+
+# create a group to be extruded
+GroupTri = mesh.GroupOnGeom(face, "Group of faces (extrusion)", smesh.FACE)
+
+# perform extrusion of the group
+mesh.ExtrusionSweepObject(GroupTri, vector, 5)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_extrusion_along_path
+<h2>Extrusion along a Path</h2>
+
+\code
+import math
+import salome
+
+# Geometry
+import geompy
+
+# 1. Create points
+points = [[0, 0], [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]
+
+iv = 1
+vertices = []
+for point in points:
+ vert = geompy.MakeVertex(point[0], point[1], 0)
+ geompy.addToStudy(vert, "Vertex_" + `iv`)
+ vertices.append(vert)
+ iv += 1
+ pass
+
+# 2. Create edges and wires
+Edge_straight = geompy.MakeEdge(vertices[0], vertices[4])
+Edge_bezierrr = geompy.MakeBezier(vertices)
+Wire_polyline = geompy.MakePolyline(vertices)
+Edge_Circle = geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])
+
+geompy.addToStudy(Edge_straight, "Edge_straight")
+geompy.addToStudy(Edge_bezierrr, "Edge_bezierrr")
+geompy.addToStudy(Wire_polyline, "Wire_polyline")
+geompy.addToStudy(Edge_Circle , "Edge_Circle")
+
+# 3. Explode wire on edges, as they will be used for mesh extrusion
+Wire_polyline_edges = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType["EDGE"])
+for ii in range(len(Wire_polyline_edges)):
+ geompy.addToStudyInFather(Wire_polyline, Wire_polyline_edges[ii], "Edge_" + `ii + 1`)
+ pass
+
+# Mesh
+import smesh
+
+# Mesh the given shape with the given 1d hypothesis
+def Mesh1D(shape1d, nbSeg, name):
+ mesh1d_tool = smesh.Mesh(shape1d, name)
+ algo = mesh1d_tool.Segment()
+ hyp = algo.NumberOfSegments(nbSeg)
+ isDone = mesh1d_tool.Compute()
+ if not isDone: print 'Mesh ', name, ': computation failed'
+ return mesh1d_tool
+
+# Create a mesh with six nodes, seven edges and two quadrangle faces
+def MakeQuadMesh2(mesh_name):
+ quad_1 = smesh.Mesh(name = mesh_name)
+
+ # six nodes
+ n1 = quad_1.AddNode(0, 20, 10)
+ n2 = quad_1.AddNode(0, 40, 10)
+ n3 = quad_1.AddNode(0, 40, 30)
+ n4 = quad_1.AddNode(0, 20, 30)
+ n5 = quad_1.AddNode(0, 0, 30)
+ n6 = quad_1.AddNode(0, 0, 10)
+
+ # seven edges
+ quad_1.AddEdge([n1, n2]) # 1
+ quad_1.AddEdge([n2, n3]) # 2
+ quad_1.AddEdge([n3, n4]) # 3
+ quad_1.AddEdge([n4, n1]) # 4
+ quad_1.AddEdge([n4, n5]) # 5
+ quad_1.AddEdge([n5, n6]) # 6
+ quad_1.AddEdge([n6, n1]) # 7
+
+ # two quadrangle faces
+ quad_1.AddFace([n1, n2, n3, n4]) # 8
+ quad_1.AddFace([n1, n4, n5, n6]) # 9
+ return [quad_1, [1,2,3,4,5,6,7], [8,9]]
+
+# Path meshes
+Edge_straight_mesh = Mesh1D(Edge_straight, 7, "Edge_straight")
+Edge_bezierrr_mesh = Mesh1D(Edge_bezierrr, 7, "Edge_bezierrr")
+Wire_polyline_mesh = Mesh1D(Wire_polyline, 3, "Wire_polyline")
+Edge_Circle_mesh = Mesh1D(Edge_Circle , 8, "Edge_Circle")
+
+# Initial meshes (to be extruded)
+[quad_1, ee_1, ff_1] = MakeQuadMesh2("quad_1")
+[quad_2, ee_2, ff_2] = MakeQuadMesh2("quad_2")
+[quad_3, ee_3, ff_3] = MakeQuadMesh2("quad_3")
+[quad_4, ee_4, ff_4] = MakeQuadMesh2("quad_4")
+[quad_5, ee_5, ff_5] = MakeQuadMesh2("quad_5")
+[quad_6, ee_6, ff_6] = MakeQuadMesh2("quad_6")
+[quad_7, ee_7, ff_7] = MakeQuadMesh2("quad_7")
+
+# ExtrusionAlongPath
+# IDsOfElements, PathMesh, PathShape, NodeStart,
+# HasAngles, Angles, HasRefPoint, RefPoint
+refPoint = smesh.PointStruct(0, 0, 0)
+a10 = 10.0*math.pi/180.0
+a45 = 45.0*math.pi/180.0
+
+# 1. Extrusion of two mesh edges along a straight path
+error = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight, 1,
+ 0, [], 0, refPoint)
+
+# 2. Extrusion of one mesh edge along a curved path
+error = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,
+ 0, [], 0, refPoint)
+
+# 3. Extrusion of one mesh edge along a curved path with usage of angles
+error = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,
+ 1, [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)
+
+# 4. Extrusion of one mesh edge along the path, which is a part of a meshed wire
+error = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh, Wire_polyline_edges[0], 1,
+ 1, [a10, a10, a10], 0, refPoint)
+
+# 5. Extrusion of two mesh faces along the path, which is a part of a meshed wire
+error = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh, Wire_polyline_edges[2], 4,
+ 0, [], 0, refPoint)
+
+# 6. Extrusion of two mesh faces along a closed path
+error = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1,
+ 0, [], 0, refPoint)
+
+# 7. Extrusion of two mesh faces along a closed path with usage of angles
+error = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1,
+ 1, [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_revolution
+<h2>Revolution</h2>
+
+\code
+import math
+
+import SMESH_mechanic
+
+mesh = SMESH_mechanic.mesh
+smesh = SMESH_mechanic.smesh
+
+# create a group of faces to be revolved
+FacesRotate = [492, 493, 502, 503]
+GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group of faces (rotate)")
+GroupRotate.Add(FacesRotate)
+
+# define revolution angle and axis
+angle45 = 45 * math.pi / 180
+axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -23.321, -13.3402, -13.3265, 6.66632)
+
+# perform revolution of an object
+mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
+\endcode
+
+<br>
+\anchor tui_pattern_mapping
+<h2>Pattern Mapping</h2>
+
+\code
+import geompy
+
+import smesh
+
+# define the geometry
+Box_1 = geompy.MakeBoxDXDYDZ(200., 200., 200.)
+geompy.addToStudy(Box_1, "Box_1")
+
+faces = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"])
+Face_1 = faces[0]
+Face_2 = faces[1]
+
+geompy.addToStudyInFather(Box_1, Face_1, "Face_1")
+geompy.addToStudyInFather(Box_1, Face_2, "Face_2")
+
+# build a quadrangle mesh 3x3 on Face_1
+Mesh_1 = smesh.Mesh(Face_1)
+algo1D = Mesh_1.Segment()
+algo1D.NumberOfSegments(3)
+Mesh_1.Quadrangle()
+
+isDone = Mesh_1.Compute()
+if not isDone: print 'Mesh Mesh_1 : computation failed'
+
+# build a triangle mesh on Face_2
+Mesh_2 = smesh.Mesh(Face_2)
+
+algo1D = Mesh_2.Segment()
+algo1D.NumberOfSegments(1)
+algo2D = Mesh_2.Triangle()
+algo2D.MaxElementArea(240)
+
+isDone = Mesh_2.Compute()
+if not isDone: print 'Mesh Mesh_2 : computation failed'
+
+# create a pattern
+pattern = smesh.GetPattern()
+
+isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), Face_2, 0)
+if (isDone != 1): print 'LoadFromFace :', pattern.GetErrorCode()
+
+# apply the pattern to a face of the first mesh
+pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), [17], 0, 0)
+
+isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 0, 0)
+if (isDone != 1): print 'MakeMesh :', pattern.GetErrorCode()
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_quality_controls_page Quality Controls
+
+<br>
+\anchor tui_free_borders
+<h2>Free Borders</h2>
+
+\code
+import salome
+import geompy
+
+import smesh
+
+# create open shell: a box without one plane
+box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+FaceList.remove(FaceList[5])
+box = geompy.MakeShell(FaceList)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+mesh = smesh.Mesh(box, "Mesh_free_borders")
+algo = mesh.Segment()
+algo.NumberOfSegments(5)
+algo = mesh.Triangle()
+algo.MaxElementArea(20.)
+mesh.Compute()
+
+# criterion : free borders
+aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_FreeBorders)
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Free borders Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateGroup(SMESH.EDGE, "Free borders")
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_borders_at_multiconnection
+<h2>Borders at Multiconnection</h2>
+
+\code
+import salome
+import geompy
+
+import smesh
+import SMESH
+
+# create open shell: a box without one plane
+box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+FaceList.remove(FaceList[5])
+box = geompy.MakeShell(FaceList)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+mesh = smesh.Mesh(box, "Mesh_borders_at_multi-connections")
+algo = mesh.Segment()
+algo.NumberOfSegments(5)
+algo = mesh.Triangle()
+algo.MaxElementArea(20.)
+mesh.Compute()
+
+# Criterion : Borders at multi-connection
+nb_conn = 2
+
+aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_MultiConnection, smesh.FT_EqualTo, nb_conn)
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Borders at multi-connections Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateGroup(SMESH.EDGE, "Borders at multi-connections")
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_length_1d
+<h2>Length 1D</h2>
+
+\code
+import salome
+import geompy
+
+import smesh
+
+# create open shell: a box without one plane
+box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+FaceList.remove(FaceList[5])
+box = geompy.MakeShell(FaceList)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+mesh = smesh.Mesh(box, "Mesh_Length_1D")
+algo = mesh.Segment()
+algo.NumberOfSegments(5)
+algo = mesh.Triangle()
+algo.MaxElementArea(20.)
+mesh.Compute()
+
+# Criterion : Length > 3.
+length_margin = 3.
+
+aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_Length, smesh.FT_MoreThan, length_margin)
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Edges length > ", length_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateGroup(SMESH.EDGE, "Edges with length > " + `length_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_free_edges
+<h2>Free Edges</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+aFilterMgr = smesh.CreateFilterManager()
+
+# Remove some elements to obtain free edges
+# Criterion : AREA > 95.
+area_margin = 95.
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, area_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+mesh.RemoveElements(anIds)
+
+# Criterion : Free Edges
+aBorders = mesh.GetFreeBorders()
+
+# create groups
+aGroupF = mesh.CreateGroup(SMESH.FACE, "Faces with free edges")
+aGroupN = mesh.CreateGroup(SMESH.NODE, "Nodes on free edges")
+
+# fill groups with elements, corresponding to the criterion
+print ""
+print "Criterion: Free edges Nb = ", len(aBorders)
+for i in range(len(aBorders)):
+ aBorder = aBorders[i]
+ print "Face # ", aBorder.myElemId, " : Edge between nodes (",
+ print aBorder.myPnt1, ", ", aBorder.myPnt2, ")"
+
+ aGroupF.Add([aBorder.myElemId])
+ aGroupN.Add([aBorder.myPnt1, aBorder.myPnt2])
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_length_2d
+<h2>Length 2D</h2>
+
+\code
+import salome
+import geompy
+
+import smesh
+
+# create open shell: a box without one plane
+box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
+FaceList.remove(FaceList[5])
+box = geompy.MakeShell(FaceList)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+mesh = smesh.Mesh(box, "Mesh_Length_2D")
+algo = mesh.Segment()
+algo.NumberOfSegments(5)
+algo = mesh.Triangle()
+algo.MaxElementArea(20.)
+mesh.Compute()
+
+# Criterion : Length 2D > 5.7
+length_margin = 5.7
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Length2D, smesh.FT_MoreThan, length_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Edges length 2D > ", length_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Faces with length 2D > " + `length_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_borders_at_multiconnection_2d
+<h2>Borders at Multiconnection 2D</h2>
+
+\code
+import salome
+import geompy
+
+import smesh
+
+# create a compound of two glued boxes
+box1 = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+box2 = geompy.MakeTranslation(box1, 0., 20., 0)
+comp = geompy.MakeCompound([box1, box2])
+box = geompy.MakeGlueFaces(comp, 0.000001)
+idbox = geompy.addToStudy(box, "box")
+
+# create a mesh
+mesh = smesh.Mesh(box, "Box compound : 2D triangle mesh")
+algo = mesh.Segment()
+algo.NumberOfSegments(5)
+algo = mesh.Triangle()
+algo.MaxElementArea(20.)
+mesh.Compute()
+
+# Criterion : MULTI-CONNECTION 2D = 3
+nb_conn = 3
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_MultiConnection2D, smesh.FT_EqualTo, nb_conn)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Borders at multi-connection 2D = ", nb_conn, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Borders at multi-connection 2D = " + `nb_conn`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_area
+<h2>Area</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : AREA > 100.
+area_margin = 100.
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, area_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Area > ", area_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Area > " + `area_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_taper
+<h2>Taper</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : Taper > 3e-20
+taper_margin = 3e-20
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Taper, smesh.FT_MoreThan, taper_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Taper > ", taper_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Taper > " + `taper_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_aspect_ratio
+<h2>Aspect Ratio</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : ASPECT RATIO > 1.8
+ar_margin = 1.8
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio, smesh.FT_MoreThan, ar_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Aspect Ratio > " + `ar_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_minimum_angle
+<h2>Minimum Angle</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : MINIMUM ANGLE < 35.
+min_angle = 35.
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_MinimumAngle, smesh.FT_LessThan, min_angle)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Minimum Angle < ", min_angle, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Minimum Angle < " + `min_angle`)
+
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_warping
+<h2>Warping</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : WARP ANGLE > 1e-15
+wa_margin = 1e-15
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Warping, smesh.FT_MoreThan, wa_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Warp > ", wa_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Warp > " + `wa_margin`)
+
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_skew
+<h2>Skew</h2>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+salome = SMESH_mechanic.salome
+
+# Criterion : Skew > 38.
+skew_margin = 38.
+
+aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Skew, smesh.FT_MoreThan, skew_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Skew > ", skew_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Skew > " + `skew_margin`)
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_aspect_ratio_3d
+<h2>Aspect Ratio 3D</h2>
+
+\code
+import SMESH_mechanic_tetra
+
+smesh = SMESH_mechanic_tetra.smesh
+mesh = SMESH_mechanic_tetra.mesh
+salome = SMESH_mechanic_tetra.salome
+
+# Criterion : ASPECT RATIO 3D > 4.5
+ar_margin = 4.5
+
+aFilter = smesh.GetFilter(smesh.VOLUME, smesh.FT_AspectRatio3D, smesh.FT_MoreThan, ar_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print "Criterion: Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, "Aspect Ratio 3D > " + `ar_margin`)
+
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br>
+\anchor tui_volume
+<h2>Volume</h2>
+
+\code
+import SMESH_mechanic_tetra
+
+smesh = SMESH_mechanic_tetra.smesh
+mesh = SMESH_mechanic_tetra.mesh
+salome = SMESH_mechanic_tetra.salome
+
+# Criterion : VOLUME < 7.
+volume_margin = 7.
+
+aFilter = smesh.GetFilter(smesh.VOLUME, smesh.FT_Volume3D, smesh.FT_LessThan, volume_margin)
+
+anIds = mesh.GetIdsFromFilter(aFilter)
+
+# print the result
+print ""
+print "Criterion: Volume < ", volume_margin, " Nb = ", len(anIds)
+j = 1
+for i in range(len(anIds)):
+ if j > 20: j = 1; print ""
+ print anIds[i],
+ j = j + 1
+ pass
+print ""
+
+# create a group
+aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, "Volume < " + `volume_margin`)
+
+aGroup.Add(anIds)
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_scripts_page TUI Scripts
+
+<ul>
+<li>\subpage tui_creating_meshes_page</li>
+<li>\subpage tui_viewing_meshes_page</li>
+<li>\subpage tui_defining_hypotheses_page</li>
+<li>\subpage tui_quality_controls_page</li>
+<li>\subpage tui_grouping_elements_page</li>
+<li>\subpage tui_modifying_meshes_page</li>
+<li>\subpage tui_transforming_meshes_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_transforming_meshes_page Transforming Meshes
+
+<br><h2>Transforming Meshes</h2>
+
+<br>
+\anchor tui_translation
+<h3>Translation</h3>
+
+\code
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# define translation vector
+point = smesh.PointStruct(-150., -150., 0.)
+vector =smesh.DirStruct(point)
+
+# translate a mesh
+doCopy = 1
+
+mesh.Translate([], vector, doCopy)
+\endcode
+
+<br>
+\anchor tui_rotation
+<h3>Rotation</h3>
+
+\code
+import math
+
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# define rotation axis and angle
+axisXYZ = smesh.AxisStruct(0., 0., 0., 5., 5., 20.)
+angle270 = 1.5 * math.pi
+
+# rotate a mesh
+mesh.Rotate([], axisXYZ, angle270, 1)
+\endcode
+
+<br>
+\anchor tui_symmetry
+<h3>Symmetry</h3>
+
+\code
+import math
+
+import SMESH_mechanic
+
+smesh = SMESH_mechanic.smesh
+mesh = SMESH_mechanic.mesh
+
+# create a symmetrical copy of the mesh mirrored through a point
+axis = SMESH.AxisStruct(0, 0, 0, 0, 0, 0)
+
+mesh.Mirror([], axis, smesh.POINT, 1)
+\endcode
+
+<br>
+\anchor tui_merging_nodes
+<h3>Merging Nodes</h3>
+
+\code
+import SMESH_mechanic
+mesh = SMESH_mechanic.mesh
+
+# merge nodes
+Tolerance = 25.0
+
+GroupsOfNodes = mesh.FindCoincidentNodes(Tolerance)
+mesh.MergeNodes(GroupsOfNodes)
+\endcode
+
+<br>
+\anchor tui_merging_elements
+<h3>Merging Elements</h3>
+
+\code
+import salome
+import geompy
+import smesh
+
+# create a face to be meshed
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+vxy = geompy.MakeVector(px, py)
+arc = geompy.MakeArc(py, pz, px)
+
+wire = geompy.MakeWire([vxy, arc])
+isPlanarFace = 1
+
+face1 = geompy.MakeFace(wire, isPlanarFace)
+id_face1 = geompy.addToStudy(face1, "Face1")
+
+# create a circle to be an extrusion path
+px1 = geompy.MakeVertex( 100., 100., 0.)
+py1 = geompy.MakeVertex(-100., -100., 0.)
+pz1 = geompy.MakeVertex( 0., 0., 50.)
+
+circle = geompy.MakeCircleThreePnt(py1, pz1, px1)
+id_circle = geompy.addToStudy(circle, "Path")
+
+# create a 2D mesh on the face
+trias = smesh.Mesh(face1, "Face : 2D mesh")
+
+algo1D = trias.Segment()
+algo1D.NumberOfSegments(6)
+algo2D = trias.Triangle()
+algo2D.LengthFromEdges()
+
+trias.Compute()
+
+# create a path mesh
+circlemesh = smesh.Mesh(circle, "Path mesh")
+algo = circlemesh.Segment()
+algo.NumberOfSegments(10)
+circlemesh.Compute()
+
+# extrusion of the mesh
+trias.ExtrusionAlongPath([], circlemesh, circle,
+ 1, 0, [], 0, smesh.PointStruct(0, 0, 0))
+
+# merge nodes
+print "Number of nodes before MergeNodes:",
+trias.NbNodes()
+tolerance = 0.001
+array_of_nodes_groups = trias.FindCoincidentNodes(tolerance)
+
+trias.MergeNodes(array_of_nodes_groups)
+
+print "Number of nodes after MergeNodes:", trias.NbNodes()
+print ""
+print "Number of elements before MergeEqualElements:"
+print "Edges : ", trias.NbEdges()
+print "Triangles : ", trias.NbTriangles()
+print "Quadrangles: ", trias.NbQuadrangles()
+print "Volumes : ", trias.NbVolumes()
+
+# merge elements
+trias.MergeEqualElements()
+print "Number of elements after MergeEqualElements:"
+print "Edges : ", trias.NbEdges()
+print "Triangles : ", trias.NbTriangles()
+print "Quadrangles: ", trias.NbQuadrangles()
+print "Volumes : ", trias.NbVolumes()
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br><h2>Sewing Meshes</h2>
+
+<br>
+\anchor tui_sew_meshes_border_to_side
+<h3>Sew Meshes Border to Side</h3>
+
+\code
+import geompy
+import smesh
+
+# create two faces of a box
+box1 = geompy.MakeBox(0., 0., -10., 30., 20., 25.)
+facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
+face1 = facesList1[2]
+
+box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
+facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
+face2 = facesList2[1]
+
+edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
+edge1 = edgesList[2]
+
+aComp = geompy.MakeCompound([face1, face2])
+geompy.addToStudy(aComp, "Two faces")
+
+# create a mesh on two faces
+mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
+
+algo1D = mesh.Segment()
+algo1D.NumberOfSegments(9)
+algo2D = mesh.Quadrangle()
+
+algo_local = mesh.Segment(edge1)
+algo_local.Arithmetic1D(1, 4)
+algo_local.Propagation()
+
+mesh.Compute()
+
+# sew border to side
+# FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
+# FirstNodeIDOnSide, LastNodeIDOnSide,
+# CreatePolygons, CreatePolyedrs
+mesh.SewBorderToSide(5, 45, 6, 113, 109, 0, 0)
+\endcode
+
+<br>
+\anchor tui_sew_conform_free_borders
+<h3>Sew Conform Free Borders</h3>
+
+\code
+import geompy
+import smesh
+
+# create two faces of the box
+box1 = geompy.MakeBox(0., 0., -10., 20., 20., 15.)
+facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
+face1 = facesList1[2]
+
+box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
+facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
+face2 = facesList2[1]
+
+edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
+edge1 = edgesList[2]
+
+aComp = geompy.MakeCompound([face1, face2])
+geompy.addToStudy(aComp, "Two faces")
+
+# create a mesh on two faces
+mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
+
+algo1D = mesh.Segment()
+algo1D.NumberOfSegments(9)
+algo2D = mesh.Quadrangle()
+
+algo_local = mesh.Segment(edge1)
+algo_local.Arithmetic1D(1, 4)
+algo_local.Propagation()
+
+mesh.Compute()
+
+# sew conform free borders
+# FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2
+mesh.SewConformFreeBorders(5, 45, 6, 3, 24)
+\endcode
+
+<br>
+\anchor tui_sew_free_borders
+<h3>Sew Free Borders</h3>
+
+\code
+import geompy
+import smesh
+
+# create two faces of the box
+box1 = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
+facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
+face1 = facesList1[2]
+
+box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
+facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
+face2 = facesList2[1]
+
+edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
+edge1 = edgesList[2]
+
+aComp = geompy.MakeCompound([face1, face2])
+geompy.addToStudy(aComp, "Two faces")
+
+# create a mesh on two faces
+mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
+
+algo1D = mesh.Segment()
+algo1D.NumberOfSegments(4)
+algo2D = mesh.Quadrangle()
+
+algo_local = mesh.Segment(edge1)
+algo_local.Arithmetic1D(1, 4)
+algo_local.Propagation()
+
+mesh.Compute()
+
+# sew free borders
+# FirstNodeID1, SecondNodeID1, LastNodeID1,
+# FirstNodeID2, SecondNodeID2, LastNodeID2, CreatePolygons, CreatePolyedrs
+mesh.SewFreeBorders(6, 21, 5, 1, 12, 3, 0, 0)
+\endcode
+
+<br>
+\anchor tui_sew_side_elements
+<h3>Sew Side Elements</h3>
+
+\code
+import geompy
+import smesh
+
+# create two boxes
+box1 = geompy.MakeBox(0., 0., 0., 10., 10., 10.)
+box2 = geompy.MakeBox(0., 15., 0., 20., 25., 10.)
+
+EdgesList = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
+
+aComp = geompy.MakeCompound([box1, box2])
+geompy.addToStudy(aComp, "Two boxes")
+
+# create a mesh on two boxes
+mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
+
+algo1D = mesh.Segment()
+algo1D.NumberOfSegments(2)
+algo2D = mesh.Quadrangle()
+
+algo_local = mesh.Segment(EdgesList[8])
+algo_local.NumberOfSegments(4)
+algo_local.Propagation()
+
+mesh.Compute()
+
+# sew side elements
+# IDsOfSide1Elements, IDsOfSide2Elements,
+# NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge
+mesh.SewSideElements([69, 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_viewing_meshes_page Viewing Meshes
+
+<br>
+\anchor tui_viewing_mesh_infos
+<h2>Viewing Mesh Infos</h2>
+
+\code
+import geompy
+import smesh
+
+# create a box
+box = geompy.MakeBox(0., 0., 0., 20., 20., 20.)
+geompy.addToStudy(box, "box")
+
+# create a mesh
+tetra = smesh.Mesh(box, "MeshBox")
+
+algo1D = tetra.Segment()
+algo1D.NumberOfSegments(3)
+
+algo2D = tetra.Triangle()
+algo2D.MaxElementArea(10.)
+
+algo3D = tetra.Tetrahedron(smesh.NETGEN)
+algo3D.MaxElementVolume(900.)
+
+# compute the mesh
+tetra.Compute()
+
+# print information about the mesh
+print "Information about mesh:"
+print "Number of nodes : ", tetra.NbNodes()
+print "Number of edges : ", tetra.NbEdges()
+print "Number of faces : ", tetra.NbFaces()
+print " triangles : ", tetra.NbTriangles()
+print " quadrangles : ", tetra.NbQuadrangles()
+print " polygons : ", tetra.NbPolygons()
+print "Number of volumes : ", tetra.NbVolumes()
+print " tetrahedrons: ", tetra.NbTetras()
+print " hexahedrons : ", tetra.NbHexas()
+print " prisms : ", tetra.NbPrisms()
+print " pyramids : ", tetra.NbPyramids()
+print " polyhedrons : ", tetra.NbPolyhedrons()
+\endcode
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page uniting_set_of_triangles_page Uniting a set of triangles
+
+\n In contrast to the previous operation this one allows to unite at
+once many triangles if they have adjacent edges.
+
+<em>To union several triangles:</em>
+<ol>
+<li>Display a mesh or a submesh in the 3D viewer.</li>
+<li>In the \b Modification menu select the <b>Union of triangles</b>
+item or click <em>"Union of triangles"</em> button in the toolbar.
+
+\image html image80.gif
+<center><em>"Union of triangles" button</em></center>
+
+The following dialog box will appear:
+
+\image html a-unionoftriangles.png
+
+<ul>
+<li><b>The main list</b> shall contain the triangles which will be
+united. You can click on an triangle in the 3D viewer and it will be
+highlighted. After that click the \b Add button and the ID of this
+triangle will be added to the list. To remove a selected element or
+elements from the list click the \b Remove button. The \b Sort button allows
+to sort the list of IDs. The <b>Set filter</b> button allows to apply a
+definite filter to selection of triangles.</li>
+<li><b>Apply to all</b> radio button allows to modify connectivity and
+type of all triangles of the currently displayed mesh or submesh.</li>
+<li>\b Criterion menu allows to apply the operation only to those
+object which meet the chosen criterion (from the list of Quality
+Controls, i.e. Skew, Warping, Minimum Angle, etc.)</li>
+<li><b>Select from</b> set of fields allows to choose a submesh or an
+existing group whose triangle elements will be automatically added to
+the list.</li>
+</ul>
+
+</li>
+<li>Click the \b Apply or \b OK button to confirm the operation.</li>
+</ol>
+
+If some selected triangle elements have no adjacent edges with one of
+the others, the operation on these elements shall take no effect.
+
+\image html uniting_a_set_of_triangles1.png
+
+\image html uniting_a_set_of_triangles2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_uniting_set_of_triangles "Uniting a Set of Triangles" operation.
+
+*/
--- /dev/null
+/*!
+
+\page uniting_two_triangles_page Uniting two triangles
+
+\n In MESH you can union two neighboring triangles (cells) by deletion
+of the common edge.
+
+<em>To unite two triangles:</em>
+<ol>
+<li>From the \b Modification menu choose the <b>Union of two
+triangles</b> item or click <em>"Union of two triangles"</em> button
+in the toolbar.
+
+\image html image71.gif
+<center><em>"Union of two triangles" button</em></center>
+
+The following dialog box shall appear:
+
+\image html unionoftwotriangles.png
+
+</li>
+<li>Enter the ID of the required edge in the \b Edge field or select
+this edge in the 3D viewer.</li>
+<li>Click the \b Apply or \b OK button.</li>
+</ol>
+
+\image html uniting_two_triangles1.png
+
+\image html uniting_two_triangles2.png
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_uniting_two_triangles "Uniting Two Triangles" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page using_operations_on_groups_page Using operations on groups
+
+\n In MESH you can perform some Boolean operations on groups, which
+belong to one and the same mesh.
+<ul>
+<li>\ref union_anchor "Union"</li>
+<li>\ref intersection_anchor "Intersection"</li>
+<li>\ref cut_anchor "Cut"</li>
+</ul>
+
+
+<br>
+\anchor union_anchor
+<h2>Union of two groups</h2>
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in the initial groups will be added to
+the new one.
+
+<em>To union two groups:</em>
+<ol>
+<li>In the \b Mesh menu select the <b>Union Groups</b> item. The following
+dialog box will appear:
+
+\image html uniongroups.png
+
+In this dialog box you should specify the name of the resulting group
+and two groups which will be united.
+
+For example, we have two groups Group1 and Group2.
+\n The result of their \b Union will be Group12:
+
+\image html image133.gif
+<center>Group1</center>
+
+\image html image134.gif
+<center>Group2</center>
+
+\image html image135.gif
+<center>Group12</center>
+</li>
+<li>Click the \b Ok or \b Apply button to confirm creation of the group.</li>
+</ol>
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_union_of_two_groups "Union of two Groups" operation.
+
+<br>
+\anchor intersection_anchor
+<h2>Intersection of two groups</h2>
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in both initial groups are added to the
+new one.
+
+<em>To intersect two groups:</em>
+<ol>
+<li>In the \b Mesh menu select the <b>Intersect Groups</b> item. The
+following dialog box will appear:
+
+\image html intersectgroups.png
+
+In this dialog box you should specify the name of the resulting group
+and two groups which will be intersected.
+
+For example, we have two groups Group1 and Group2.
+\n The result of their \b Intersection will be Group12a:
+
+\image html image133.gif
+<center>Group1</center>
+
+\image html image134.gif
+<center>Group2</center>
+
+\image html image136.gif
+<center>Group12a</center>
+</li>
+<li>Click the \b Ok or \b Apply button to confirm creation of the group.</li>
+</ol>
+
+<b>See Also</b> a sample TUI Script of an
+\ref tui_intersection_of_two_groups "Intersection of two Groups" operation.
+
+<br>
+\anchor cut_anchor
+<h2>Cut of two groups</h2>
+
+This operation allows to create a new group in such a way that all
+mesh elements that are present in the main group but are absent in the
+tool group are added to the new one.
+
+<em>To cut two groups:</em>
+<ol>
+<li>In the \b Mesh menu select the <b>Cut Groups</b> item. The
+following dialog box will appear:
+
+\image html cutgroups.png
+
+In this dialog box you should specify the name of the resulting group
+and two groups which will be cut.
+
+For example, we have two groups Group1 and Group2.
+\n The result of their \b Cut will be Group12b:
+
+\image html image133.gif
+<center>Group1</center>
+
+\image html image134.gif
+<center>Group2</center>
+
+\image html image137.gif
+<center>Group12b</center>
+</li>
+<li>Click the \b Ok or \b Apply button to confirm creation of the
+group.</li>
+</ol>
+
+<b>See Also</b> a sample TUI Script of a
+\ref tui_cut_of_two_groups "Cut of two Groups" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page viewing_meshes_page Viewing meshes
+
+<ul>
+<li>\subpage viewing_meshes_overview_page</li>
+<li>\subpage mesh_infos_page</li>
+<li>\subpage numbering_page</li>
+<li>\subpage display_mode_page</li>
+<li>\subpage display_entity_page</li>
+<li>\subpage transparency_page</li>
+<li>\subpage clipping_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page viewing_meshes_overview_page Overview
+
+\n After definition of algorithms and hypotheses a new mesh is listed
+in the Object Browser. Right-click on it and select \b Compute - the
+mesh will be automatically displayed in the <b>VTK 3D Viewer</b>.
+Alternatively click <b>Display only</b> to hide all other objects at
+the same time.
+
+<b>VTK 3D Viewer</b> is detailly described in the documentation on <b>GUI module</b>.
+\n After the mesh has appeared in the Viewer, you can select it with
+left mouse click and get information about it, change its
+presentation parameters and access to other useful options by
+right-clicking on the selected mesh.
+
+\image html dialog.png
+
+<ul>
+<li><b>Hide all</b> - allows to hide all objects in the viewer.</li>
+<li><b>Update</b> - refreshes the presentation of your mesh in the
+Object Browser, applying all recent changes. </li>
+<li>\ref advanced_mesh_infos_anchor "Advanced Mesh Infos" - provides
+more detailed information about the mesh.</li>
+<li>\ref standard_mesh_infos_anchor "Standard Mesh Infos" - provides
+basic information about the mesh.</li>
+<li>\ref mesh_element_info_anchor "Mesh Element Info" - provides basic
+information about the selected element of the mesh. </li>
+<li>\ref numbering_page "Numbering" - allows to display the ID
+numbers of all meshing elements or nodes composing your mesh in the
+viewer.</li>
+<li>\ref display_mode_page "Display Mode" - allows to select between
+Wireframe, Shading and Nodes presentation.</li>
+<li>\ref display_entity_page "Display Entity" - allows to display
+Faces, Edges or both.</li>
+<li><b>Colors / Size</b> - allows to select color and size of
+meshes.</li>
+<li>\ref transparency_page "Transparency" - allows to change the
+transparency of mesh elements.</li>
+<li>\ref clipping_page "Clipping" - allows to create cross-sections of the selected objects.</li>
+<li>\ref about_quality_controls_page "Controls" - graphically
+presents various information about meshes.</li>
+<li><b>Hide</b> - allows to hide the selected mesh from the viewer.</li>
+<li><b>Show Only</b> -allows to display only the selected mesh, hiding all other from the viewer.</li>
+<li><b>Dump view</b> - exports an object from the viewer in bmp, png, jpg or jpeg image format.</li>
+<li><b>Change background</b> - allows to redefine the background color. By default it is black.</li>
+</ul>
+
+*/
+
--- /dev/null
+/*!
+
+\page volume_page Volume
+
+\n \b Volume mesh quality criterion reflects the volume of meshes of a
+3D object.
+
+<em>To apply the Volume quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Volume</b> or click <em>"Volume"</em> button
+in the toolbar.
+
+\image html image145.gif
+<center><em>"Volume" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image143.gif
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_volume "Volume quality control" operation.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page warping_page Warping
+
+\image html image24.gif
+
+\n \b Warping indicates that a face is not planar and is applied only to
+2D elements with 4 nodes. This quality control criterion is based on a
+projection plane created by:
+<ol>
+<li>bisecting the four element edges,</li>
+<li>creating a point on the plane at the vector average of the
+corners, where the x-axis extends from the point to the bisector on
+edge 2.</li>
+</ol>
+The plane normal is in the direction of the cross product of the
+x-axis and the vector from the origin to the bisector of edge 3. Every
+corner of the quad will then be a distance ?h? from the plane. The
+length of each half edge is measured and the shortest length is
+assigned ?l?. The warp angle is the arcsine of the ratio of the
+projection height ?h? to the half edge length ?l?.
+
+<em>To apply the Warping quality criterion to your mesh:</em>
+<ol>
+<li>Display your mesh in the viewer.</li>
+
+<li>Choose <b>Controls > Warping Angle</b> or click <em>"Warping angle"</em>
+button of the toolbar.
+
+\image html image39.gif
+<center><em>"Warping angle" button</em></center>
+
+Your mesh will be displayed in the viewer with its elements colored
+according to the applied mesh quality control criterion:
+
+\image html image97.jpg
+</li>
+</ol>
+
+<br><b>See Also</b> a sample TUI Script of a
+\ref tui_warping "Warping quality control" operation.
+
+*/
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Length</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; width:165px; height:239px; float:none; border-style:none; }
-p.whs4 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs4 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nLength");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Length</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> The Length quality control criterion returns a value
- of length of edge.</p>
-
-<p> </p>
-
-<p class="whs2"><img src="pics/length-crit.png" x-maintain-ratio="TRUE" width="165px" height="239px" border="0" class="img_whs3"></p>
-
-<p> </p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark2"> Length
- quality control</a> operation. </p>
-
-<p>.</p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Merge Elements</title>
-<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">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-img_whs2 { border:none; width:313px; height:221px; float:none; border-style:none; }
-img_whs3 { border:none; width:235px; height:150px; float:none; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nTransforming meshes\nMerging Elements");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Merging Elements</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> This functionality allows to merge coincident elements
- of a mesh selectable in the dialog box. </p>
-
-<p><img src="pics/mergeelems.png" x-maintain-ratio="TRUE" width="313px" height="221px" border="0" class="img_whs2"></p>
-
-<p>In this picture you see a triangle which coincides with one of the elements
- of the mesh. After we apply <span style="font-weight: bold;"><B>Merge Elements</B></span>
- functionality, the triangle will be completely merged with the mesh. </p>
-
-<p><img src="pics/meshtrianglemergeelem1.png" x-maintain-ratio="TRUE" width="235px" height="150px" border="0" class="img_whs3"></p>
-
-<p> <span style="font-weight: bold;"><B>See
- Also</B></span> a sample TUI Script of a <a href="transforming_meshes.htm#bookmark8">Merge
- Elements</a> operation. </p>
-
-<p> </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>mesh</title>
-<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">
-<!--
-h1.whs1 { margin-top:0pt; margin-bottom:0pt; font-size:24pt; }
-p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; }
-ul.whs4 { list-style:disc; }
-ul.whs5 { list-style:circle; }
-p.whs6 { margin-left:40px; margin-top:0pt; margin-bottom:0pt; }
-img_whs7 { border:none; width:472px; height:355px; border-style:none; float:right; }
-p.whs8 { margin-left:40px; font-weight:bold; margin-top:0pt; margin-bottom:0pt; }
-ol.whs9 { list-style:disc; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "h1.whs1 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nIntroduction to Mesh");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1 class="whs1">Introduction to MESH</h1>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs3"><span style="font-weight: bold;"><B>MESH</B></span>
- module of SALOME is destined for: </p>
-
-<ul type="disc" class="whs4">
-
- <li class=kadov-p><p class="whs2"><a href="files/importing_and_exporting_meshes.htm">import and export of meshes
- in MED format</a>,</p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/constructing_meshes.htm">meshing geometrical models</a> previously
- created or imported by the GEOM component. MESH module allows to apply
- 1D, 2D, 3D meshing algorithms and a set of hypotheses:</p></li>
-
- <ul type="circle" class="whs5">
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#arithmetic_1D">Arithmetic 1D</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#Average_length">Average Length</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#deflection_1D">Deflection 1D </a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#Number_of_elements">Number of segments</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#start_and_end_length">Start and end length</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/arithmetic_1d.htm#automatic_length">Automatic Length</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/max._element_area_hypothesis.htm#max_element_area">Max Element
- Area</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/max._element_area_hypothesis.htm#length_from_edges">Length
- from Edges</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/max._element_area_hypothesis.htm#quadrangle preference">Quadrangle
- Preference</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/max._element_volume_hypothsis.htm">Max Element Volume</a></p></li>
- </ul>
-
- <li class=kadov-p><p class="whs2">modification
- of locally generated meshes by</p></li>
-
- <ul type="circle" class="whs5">
-
- <li class=kadov-p><p class="whs2"><a href="files/adding_nodes_and_elements.htm">Addition</a> of nodes and elements</p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/removing_nodes_and_elements.htm">Removal</a> of nodes and
- elements</p></li>
- </ul>
-
- <li class=kadov-p><p class="whs2"><a href="files/creating_groups.htm">grouping mesh elements</a> and <a href="files/using_operations_on_groups.htm">performing
- operations on these groups</a> </p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/about_quality_controls.htm">quality control</a> of meshes
- basing on a set of definite criteria -</p></li>
-</ul>
-
-<p class="whs6"><img src="image7.jpg" x-maintain-ratio="TRUE" width="472px" height="355px" align="right" border="0" class="img_whs7"></p>
-
-<p class="whs8">for edges:</p>
-
-<ol type="disc" class="whs9">
-
- <ul type="circle" class="whs5">
-
- <li class=kadov-p><p class="whs2"><a href="length.htm">Length of edges</a> </p></li>
-
- <li class=kadov-p><p class="whs2"><a href="borders_at_multi-connection.htm">Borders at multi-connection</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="free_borders.htm">Free borders</a></p></li>
- </ul>
-</ol>
-
-<p class="whs8">for faces:</p>
-
-<ol type="disc" class="whs9">
-
- <ul type="circle" class="whs5">
-
- <li class=kadov-p><p class="whs2"><a href="files/area_of_elements.htm">Area</a> </p></li>
-
- <li class=kadov-p><p class="whs2"><a href="free_edges.htm">Free edges</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="borders_at_multiconnection_2d.htm">Borders at multi-connection 2D</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/length_of_edges.htm">Length 2D</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/minimum_angle.htm">Minimum angle</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/taper.htm">Taper</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/aspect_ratio.htm">Aspect Ratio</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/warp.htm">Warping</a> </p></li>
-
- <li class=kadov-p><p class="whs2"><a href="files/skew.htm">Skew</a></p></li>
- </ul>
-</ol>
-
-<p class="whs8">for solids:</p>
-
-<ol type="disc" class="whs9">
-
- <ul type="circle" class="whs5">
-
- <li class=kadov-p><p class="whs2"><a href="aspect_ratio_3d.htm">Aspect ratio 3D</a></p></li>
-
- <li class=kadov-p><p class="whs2"><a href="volume.htm">Volume</a></p></li>
- </ul>
-</ol>
-
-<p class="whs2">.</p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Mesh through point</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 { font-family:'Arial Black' , sans-serif; font-style:italic; margin-left:0px; }\r
-p.whs2 { margin-left:36px; }\r
-img_whs3 { border:none; width:27px; height:29px; border-style:none; }\r
-img_whs4 { border:none; width:355px; height:366px; float:none; border-style:none; }\r
-p.whs5 { margin-left:40px; font-family:'Times New Roman' , serif; font-style:normal; }\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-left: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\nModifying meshes\nMesh through point");\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>Mesh through point</h1>\r
-\r
-<p>In mesh you can define a node at a certain point either by creation \r
- of a new node, by movement of the node closest to the point or by movement \r
- of any node to the point.</p>\r
-\r
-<p class="whs1">To create a mesh passing through a point:</p>\r
-\r
-<p class="whs2">1. From the <span style="font-weight: bold;"><B>Modification \r
- </B></span>menu choose the <span style="font-weight: bold;"><B>Mesh through point \r
- </B></span>item or click <img src="image159.gif" width="27px" height="29px" border="0" class="img_whs3"> button in the toolbar. The following \r
- dialog box shall appear:</p>\r
-\r
-<p class="whs2"><img src="pics/meshtopass.png" x-maintain-ratio="TRUE" width="355px" height="366px" border="0" class="img_whs4"></p>\r
-\r
-<p class="whs2">2. Enter the coordinates of the point</p>\r
-\r
-<p class="whs2">3. Choose one of several methods: you can \r
- either <span style="font-weight: bold;"><B>Create</B></span> a new node at the \r
- indicated point or Move the existing node to the point. In the latter \r
- case you can check in <span style="font-weight: bold;"><B>Automatic search</B></span> \r
- of the closest node or select the necessary node manually. <span style="font-weight: bold;"><B>Preview</B></span> \r
- check-box allows to see the results of the operation. </p>\r
-\r
-<p class="whs2">4. Click the <span style="font-weight: bold;"><B>Apply \r
- </B></span>or <span style="font-weight: bold;"><B>OK </B></span>button.</p>\r
-\r
-<p> <span style="font-weight: bold;"><B>See \r
- Also</B></span> a sample TUI Script of a <a href="modifying_meshes.htm#bookmark14">Mesh \r
- through point</a> operation. </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs5"> </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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Modifying Meshes</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>
-<!--
-P { margin-top:0pt; margin-bottom:0pt; }
-LI.kadov-P { }
--->
-</style><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; font-family:'Times New Roman' , serif; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; }
-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 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; font-weight:bold; font-size:13.5pt; }
-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:0px; font-family:'Times New Roman' , serif; }
-p.whs14 { font-family:'Lucida Console' , monospace; margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-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 += "h4.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 += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs13 {margin-left:1pt; }";
- strNSS += "p.whs14 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nModifying Meshes");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Modifying Meshes</h1>
-
-<h3><a name=bookmark>Adding Nodes and Elements</a></h3>
-
-<h4>Add Node</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add node</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">new_id
- = mesh.AddNode(50, 10, 0)</span></p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1">if new_id == 0:
- print "KO node addition."</p>
-
-<p class="whs1">else: print
- "New Node has been added with ID ", new_id </p>
-
-<p class="whs1"> </p>
-
-<h4>Add Edge</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add node</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">n1
- = mesh.AddNode(50, 10, 0)</span></p>
-
-<p class="whs1">if n1 == 0: print
- "KO node addition." </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add edge</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">e1
- = mesh.AddEdge([n1, 38])</span></p>
-
-<p class="whs1">if e1 == 0: print
- "KO edge addition."</p>
-
-<p class="whs1">else: print
- "New Edge has been added with ID ", e1 </p>
-
-<h4>Add Triangle</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add node</p>
-
-<p class="whs1">n1 = mesh.AddNode(50,
- 10, 0)</p>
-
-<p class="whs1">if n1 == 0: print
- "KO node addition."</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add triangle</p>
-
-<p class="whs1">t1 = mesh.AddFace([n1,
- 38, 39])</p>
-
-<p class="whs1">if t1 == 0: print
- "KO triangle addition."</p>
-
-<p class="whs1">else: print
- "New Triangle has been added with ID ", t1 </p>
-
-<h4>Add Quadrangle</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># add node</p>
-
-<p class="whs1">n1 = mesh.AddNode(50,
- 10, 0)</p>
-
-<p class="whs1">if n1 == 0: print
- "KO node addition."</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">n2 = mesh.AddNode(40,
- 20, 0)</p>
-
-<p class="whs1">if n2 == 0: print
- "KO node addition."</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># add quadrangle</p>
-
-<p class="whs1">q1 = mesh.AddFace([n2,
- n1, 38, 39])</p>
-
-<p class="whs1">if q1 == 0: print
- "KO quadrangle addition."</p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">else:
- print
- "New Quadrangle has been added with ID ", q1</span> </p>
-
-<h4>Add Tetrahedron</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add node</p>
-
-<p class="whs1">n1 = mesh.AddNode(50,
- 10, 0)</p>
-
-<p class="whs1">if n1 == 0: print
- "KO node addition."</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add tetrahedron</p>
-
-<p class="whs1">t1 = mesh.AddVolume([n1,
- 38, 39, 246])</p>
-
-<p class="whs1">if t1 == 0: print
- "KO tetrahedron addition."</p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">else:
- print
- "New Tetrahedron has been added with ID ", t1</span> </p>
-
-<h4>Add Hexahedron</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add nodes</p>
-
-<p class="whs1">nId1 = mesh.AddNode(50,
- 10, 0)</p>
-
-<p class="whs1">nId2 = mesh.AddNode(47,
- 12, 0)</p>
-
-<p class="whs1">nId3 = mesh.AddNode(50,
- 10, 10)</p>
-
-<p class="whs1">nId4 = mesh.AddNode(47,
- 12, 10)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">if nId1 == 0 or
- nId2 == 0 or nId3 == 0 or nId4 == 0: print "KO node addition."</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add hexahedron</p>
-
-<p class="whs1">vId = mesh.AddVolume([nId2,
- nId1, 38, 39, nId4, nId3, 245, 246])</p>
-
-<p class="whs1">if vId == 0: print
- "KO Hexahedron addition."</p>
-
-<p class="whs1">else: print
- "New Hexahedron has been added with ID ", vId </p>
-
-<p class="whs1"> </p>
-
-<h4>Add Polygon</h4>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- math</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an empty mesh
- structure</p>
-
-<p class="whs1">mesh = smesh.Mesh()
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># a method to build
- a polygonal mesh element with <nb_vert> angles:</p>
-
-<p class="whs1">def MakePolygon
- (a_mesh, x0, y0, z0, radius, nb_vert):</p>
-
-<p class="whs1"> al
- = 2.0 * math.pi / nb_vert</p>
-
-<p class="whs1"> node_ids
- = []</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"> #
- Create nodes for a polygon</p>
-
-<p class="whs1"> for
- ii in range(nb_vert):</p>
-
-<p class="whs1"> nid
- = mesh.AddNode(x0 + radius * math.cos(ii*al),</p>
-
-<p class="whs1"> y0
- + radius * math.sin(ii*al),</p>
-
-<p class="whs1"> z0)</p>
-
-<p class="whs1"> node_ids.append(nid)</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"> #
- Create a polygon</p>
-
-<p class="whs1"> return
- mesh.AddPolygonalFace(node_ids)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Create three polygons</p>
-
-<p class="whs1">f1 = MakePolygon(mesh,
- 0, 0, 0,
- 30, 13)</p>
-
-<p class="whs1">f2 = MakePolygon(mesh,
- 0, 0, 10, 21, 9)</p>
-
-<p class="whs1">f3 = MakePolygon(mesh,
- 0, 0, 20, 13, 6)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<h4>Add Polyhedron</h4>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an empty mesh
- structure</p>
-
-<p class="whs1">mesh = smesh.Mesh()
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Create nodes for
- 12-hedron with pentagonal faces</p>
-
-<p class="whs1">al = 2 * math.pi
- / 5.0</p>
-
-<p class="whs1">cosal = math.cos(al)</p>
-
-<p class="whs1">aa = 13</p>
-
-<p class="whs1">rr = aa / (2.0 *
- math.sin(al/2.0))</p>
-
-<p class="whs1">dr = 2.0 * rr *
- cosal</p>
-
-<p class="whs1">r1 = rr + dr</p>
-
-<p class="whs1">dh = rr * math.sqrt(2.0
- * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
-
-<p class="whs1">hh = 2.0 * dh -
- dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">dd = [] <span style="font-family: 'Times New Roman', serif;">#
- top</span></p>
-
-<p class="whs1">cc = [] <span style="font-family: 'Times New Roman', serif;">#
- below top</span></p>
-
-<p class="whs1">bb = [] <span style="font-family: 'Times New Roman', serif;">#
- above bottom</span></p>
-
-<p class="whs1">aa = [] <span style="font-family: 'Times New Roman', serif;">#
- bottom</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">for i in range(5):</p>
-
-<p class="whs1"> cos_bot
- = math.cos(i*al)</p>
-
-<p class="whs1"> sin_bot
- = math.sin(i*al)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> <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="whs1"> sin_top
- = math.sin(i*al + al/2.0)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> nd
- = mesh.AddNode(rr * cos_top, rr * sin_top, hh )
- <span style="font-family: 'Times New Roman', serif;"># top</span></p>
-
-<p class="whs1"> nc
- = mesh.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) <span style="font-family: 'Times New Roman', serif;">#
- below top</span></p>
-
-<p class="whs1"> nb
- = mesh.AddNode(r1 * cos_bot, r1 * sin_bot, dh)
- <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
-
-<p class="whs1"> na
- = mesh.AddNode(rr * cos_bot, rr * sin_bot, 0)
- <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
-
-<p class="whs1"> dd.append(nd)
- <span style="font-family: 'Times New Roman', serif;"># top</span></p>
-
-<p class="whs1"> cc.append(nc)
- <span style="font-family: 'Times New Roman', serif;"># below top</span></p>
-
-<p class="whs1"> bb.append(nb)
- <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
-
-<p class="whs1"> aa.append(na)
- <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Create a polyhedral
- volume (12-hedron with pentagonal faces)</p>
-
-<p class="whs1">MeshEditor.AddPolyhedralVolume([dd[0],
- dd[1], dd[2], dd[3], dd[4], <span style="font-family: 'Times New Roman', serif;">#
- top</span></p>
-
-<p class="whs1"> dd[0],
- cc[0], bb[1], cc[1], dd[1], #
- -</p>
-
-<p class="whs1"> dd[1],
- cc[1], bb[2], cc[2], dd[2], #
- -</p>
-
-<p class="whs1"> dd[2],
- cc[2], bb[3], cc[3], dd[3], <span style="font-family: 'Times New Roman', serif;">#
- - below top</span></p>
-
-<p class="whs1"> dd[3],
- cc[3], bb[4], cc[4], dd[4], #
- -</p>
-
-<p class="whs1"> dd[4],
- cc[4], bb[0], cc[0], dd[0], #
- -</p>
-
-<p class="whs1"> aa[4],
- bb[4], cc[4], bb[0], aa[0], #
- .</p>
-
-<p class="whs1"> aa[3],
- bb[3], cc[3], bb[4], aa[4], #
- .</p>
-
-<p class="whs1"> aa[2],
- bb[2], cc[2], bb[3], aa[3], <span style="font-family: 'Times New Roman', serif;">#
- . above bottom</span></p>
-
-<p class="whs1"> aa[1],
- bb[1], cc[1], bb[2], aa[2], #
- .</p>
-
-<p class="whs1"> aa[0],
- bb[0], cc[0], bb[1], aa[1], #
- .</p>
-
-<p class="whs1"> aa[0],
- aa[1], aa[2], aa[3], aa[4]], <span style="font-family: 'Times New Roman', serif;">#
- bottom</span></p>
-
-<p class="whs1"> [5,5,5,5,5,5,5,5,5,5,5,5])</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
-
-<h4 class="whs4">Removing Nodes</h4>
-
-<p class="whs3"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- SMESH_mechanic</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># remove nodes #246
- and #255</p>
-
-<p class="whs1">res = mesh.RemoveNodes([246,
- 255])</p>
-
-<p class="whs1">if res == 1: print
- "Nodes removing is OK!"</p>
-
-<p class="whs1">else: print
- "KO nodes removing." </p>
-
-<p class="whs3"> </p>
-
-<h4>Removing Elements</h4>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># remove three elements:
- #850, #859 and #814</p>
-
-<p class="whs1">res = mesh.RemoveElements([850,
- 859, 814])</p>
-
-<p class="whs1">if res == 1: print
- "Elements removing is OK!"</p>
-
-<p class="whs1">else: print
- "KO Elements removing." </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
-
-<p class="whs5">import SMESH_mechanic</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"><span style="font-family: 'Lucida Console', monospace;">mesh.RenumberNodes()</span>
- </p>
-
-<h3><a name=bookmark3>Moving Nodes</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># move node #38</p>
-
-<p class="whs1">mesh.MoveNode(38,
- 20., 10., 0.) </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs7"><a name=bookmark14
- style="font-weight: bold; font-size: 13.5pt;">Mesh
- through point</a></p>
-
-<p class="whs3"> </p>
-
-<p class="whs1">from geompy import
- *</p>
-
-<p class="whs1">from smesh import
- *</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">box = MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh = Mesh( box
- )</p>
-
-<p class="whs1">mesh.Segment().AutomaticLength(0.1)</p>
-
-<p class="whs1">mesh.Quadrangle()</p>
-
-<p class="whs1">mesh.Compute()</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># find node at (0,0,0)</p>
-
-<p class="whs1">node000 = None</p>
-
-<p class="whs1">for vId in SubShapeAllIDs(
- box, ShapeType["VERTEX"]):</p>
-
-<p class="whs1"> if
- node000: break</p>
-
-<p class="whs1"> nodeIds
- = mesh.GetSubMeshNodesId( vId, True )</p>
-
-<p class="whs1"> for
- node in nodeIds:</p>
-
-<p class="whs1"> xyz
- = mesh.GetNodeXYZ( node )</p>
-
-<p class="whs1"> if
- xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 :</p>
-
-<p class="whs1"> node000
- = node</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">if not node000:</p>
-
-<p class="whs1"> raise
- "node000 not found"</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># find node000 using the
- tested function </p>
-
-<p class="whs1">n = mesh.FindNodeClosestTo(
- -1,-1,-1 )</p>
-
-<p class="whs1">if not n == node000:</p>
-
-<p class="whs1"> raise
- "FindNodeClosestTo() returns " + str( n ) + " != "
- + str( node000 )</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># check if any node will
- be found for a point inside a box</p>
-
-<p class="whs1">n = mesh.FindNodeClosestTo(
- 100, 100, 100 )</p>
-
-<p class="whs1">if not n > 0:</p>
-
-<p class="whs1"> raise
- "FindNodeClosestTo( 100, 100, 100 ) fails"</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># move node000 to a new
- location</p>
-
-<p class="whs1">x,y,z = -10, -10,
- -10</p>
-
-<p class="whs1">n = mesh.MeshToPassThroughAPoint(
- x,y,z )</p>
-
-<p class="whs1">if not n == node000:</p>
-
-<p class="whs1"> raise
- "FindNodeClosestTo() returns " + str( n ) + " != "
- + str( node000 )</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># check the coordinates
- of the node000</p>
-
-<p class="whs1">xyz = mesh.GetNodeXYZ(
- node000 )</p>
-
-<p class="whs1">if not ( xyz[0]
- == x and xyz[1] == y and xyz[2] == z) :</p>
-
-<p class="whs1"> raise
- "Wrong coordinates: " + str( xyz ) + " != " + str(
- [x,y,z] )</p>
-
-<h3><a name=bookmark4>Diagonal Inversion</a></h3>
-
-<p class="whs5">import salome</p>
-
-<p class="whs5">import smesh</p>
-
-<p class="whs5"> </p>
-
-<p class="whs8"># create an empty mesh
- structure</p>
-
-<p class="whs5">mesh = smesh.Mesh()
- </p>
-
-<p class="whs5"> </p>
-
-<p class="whs8"># create the following
- mesh:</p>
-
-<p class="whs5"># .----.----.----.</p>
-
-<p class="whs5"># | /|
- /|
- /|</p>
-
-<p class="whs5"># | /
- | / | /
- |</p>
-
-<p class="whs5"># | / |
- / | / |</p>
-
-<p class="whs5"># |/ |/
- |/
- |</p>
-
-<p class="whs5"># .----.----.----.</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">bb = [0, 0, 0, 0]</p>
-
-<p class="whs5">tt = [0, 0, 0, 0]</p>
-
-<p class="whs5">ff = [0, 0, 0, 0,
- 0, 0]</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">bb[0] = mesh.AddNode(
- 0., 0., 0.)</p>
-
-<p class="whs5">bb[1] = mesh.AddNode(10.,
- 0., 0.)</p>
-
-<p class="whs5">bb[2] = mesh.AddNode(20.,
- 0., 0.)</p>
-
-<p class="whs5">bb[3] = mesh.AddNode(30.,
- 0., 0.)</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">tt[0] = mesh.AddNode(
- 0., 15., 0.)</p>
-
-<p class="whs5">tt[1] = mesh.AddNode(10.,
- 15., 0.)</p>
-
-<p class="whs5">tt[2] = mesh.AddNode(20.,
- 15., 0.)</p>
-
-<p class="whs5">tt[3] = mesh.AddNode(30.,
- 15., 0.)</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">ff[0] = mesh.AddFace([bb[0],
- bb[1], tt[1]])</p>
-
-<p class="whs5">ff[1] = mesh.AddFace([bb[0],
- tt[1], tt[0]])</p>
-
-<p class="whs5">ff[2] = mesh.AddFace([bb[1],
- bb[2], tt[2]])</p>
-
-<p class="whs5">ff[3] = mesh.AddFace([bb[1],
- tt[2], tt[1]])</p>
-
-<p class="whs5">ff[4] = mesh.AddFace([bb[2],
- bb[3], tt[3]])</p>
-
-<p class="whs5">ff[5] = mesh.AddFace([bb[2],
- tt[3], tt[2]])</p>
-
-<p class="whs5"> </p>
-
-<p class="whs8"># inverse the diagonal
- bb[1] - tt[2]</p>
-
-<p class="whs5">print "\nDiagonal
- inversion ... ",</p>
-
-<p class="whs5">res = mesh.InverseDiag(bb[1],
- tt[2])</p>
-
-<p class="whs5">if not res: print
- "failed!"</p>
-
-<p class="whs5">else: print
- "done."</p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark5>Uniting two Triangles</a></h3>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9">import smesh</p>
-
-<p> </p>
-
-<p># create an empty mesh structure</p>
-
-<p class="whs9">mesh = smesh.Mesh()
- </p>
-
-<p> </p>
-
-<p># create the following mesh:</p>
-
-<p class="whs9"># .----.----.----.</p>
-
-<p class="whs9"># | /|
- /|
- /|</p>
-
-<p class="whs9"># | /
- | / | /
- |</p>
-
-<p class="whs9"># | / |
- / | / |</p>
-
-<p class="whs9"># |/ |/
- |/
- |</p>
-
-<p class="whs9"># .----.----.----.</p>
-
-<p> </p>
-
-<p class="whs9">bb = [0, 0, 0, 0]</p>
-
-<p class="whs9">tt = [0, 0, 0, 0]</p>
-
-<p class="whs9">ff = [0, 0, 0, 0,
- 0, 0]</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">bb[0]
- = mesh.AddNode( 0., 0., 0.)</span></p>
-
-<p class="whs9">bb[1] = mesh.AddNode(10.,
- 0., 0.)</p>
-
-<p class="whs9">bb[2] = mesh.AddNode(20.,
- 0., 0.)</p>
-
-<p class="whs9">bb[3] = mesh.AddNode(30.,
- 0., 0.)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">tt[0] = mesh.AddNode(
- 0., 15., 0.)</p>
-
-<p class="whs9">tt[1] = mesh.AddNode(10.,
- 15., 0.)</p>
-
-<p class="whs9">tt[2] = mesh.AddNode(20.,
- 15., 0.)</p>
-
-<p class="whs9">tt[3] = mesh.AddNode(30.,
- 15., 0.)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">ff[0] = mesh.AddFace([bb[0],
- bb[1], tt[1]])</p>
-
-<p class="whs9">ff[1] = mesh.AddFace([bb[0],
- tt[1], tt[0]])</p>
-
-<p class="whs9">ff[2] = mesh.AddFace([bb[1],
- bb[2], tt[2]])</p>
-
-<p class="whs9">ff[3] = mesh.AddFace([bb[1],
- tt[2], tt[1]])</p>
-
-<p class="whs9">ff[4] = mesh.AddFace([bb[2],
- bb[3], tt[3]])</p>
-
-<p class="whs9">ff[5] = mesh.AddFace([bb[2],
- tt[3], tt[2]]) </p>
-
-<p> </p>
-
-<p># delete the diagonal bb[1] - tt[2]</p>
-
-<p class="whs9">print "\nUnite
- two triangles ... ",</p>
-
-<p class="whs9">res = mesh.DeleteDiag(bb[1],
- tt[2])</p>
-
-<p class="whs9">if not res: print
- "failed!"</p>
-
-<p class="whs9">else: print
- "done."</p>
-
-<p class="whs9"> </p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9">import smesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># create an empty mesh
- structure</p>
-
-<p class="whs9">mesh = smesh.Mesh()
- </p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># create the following
- mesh:</p>
-
-<p class="whs9"># .----.----.----.</p>
-
-<p class="whs9"># | /|
- /|
- /|</p>
-
-<p class="whs9"># | /
- | / | /
- |</p>
-
-<p class="whs9"># | / |
- / | / |</p>
-
-<p class="whs9"># |/ |/
- |/
- |</p>
-
-<p class="whs9"># .----.----.----.</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">bb = [0, 0, 0, 0]</p>
-
-<p class="whs9">tt = [0, 0, 0, 0]</p>
-
-<p class="whs9">ff = [0, 0, 0, 0,
- 0, 0]</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">bb[0]
- = mesh.AddNode( 0., 0., 0.)</span></p>
-
-<p class="whs9">bb[1] = mesh.AddNode(10.,
- 0., 0.)</p>
-
-<p class="whs9">bb[2] = mesh.AddNode(20.,
- 0., 0.)</p>
-
-<p class="whs9">bb[3] = mesh.AddNode(30.,
- 0., 0.)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">tt[0] = mesh.AddNode(
- 0., 15., 0.)</p>
-
-<p class="whs9">tt[1] = mesh.AddNode(10.,
- 15., 0.)</p>
-
-<p class="whs9">tt[2] = mesh.AddNode(20.,
- 15., 0.)</p>
-
-<p class="whs9">tt[3] = mesh.AddNode(30.,
- 15., 0.)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">ff[0] = mesh.AddFace([bb[0],
- bb[1], tt[1]])</p>
-
-<p class="whs9">ff[1] = mesh.AddFace([bb[0],
- tt[1], tt[0]])</p>
-
-<p class="whs9">ff[2] = mesh.AddFace([bb[1],
- bb[2], tt[2]])</p>
-
-<p class="whs9">ff[3] = mesh.AddFace([bb[1],
- tt[2], tt[1]])</p>
-
-<p class="whs9">ff[4] = mesh.AddFace([bb[2],
- bb[3], tt[3]])</p>
-
-<p class="whs9">ff[5] = mesh.AddFace([bb[2],
- tt[3], tt[2]])</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># unite a set of triangles</p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">print
- "\nUnite a set of triangles ... ",</span></p>
-
-<p class="whs9">res = mesh.TriToQuad([ff[2],
- ff[3], ff[4], ff[5]], smesh.FT_MinimumAngle, 60.)</p>
-
-<p class="whs9">if not res: print
- "failed!"</p>
-
-<p class="whs9">else: print
- "done."</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">salome.sg.updateObjBrowser(1)
- </p>
-
-<h3><a name=bookmark12>Orientation</a></h3>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9">import smesh</p>
-
-<p class="whs9"> </p>
-
-<p># create an empty mesh structure</p>
-
-<p class="whs9">mesh = smesh.Mesh()
- </p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># build five quadrangles:</p>
-
-<p class="whs9">dx = 10</p>
-
-<p class="whs9">dy = 20</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">n1
- = mesh.AddNode(0.0
- * dx, 0, 0)</span></p>
-
-<p class="whs9">n2 =
- mesh.AddNode(1.0 * dx, 0, 0)</p>
-
-<p class="whs9">n3 =
- mesh.AddNode(2.0 * dx, 0, 0)</p>
-
-<p class="whs9">n4 =
- mesh.AddNode(3.0 * dx, 0, 0)</p>
-
-<p class="whs9">n5 =
- mesh.AddNode(4.0 * dx, 0, 0)</p>
-
-<p class="whs9">n6 =
- mesh.AddNode(5.0 * dx, 0, 0)</p>
-
-<p class="whs9">n7 =
- mesh.AddNode(0.0 * dx, dy, 0)</p>
-
-<p class="whs9">n8 =
- mesh.AddNode(1.0 * dx, dy, 0)</p>
-
-<p class="whs9">n9 =
- mesh.AddNode(2.0 * dx, dy, 0)</p>
-
-<p class="whs9">n10 = mesh.AddNode(3.0
- * dx, dy, 0)</p>
-
-<p class="whs9">n11 = mesh.AddNode(4.0
- * dx, dy, 0)</p>
-
-<p class="whs9">n12 = mesh.AddNode(5.0
- * dx, dy, 0)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">f1 = mesh.AddFace([n1,
- n2, n8 , n7 ])</p>
-
-<p class="whs9">f2 = mesh.AddFace([n2,
- n3, n9 , n8 ])</p>
-
-<p class="whs9">f3 = mesh.AddFace([n3,
- n4, n10, n9 ])</p>
-
-<p class="whs9">f4 = mesh.AddFace([n4,
- n5, n11, n10])</p>
-
-<p class="whs9">f5 = mesh.AddFace([n5,
- n6, n12, n11]) </p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># Change the orientation
- of the second and the fourth faces.</p>
-
-<p class="whs9">mesh.Reorient([2,
- 4])</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs9"> </p>
-
-<h3><a name=bookmark7>Cutting Quadrangles</a></h3>
-
-<p class="whs9">import SMESH_mechanic</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">smesh = SMESH_mechanic.smesh</p>
-
-<p class="whs9">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># cut two quadrangles:
- 405 and 406</p>
-
-<p class="whs9">mesh.QuadToTri([405,
- 406], smesh.FT_MinimumAngle) </p>
-
-<p class="whs10"> </p>
-
-<h3><a name=bookmark8>Smoothing</a></h3>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9">import geompy</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">import SMESH_mechanic</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">smesh
- = SMESH_mechanic.smesh</span></p>
-
-<p class="whs9">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># select the top face</p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">faces
- = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType["FACE"])</span></p>
-
-<p class="whs9">face = faces[3]</p>
-
-<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh,
- face, "face planar with hole")</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># create a group of
- faces to be smoothed</p>
-
-<p class="whs9">GroupSmooth = mesh.GroupOnGeom(face,
- "Group of faces (smooth)", smesh.FACE)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># perform smoothing</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># boolean SmoothObject(Object,
- IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method)</p>
-
-<p class="whs9">res = mesh.SmoothObject(GroupSmooth,
- [], 20, 2., smesh.CENTROIDAL_SMOOTH)</p>
-
-<p class="whs9">print "\nSmoothing
- ... ",</p>
-
-<p class="whs9">if not res: print
- "failed!"</p>
-
-<p class="whs9">else: print
- "done."</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs9"> </p>
-
-<h3><a name=bookmark9>Extrusion</a></h3>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9">import geompy</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">import SMESH_mechanic</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">smesh
- = SMESH_mechanic.smesh</span></p>
-
-<p class="whs9">mesh = SMESH_mechanic.mesh
- </p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># select the top face</p>
-
-<p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs9">face = faces[7]</p>
-
-<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh,
- face, "face circular top")</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># create a vector
- for extrusion</p>
-
-<p class="whs9">point = smesh.PointStruct(0.,
- 0., 5.)</p>
-
-<p class="whs9">vector = smesh.DirStruct(point)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># create a group to
- be extruded</p>
-
-<p class="whs9">GroupTri = mesh.GroupOnGeom(face,
- "Group of faces (extrusion)", smesh.FACE)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># perform extrusion
- of the group</p>
-
-<p class="whs9">mesh.ExtrusionSweepObject(GroupTri,
- vector, 5)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark10>Extrusion along a Path</a></h3>
-
-<p class="whs9">import math</p>
-
-<p class="whs9">import salome</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># Geometry</p>
-
-<p class="whs9">import geompy</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10"># 1. Create points</p>
-
-<p class="whs9">points = [[0, 0],
- [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">iv = 1</p>
-
-<p class="whs9">vertices = []</p>
-
-<p class="whs9">for point in points:</p>
-
-<p class="whs11">vert
- = geompy.MakeVertex(point[0], point[1], 0)</p>
-
-<p class="whs11">geompy.addToStudy(vert,
- "Vertex_" + `iv`)</p>
-
-<p class="whs11">vertices.append(vert)</p>
-
-<p class="whs11">iv
- += 1</p>
-
-<p class="whs11">pass</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10"># 2. Create edges and
- wires</p>
-
-<p class="whs9">Edge_straight = geompy.MakeEdge(vertices[0],
- vertices[4])</p>
-
-<p class="whs9">Edge_bezierrr = geompy.MakeBezier(vertices)</p>
-
-<p class="whs9">Wire_polyline = geompy.MakePolyline(vertices)</p>
-
-<p class="whs9">Edge_Circle =
- geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">geompy.addToStudy(Edge_straight,
- "Edge_straight")</p>
-
-<p class="whs9">geompy.addToStudy(Edge_bezierrr,
- "Edge_bezierrr")</p>
-
-<p class="whs9">geompy.addToStudy(Wire_polyline,
- "Wire_polyline")</p>
-
-<p class="whs9">geompy.addToStudy(Edge_Circle
- , "Edge_Circle")</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10"># 3. Explode wire on
- edges, as they will be used for mesh extrusion</p>
-
-<p class="whs9">Wire_polyline_edges
- = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType["EDGE"])</p>
-
-<p class="whs9">for ii in range(len(Wire_polyline_edges)):</p>
-
-<p class="whs11">geompy.addToStudyInFather(Wire_polyline,
- Wire_polyline_edges[ii], "Edge_" + `ii + 1`)</p>
-
-<p class="whs11">pass</p>
-
-<p class="whs12"> </p>
-
-<p class="whs10"># Mesh</p>
-
-<p class="whs9">import smesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs13"># Mesh
- the given shape with the given 1d hypothesis</p>
-
-<p class="whs14">def
- Mesh1D(shape1d, nbSeg, name):</p>
-
-<p class="whs14"> mesh1d_tool
- = smesh.Mesh(shape1d, name)</p>
-
-<p class="whs14"> algo
- = mesh1d_tool.Segment()</p>
-
-<p class="whs14"> hyp
- = algo.NumberOfSegments(nbSeg)</p>
-
-<p class="whs14"> isDone
- = mesh1d_tool.Compute()</p>
-
-<p class="whs14"> if
- not isDone: print 'Mesh ', name, ': computation failed'</p>
-
-<p class="whs14"> return
- mesh1d_tool</p>
-
-<p class="whs13"># Create
- a mesh with six nodes, seven edges and two quadrangle faces</p>
-
-<p class="whs14">def
- MakeQuadMesh2(mesh_name):</p>
-
-<p class="whs14"> quad_1
- = smesh.Mesh(name = mesh_name)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs14"> <span
- style="font-family: 'Times New Roman', serif;">#
- six nodes</span></p>
-
-<p class="whs14"> n1
- = quad_1.AddNode(0, 20, 10)</p>
-
-<p class="whs14"> n2
- = quad_1.AddNode(0, 40, 10)</p>
-
-<p class="whs14"> n3
- = quad_1.AddNode(0, 40, 30)</p>
-
-<p class="whs14"> n4
- = quad_1.AddNode(0, 20, 30)</p>
-
-<p class="whs14"> n5
- = quad_1.AddNode(0, 0,
- 30)</p>
-
-<p class="whs14"> n6
- = quad_1.AddNode(0, 0,
- 10)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs14"> <span
- style="font-family: 'Times New Roman', serif;">#
- seven edges</span></p>
-
-<p class="whs14"> quad_1.AddEdge([n1,
- n2]) # 1</p>
-
-<p class="whs14"> quad_1.AddEdge([n2,
- n3]) # 2</p>
-
-<p class="whs14"> quad_1.AddEdge([n3,
- n4]) # 3</p>
-
-<p class="whs14"> quad_1.AddEdge([n4,
- n1]) # 4</p>
-
-<p class="whs14"> quad_1.AddEdge([n4,
- n5]) # 5</p>
-
-<p class="whs14"> quad_1.AddEdge([n5,
- n6]) # 6</p>
-
-<p class="whs14"> quad_1.AddEdge([n6,
- n1]) # 7</p>
-
-<p class="whs14"> </p>
-
-<p class="whs14"> <span
- style="font-family: 'Times New Roman', serif;">#
- two quadrangle faces</span></p>
-
-<p class="whs14"> quad_1.AddFace([n1,
- n2, n3, n4]) # 8</p>
-
-<p class="whs14"> quad_1.AddFace([n1,
- n4, n5, n6]) # 9</p>
-
-<p class="whs14"> return
- [quad_1, [1,2,3,4,5,6,7], [8,9]]</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># Path
- meshes</p>
-
-<p class="whs14">Edge_straight_mesh
- = Mesh1D(Edge_straight, 7, "Edge_straight")</p>
-
-<p class="whs14">Edge_bezierrr_mesh
- = Mesh1D(Edge_bezierrr, 7, "Edge_bezierrr")</p>
-
-<p class="whs14">Wire_polyline_mesh
- = Mesh1D(Wire_polyline, 3, "Wire_polyline")</p>
-
-<p class="whs14">Edge_Circle_mesh
- =
- Mesh1D(Edge_Circle ,
- 8, "Edge_Circle")</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># Initial
- meshes (to be extruded)</p>
-
-<p class="whs14">[quad_1,
- ee_1, ff_1] = MakeQuadMesh2("quad_1")</p>
-
-<p class="whs14">[quad_2,
- ee_2, ff_2] = MakeQuadMesh2("quad_2")</p>
-
-<p class="whs14">[quad_3,
- ee_3, ff_3] = MakeQuadMesh2("quad_3")</p>
-
-<p class="whs14">[quad_4,
- ee_4, ff_4] = MakeQuadMesh2("quad_4")</p>
-
-<p class="whs14">[quad_5,
- ee_5, ff_5] = MakeQuadMesh2("quad_5")</p>
-
-<p class="whs14">[quad_6,
- ee_6, ff_6] = MakeQuadMesh2("quad_6")</p>
-
-<p class="whs14">[quad_7,
- ee_7, ff_7] = MakeQuadMesh2("quad_7")</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># ExtrusionAlongPath</p>
-
-<p class="whs13"># IDsOfElements,
- PathMesh, PathShape, NodeStart,</p>
-
-<p class="whs13"># HasAngles,
- Angles, HasRefPoint, RefPoint</p>
-
-<p class="whs14">refPoint
- = smesh.PointStruct(0, 0, 0)</p>
-
-<p class="whs14">a10
- = 10.0*math.pi/180.0</p>
-
-<p class="whs14">a45
- = 45.0*math.pi/180.0</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 1.
- Extrusion of two mesh edges along a straight path</p>
-
-<p class="whs14">error
- = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight,
- 1,</p>
-
-<p class="whs14"> 0,
- [], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 2.
- Extrusion of one mesh edge along a curved path</p>
-
-<p class="whs14">error
- = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
-
-<p class="whs14"> 0,
- [], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 3.
- Extrusion of one mesh edge along a curved path with usage of angles</p>
-
-<p class="whs14">error
- = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
-
-<p class="whs14"> 1,
- [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 4.
- Extrusion of one mesh edge along the path, which is a part of a meshed
- wire</p>
-
-<p class="whs14">error
- = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh, Wire_polyline_edges[0],
- 1,</p>
-
-<p class="whs14"> 1,
- [a10, a10, a10], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 5.
- Extrusion of two mesh faces along the path, which is a part of a meshed
- wire</p>
-
-<p class="whs14">error
- = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh, Wire_polyline_edges[2],
- 4,</p>
-
-<p class="whs14"> 0,
- [], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 6.
- Extrusion of two mesh faces along a closed path</p>
-
-<p class="whs14">error
- = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1,</p>
-
-<p class="whs14"> 0,
- [], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs13"># 7.
- Extrusion of two mesh faces along a closed path with usage of angles</p>
-
-<p class="whs14">error
- = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1,</p>
-
-<p class="whs14"> 1,
- [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint)</p>
-
-<p class="whs14"> </p>
-
-<p class="whs14">salome.sg.updateObjBrowser(1)
- </p>
-
-<h3><a name=bookmark11>Revolution</a></h3>
-
-<p class="whs9">import math</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">import SMESH_mechanic</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-family: 'Lucida Console', monospace;">mesh
- = SMESH_mechanic.mesh</span></p>
-
-<p class="whs9">smesh = SMESH_mechanic.smesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># create a group of faces
- to be revolved</p>
-
-<p class="whs9">FacesRotate = [492,
- 493, 502, 503]</p>
-
-<p class="whs9">GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group
- of faces (rotate)")</p>
-
-<p class="whs9">GroupRotate.Add(FacesRotate)</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10"># define revolution angle
- and axis</p>
-
-<p class="whs9">angle45 = 45 * math.pi
- / 180</p>
-
-<p class="whs9">axisXYZ = SMESH.AxisStruct(-38.3128,
- -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"># perform revolution
- of an object</p>
-
-<p class="whs9">mesh.RotationSweepObject(GroupRotate,
- axisXYZ, angle45, 4, 1e-5) </p>
-
-<p class="whs10"> </p>
-
-<h3><a name=bookmark13>Pattern Mapping</a></h3>
-
-<p class="whs9">import geompy</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9">import smesh</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"># define the geometry</p>
-
-<p class="whs10">Box_1 = geompy.MakeBoxDXDYDZ(200.,
- 200., 200.)</p>
-
-<p class="whs10">geompy.addToStudy(Box_1,
- "Box_1")</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">faces = geompy.SubShapeAll(Box_1,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs10">Face_1 = faces[0]</p>
-
-<p class="whs10">Face_2 = faces[1]</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">geompy.addToStudyInFather(Box_1,
- Face_1, "Face_1")</p>
-
-<p class="whs10">geompy.addToStudyInFather(Box_1,
- Face_2, "Face_2")</p>
-
-<p class="whs10"> </p>
-
-<p class="whs9"># build a quadrangle
- mesh 3x3 on Face_1</p>
-
-<p class="whs10">Mesh_1 = smesh.Mesh(Face_1)</p>
-
-<p class="whs10">algo1D = Mesh_1.Segment()</p>
-
-<p class="whs10">algo1D.NumberOfSegments(3)</p>
-
-<p class="whs10">Mesh_1.Quadrangle()</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">isDone = Mesh_1.Compute()</p>
-
-<p class="whs10">if not isDone: print
- 'Mesh Mesh_1 : computation failed'</p>
-
-<p class="whs10"> </p>
-
-<p class="whs9"># build a triangle
- mesh on Face_2</p>
-
-<p class="whs10">Mesh_2 = smesh.Mesh(Face_2)</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">algo1D = Mesh_2.Segment()</p>
-
-<p class="whs10">algo1D.NumberOfSegments(1)</p>
-
-<p class="whs10">algo2D = Mesh_2.Triangle()</p>
-
-<p class="whs10">algo2D.MaxElementArea(240)</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">isDone = Mesh_2.Compute()</p>
-
-<p class="whs10">if not isDone: print
- 'Mesh Mesh_2 : computation failed'</p>
-
-<p class="whs10"> </p>
-
-<p class="whs9"># create a pattern</p>
-
-<p class="whs10">pattern = smesh.GetPattern()</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(),
- Face_2, 0)</p>
-
-<p class="whs10">if (isDone != 1): print
- 'LoadFromFace :', pattern.GetErrorCode()</p>
-
-<p class="whs10"> </p>
-
-<p class="whs9"># apply the pattern
- to a face of the first mesh</p>
-
-<p class="whs10">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(),
- [17], 0, 0)</p>
-
-<p class="whs10"> </p>
-
-<p class="whs10">isDone = pattern.MakeMesh(Mesh_1.GetMesh(),
- 0, 0)</p>
-
-<p class="whs10">if (isDone != 1): print
- 'MakeMesh :', pattern.GetErrorCode() </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Netgen 2D and 3D hypotheses</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-left:0px; }\r
-img_whs2 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
-p.whs3 { margin-left:40px; }\r
-img_whs4 { border:none; width:365px; height:353px; float:none; border-style:none; }\r
-ul.whs5 { list-style:disc; }\r
-p.whs6 { margin-left:40px; margin-top:0px; margin-bottom:0px; }\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-left:1pt; }";\r
- strNSS += "p.whs6 {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\nCreating meshes\nDefining hypotheses\nNetgen 2D and 3D hypotheses");\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>Netgen 2D and 3D hypotheses</h1>\r
-\r
-<p class="whs1"><span style="font-weight: bold;"><B><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs2"> Netgen 2D</B></span> and <span style="font-weight: bold;"><B>Netgen</B></span> \r
- <span style="font-weight: bold;"><B>3D</B></span> hypotheses work only with <span \r
- style="font-weight: bold;"><B>Netgen 1D-2D</B></span> and <span style="font-weight: bold;"><B>Netgen</B></span> \r
- <span style="font-weight: bold;"><B>1D-2D-3D </B></span>algorithms. These algorithms \r
- do not require definition of lower-level hypotheses \r
- and algorithms (2D and 1D for meshing 3D objects and 1D for meshing 2D \r
- objects). They prove to be useful if lower-level meshing is homogeneous \r
- for all wires and faces of the meshed object.</p>\r
-\r
-<p class="whs3"><img src="pics/netgen2d.png" x-maintain-ratio="TRUE" width="365px" height="353px" border="0" class="img_whs4"></p>\r
-\r
-<ul type="disc" class="whs5">\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Name</B></span> \r
- - allows to define the name for the algorithm (Netgen 2D (or 3D) Parameters \r
- by default)</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Max \r
- Size</B></span> - maximum linear dimensions for mesh cells.</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Second \r
- Order</B></span> - if this box is checked in, the algorithm will create second \r
- order nodes on the mesh, which actually will become <a href="adding_quadratic_nodes_and_elements.htm">Quadratic</a>. \r
- </p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Fineness</B></span> \r
- - ranging from Very Coarse to Very Fine allows to set the level of meshing \r
- detalization using the three parameters below. You can select Custom to \r
- define them manually.</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Growth \r
- rate</B></span> - allows to define how much the linear dimensions of two adjacent \r
- cells can differ (i.e. 0.3 means 30%).</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Nb. \r
- Segs per Edge</B></span> and<span style="font-weight: bold;"><B> Nb Segs per \r
- Radius</B></span> - allows to define the minimum number of mesh segments in \r
- which edges and radiuses will be split. </p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Allow \r
- Quadrangles</B></span> - allows to use quadrangle elements in a triangle 2D \r
- mesh. This checkbox is not present in Netgen 3D parameters because currently \r
- building a tetrahedral mesh with quadrangle faces is not possible.</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Optimize</B></span> \r
- - if this box is checked in, the algorithm will try to create regular \r
- (possessing even sides) elements.</p></li>\r
-</ul>\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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Pattern mapping</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-img_whs1 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; width:626px; height:471px; border-style:none; }
-img_whs4 { border:none; width:22px; height:28px; border-style:none; }
-table.whs5 { x-cell-content-align:top; width:64.066%; border-spacing:0px; }
-col.whs6 { width:56.089%; }
-col.whs7 { width:43.911%; }
-tr.whs8 { x-cell-content-align:top; }
-td.whs9 { width:56.089%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-p.whs10 { margin-right:0px; }
-img_whs11 { border:none; width:306px; height:632px; float:none; border-style:none; }
-td.whs12 { width:43.911%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs13 { border:none; width:306px; height:670px; float:none; border-style:none; }
-img_whs14 { border:none; width:34px; height:34px; border-style:none; }
-table.whs15 { x-cell-content-align:top; width:68.686%; border-spacing:0px; }
-col.whs16 { width:50.224%; }
-col.whs17 { width:49.776%; }
-td.whs18 { width:50.224%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs19 { border:none; width:306px; height:428px; float:none; border-style:none; }
-td.whs20 { width:49.776%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs21 { border:none; width:306px; height:248px; float:none; border-style:none; }
-p.whs22 { margin-left:0px; }
-img_whs23 { border:none; width:554px; height:279px; border-style:none; }
-img_whs24 { border:none; width:572px; height:233px; border-style:none; }
-img_whs25 { border:none; width:606px; height:249px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs10 {margin-right:1pt; }";
- strNSS += "p.whs22 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nPattern mapping");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Pattern mapping</h1>
-
-<h3>About patterns</h3>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> The pattern describes a mesh to generate: positions of
- nodes within a geometrical domain and nodal connectivity of elements.
- As well, a pattern specifies the so-called key-points, i.e. nodes that
- will be located at geometrical vertices. Pattern description is stored
- in <pattern_name>.smp file.</p>
-
-<p> </p>
-
-<p>The smp file contains 4 sections:</p>
-
-<p> </p>
-
-<p class="whs2">1. The first line holds the number of nodes
- (N).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">2. The next N lines describe nodes coordinates.
- Each line holds 2 coordinates of a node.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">3. A key-points line: indices of nodes to
- be mapped on geometrical vertices. An index n refers to a node described
- on an n-th line of section 2. The first node index is zero.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">4. The rest lines describe nodal connectivity
- of elements, one line for an element. A line holds indices of nodes forming
- an element. An index n refers to a node described on an n-th line of the
- section 2. The first node index is zero. There must be 3 or 4 indices
- on a line: only 2d elements are allowed.</p>
-
-<p class="whs2"> </p>
-
-<p>The 2D pattern must contain at least one element and at least one key-point.
- All key-points must lay on boundaries.</p>
-
-<p> </p>
-
-<p>An example of a simple smp file and a preview of a pattern described
- in this file:</p>
-
-<p> </p>
-
-<p><img src="image94.gif" width="626px" height="471px" border="0" class="img_whs3"></p>
-
-<p> </p>
-
-<p> </p>
-
-<h3>Application of pattern mapping</h3>
-
-<p class=TODO>To apply pattern mapping to a geometrical object:</p>
-
-<p class=TODO> </p>
-
-<p class="whs2">1. From the <span style="font-weight: bold;"><B>Modification
- </B></span>menu choose the <span style="font-weight: bold;"><B>Pattern Mapping
- </B></span>item or click <img src="image98.gif" width="22px" height="28px" border="0" class="img_whs4"> button in the toolbar. The following
- dialog box shall appear:</p>
-
-<p class="whs2"> </p>
-
-<table x-use-null-cells cellspacing="0" width="64.066%" class="whs5">
-<col class="whs6">
-<col class="whs7">
-
-<tr valign="top" class="whs8">
-<td width="56.089%" class="whs9">
-<p class="whs10"><img src="pics/patternmapping1.png" x-maintain-ratio="TRUE" width="306px" height="632px" border="0" class="img_whs11"></td>
-<td width="43.911%" class="whs12">
-<p><img src="pics/patternmapping2.png" x-maintain-ratio="TRUE" width="306px" height="670px" border="0" class="img_whs13"></td></tr>
-</table>
-
-<p class="whs2"> </p>
-
-<p>To apply a pattern to a geometrical object, you should specify:</p>
-
-<p class="whs2">- a face having the number of vertices equal
- to the number of key-points in the pattern; the number of key-points on
- internal boundaries of a pattern must also be equal to the number of vertices
- on internal boundaries of a face;</p>
-
-<p class="whs2">- a vertex to which the first key-point should
- be mapped,</p>
-
-<p class="whs2">- reverse or not the order of key-points.
- (The order of vertices of a face is counterclockwise looking from outside).</p>
-
-<p> </p>
-
-<p>Then you either load a .smp pattern file previously created manually
- by clicking on the <img src="image108.gif" width="34px" height="34px" border="0" class="img_whs14"> button, or click on the <span style="font-weight: bold;"><B>New</B></span>
- button for automatic generation.</p>
-
-<p>For an automatic generation you just specify a geometrical face having
- a mesh built on it. Mesh nodes lying on face vertices become key-points.
- Additionally, you may choose the way of getting nodes coordinates by <span
- style="font-weight: bold;"><B>projecting nodes on the face</B></span> instead
- of using "positions on face" generated by mesher (if there is
- any). Faces having a seam edge can\92t be used for automatic pattern creation.</p>
-
-<p> </p>
-
-<p>When creating a pattern from an existing mesh, there are two possible
- cases:</p>
-
-<p> </p>
-
-<p>1. A sub-mesh on face is selected. A pattern is created from the 2d
- elements bound to a face by mesher. Node coordinates are either "positions
- on face" computed by mesher, or coordinates got by node projection
- on a geometrical surface, according to your choice.</p>
-
-<p>2. A mesh where the main shape is a face, is selected. A pattern is
- created from all the 2d elements in a mesh. If all mesh elements are build
- by mesher, the user can select the way of getting nodes coordinates, else
- all nodes are projected on a face surface.</p>
-
-<table x-use-null-cells cellspacing="0" width="68.686%" class="whs15">
-<col class="whs16">
-<col class="whs17">
-
-<tr valign="top" class="whs8">
-<td width="50.224%" class="whs18">
-<p><img src="pics/a-patterntype.png" x-maintain-ratio="TRUE" width="306px" height="428px" border="0" class="img_whs19"></td>
-<td width="49.776%" class="whs20">
-<p><img src="pics/a-patterntype1.png" x-maintain-ratio="TRUE" width="306px" height="248px" border="0" class="img_whs21"></td></tr>
-</table>
-
-<p> </p>
-
-<h3>Mapping algorithm:</h3>
-
-<p class="whs22">The mapping algorithm is as follows:</p>
-
-<p class="whs22"> </p>
-
-<p class="whs2">1. Key-points are set in the order that they
- are encountered when walking along a pattern boundary so that elements
- are on the left. The first key-point is preserved.</p>
-
-<p class="whs2">2. Find geometrical vertices corresponding
- to key-points by vertices order in a face boundary; here, "Reverse
- order of key-points" flag is taken into account.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><img src="image95.gif" width="554px" height="279px" border="0" class="img_whs23"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">3. Boundary nodes of a pattern are mapped
- onto edges of a face: a node located between certain key-points on a pattern
- boundary is mapped on a geometrical edge limited by corresponding geometrical
- vertices. Node position on an edge reflects its distance from two key-points.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><img src="image96.gif" width="572px" height="233px" border="0" class="img_whs24"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">4. Coordinates of a non-boundary node in
- a parametric space of a face are defined as following. In a parametric
- space of a pattern, a node lays at the intersection of two iso-lines,
- each of which intersects a pattern boundary at least at two points. Knowing
- mapped positions of boundary nodes, we find where isoline-boundary intersection
- points are mapped to, and hence we can find mapped isolines direction
- and then, two node positions on two mapped isolines. The eventual mapped
- position of a node is found as an average of positions on mapped isolines.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><img src="image97.gif" width="606px" height="249px" border="0" class="img_whs25"></p>
-
-<p class="whs2"> </p>
-
-<p> <span style="font-weight: bold;"><B>See
- Also</B></span> a sample TUI Script of a <a href="modifying_meshes.htm#bookmark13">Pattern
- Mapping</a><a href="modifying_meshes.htm#bookmark11"> </a>operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Presentation</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; }
-img_whs2 { border:none; height:274px; width:260px; border-style:none; }
-p.whs3 { font-weight:bold; margin-left:40px; }
-img_whs4 { border:none; height:285px; width:261px; border-style:none; }
-p.whs5 { font-weight:bold; }
-img_whs6 { border:none; width:263px; height:277px; border-style:none; }
-p.whs7 { font-weight:normal; }
-img_whs8 { border:none; height:287px; width:259px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nViewing meshes\nDisplay Mode");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Display Mode</h1>
-
-<p>By default your objects are represented as set in <span style="font-weight: bold;"><B>Preferences.</B></span></p>
-
-<p>However, right-clicking on the mesh in the <span style="font-weight: bold;"><B>Object
- Browser, </B></span>and selecting<span style="font-weight: bold;"><B> Display
- Mode, </B></span>you can display your mesh as<span style="font-weight: bold;"><B>:
- </B></span></p>
-
-<p> </p>
-
-<p class="whs1"><span style="font-weight: bold;"><B>Wireframe
- </B></span></p>
-
-<p class="whs1"><img src="image53.gif" height="274px" width="260px" border="0" class="img_whs2"></p>
-
-<p> </p>
-
-<p class="whs1"><span style="font-weight: bold;"><B>Shading</B></span></p>
-
-<p class="whs3"><img src="image37.jpg" height="285px" width="261px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs3"><span style="font-weight: normal;">or
- </span>Nodes.</p>
-
-<p class="whs3"><img src="image56.gif" width="263px" height="277px" border="0" class="img_whs6"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">Wireframe <span style="font-weight: normal;">can
- combine with</span> Nodes<span style="font-weight: normal;"> and</span>
- Shading.</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">Shading<span style="font-weight: normal;">
- and</span> Wireframe<span style="font-weight: normal;"> modes can combine
- with</span> Shrink, <span style="font-weight: normal;">however</span>
- Nodes <span style="font-weight: normal;">can't.</span></p>
-
-<p class="whs7"><img src="image55.gif" height="287px" width="259px" border="0" class="img_whs8"></p>
-
-<p class="whs5"> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>3D extrusion meshing algorithm</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-left:24px; margin-top:0pt; margin-bottom:0pt; }\r
-img_whs2 { border:none; width:324px; height:337px; border-style:none; }\r
-p.whs3 { margin-top:0pt; margin-bottom:0pt; margin-left:0px; }\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.whs3 {margin-top:1pt;margin-bottom:1pt;margin-left: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\nCreating meshes\nDefining Algorithms\n3D extrusion meshing algorithm");\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>3D extrusion meshing algorithm</h1>\r
-\r
-<p>3D extrusion algorithm can be used for meshing prisms, i.e.\r
-<span style="font-weight: bold;"><B>3D Shapes</B></span> defined by\r
- two opposing faces having the same number of vertices and edges and meshed using the \r
- <a href="projection_algorithms.htm">2D Projection</a> algorithm. These \r
- two faces should be connected by quadrangle "side" faces.</p>\r
-\r
-<p><span style="margin-left: 24px;\r
- margin-top: 0pt;\r
- margin-bottom: 0pt;">The opposing faces can be meshed with \r
- either quadrangles or triangles, while the side faces should be meshed \r
- with quadrangles only. </span></p>\r
-\r
-<p class="whs1"><img src="image157.gif" width="324px" height="337px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs3">As you can see, the <span style="font-weight: bold;"><B>3D extrusion</B></span> \r
- algorithm permits to build and to have in the same 3D mesh such elements \r
- as hexahedrons, prisms and polyhedrons.</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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Projection Algorithms</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
-img_whs2 { border:none; width:30px; height:29px; border-style:none; }\r
-p.whs3 { margin-left:40px; }\r
-img_whs4 { border:none; width:270px; height:285px; float:none; border-style:none; }\r
-img_whs5 { border:none; width:30px; height:29px; border-style:none; }\r
-img_whs6 { border:none; width:280px; height:351px; float:none; }\r
-p.whs7 { margin-left:0px; }\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.whs7 {margin-left: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\nCreating meshes\nDefining Algorithms\nProjection Algorithms");\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>Projection Algorithms</h1>\r
-\r
-<p class="whs1">Projection algorithms allow \r
- to define the mesh of a geometrical object by the projection of another \r
- already meshed geometrical object. </p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1"><span style="font-weight: bold;"><B>Projection \r
- 1D</B></span> algorithm permits to define the mesh of an edge by the projection \r
- of another already meshed edge.</p>\r
-\r
-<p class="whs1">To apply this algorithm \r
- select the edge to be meshed (indicated in the field <span style="font-weight: bold;"><B>Geometry</B></span> \r
- of<span style="font-weight: bold;"><B> Create mesh</B></span> dialog box), <span \r
- style="font-weight: bold;"><B>Projection 1D</B></span> in the list of 1D algorithms \r
- and click the <img src="image122.gif" width="30px" height="29px" border="0" class="img_whs2"> button. The following dialog box will appear: \r
- </p>\r
-\r
-<p class="whs3"><img src="pics/projection_1d.png" x-maintain-ratio="TRUE" width="270px" height="285px" border="0" class="img_whs4"></p>\r
-\r
-<p>In this menu you can define the <span style="font-weight: bold;"><B>Name</B></span> \r
- of the algorithm, the algeady meshed source <span style="font-weight: bold;"><B>Edge</B></span> \r
- and the <span style="font-weight: bold;"><B>Mesh</B></span> (optional, use it \r
- if there are several different meshes on the same edge). It could also \r
- be necessary to define the orientation of edges, which is done by indicating \r
- the <span style="font-weight: bold;"><B>Source Vertex</B></span> being the first \r
- point of the Source Edge and the <span style="font-weight: bold;"><B>Target \r
- Vertex </B></span>being the first point of the created <span style="font-weight: bold;"><B>Edge.</B></span></p>\r
-\r
-<p><span style="font-weight: bold;"><B>Projection 2D</B></span> algorithm<span \r
- style="font-weight: bold;"> <B></B></span>permits to define the mesh of a face \r
- by the projection of another already meshed face. This algorithm works \r
- only if all edges of the<span style="font-weight: bold;"> <B></B></span>target \r
- face have been meshed as 1D Projections of the edges of the source face.</p>\r
-\r
-<p>To apply this algorithm select the face to be meshed (indicated in the \r
- field <span style="font-weight: bold;"><B>Geometry</B></span> of<span style="font-weight: bold;"><B> \r
- Create mesh</B></span> dialog box), <span style="font-weight: bold;"><B>Projection \r
- 2D</B></span> in the list of 2D algorithms and click the <img src="image122.gif" width="30px" height="29px" border="0" class="img_whs5"> button. \r
- The following dialog box will appear: </p>\r
-\r
-<p class="whs3"><img src="pics/projection_2d.png" x-maintain-ratio="TRUE" width="280px" height="351px" border="0" class="img_whs6"></p>\r
-\r
-<p>In this menu you can define the <span style="font-weight: bold;"><B>Name</B></span> \r
- of the algorithm, the algeady meshed source <span style="font-weight: bold;"><B>Face</B></span> \r
- and the <span style="font-weight: bold;"><B>Mesh</B></span> (optional, use it \r
- if there are several different meshes on the same face). It could also \r
- be necessary to define the orientation of mesh on the face, which is done \r
- by indicating two <span style="font-weight: bold;"><B>Source Vertices, </B></span>which \r
- belong to the same edge of the<span style="font-weight: bold;"> <B></B></span>source \r
- face, and two<span style="font-weight: bold;"><B> Target Vertices,</B></span> \r
- which belong to the same edge of the created<span style="font-weight: bold;"><B> \r
- Face. </B></span></p>\r
-\r
-<p><span style="font-weight: bold;"><B>Projection 3D</B></span> algorithm permits \r
- to define the mesh of a shape by the projection of another already meshed \r
- shape. This \r
- algorithm works only if all faces and edges of the<span style="font-weight: bold;"> \r
- <B></B></span>target face have been meshed as 1D Projections of the faces and \r
- edges of the source face. Another limitation is that this algorithm currently \r
- works only on boxes. </p>\r
-\r
-<p>To apply this algorithm select the solid to be meshed (indicated in \r
- the field <span style="font-weight: bold;"><B>Geometry</B></span> of<span style="font-weight: bold;"><B> \r
- Create mesh</B></span> dialog box), <span style="font-weight: bold;"><B>Projection \r
- 3D</B></span> in the list of 3D algorithms and click the <img src="image122.gif" width="30px" height="29px" border="0" class="img_whs5"> button. \r
- The following dialog box will appear: </p>\r
-\r
-<p class="whs3"><img src="pics/projection_3d.png" x-maintain-ratio="TRUE" width="280px" height="351px" border="0" class="img_whs6"></p>\r
-\r
-<p class="whs7">In this menu you can define the <span style="font-weight: bold;"><B>Name</B></span> \r
- of the algorithm, the algeady meshed source <span style="font-weight: bold;"><B>3D \r
- shape</B></span> and the <span style="font-weight: bold;"><B>Mesh</B></span> (optional, \r
- use it if there are several different meshes on the same shape). It could \r
- also be necessary to define the orientation of mesh on the shape, which \r
- is done by indicating two <span style="font-weight: bold;"><B>Source Vertices,</B></span> \r
- which belong to the same edge of the<span style="font-weight: bold;"> \r
- <B></B></span>source <span style="font-weight: bold;"><B>3D Shape,</B></span> and two<span \r
- style="font-weight: bold;"><B> Target Vertices,</B></span> which belong to the \r
- same edge of the<span style="font-weight: bold;"> <B></B></span>source <span \r
- style="font-weight: bold;"><B>3D Shape. </B></span></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Quality Controls</title>
-<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 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-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 +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nQuality Controls");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Quality Controls</h1>
-
-<h3><a name=bookmark>Free Borders</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create open shell: a
- box without one plane</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">box
- = geompy.MakeBox(0., 0., 0., 20., 20., 15.)</span></p>
-
-<p class="whs1">FaceList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">FaceList.remove(FaceList[5])</p>
-
-<p class="whs1">box = geompy.MakeShell(FaceList)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a mesh</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh
- = smesh.Mesh(box, "Mesh_free_borders")</span></p>
-
-<p class="whs1">algo = mesh.Segment()</p>
-
-<p class="whs1">algo.NumberOfSegments(5)</p>
-
-<p class="whs1">algo = mesh.Triangle()</p>
-
-<p class="whs1">algo.MaxElementArea(20.)</p>
-
-<p class="whs1">mesh.Compute() </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># criterion : free borders</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.EDGE, smesh.FT_FreeBorders)</span><span style="margin-top: 0pt;
- margin-bottom: 0pt;
- font-family: 'Lucida Console', monospace;"> </span></p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Free borders Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE,
- "Free borders")</p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark1>Borders at Multiconnection</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs1">import SMESH</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create open shell:
- a box without one plane</p>
-
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">FaceList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">FaceList.remove(FaceList[5])</p>
-
-<p class="whs1">box = geompy.MakeShell(FaceList)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a mesh</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh
- = smesh.Mesh(box, "Mesh_borders_at_multi-connections")</span></p>
-
-<p class="whs1">algo = mesh.Segment()</p>
-
-<p class="whs1">algo.NumberOfSegments(5)</p>
-
-<p class="whs1">algo = mesh.Triangle()</p>
-
-<p class="whs1">algo.MaxElementArea(20.)</p>
-
-<p class="whs1">mesh.Compute() </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : Borders
- at multi-connection</p>
-
-<p class="whs1">nb_conn = 2</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.EDGE, smesh.FT_MultiConnection, smesh.FT_EqualTo,
- nb_conn)</span></p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Borders at multi-connections Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE,
- "Borders at multi-connections")</p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<h3><a name=bookmark2>Length 1D</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create open shell: a
- box without one plane</p>
-
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">FaceList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">FaceList.remove(FaceList[5])</p>
-
-<p class="whs1">box = geompy.MakeShell(FaceList)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a mesh</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh
- = smesh.Mesh(box, "Mesh_Length_1D")</span></p>
-
-<p class="whs1">algo = mesh.Segment()</p>
-
-<p class="whs1">algo.NumberOfSegments(5)</p>
-
-<p class="whs1">algo = mesh.Triangle()</p>
-
-<p class="whs1">algo.MaxElementArea(20.)</p>
-
-<p class="whs1">mesh.Compute() </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># Criterion : Length >
- 3.</p>
-
-<p class="whs1">length_margin =
- 3.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.EDGE, smesh.FT_Length, smesh.FT_MoreThan, length_margin)</span></p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Edges length > ", length_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE,
- "Edges with length > " + `length_margin`)</p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark3>Free Edges</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Remove some elements
- to obtain free edges</p>
-
-<p class="whs3"># Criterion : AREA
- > 95.</p>
-
-<p class="whs1">area_margin = 95.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, area_margin)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">mesh.RemoveElements(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : Free
- Edges</p>
-
-<p class="whs1">aBorders = mesh.GetFreeBorders()
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create groups</p>
-
-<p class="whs1">aGroupF = mesh.CreateGroup(SMESH.FACE,
- "Faces with free edges")</p>
-
-<p class="whs1">aGroupN = mesh.CreateGroup(SMESH.NODE,
- "Nodes on free edges")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># fill groups with
- elements, corresponding to the criterion</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1">print "Criterion:
- Free edges Nb = ", len(aBorders)</p>
-
-<p class="whs1">for i in range(len(aBorders)):</p>
-
-<p class="whs1"> aBorder
- = aBorders[i]</p>
-
-<p class="whs1"> print
- "Face # ", aBorder.myElemId, " : Edge between nodes (",</p>
-
-<p class="whs1"> print
- aBorder.myPnt1, ", ", aBorder.myPnt2, ")"</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> <span
- style="margin-top: 0pt;
- margin-bottom: 0pt;
- font-family: 'Lucida Console', monospace;">aGroupF.Add([aBorder.myElemId])</span></p>
-
-<p class="whs1"> aGroupN.Add([aBorder.myPnt1,
- aBorder.myPnt2])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark4>Length 2D</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create open shell:
- a box without one plane</p>
-
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">FaceList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">FaceList.remove(FaceList[5])</p>
-
-<p class="whs1">box = geompy.MakeShell(FaceList)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a mesh</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh
- = smesh.Mesh(box, "Mesh_Length_2D")</span></p>
-
-<p class="whs1">algo = mesh.Segment()</p>
-
-<p class="whs1">algo.NumberOfSegments(5)</p>
-
-<p class="whs1">algo = mesh.Triangle()</p>
-
-<p class="whs1">algo.MaxElementArea(20.)</p>
-
-<p class="whs1">mesh.Compute()</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : Length
- 2D > 5.7</p>
-
-<p class="whs1">length_margin =
- 5.7</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_Length2D, smesh.FT_MoreThan, length_margin)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Edges length 2D > ", length_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Faces with length 2D > "
- + `length_margin`)</span></p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs2"> </p>
-
-<h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># create a compound
- of two glued boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">box2 = geompy.MakeTranslation(box1,
- 0., 20., 0)</p>
-
-<p class="whs1">comp = geompy.MakeCompound([box1,
- box2])</p>
-
-<p class="whs1">box = geompy.MakeGlueFaces(comp,
- 0.000001)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a mesh</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh
- = smesh.Mesh(box, "Box compound : 2D triangle mesh")</span></p>
-
-<p class="whs1">algo = mesh.Segment()</p>
-
-<p class="whs1">algo.NumberOfSegments(5)</p>
-
-<p class="whs1">algo = mesh.Triangle()</p>
-
-<p class="whs1">algo.MaxElementArea(20.)</p>
-
-<p class="whs1">mesh.Compute() </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : MULTI-CONNECTION
- 2D = 3</p>
-
-<p class="whs1">nb_conn = 3</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_MultiConnection2D, smesh.FT_EqualTo,
- nb_conn)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Borders at multi-connection 2D = ", nb_conn, " Nb = ",
- len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Borders at multi-connection
- 2D = " + `nb_conn`)</span></p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark6>Area</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># Criterion : AREA >
- 100.</p>
-
-<p class="whs1">area_margin = 100.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Area, smesh.FT_MoreThan, area_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Area > ", area_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.FACE,
- "Area > " + `area_margin`)</p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3><a name=bookmark7>Taper</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : Taper
- > 3e-20</p>
-
-<p class="whs1">taper_margin = 3e-20</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Taper, smesh.FT_MoreThan, taper_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Taper > ", taper_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Taper > " + `taper_margin`)</span></p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<h3><a name=bookmark8>Aspect Ratio</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : ASPECT
- RATIO > 1.8</p>
-
-<p class="whs1">ar_margin = 1.8</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter
- = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio, smesh.FT_MoreThan,
- ar_margin)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Aspect Ratio > " + `ar_margin`)</span></p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark9>Minimum Angle</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : MINIMUM
- ANGLE < 35.</p>
-
-<p class="whs1">min_angle = 35.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_MinimumAngle, smesh.FT_LessThan, min_angle)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Minimum Angle < ", min_angle, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Minimum Angle < " +
- `min_angle`)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark10>Warping</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : WARP
- ANGLE > 1e-15</p>
-
-<p class="whs1">wa_margin = 1e-15</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Warping, smesh.FT_MoreThan, wa_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Warp > ", wa_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.FACE,
- "Warp > " + `wa_margin`)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark12>Skew</a></h3>
-
-<p class="whs1">import SMESH_mechanic</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : Skew
- > 38.</p>
-
-<p class="whs1">skew_margin = 38.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.FACE,
- smesh.FT_Skew, smesh.FT_MoreThan, skew_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Skew > ", skew_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup
- = mesh.CreateEmptyGroup(smesh.FACE, "Skew > " + `skew_margin`)</span></p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark11>Aspect Ratio 3D</a></h3>
-
-<p class="whs1">import SMESH_mechanic_tetra
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic_tetra.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic_tetra.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># Criterion : ASPECT
- RATIO 3D > 4.5</p>
-
-<p class="whs1">ar_margin = 4.5</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.VOLUME,
- smesh.FT_AspectRatio3D, smesh.FT_MoreThan, ar_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1"> </p>
-
-<p class="whs3"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.VOLUME,
- "Aspect Ratio 3D > " + `ar_margin`)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<h3><a name=Volume>Volume</a></h3>
-
-<p class="whs1">import SMESH_mechanic_tetra</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic_tetra.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic_tetra.mesh</p>
-
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># Criterion : VOLUME <
- 7.</p>
-
-<p class="whs1">volume_margin =
- 7.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aFilter = smesh.GetFilter(smesh.VOLUME,
- smesh.FT_Volume3D, smesh.FT_LessThan, volume_margin)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs1">print "Criterion:
- Volume < ", volume_margin, " Nb = ", len(anIds)</p>
-
-<p class="whs1">j = 1</p>
-
-<p class="whs1">for i in range(len(anIds)):</p>
-
-<p class="whs1"> if
- j > 20: j = 1; print ""</p>
-
-<p class="whs1"> print
- anIds[i],</p>
-
-<p class="whs1"> j
- = j + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p class="whs1">print ""</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a group</p>
-
-<p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.VOLUME,
- "Volume < " + `volume_margin`)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">aGroup.Add(anIds)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)
- </span> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Radial Prism</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-left:0px; }\r
-p.whs2 { margin-left:48px; }\r
-img_whs3 { border:none; width:270px; height:179px; float:none; border-style:none; }\r
-img_whs4 { border:none; width:299px; height:182px; float:none; border-style:none; }\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-left: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\nCreating meshes\nDefining Algorithms\nRadial Prism Algorithm");\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>Radial Prism</h1>\r
-\r
-<p>This algorithm applies to the meshing of a hollow 3D shape, i.e. such \r
- shape should be composed of two meshed shells: an outer shell and an internal \r
- shell without intersection with the outer shell. One of the shells should \r
- be a 2D Projection of the other shell. The meshes of the shells can consist \r
- both of triangles and quadrangles.</p>\r
-\r
-<p class="whs1">The Radial Prism algorithm would fill the \r
- space between the two shells with meshes. </p>\r
-\r
-<p class="whs1">This algorithm also needs the information \r
- concerning the number and distribution of mesh layers between the inner \r
- and the outer shapes.</p>\r
-\r
-<p class="whs2"> <img src="pics/number_of_layers.png" x-maintain-ratio="TRUE" width="270px" height="179px" border="0" class="img_whs3"></p>\r
-\r
-<p class="whs1">Distribution of layers can be set with any \r
- of 1D Hypotheses. </p>\r
-\r
-<p class="whs2"><img src="pics/distribution_of_layers.png" x-maintain-ratio="TRUE" width="299px" height="182px" border="0" class="img_whs4"></p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Revolution</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; }
-img_whs2 { border:none; width:24px; height:25px; border-style:none; }
-img_whs3 { border:none; width:390px; height:437px; float:none; border-style:none; }
-ul.whs4 { list-style:disc; }
-img_whs5 { border:none; width:350px; height:201px; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nModifying meshes\nRevolution");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Revolution</h1>
-
-<p>Revolution is a type of surface meshing by generation from discretized
- lines. It is used to build mesh elements of plus one dimension than the
- swept ones. Each swept 1D element produces one or more quadrangles (or
- triangles if one node of a rotated element lays on the revolution axis).</p>
-
-<p> </p>
-
-<p class=TODO>To apply revolution:</p>
-
-<p class=TODO> </p>
-
-<p class="whs1">1. From the <span style="font-weight: bold;"><B>Modification
- </B></span>menu choose the <span style="font-weight: bold;"><B>Revolution </B></span>item
- or click <img src="image92.gif" width="24px" height="25px" border="0" class="img_whs2"> button in the toolbar. The following dialog box
- shall appear:</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/revolution1.png" x-maintain-ratio="TRUE" width="390px" height="437px" border="0" class="img_whs3"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><img src="pics/revolution2.png" x-maintain-ratio="TRUE" width="390px" height="437px" border="0" class="img_whs3"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">2. In this dialog box you should specify:</p>
-
-<ul type="disc" class="whs4">
-
- <li class=kadov-p><p class="whs1">the type of elements
- which will be extruded (1D or 2D),</p></li>
-
- <li class=kadov-p><p class="whs1">specify the IDs of
- the elements which will be revolved by selecting them in the 3D viewer
- or select the whole mesh or submesh,</p></li>
-
- <li class=kadov-p><p class="whs1">specify the axis (point
- and vector) around which the elements will be revolved,</p></li>
-
- <li class=kadov-p><p class="whs1">angle of rotation,</p></li>
-
- <li class=kadov-p><p class="whs1">number of steps,</p></li>
-
- <li class=kadov-p><p class="whs1">tolerance of rotation</p></li>
-</ul>
-
-<p class="whs1"> </p>
-
-<p class="whs1">3. 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="whs1"> </p>
-
-<p class=TODO
- style="margin-left: 40px;"><img src="image78.jpg" width="350px" height="201px" border="0" class="img_whs5"></p>
-
-<p class=TODO> </p>
-
-<p> <span style="font-weight: bold;"><B>See
- Also</B></span> a sample TUI Script of a <a href="grouping_elements.htm#bookmark3"> </a><a href="modifying_meshes.htm#bookmark11">Revolution</a>
- operation. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Segments around Vertex Algorithm</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-left:40px; }\r
-img_whs2 { border:none; width:270px; height:179px; float:none; border-style:none; }\r
--->\r
-</style><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\nCreating meshes\nDefining Algorithms\nSegments around Vertex Algorithm");\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>Segments around Vertex</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>Segments around Vertex</B></span> algorithm \r
- is considered to be a 0D \r
- meshing algorithm, but, of course, it doesn't mesh nodes. It allows to \r
- define the local size of the elements in the neighborhood of a certain \r
- node. If we choose an object of higher dimension, it applies to all its \r
- tops, i.e. corners of a box. The \r
- 0D algorithm combines with the algorithms of higher dimensions, but it \r
- is not necessarily required for their successful implementation. </p>\r
-\r
-<p>This algorithm allows only one hypothesis. </p>\r
-\r
-<p class="whs1"><img src="pics/lengthnearvertex.png" x-maintain-ratio="TRUE" width="270px" height="179px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<p> </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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Selection filter library</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { font-weight:bold; }
-img_whs2 { border:none; width:624px; height:776px; float:none; border-style:none; }
-img_whs3 { border:none; width:31px; height:30px; border-style:none; }
-img_whs4 { border:none; width:624px; height:525px; float:none; border-style:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nGrouping elements\nSelection filter library");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Selection filter library</h1>
-
-<p>Selection filter library is a powerful tool enabling to create filters
- to be used on meshes. You can access to it from the Main Menu via <span
- style="font-weight: bold;"><B>Tools / Selection filter library.</B></span></p>
-
-<p> </p>
-
-<p class="whs1"><img src="pics/selectionfilterlibrary.png" x-maintain-ratio="TRUE" width="624px" height="776px" border="0" class="img_whs2"></p>
-
-<p> </p>
-
-<p class="whs1">Library file name s<span style="font-weight: normal;">hows
- the path and the file name where your filters will be stored. By clicking
- the</span> <img src="image103.gif" width="31px" height="30px" border="0" class="img_whs3"> <span style="font-weight: normal;">browse button
- you can load an existing filter library.</span></p>
-
-<p><span style="font-weight: bold;"><B>Names of filters</B></span> lists the filters
- created or uploaded for the current study. You can <span style="font-weight: bold;"><B>Add</B></span>
- or <span style="font-weight: bold;"><B>Delete</B></span> filters. </p>
-
-<p>In <span style="font-weight: bold;"><B>Filter name</B></span> box you can specify
- the name for your filter. By default it is prefixed with the corresponding
- entity type.</p>
-
-<p>Each filter can be applicable to <span style="font-weight: bold;"><B>Nodes,
- Edges, Faces</B></span> or <span style="font-weight: bold;"><B>Volumes</B></span>.
- You can combine many criteria in one filter, but they all must be of the
- same <span style="font-weight: bold;"><B>Entity type</B></span>. </p>
-
-<p>The <span style="font-weight: bold;"><B>Add</B></span> button creates a new
- criterion at the end of the list of criteria. The <span style="font-weight: bold;"><B>Insert</B></span>
- button creates a new criterion before the selected criterion. The <span
- style="font-weight: bold;"><B>Remove</B></span> button deletes the selected criterion.
- The <span style="font-weight: bold;"><B>Clear</B></span> button deletes all criteria.
- </p>
-
-<p>Each <span style="font-weight: bold;"><B>Entity type</B></span> has its specific
- list of criteria, however all filters have common syntax. For each criterion
- you should specify the <span style="font-weight: bold;"><B>Threshold Value</B></span>
- and whether we search for the elements that should be <span style="font-weight: bold;"><B>More,
- Less or Equal</B></span> to this <span style="font-weight: bold;"><B>Value</B></span>.
- You should also specify if the criterion is <span style="font-weight: bold;"><B>Unary</B></span>
- or <span style="font-weight: bold;"><B>Binary.</B></span> </p>
-
-<p>Some criteria should have the additional parameter of <span style="font-weight: bold;"><B>Tolerance</B></span>.</p>
-
-<p> </p>
-
-<p>When we create a <span style="font-weight: bold;"><B>Standalone Group</B></span>
- using filters (for this click <span style="font-weight: bold;"><B>Set Filters</B></span>
- button in the <span style="font-weight: bold;"><B>Create Group</B></span> menu),
- the menu for setting filters looks a bit differently. Toggling <span style="font-weight: bold;"><B>Insert
- filter in viewer</B></span> checkbox enables to preview the group selected
- with your current filter in the viewer. </p>
-
-<p>In the <span style="font-weight: bold;"><B>Source</B></span> field you choose
- if the filter will be applied to the whole <span style="font-weight: bold;"><B>Mesh</B></span>,
- the<span style="font-weight: bold;"><B> Initial Selection </B></span>or the<span
- style="font-weight: bold;"><B> Current Group. </B></span></p>
-
-<p><span style="font-weight: bold;"><B>Copy from...</B></span> button gives you
- a possibility to load an existing filter from <span style="font-weight: bold;"><B>Selection
- filter library</B></span> and <span style="font-weight: bold;"><B>Add to...</B></span>
- button gives you a possibility to save your current filter in the Library.
- </p>
-
-<p> </p>
-
-<p><img src="pics/a-filteronedges.png" x-maintain-ratio="TRUE" width="624px" height="525px" border="0" class="img_whs4"></p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-|SourceProjectName:SMESH.hpr
-|DestinationProjectName:index.htm
-whhost.js
-whmsg.js
-whmozemu.js
-whproxy.js
-whstub.js
-whutils.js
-whver.js
-whform.js
-whphost.js
-whstart.js
-whtopic.js
-whframes.js
-whlang.js
-whskin_info.htm
-whskin_blank.htm
-whskin_pickup.htm
-whskin_homepage.htm
-whskin_tw.htm
-whnjs.htm
-whthost.js
-whtdhtml.htm
-whihost.js
-whibody.htm
-whiform.htm
-whfhost.js
-whfbody.htm
-whfform.htm
-whghost.js
-whgbody.htm
-whgdhtml.htm
-whgdef.htm
-whproj.js
-whproj.xml
-whproj.htm
-whxdata\whtoc.xml
-whxdata\whidx.xml
-whxdata\whfts.xml
-whxdata\whglo.xml
-whdata\whtoc.js
-whdata\whtoc.htm
-whdata\whtdata.js
-whdata\whidx.js
-whdata\whidx.htm
-whdata\whidata.js
-whdata\whfts.js
-whdata\whfts.htm
-whdata\whglo.js
-whdata\whglo.htm
-whdata\whgdata.js
-whdata\whftdata.js
-whdata\whfwdata.js
-whres.xml
-webhelp.jar
-webhelp.cab
-whgdata\whnvp30.htm
-whgdata\whnvp31.htm
-whgdata\whnvp32.htm
-whgdata\whnvp33.htm
-whgdata\whnvt30.htm
-whgdata\whnvt31.htm
-whgdata\whnvt32.htm
-whgdata\whnvt33.htm
-whgdata\whnvf30.htm
-whgdata\whnvf31.htm
-whgdata\whnvf32.htm
-whgdata\whnvf33.htm
-whgdata\whnvl31.htm
-whgdata\whnvl32.htm
-whgdata\whnvl33.htm
-whgdata\whexpbar.gif
-cshdat_webhelp.htm
-whcsh_home.htm
-whcshdata.htm
-cshdat_robohelp.htm
-whd_topic.xml
-whd_nvp10.htm
-whd_nvp20.htm
-whd_tabs.htm
-whd_dpns.htm
-whd_tab0.gif
-whd_tab1.gif
-whd_tab2.gif
-whd_tab3.gif
-whd_tab4.gif
-whd_tab5.gif
-whd_tab6.gif
-whd_tab7.gif
-whd_tab8.gif
-whd_toc1.gif
-whd_toc2.gif
-whd_toc3.gif
-whd_toc4.gif
-whd_show0.gif
-whd_show1.gif
-whd_show2.gif
-whd_hide0.gif
-whd_hide1.gif
-whd_hide2.gif
-whd_sync0.gif
-whd_sync1.gif
-whd_sync2.gif
-whd_prev0.gif
-whd_prev1.gif
-whd_prev2.gif
-whd_next0.gif
-whd_next1.gif
-whd_next2.gif
-whd_wbsh0.gif
-whd_wbsh1.gif
-whd_wbsh2.gif
-whidhtml.htm
-whfdhtml.htm
-index_hha.hhk
-index.hhc
-index.hhk
-about_viewing_meshes.htm
-adding_quadratic_nodes_and_elements.htm
-aspect_ratio_3d.htm
-borders_at_multi-connection.htm
-borders_at_multiconnection_2d.htm
-building_compounds.htm
-clipping.htm
-constructing_meshes.htm
-convert_to_from_quadratic_mesh.htm
-defining_hypotheses_tui.htm
-deleting_groups.htm
-display_entity.htm
-extrusion.htm
-extrusion_along_a_path.htm
-files\about_hypotheses.htm
-files\about_meshes.htm
-files\about_meshing_algorithms.htm
-files\about_quality_controls.htm
-files\adding_nodes_and_elements.htm
-files\area_of_elements.htm
-files\arithmetic_1d.htm
-files\aspect_ratio.htm
-files\changing_orientation_of_elements.htm
-files\constructing_groups_of_specific_elements.htm
-files\constructing_meshes.htm
-files\constructing_submeshes.htm
-files\creating_groups.htm
-files\cutting_quadrangles.htm
-files\diagonal_iversion_of_elements.htm
-files\displacing_nodes.htm
-files\displaying_nodes_numbers.htm
-files\editing_groups.htm
-files\importing_and_exporting_meshes.htm
-files\length_of_edges.htm
-files\max._element_area_hypothesis.htm
-files\max._element_volume_hypothsis.htm
-files\merging_nodes.htm
-files\minimum_angle.htm
-files\non_conform_mesh_allowed_hypothesis.htm
-files\reassigning_hypotheses_and_algorithms.htm
-files\removing_nodes_and_elements.htm
-files\renumbering_nodes_and_elements.htm
-files\rotation.htm
-files\running_smesh_module.htm
-files\sewing_meshes.htm
-files\skew.htm
-files\smoothing.htm
-files\symmetry.htm
-files\taper.htm
-files\translation.htm
-files\uniting_a_set_of_triangles.htm
-files\uniting_two_triangles.htm
-files\using_operations_on_groups.htm
-files\viewing_mesh_info.htm
-files\vtk_3d_viewer.htm
-files\warp.htm
-free_borders.htm
-free_edges.htm
-grouping_elements.htm
-length.htm
-merge_elements.htm
-mesh.htm
-mesh_through_point.htm
-modifying_meshes.htm
-namespacesmesh.html
-netgen_2d_and_3d_hypotheses.htm
-pattern_mapping.htm
-presentation.htm
-prism_3d_algorithm.htm
-projection_algorithms.htm
-quality_controls.htm
-radial_prism.htm
-revolution.htm
-segments_around_vertex_algorithm.htm
-selection_filter_library.htm
-smesh.py_introduction.htm
-transforming_meshes.htm
-transparency.htm
-viewing_meshes.htm
-volume.htm
-ehelp.xml
-texture_horiz_ltbluebubbles.jpg
-index.glo
-default.css
-pics\curvi_simple_after.png
-pics\image89.gif
-pics\image100.gif
-pics\image78.gif
-pics\image23.gif
-pics\b-mesh_infos.png
-pics\remove_nodes2.png
-pics\moving_nodes1.png
-pics\smoothing2.png
-pics\a-maxelarea.png
-pics\patternmapping1.png
-image94.jpg
-image106.gif
-image91.gif
-image80.gif
-pics\distributionwithtabledensity.png
-pics\moving_nodes2.png
-image7.jpg
-pics\patternmapping2.png
-pics\extrusionalongaline1.png
-pics\addquadrangle.png
-image95.jpg
-pics\sewing1.png
-image92.gif
-image51.jpg
-image70.gif
-pics\meshtopass.png
-pics\image157.gif
-pics\extrusion1.png
-pics\curvi_angles_after.png
-pics\straight_before.png
-pics\image102.gif
-pics\length2d.png
-pics\free_borders1.png
-pics\a-creategroup.png
-pics\a-startendlength.png
-pics\a-patterntype.png
-pics\extrusionalongaline2.png
-pics\orientaation1.png
-pics\unionoftwotriangles.png
-image96.jpg
-pics\sewing2.png
-image119.gif
-image108.gif
-image52.jpg
-image82.gif
-image71.gif
-image30.jpg
-pics\lengthnearvertex.png
-pics\straight_after.png
-pics\cut_groups1.png
-pics\uniting_a_set_of_triangles1.png
-pics\b-erage_length.png
-pics\removeelements.png
-image97.jpg
-pics\sewing3.png
-image86.jpg
-image50.gif
-image94.gif
-image83.gif
-image31.jpg
-pics\aqt.png
-pics\distributionwithanalyticdensity.png
-pics\meshexportmesh.png
-pics\image27.gif
-pics\cut_groups2.png
-pics\edit_mesh_change_value_hyp.png
-pics\add_node.png
-pics\uniting_a_set_of_triangles2.png
-pics\max_el_area.png
-image10.jpg
-pics\a-filteronedges.png
-pics\revolution1.png
-pics\addhexahedron.png
-pics\addtriangle.png
-pics\editgroup.png
-pics\sewing4.png
-image95.gif
-image76.jpg
-image84.gif
-image32.jpg
-image40.gif
-i_blue.jpg
-image160.gif
-pics\number_of_layers.png
-pics\netgen2d.png
-pics\mesh_for_extr_along_path.png
-pics\meshtrianglemergeelem1.png
-pics\image138.gif
-pics\cut_groups3.png
-pics\revolution2.png
-pics\renumberelements.png
-pics\intersectgroups.png
-image88.jpg
-image30.gif
-image96.gif
-image77.jpg
-image74.gif
-image63.gif
-image22.jpg
-image41.gif
-image161.gif
-pics\createmesh-inv.png
-pics\image139.gif
-pics\b-art_end_length.png
-pics\b-mberofsegments.png
-pics\b-flection1d.png
-pics\a-unionoftriangles.png
-image56.jpg
-image53.gif
-image20.gif
-image97.gif
-image78.jpg
-image64.gif
-image23.jpg
-pics\buildcompound.png
-pics\projection_3d.png
-image151.gif
-pics\selectionfilterlibrary.png
-pics\intersect_groups1.png
-pics\create_group.png
-pics\add_triangle.png
-pics\add_edge.png
-pics\rotation1.png
-pics\merging_nodes1.png
-pics\translation1.png
-pics\cutgroups.png
-image79.jpg
-image98.gif
-image32.gif
-pics\projection_2d.png
-pics\advanced_mesh_infos.png
-pics\image108.gif
-pics\image91.gif
-image152.gif
-pics\automaticlength.png
-pics\intersect_groups2.png
-image130.gif
-pics\rotation2.png
-pics\merging_nodes2.png
-pics\a-cuttingofquadrangles.png
-pics\a-transparency.png
-pics\a-viewgeneral.png
-pics\smoothing.png
-pics\translation2.png
-image99.gif
-image55.gif
-image88.gif
-image36.jpg
-image33.gif
-image25.jpg
-pics\projection_1d.png
-pics\view_rotation_point.png
-image153.gif
-pics\image109.gif
-image15.jpg
-image142.gif
-pics\intersect_groups3.png
-image131.gif
-pics\edit_mesh1.png
-pics\b-ithmetic1d.png
-pics\mergenodes.png
-pics\rotation.png
-pics\addnode.png
-image120.gif
-image56.gif
-image37.jpg
-image67.gif
-image34.gif
-pics\convert.png
-image154.gif
-pics\edge_wire_3d_after.png
-pics\graduatedaxes1.png
-pics\length-crit.png
-image143.gif
-pics\editing_groups1.png
-image132.gif
-pics\a-maxelvolume.png
-pics\a-averagelength.png
-pics\movenodes.png
-pics\removenodes.png
-pics\addtetrahedron.png
-pics\uniongroups.png
-image121.gif
-image79.gif
-image38.jpg
-image46.gif
-image35.gif
-image27.jpg
-image24.gif
-note1.gif
-pics\distribution_of_layers.png
-image155.gif
-pics\edge_wire_after.png
-pics\edge_wire_before.png
-image144.gif
-pics\deletegroups.png
-pics\editing_groups2.png
-image133.gif
-pics\add_polyhedron.png
-pics\addedge.png
-pics\creategroup.png
-image122.gif
-image58.gif
-image36.gif
-image25.gif
-image156.gif
-pics\circle_simple_after.png
-image145.gif
-image134.gif
-pics\edit_mesh_remove_hyp.png
-pics\a-patterntype1.png
-image123.gif
-image101.gif
-image37.gif
-image157.gif
-pics\image96.gif
-image146.gif
-pics\meshimportmesh.png
-image135.gif
-pics\uniting_two_triangles1.png
-pics\a-nbsegments1.png
-pics\a-arithmetic1d.png
-pics\symmetry1.png
-image90.jpg
-image124.gif
-image49.gif
-pics\exemple.gif
-image38.gif
-pics\set_rotation_point_dialog1.png
-pics\image97.gif
-image147.gif
-pics\union_groups1.png
-image136.gif
-pics\free_edges.png
-pics\uniting_two_triangles2.png
-pics\a-nbsegments2.png
-pics\symmetry2.png
-image125.gif
-image103.gif
-image39.gif
-image28.gif
-image159.gif
-pics\set_rotation_point_dialog2.png
-pics\circle_angles_after.png
-pics\createmesh-inv2.png
-pics\image98.gif
-pics\mergeelems.png
-image148.gif
-pics\image21.gif
-pics\union_groups2.png
-image137.gif
-pics\add_quadrangle.png
-pics\remove_elements1.png
-pics\a-createpolyhedralvolume.png
-pics\a-clipping2.png
-pics\a-deflection1d.png
-pics\diagonalinversion.png
-pics\symmetry3.png
-pics\renumbernodes.png
-image92.jpg
-image126.gif
-image18.gif
-image70.jpg
-pics\circle_simple_before.png
-pics\edge_wire_3d_before.png
-pics\curvi_simple_before.png
-pics\createmesh-inv3.png
-pics\image99.gif
-pics\image77.gif
-pics\union_groups3.png
-pics\add_polygone.png
-pics\remove_elements2.png
-pics\remove_nodes1.png
-pics\smoothing1.png
-pics\a-standmeshinfo.png
-pics\addpolygon.png
-image5.jpg
-image127.gif
-image93.jpg
-image105.gif
-image19.gif
-image71.jpg
-index.ppf
-ehlpdhtm.js
-default_ns.css
-whxdata\whtdata0.xml
-whxdata\whftdata0.xml
-whxdata\whfwdata0.xml
-whxdata\whgdata0.xml
-whdata\whtdata0.htm
-whdata\whftdata0.htm
-whdata\whfwdata0.htm
-whdata\whgdata0.htm
-whgdata\whlstt0.htm
-whgdata\whlstt1.htm
-whgdata\whlstt2.htm
-whgdata\whlstt3.htm
-whgdata\whlstt4.htm
-whgdata\whlstt5.htm
-whgdata\whlstt6.htm
-whgdata\whlstt7.htm
-whgdata\whlstt8.htm
-whgdata\whlstt9.htm
-whgdata\whlstt10.htm
-whgdata\whlsti0.htm
-whgdata\whlstfl0.htm
-whgdata\whlstfl1.htm
-whgdata\whlstfl2.htm
-whgdata\whlstfl3.htm
-whgdata\whlstfl4.htm
-whgdata\whlstfl5.htm
-whgdata\whlstfl6.htm
-whgdata\whlstfl7.htm
-whgdata\whlstfl8.htm
-whgdata\whlstfl9.htm
-whgdata\whlstfl10.htm
-whgdata\whlstfl11.htm
-whgdata\whlstfl12.htm
-whgdata\whlstfl13.htm
-whgdata\whlstfl14.htm
-whgdata\whlstfl15.htm
-whgdata\whlstfl16.htm
-whgdata\whlstfl17.htm
-whgdata\whlstfl18.htm
-whgdata\whlstfl19.htm
-whgdata\whlstfl20.htm
-whgdata\whlstfl21.htm
-whgdata\whlstfl22.htm
-whgdata\whlstfl23.htm
-whgdata\whlstfl24.htm
-whgdata\whlstfl25.htm
-whgdata\whlstfl26.htm
-whgdata\whlstf0.htm
-whgdata\whlstf1.htm
-whgdata\whlstf2.htm
-whgdata\whlstf3.htm
-whgdata\whlstf4.htm
-whgdata\whlstf5.htm
-whgdata\whlstf6.htm
-whgdata\whlstf7.htm
-whgdata\whlstf8.htm
-whgdata\whlstf9.htm
-whgdata\whlstf10.htm
-whgdata\whlstf11.htm
-whgdata\whlstf12.htm
-whgdata\whlstf13.htm
-whgdata\whlstf14.htm
-whgdata\whlstg0.htm
-index.htm
-index_csh.htm
-index_rhc.htm
+++ /dev/null
-<!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"> </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"> </p>\r
-\r
-<p class="whs1"># Define values </p>\r
-\r
-<p class="whs2">name = "ex21_lamp" \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"> </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"> </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"> </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"> </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"> </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"> </p>\r
-\r
-<p class="whs1"># Create a group of faces \r
- </p>\r
-\r
-<p class="whs2">group = CreateGroup(piece, \r
- ShapeType["FACE"]) </p>\r
-\r
-<p class="whs2">group_name = name \r
- + "_grp" </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"> </p>\r
-\r
-<p class="whs1"># Add faces in the group \r
- </p>\r
-\r
-<p class="whs2">faces = SubShapeAllIDs(piece, \r
- ShapeType["FACE"]) </p>\r
-\r
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">UnionIDs(group, \r
- faces)</span> </p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1"># Create a mesh </p>\r
-\r
-<p class="whs1"> </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"> </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"> </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"> </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"> </p>\r
-\r
-<p class="whs1"># Compute the mesh </p>\r
-\r
-<p class="whs2">tetra.Compute() \r
- </p>\r
-\r
-<p class="whs1"> </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
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a></div>
+<h1>smeshDC.Mesh Class Reference</h1><!-- doxytag: class="smeshDC::Mesh" -->Class to define a mesh.
+<a href="#_details">More...</a>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c1ff5c26f41ca1e921d8dabc0fb1c476">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#c1ff5c26f41ca1e921d8dabc0fb1c476"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8eb84ebf2ce7779ea55aefd753bdf0f1">SetMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that inits the <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> object from SMESH_Mesh interface. <a href="#8eb84ebf2ce7779ea55aefd753bdf0f1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a80741f505adc6cb76e7a65441f3e9e9">GetMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that returns the mesh. <a href="#a80741f505adc6cb76e7a65441f3e9e9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#678665e562fb5f8fa26e59c9eab08f9b">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get mesh name. <a href="#678665e562fb5f8fa26e59c9eab08f9b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#11ec61404242cf8caaade91bd47ee3e4">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to mesh. <a href="#11ec61404242cf8caaade91bd47ee3e4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#bf4a13668fe78b6b1957750d64cb4ac2">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the subMesh object associated to a subShape. <a href="#bf4a13668fe78b6b1957750d64cb4ac2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4b67e2fe74ee0f4699067446264c73f6">GetShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that returns the shape associated to the mesh. <a href="#4b67e2fe74ee0f4699067446264c73f6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8397a449a458139c1dc7aa3a8399d58f">SetShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that associates given shape to the mesh(entails the mesh recreation). <a href="#8397a449a458139c1dc7aa3a8399d58f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#813ffea0a5d9f74930da1fae5ece3084">IsReadyToCompute</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return true if hypotheses are defined well. <a href="#813ffea0a5d9f74930da1fae5ece3084"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1551899004b15ef51010021fe0ac6fbe">GetAlgoState</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return errors of hypotheses definintion error list is empty if everything is OK. <a href="#1551899004b15ef51010021fe0ac6fbe"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d602421e8b0bc7939e8af87b36081052">GetGeometryByMeshElement</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return geometrical object the given element is built on. <a href="#d602421e8b0bc7939e8af87b36081052"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#7cf170b510c4284f823897b51ec3540d">MeshDimension</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns mesh dimension depending on shape one. <a href="#7cf170b510c4284f823897b51ec3540d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#28f838bb27b19d3c6ec186df18c6c8b1">Segment</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a segment discretization 1D algorithm. <a href="#28f838bb27b19d3c6ec186df18c6c8b1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#920aa6d60b0d34ba969829d51dc88b32">Triangle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a triangle 2D algorithm for faces. <a href="#920aa6d60b0d34ba969829d51dc88b32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#5f2845be55c166a38210710ea7773e95">Quadrangle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a quadrangle 2D algorithm for faces. <a href="#5f2845be55c166a38210710ea7773e95"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b2f614599f43d4e9fa905417a0497c0d">Tetrahedron</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a tetrahedron 3D algorithm for solids. <a href="#b2f614599f43d4e9fa905417a0497c0d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#f588cdeec1d6563d3695c8f92ed06aa9">Hexahedron</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a hexahedron 3D algorithm for solids. <a href="#f588cdeec1d6563d3695c8f92ed06aa9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#9de57f89d45e0dd2e898313fdff5985b">Netgen</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated, only for compatibility! <a href="#9de57f89d45e0dd2e898313fdff5985b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4a2abf09f54f31e1ef92aa8bd0e0b565">Projection1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 1D algorithm for edges. <a href="#4a2abf09f54f31e1ef92aa8bd0e0b565"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#046a671861717506e4ae530fa4840224">Projection2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 2D algorithm for faces. <a href="#046a671861717506e4ae530fa4840224"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#13ab59da622ec76691c699fbc49d8e1c">Projection3D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 3D algorithm for solids. <a href="#13ab59da622ec76691c699fbc49d8e1c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#275acd8686c2569af2f04b8c3315b48c">Prism</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a 3D extrusion (Prism 3D) or RadialPrism 3D algorithm for solids. <a href="#275acd8686c2569af2f04b8c3315b48c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#f0544a1f249f9d791e94c96920e8945f">Compute</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute the mesh and return the status of the computation. <a href="#f0544a1f249f9d791e94c96920e8945f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b7785437258a0213f3ffd4b4503c985f">AutomaticTetrahedralization</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN The parameter <em>fineness</em> [0,-1] defines mesh fineness. <a href="#b7785437258a0213f3ffd4b4503c985f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#da4dd042e7ca959a7b0dbd6b486ed89c">AutomaticHexahedralization</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron The parameter <em>fineness</em> [0,-1] defines mesh fineness. <a href="#da4dd042e7ca959a7b0dbd6b486ed89c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ead2cc1d3a22fedf1ec79f10912651ba">AddHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Assign hypothesis. <a href="#ead2cc1d3a22fedf1ec79f10912651ba"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#f54948c4d2cf4f02d3c256d9b641442e">GetHypothesisList</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of hypothesis added on a geom. <a href="#f54948c4d2cf4f02d3c256d9b641442e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#cba551abec7186c4960baa4b455f502b">RemoveGlobalHypotheses</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes all global hypotheses. <a href="#cba551abec7186c4960baa4b455f502b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d61dfe7a9c0b8d7448a8c647ab43e515">Group</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group based on geometric object <em>grp</em> and give a <em>name</em>, <br>
+ if this parameter is not defined the name is the same as the geometric group name <br>
+ Note: Works like <a class="el" href="classsmeshDC_1_1Mesh.html#4670f7c11dac95280c6d83ea895b4405">GroupOnGeom()</a>. <a href="#d61dfe7a9c0b8d7448a8c647ab43e515"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#398167a69f2d0e0cbd3eae985790ec5b">ExportToMED</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated, only for compatibility! Please, use <a class="el" href="classsmeshDC_1_1Mesh.html#68a16d0cd621d6333c4559525397bbe7">ExportMED()</a> method instead. <a href="#398167a69f2d0e0cbd3eae985790ec5b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#68a16d0cd621d6333c4559525397bbe7">ExportMED</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the MED format. <a href="#68a16d0cd621d6333c4559525397bbe7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1f94daa2d9e8ff9b8c0f908aea5b3dd8">ExportDAT</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the DAT format. <a href="#1f94daa2d9e8ff9b8c0f908aea5b3dd8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c47b1dd9de46d9cf7b12c0d74a012c73">ExportUNV</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the UNV format. <a href="#c47b1dd9de46d9cf7b12c0d74a012c73"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1311207ea4fe623bb10d459e2d5c32a0">ExportSTL</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the STL format. <a href="#1311207ea4fe623bb10d459e2d5c32a0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8874fec2213bddb829bc070659f9acbc">CreateEmptyGroup</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty mesh group. <a href="#8874fec2213bddb829bc070659f9acbc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4670f7c11dac95280c6d83ea895b4405">GroupOnGeom</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a mesh group based on geometric object <em>grp</em> and give a <em>name</em>, <br>
+ if this parameter is not defined the name is the same as the geometric group name. <a href="#4670f7c11dac95280c6d83ea895b4405"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a7ed4ce8c7808568978a30c5232da487">MakeGroupByIds</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given ids of elements. <a href="#a7ed4ce8c7808568978a30c5232da487"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a0297756f379f53f0c689895fbfcb311">MakeGroup</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given conditions. <a href="#a0297756f379f53f0c689895fbfcb311"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#75a309a3c6c29bf1ac7e2a34cfc98a8c">MakeGroupByCriterion</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given criterion. <a href="#75a309a3c6c29bf1ac7e2a34cfc98a8c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#34254deb71e7f191cfe8f0f247e26df3">MakeGroupByCriteria</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given criteria(list of criterions). <a href="#34254deb71e7f191cfe8f0f247e26df3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d793ade055774eeb9b99fac121dc5292">MakeGroupByFilter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given filter. <a href="#d793ade055774eeb9b99fac121dc5292"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#339c3cdcb9b2253d14d4d205d0e35ec4">GetIdsFromFilter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Pass mesh elements through the given filter and return ids. <a href="#339c3cdcb9b2253d14d4d205d0e35ec4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8784982fbefc8973ac0668c90b0771dd">GetFreeBorders</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Verify whether 2D mesh element has free edges(edges connected to one face only)<br>
+ Returns list of special structures(borders). <a href="#8784982fbefc8973ac0668c90b0771dd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3e16e192a6b18ae9b3a2caaeff097618">RemoveGroup</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove a group. <a href="#3e16e192a6b18ae9b3a2caaeff097618"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#22d530cca860633d021dfa96cf9ef6fd">RemoveGroupWithContents</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove group with its contents. <a href="#22d530cca860633d021dfa96cf9ef6fd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#23c2a81c48c10eb47931400dfd176867">GetGroups</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of groups existing in the mesh. <a href="#23c2a81c48c10eb47931400dfd176867"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#475bbb0fa983c0c0ac9d69614849e6da">GetGroupNames</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of names of groups existing in the mesh. <a href="#475bbb0fa983c0c0ac9d69614849e6da"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2fa03227010c3cbd0bf096467727cd1e">UnionGroups</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Union of two groups New group is created. <a href="#2fa03227010c3cbd0bf096467727cd1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#75f9bb08e2900f80254d81b5f41a042b">IntersectGroups</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Intersection of two groups New group is created. <a href="#75f9bb08e2900f80254d81b5f41a042b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#07ea3708cdcb1ea113246bb79ddc2af2">CutGroups</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Cut of two groups New group is created. <a href="#07ea3708cdcb1ea113246bb79ddc2af2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#5927ab5e23104e5abef7e610734e0d5b">GetLog</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log of nodes and elements added or removed since previous clear of the log. <a href="#5927ab5e23104e5abef7e610734e0d5b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#65c714c92cf53bdbc58d114944884865">ClearLog</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear the log of nodes and elements added or removed since previous clear. <a href="#65c714c92cf53bdbc58d114944884865"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#525008123ff68c3f4aa7dcd5fb1c184a">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the internal Id. <a href="#525008123ff68c3f4aa7dcd5fb1c184a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a93ece387535f28cd3b644a80d84412f">GetStudyId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the study Id. <a href="#a93ece387535f28cd3b644a80d84412f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#997c82163320ed98e1f170d33b81bdc8">HasDuplicatedGroupNamesMED</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Check group names for duplications. <a href="#997c82163320ed98e1f170d33b81bdc8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#66ae25fc3c278592ba3a23a9973de5ca">GetMeshEditor</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain instance of SMESH_MeshEditor. <a href="#66ae25fc3c278592ba3a23a9973de5ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#0cb466605e4826639a1c2606b03e51de">GetMEDMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get MED <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a>. <a href="#0cb466605e4826639a1c2606b03e51de"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2584e68d5f83e2472dc31f672032b830">NbNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of nodes in mesh. <a href="#2584e68d5f83e2472dc31f672032b830"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#32aca468f35dee817c574f685c19340c">NbElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of elements in mesh. <a href="#32aca468f35dee817c574f685c19340c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2a5a6924c6917c3edd61381f7767f2ce">NbEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges in mesh. <a href="#2a5a6924c6917c3edd61381f7767f2ce"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a8cc56138278b062b3fc61b343b9a9b0">NbEdgesOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges with given order in mesh. <a href="#a8cc56138278b062b3fc61b343b9a9b0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3e98a54848efa261461d04bcc37c032c">NbFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces in mesh. <a href="#3e98a54848efa261461d04bcc37c032c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#cb2398ea3a1ad0f83daba071af271ae3">NbFacesOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces with given order in mesh. <a href="#cb2398ea3a1ad0f83daba071af271ae3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#24a43384422c391646fbb9c77084f44f">NbTriangles</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of triangles in mesh. <a href="#24a43384422c391646fbb9c77084f44f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#72022a3452810f55ff254e304bc12d4b">NbTrianglesOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of triangles with given order in mesh. <a href="#72022a3452810f55ff254e304bc12d4b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ae13cdc351ee0c608ed91835bdd5317a">NbQuadrangles</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of quadrangles in mesh. <a href="#ae13cdc351ee0c608ed91835bdd5317a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#74597459a83d05097fa3a159b4f4fa05">NbQuadranglesOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of quadrangles with given order in mesh. <a href="#74597459a83d05097fa3a159b4f4fa05"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#900f9dd693371843c6ab877d5a42382a">NbPolygons</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of polygons in mesh. <a href="#900f9dd693371843c6ab877d5a42382a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3fa7ae366a834f698a097976028e7d28">NbVolumes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of volumes in mesh. <a href="#3fa7ae366a834f698a097976028e7d28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c82174b2e7063aebc6700930be4b66b2">NbVolumesOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of volumes with given order in mesh. <a href="#c82174b2e7063aebc6700930be4b66b2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#36e3b930b278620e8e467aef77bda9b4">NbTetras</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of tetrahedrons in mesh. <a href="#36e3b930b278620e8e467aef77bda9b4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1f2e5161166e9eacafb404e14331ea42">NbTetrasOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of tetrahedrons with given order in mesh. <a href="#1f2e5161166e9eacafb404e14331ea42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#06c95e05917e4a7f5caebb439b3d0f7b">NbHexas</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of hexahedrons in mesh. <a href="#06c95e05917e4a7f5caebb439b3d0f7b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#7ce22fe449679f671eb98154c133ac91">NbHexasOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of hexahedrons with given order in mesh. <a href="#7ce22fe449679f671eb98154c133ac91"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#39f3b03a825603e0c3c8c2fd8fa35685">NbPyramids</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of pyramids in mesh. <a href="#39f3b03a825603e0c3c8c2fd8fa35685"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#80ee709b9f8bf2d706833f2010a6873b">NbPyramidsOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of pyramids with given order in mesh. <a href="#80ee709b9f8bf2d706833f2010a6873b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#00a2ee826040c763152c28bc2f45d54d">NbPrisms</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of prisms in mesh. <a href="#00a2ee826040c763152c28bc2f45d54d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#bd0854dc0bd1520d566d3e9f59d7ec22">NbPrismsOfOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of prisms with given order in mesh. <a href="#bd0854dc0bd1520d566d3e9f59d7ec22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#5025ca15b456b79f18c5f487f525aa1d">NbPolyhedrons</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of polyhedrons in mesh. <a href="#5025ca15b456b79f18c5f487f525aa1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#6e50c4f6b5e8fd20526ae6a2cf4b4b3d">NbSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of submeshes in mesh. <a href="#6e50c4f6b5e8fd20526ae6a2cf4b4b3d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e634c3574cfe53f945ec937a15a1a5a4">GetElementsId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of mesh elements ids. <a href="#e634c3574cfe53f945ec937a15a1a5a4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e26ef77b1133bcba8d694220a43bb0c7">GetElementsByType</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of ids of mesh elements with given type. <a href="#e26ef77b1133bcba8d694220a43bb0c7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#548dd7ee73c4f714a976233520f1afe7">GetNodesId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of mesh nodes ids. <a href="#548dd7ee73c4f714a976233520f1afe7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c2cecd9dda12f1bb0ace5d0fbf83cd56">GetElementType</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns type of mesh element. <a href="#c2cecd9dda12f1bb0ace5d0fbf83cd56"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b68f23b2eade0a29627e85f3ad6073b2">GetSubMeshElementsId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of submesh elements ids. <a href="#b68f23b2eade0a29627e85f3ad6073b2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2efd22f2dee3f2f0a118a4ceb6793716">GetSubMeshNodesId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of submesh nodes ids. <a href="#2efd22f2dee3f2f0a118a4ceb6793716"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4b29aa5027d111923d72130b2ce8e37c">GetSubMeshElementType</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of ids of submesh elements with given type. <a href="#4b29aa5027d111923d72130b2ce8e37c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ede2e5f1f4aad2f6a3e2618efb879d02">Dump</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get mesh description. <a href="#ede2e5f1f4aad2f6a3e2618efb879d02"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ac4b569cd8022047a473edbe4f216802">GetNodeXYZ</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get XYZ coordinates of node as list of double <br>
+ If there is not node for given ID - returns empty list. <a href="#ac4b569cd8022047a473edbe4f216802"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ea303e542d760d9748e6f4adb657f434">GetNodeInverseElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">For given node returns list of IDs of inverse elements <br>
+ If there is not node for given ID - returns empty list. <a href="#ea303e542d760d9748e6f4adb657f434"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#95bd2c550e6485befcada57b13029242">GetShapeID</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If given element is node returns IDs of shape from position <br>
+ If there is not node for given ID - returns -1. <a href="#95bd2c550e6485befcada57b13029242"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#37691b345bd2fe31129f5d306c7285ff">GetShapeIDForElem</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">For given element returns ID of result shape after FindShape() from SMESH_MeshEditor <br>
+ If there is not element for given ID - returns -1. <a href="#37691b345bd2fe31129f5d306c7285ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ea4c97bd804514962ff613a9545a99c3">GetElemNbNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of nodes for given element <br>
+ If there is not element for given ID - returns -1. <a href="#ea4c97bd804514962ff613a9545a99c3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#795fb7cd896a9336c2fb287edba1df46">GetElemNode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns ID of node by given index for given element <br>
+ If there is not element for given ID - returns -1 <br>
+ If there is not node for given index - returns -2. <a href="#795fb7cd896a9336c2fb287edba1df46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#7f8130a3b16c8459d0c8ad23389b3dac">IsMediumNode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given node is medium node in given quadratic element. <a href="#7f8130a3b16c8459d0c8ad23389b3dac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e405cf3b31ed146203c601d268824e34">IsMediumNodeOfAnyElem</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given node is medium node in one of quadratic elements. <a href="#e405cf3b31ed146203c601d268824e34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4775548250a94a28fdc4349df6b5e664">ElemNbEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges for given element. <a href="#4775548250a94a28fdc4349df6b5e664"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4c42af133c335bb357f847e2dcc95a3e">ElemNbFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces for given element. <a href="#4c42af133c335bb357f847e2dcc95a3e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2d3c8a45cb35fed969935471438dd229">IsPoly</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given element is polygon. <a href="#2d3c8a45cb35fed969935471438dd229"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#de565d48cd768a56da73df5eb12c8c4b">IsQuadratic</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given element is quadratic. <a href="#de565d48cd768a56da73df5eb12c8c4b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c9c7f540a885ad5718f28c1b1cc8cc74">BaryCenter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns XYZ coordinates of bary center for given element as list of double <br>
+ If there is not element for given ID - returns empty list. <a href="#c9c7f540a885ad5718f28c1b1cc8cc74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d71d7b886bb422f3eea601d22b4b419d">RemoveElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes elements from mesh by ids. <a href="#d71d7b886bb422f3eea601d22b4b419d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#867a060a8a8ee32c75dcced1da15b022">RemoveNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes nodes from mesh by ids. <a href="#867a060a8a8ee32c75dcced1da15b022"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a4acf9d064dbf154f1f07cf18601c0ea">AddNode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add node to mesh by coordinates. <a href="#a4acf9d064dbf154f1f07cf18601c0ea"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#26131c97ad04a78613bdae200bb17660">AddEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create edge both similar and quadratic (this is determed by number of given nodes). <a href="#26131c97ad04a78613bdae200bb17660"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#7120695c0343590b47ef6e8f02766fa4">AddFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create face both similar and quadratic (this is determed by number of given nodes). <a href="#7120695c0343590b47ef6e8f02766fa4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3d6fc9c8186016f2e37e4f2185d11446">AddPolygonalFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add polygonal face to mesh by list of nodes ids. <a href="#3d6fc9c8186016f2e37e4f2185d11446"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3ae39f43bb819ce72356e1ed1fd88589">AddVolume</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume both similar and quadratic (this is determed by number of given nodes). <a href="#3ae39f43bb819ce72356e1ed1fd88589"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4a537d81fc2a84c90dea4159c788f37c">AddPolyhedralVolume</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume of many faces, giving nodes for each face. <a href="#4a537d81fc2a84c90dea4159c788f37c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#7c54c114d76ed3f108863a9639a17ca8">AddPolyhedralVolumeByFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume of many faces, giving IDs of existing faces. <a href="#7c54c114d76ed3f108863a9639a17ca8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#3a1236e58d50d925689b76e1e923f455">MoveNode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Move node with given id. <a href="#3a1236e58d50d925689b76e1e923f455"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#305fdba055982c393cfbbdb6dbb50646">FindNodeClosestTo</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a node closest to a point. <a href="#305fdba055982c393cfbbdb6dbb50646"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#fd794d99dc4539f0b3c04f9a9372d476">MeshToPassThroughAPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a node closest to a point and move it to a point location. <a href="#fd794d99dc4539f0b3c04f9a9372d476"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d5a94fade689f8efc3ed2c9e8ab7c7b1">InverseDiag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace two neighbour triangles sharing Node1-Node2 link with ones built on the same 4 nodes but having other common link. <a href="#d5a94fade689f8efc3ed2c9e8ab7c7b1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b76da5a684955529e10b291b421967f2">DeleteDiag</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace two neighbour triangles sharing Node1-Node2 link with a quadrangle built on the same 4 nodes. <a href="#b76da5a684955529e10b291b421967f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#cf69091c91c36ce5335e4da2631ef7b6">Reorient</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reorient elements by ids. <a href="#cf69091c91c36ce5335e4da2631ef7b6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#735a23aa0c42779067e6cc81be38dee3">ReorientObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reorient all elements of the object. <a href="#735a23aa0c42779067e6cc81be38dee3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#d0af9e5504148afa14cbfe672f05eb99">TriToQuad</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Fuse neighbour triangles into quadrangles. <a href="#d0af9e5504148afa14cbfe672f05eb99"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b460127d4a11dc7093673699aa596251">TriToQuadObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Fuse neighbour triangles of the object into quadrangles. <a href="#b460127d4a11dc7093673699aa596251"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#0ed805191162c718c85f628da184399a">QuadToTri</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#0ed805191162c718c85f628da184399a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1338b63884c90a486869d1ca6bc1e5f3">QuadToTriObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#1338b63884c90a486869d1ca6bc1e5f3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#79bebb3280d8727e0aa63abf72895e00">SplitQuad</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#79bebb3280d8727e0aa63abf72895e00"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#9f72cd3ce05553fa81cb9ab55276c6e3">SplitQuadObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#9f72cd3ce05553fa81cb9ab55276c6e3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#0ccd083fa2ca43dca1df29a07dbc61d9">BestSplit</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find better splitting of the given quadrangle. <a href="#0ccd083fa2ca43dca1df29a07dbc61d9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#c458281ac5240ea90076231f2ac91b7f">SplitQuadsNearTriangularFacets</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quafrangle faces near triangular facets of volumes. <a href="#c458281ac5240ea90076231f2ac91b7f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#15037374765f1e7439997f1a2416590b">SplitHexaToTetras</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split hexahedrons into tetrahedrons. <a href="#15037374765f1e7439997f1a2416590b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#bcb5ef95810e1c2a8edb3041a73bf339">SplitHexaToPrisms</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split hexahedrons into prisms. <a href="#bcb5ef95810e1c2a8edb3041a73bf339"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#47625763762791aa12b279915db0f5bb">Smooth</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Smooth elements. <a href="#47625763762791aa12b279915db0f5bb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#02b0945fb6cba824e7a02398d58ff2d2">SmoothObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Smooth elements belong to given object. <a href="#02b0945fb6cba824e7a02398d58ff2d2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#576f1975cee8eccb70bddcbf5c79a1b8">SmoothParametric</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parametric smooth the given elements. <a href="#576f1975cee8eccb70bddcbf5c79a1b8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e6188d5cbc547c960b65cbf03a64c360">SmoothParametricObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Parametric smooth elements belong to given object. <a href="#e6188d5cbc547c960b65cbf03a64c360"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#950b615f72cf87e1b1f30b9bcba1def7">ConvertToQuadratic</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts all mesh to quadratic one, deletes old elements, replacing them with quadratic ones with the same id. <a href="#950b615f72cf87e1b1f30b9bcba1def7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#63fdf86ae5a1c450d372789732dc85ed">ConvertFromQuadratic</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts all mesh from quadratic to ordinary ones, deletes old quadratic elements, <br>
+ replacing them with ordinary mesh elements with the same id. <a href="#63fdf86ae5a1c450d372789732dc85ed"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8b7a1f81371994a5fcbb58b56ec26382">RenumberNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Renumber mesh nodes. <a href="#8b7a1f81371994a5fcbb58b56ec26382"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#05d3b3ae8bda7842bc69a72b9426a69d">RenumberElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Renumber mesh elements. <a href="#05d3b3ae8bda7842bc69a72b9426a69d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#51fafc65b1c00aa71fb3368302879e90">RotationSweep</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by rotation of the elements around the axis. <a href="#51fafc65b1c00aa71fb3368302879e90"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e1801356bd22826c806ff0991e44e9ab">RotationSweepObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by rotation of the elements of object around the axis. <a href="#e1801356bd22826c806ff0991e44e9ab"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a9104edbd7b7c6cbc3b1ba9538ed9f59">ExtrusionSweep</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements with given ids. <a href="#a9104edbd7b7c6cbc3b1ba9538ed9f59"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#f67f780ee272071948ac9ef85373dc3a">AdvancedExtrusion</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements with given ids. <a href="#f67f780ee272071948ac9ef85373dc3a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#42c025c8067cc5cc0090d6ec1412ad4d">ExtrusionSweepObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#42c025c8067cc5cc0090d6ec1412ad4d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e95c632534893826ba9946d97caef095">ExtrusionSweepObject1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#e95c632534893826ba9946d97caef095"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#43fb0ee239a93e665d6d7cb743b08325">ExtrusionSweepObject2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#43fb0ee239a93e665d6d7cb743b08325"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#faef42567ec17757143a6b0b1b0ffd14">ExtrusionAlongPath</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the given elements A path of extrusion must be a meshed edge. <a href="#faef42567ec17757143a6b0b1b0ffd14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#802c0f3464746978efbf0194bb7472fc">ExtrusionAlongPathObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object A path of extrusion must be a meshed edge. <a href="#802c0f3464746978efbf0194bb7472fc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#4f24d9ac04c1f7adb4ce72630103b39e">Mirror</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Symmetrical copy of mesh elements. <a href="#4f24d9ac04c1f7adb4ce72630103b39e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#921c02f7d4778d395bcab56d067207e4">MirrorObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Symmetrical copy of object. <a href="#921c02f7d4778d395bcab56d067207e4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1e2faa9a7a0d7f38608bc5b4c4e9102a">Translate</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translates the elements. <a href="#1e2faa9a7a0d7f38608bc5b4c4e9102a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#22ec87ab4df5e8998e574e8c05a9723a">TranslateObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translates the object. <a href="#22ec87ab4df5e8998e574e8c05a9723a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#228afef21b2340aa09e0b193f59001b0">Rotate</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotates the elements. <a href="#228afef21b2340aa09e0b193f59001b0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#aaf823b609d2b45aee3f2751b32c8d2d">RotateObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotates the object. <a href="#aaf823b609d2b45aee3f2751b32c8d2d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#264d2001aebb0e526af2bf9495750f6c">FindCoincidentNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find group of nodes close to each other within Tolerance. <a href="#264d2001aebb0e526af2bf9495750f6c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#b05f9ed75d38e2038924b88cdfd546ae">FindCoincidentNodesOnPart</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find group of nodes close to each other within Tolerance. <a href="#b05f9ed75d38e2038924b88cdfd546ae"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#503c866e8a58227e6d70877843b96e4a">MergeNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Merge nodes. <a href="#503c866e8a58227e6d70877843b96e4a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#643c80318fafd3d98c530c88ebdc4257">FindEqualElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find elements built on the same nodes. <a href="#643c80318fafd3d98c530c88ebdc4257"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#023c5ccae0e02e73485019fe82ab8b35">MergeElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Merge elements in each given group. <a href="#023c5ccae0e02e73485019fe82ab8b35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#f76363128b31cbe3fc32afc9cd771565">MergeEqualElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all but one of elements built on the same nodes. <a href="#f76363128b31cbe3fc32afc9cd771565"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#079f6131307a4be37245823e6fd724da">SewFreeBorders</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew free borders. <a href="#079f6131307a4be37245823e6fd724da"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#0c54ec7794e65956ecfab94476230a6e">SewConformFreeBorders</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew conform free borders. <a href="#0c54ec7794e65956ecfab94476230a6e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e887767b6fb87c6be80763f4f78e2252">SewBorderToSide</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew border to side. <a href="#e887767b6fb87c6be80763f4f78e2252"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#1feede9a829e6f347641ba073840f13d">SewSideElements</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew two sides of a mesh. <a href="#1feede9a829e6f347641ba073840f13d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#e613925597654962cd6bc1354cd847ab">ChangeElemNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set new nodes for given element. <a href="#e613925597654962cd6bc1354cd847ab"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8589dd93f380f74a91d1a270a3329392">GetLastCreatedNodes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If during last operation of MeshEditor some nodes were created this method returns list of it's IDs, <br>
+ if new nodes not created - returns empty list. <a href="#8589dd93f380f74a91d1a270a3329392"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#86d590631a7eb99c5e0e6c38c596ed7c">GetLastCreatedElems</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If during last operation of MeshEditor some elements were created this method returns list of it's IDs, <br>
+ if new elements not creared - returns empty list. <a href="#86d590631a7eb99c5e0e6c38c596ed7c"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#0be9a9dabe33b7f3fdd5a1e31a19de30">smeshpyD</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#8d2ba56c7de00d23867fb26908a09dbd">geompyD</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#85b1f2feb28730e9a226fbe98b9198a8">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#046173eaa203630e4a12147a8dc031da">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#a7484397c0eafe910f9e5b1fb77a20f3">editor</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#9f46fbb458e5173bd4ef0f816ed778a2">geom</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#ab3d2e782c81eb8c172ffea4934d9afc">mesh</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html#2208820f1e04d15486802226576b45d8">editor</a> = 0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The class contains mesh shape, SMESH_Mesh, SMESH_MeshEditor More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="c1ff5c26f41ca1e921d8dabc0fb1c476"></a><!-- doxytag: member="smeshDC::Mesh::__init__" ref="c1ff5c26f41ca1e921d8dabc0fb1c476" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smeshpyD</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geompyD</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>obj</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates mesh on the shape <em>geom(or the empty mesh if geom equal to 0)</em>, sets GUI name of this mesh to <em>name</em>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>Shape to be meshed or SMESH_Mesh object </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Study name of the mesh </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8eb84ebf2ce7779ea55aefd753bdf0f1"></a><!-- doxytag: member="smeshDC::Mesh::SetMesh" ref="8eb84ebf2ce7779ea55aefd753bdf0f1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SetMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is SMESH_Mesh object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a80741f505adc6cb76e7a65441f3e9e9"></a><!-- doxytag: member="smeshDC::Mesh::GetMesh" ref="a80741f505adc6cb76e7a65441f3e9e9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Mesh object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="678665e562fb5f8fa26e59c9eab08f9b"></a><!-- doxytag: member="smeshDC::Mesh::GetName" ref="678665e562fb5f8fa26e59c9eab08f9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="11ec61404242cf8caaade91bd47ee3e4"></a><!-- doxytag: member="smeshDC::Mesh::SetName" ref="11ec61404242cf8caaade91bd47ee3e4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bf4a13668fe78b6b1957750d64cb4ac2"></a><!-- doxytag: member="smeshDC::Mesh::GetSubMesh" ref="bf4a13668fe78b6b1957750d64cb4ac2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The subMesh object gives access to nodes and elements IDs. <br>
+ SubMesh will be used instead of SubShape in a next idl version to adress a specific subMesh...
+</div>
+</div><p>
+<a class="anchor" name="4b67e2fe74ee0f4699067446264c73f6"></a><!-- doxytag: member="smeshDC::Mesh::GetShape" ref="4b67e2fe74ee0f4699067446264c73f6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>GEOM_Object </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8397a449a458139c1dc7aa3a8399d58f"></a><!-- doxytag: member="smeshDC::Mesh::SetShape" ref="8397a449a458139c1dc7aa3a8399d58f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SetShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>shape to be meshed(GEOM_Object) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="813ffea0a5d9f74930da1fae5ece3084"></a><!-- doxytag: member="smeshDC::Mesh::IsReadyToCompute" ref="813ffea0a5d9f74930da1fae5ece3084" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IsReadyToCompute </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubObject</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubObject</em> </td><td>subshape of a mesh shape </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1551899004b15ef51010021fe0ac6fbe"></a><!-- doxytag: member="smeshDC::Mesh::GetAlgoState" ref="1551899004b15ef51010021fe0ac6fbe" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetAlgoState </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubObject</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubObject</em> </td><td>subshape of a mesh shape </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a list of errors </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d602421e8b0bc7939e8af87b36081052"></a><!-- doxytag: member="smeshDC::Mesh::GetGeometryByMeshElement" ref="d602421e8b0bc7939e8af87b36081052" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetGeometryByMeshElement </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theElementID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGeomName</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The returned geometrical object, if not nil, is either found in the study or is published by this method with the given name <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theElementID</em> </td><td>an id of the mesh element </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theGeomName</em> </td><td>user defined name of geometrical object </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>GEOM.GEOM_Object instance </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7cf170b510c4284f823897b51ec3540d"></a><!-- doxytag: member="smeshDC::Mesh::MeshDimension" ref="7cf170b510c4284f823897b51ec3540d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MeshDimension </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="28f838bb27b19d3c6ec186df18c6c8b1"></a><!-- doxytag: member="smeshDC::Mesh::Segment" ref="28f838bb27b19d3c6ec186df18c6c8b1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Segment </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>algo</em> = <code><a class="el" href="namespacesmeshDC.html#fcd10952f4e87878b85f48b0b225372f">REGULAR</a></code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>algo</em> parameter is not sets, this algorithm is REGULAR. If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
+ Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are <a class="el" href="namespacesmeshDC.html#fcd10952f4e87878b85f48b0b225372f">smesh.REGULAR</a> or <a class="el" href="namespacesmeshDC.html#955814fbbff4cdc590cd03dbbb859927">smesh.PYTHON</a> for discretization via python function </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="920aa6d60b0d34ba969829d51dc88b32"></a><!-- doxytag: member="smeshDC::Mesh::Triangle" ref="920aa6d60b0d34ba969829d51dc88b32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Triangle </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>algo</em> = <code><a class="el" href="namespacesmeshDC.html#12ae6b0bb6a0f0e08228bb238dab824d">MEFISTO</a></code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
+ Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are: <a class="el" href="namespacesmeshDC.html#12ae6b0bb6a0f0e08228bb238dab824d">smesh.MEFISTO</a> or <a class="el" href="namespacesmeshDC.html#12e2315ca0c10d490928dcc3b2351864">smesh.NETGEN</a> </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5f2845be55c166a38210710ea7773e95"></a><!-- doxytag: member="smeshDC::Mesh::Quadrangle" ref="5f2845be55c166a38210710ea7773e95" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Quadrangle </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
+ Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b2f614599f43d4e9fa905417a0497c0d"></a><!-- doxytag: member="smeshDC::Mesh::Tetrahedron" ref="b2f614599f43d4e9fa905417a0497c0d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Tetrahedron </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>algo</em> = <code><a class="el" href="namespacesmeshDC.html#12e2315ca0c10d490928dcc3b2351864">NETGEN</a></code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+The parameter <em>algo</em> permits to choice the algorithm: NETGEN or GHS3D If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
+ Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are: <a class="el" href="namespacesmeshDC.html#12e2315ca0c10d490928dcc3b2351864">smesh.NETGEN</a>, <a class="el" href="namespacesmeshDC.html#67ce8984d9b8d988f78b632def748817">smesh.GHS3D</a>, <a class="el" href="namespacesmeshDC.html#118f33758b4f4725cc68db7aebd34083">smesh.FULL_NETGEN</a> </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f588cdeec1d6563d3695c8f92ed06aa9"></a><!-- doxytag: member="smeshDC::Mesh::Hexahedron" ref="f588cdeec1d6563d3695c8f92ed06aa9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Hexahedron </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
+ Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9de57f89d45e0dd2e898313fdff5985b"></a><!-- doxytag: member="smeshDC::Mesh::Netgen" ref="9de57f89d45e0dd2e898313fdff5985b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Netgen </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>is3D</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4a2abf09f54f31e1ef92aa8bd0e0b565"></a><!-- doxytag: member="smeshDC::Mesh::Projection1D" ref="4a2abf09f54f31e1ef92aa8bd0e0b565" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Projection1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="046a671861717506e4ae530fa4840224"></a><!-- doxytag: member="smeshDC::Mesh::Projection2D" ref="046a671861717506e4ae530fa4840224" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Projection2D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="13ab59da622ec76691c699fbc49d8e1c"></a><!-- doxytag: member="smeshDC::Mesh::Projection3D" ref="13ab59da622ec76691c699fbc49d8e1c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Projection3D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="275acd8686c2569af2f04b8c3315b48c"></a><!-- doxytag: member="smeshDC::Mesh::Prism" ref="275acd8686c2569af2f04b8c3315b48c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Prism </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f0544a1f249f9d791e94c96920e8945f"></a><!-- doxytag: member="smeshDC::Mesh::Compute" ref="f0544a1f249f9d791e94c96920e8945f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Compute </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b7785437258a0213f3ffd4b4503c985f"></a><!-- doxytag: member="smeshDC::Mesh::AutomaticTetrahedralization" ref="b7785437258a0213f3ffd4b4503c985f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AutomaticTetrahedralization </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="da4dd042e7ca959a7b0dbd6b486ed89c"></a><!-- doxytag: member="smeshDC::Mesh::AutomaticHexahedralization" ref="da4dd042e7ca959a7b0dbd6b486ed89c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AutomaticHexahedralization </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ead2cc1d3a22fedf1ec79f10912651ba"></a><!-- doxytag: member="smeshDC::Mesh::AddHypothesis" ref="ead2cc1d3a22fedf1ec79f10912651ba" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>hyp</em> </td><td>is a hypothesis to assign </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>is subhape of mesh geometry </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f54948c4d2cf4f02d3c256d9b641442e"></a><!-- doxytag: member="smeshDC::Mesh::GetHypothesisList" ref="f54948c4d2cf4f02d3c256d9b641442e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetHypothesisList </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>is subhape of mesh geometry </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cba551abec7186c4960baa4b455f502b"></a><!-- doxytag: member="smeshDC::Mesh::RemoveGlobalHypotheses" ref="cba551abec7186c4960baa4b455f502b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RemoveGlobalHypotheses </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d61dfe7a9c0b8d7448a8c647ab43e515"></a><!-- doxytag: member="smeshDC::Mesh::Group" ref="d61dfe7a9c0b8d7448a8c647ab43e515" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Group </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>grp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em> = <code>""</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>grp</em> </td><td>is a geometric group, a vertex, an edge, a face or a solid </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_GroupOnGeom </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="398167a69f2d0e0cbd3eae985790ec5b"></a><!-- doxytag: member="smeshDC::Mesh::ExportToMED" ref="398167a69f2d0e0cbd3eae985790ec5b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExportToMED </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>opt</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Export the mesh in a file with the MED format and choice the <em>version</em> of MED format <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>version</em> </td><td>values are SMESH.MED_V2_1, SMESH.MED_V2_2 </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="68a16d0cd621d6333c4559525397bbe7"></a><!-- doxytag: member="smeshDC::Mesh::ExportMED" ref="68a16d0cd621d6333c4559525397bbe7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExportMED </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>auto_groups</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>version</em> = <code>MED_V2_2</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>auto_groups</em> </td><td>boolean parameter for creating/not creating the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is auto_groups=false. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>version</em> </td><td>MED format version(MED_V2_1 or MED_V2_2) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1f94daa2d9e8ff9b8c0f908aea5b3dd8"></a><!-- doxytag: member="smeshDC::Mesh::ExportDAT" ref="1f94daa2d9e8ff9b8c0f908aea5b3dd8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExportDAT </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>f</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c47b1dd9de46d9cf7b12c0d74a012c73"></a><!-- doxytag: member="smeshDC::Mesh::ExportUNV" ref="c47b1dd9de46d9cf7b12c0d74a012c73" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExportUNV </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>f</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1311207ea4fe623bb10d459e2d5c32a0"></a><!-- doxytag: member="smeshDC::Mesh::ExportSTL" ref="1311207ea4fe623bb10d459e2d5c32a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExportSTL </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ascii</em> = <code>1</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ascii</em> </td><td>defined the kind of file contents </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8874fec2213bddb829bc070659f9acbc"></a><!-- doxytag: member="smeshDC::Mesh::CreateEmptyGroup" ref="8874fec2213bddb829bc070659f9acbc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.CreateEmptyGroup </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4670f7c11dac95280c6d83ea895b4405"></a><!-- doxytag: member="smeshDC::Mesh::GroupOnGeom" ref="4670f7c11dac95280c6d83ea895b4405" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GroupOnGeom </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>grp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em> = <code>""</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>typ</em> = <code>None</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>grp</em> </td><td>is a geometric group, a vertex, an edge, a face or a solid </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_GroupOnGeom </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a7ed4ce8c7808568978a30c5232da487"></a><!-- doxytag: member="smeshDC::Mesh::MakeGroupByIds" ref="a7ed4ce8c7808568978a30c5232da487" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MakeGroupByIds </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>groupName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elemIDs</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>elemIDs</em> </td><td>is the list of ids </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a0297756f379f53f0c689895fbfcb311"></a><!-- doxytag: member="smeshDC::Mesh::MakeGroup" ref="a0297756f379f53f0c689895fbfcb311" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MakeGroup </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>groupName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CritType</em> = <code>FT_Undefined</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Treshold</em> = <code>""</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>UnaryOp</em> = <code>FT_Undefined</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of id ids as string, shape, numeric) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="75a309a3c6c29bf1ac7e2a34cfc98a8c"></a><!-- doxytag: member="smeshDC::Mesh::MakeGroupByCriterion" ref="75a309a3c6c29bf1ac7e2a34cfc98a8c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MakeGroupByCriterion </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>groupName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Criterion</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Criterion</em> </td><td>is the instance of Criterion class </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="34254deb71e7f191cfe8f0f247e26df3"></a><!-- doxytag: member="smeshDC::Mesh::MakeGroupByCriteria" ref="34254deb71e7f191cfe8f0f247e26df3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MakeGroupByCriteria </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>groupName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriteria</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Criteria</em> </td><td>is the list of criterions </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d793ade055774eeb9b99fac121dc5292"></a><!-- doxytag: member="smeshDC::Mesh::MakeGroupByFilter" ref="d793ade055774eeb9b99fac121dc5292" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MakeGroupByFilter </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>groupName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFilter</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Criterion</em> </td><td>is the instance of Filter class </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="339c3cdcb9b2253d14d4d205d0e35ec4"></a><!-- doxytag: member="smeshDC::Mesh::GetIdsFromFilter" ref="339c3cdcb9b2253d14d4d205d0e35ec4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetIdsFromFilter </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFilter</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theFilter</em> </td><td>is SMESH_Filter </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>list of ids </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8784982fbefc8973ac0668c90b0771dd"></a><!-- doxytag: member="smeshDC::Mesh::GetFreeBorders" ref="8784982fbefc8973ac0668c90b0771dd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetFreeBorders </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>list of SMESH.FreeEdges.Border structure: edge id and two its nodes ids. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3e16e192a6b18ae9b3a2caaeff097618"></a><!-- doxytag: member="smeshDC::Mesh::RemoveGroup" ref="3e16e192a6b18ae9b3a2caaeff097618" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RemoveGroup </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="22d530cca860633d021dfa96cf9ef6fd"></a><!-- doxytag: member="smeshDC::Mesh::RemoveGroupWithContents" ref="22d530cca860633d021dfa96cf9ef6fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RemoveGroupWithContents </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="23c2a81c48c10eb47931400dfd176867"></a><!-- doxytag: member="smeshDC::Mesh::GetGroups" ref="23c2a81c48c10eb47931400dfd176867" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetGroups </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="475bbb0fa983c0c0ac9d69614849e6da"></a><!-- doxytag: member="smeshDC::Mesh::GetGroupNames" ref="475bbb0fa983c0c0ac9d69614849e6da" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetGroupNames </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2fa03227010c3cbd0bf096467727cd1e"></a><!-- doxytag: member="smeshDC::Mesh::UnionGroups" ref="2fa03227010c3cbd0bf096467727cd1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.UnionGroups </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+All mesh elements that are present in initial groups are added to the new one
+</div>
+</div><p>
+<a class="anchor" name="75f9bb08e2900f80254d81b5f41a042b"></a><!-- doxytag: member="smeshDC::Mesh::IntersectGroups" ref="75f9bb08e2900f80254d81b5f41a042b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IntersectGroups </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>group2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+All mesh elements that are present in both initial groups are added to the new one.
+</div>
+</div><p>
+<a class="anchor" name="07ea3708cdcb1ea113246bb79ddc2af2"></a><!-- doxytag: member="smeshDC::Mesh::CutGroups" ref="07ea3708cdcb1ea113246bb79ddc2af2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.CutGroups </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mainGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>toolGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+All mesh elements that are present in main group but do not present in tool group are added to the new one
+</div>
+</div><p>
+<a class="anchor" name="5927ab5e23104e5abef7e610734e0d5b"></a><!-- doxytag: member="smeshDC::Mesh::GetLog" ref="5927ab5e23104e5abef7e610734e0d5b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetLog </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>clearAfterGet</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>clearAfterGet</em> </td><td>log is emptied after Get (safe if concurrents access) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>list of log_block structures: commandType number coords indexes </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="65c714c92cf53bdbc58d114944884865"></a><!-- doxytag: member="smeshDC::Mesh::ClearLog" ref="65c714c92cf53bdbc58d114944884865" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ClearLog </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Must be used immediately after GetLog if clearAfterGet is false.
+</div>
+</div><p>
+<a class="anchor" name="525008123ff68c3f4aa7dcd5fb1c184a"></a><!-- doxytag: member="smeshDC::Mesh::GetId" ref="525008123ff68c3f4aa7dcd5fb1c184a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a93ece387535f28cd3b644a80d84412f"></a><!-- doxytag: member="smeshDC::Mesh::GetStudyId" ref="a93ece387535f28cd3b644a80d84412f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetStudyId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="997c82163320ed98e1f170d33b81bdc8"></a><!-- doxytag: member="smeshDC::Mesh::HasDuplicatedGroupNamesMED" ref="997c82163320ed98e1f170d33b81bdc8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.HasDuplicatedGroupNamesMED </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Consider maximum group name length stored in MED file.
+</div>
+</div><p>
+<a class="anchor" name="66ae25fc3c278592ba3a23a9973de5ca"></a><!-- doxytag: member="smeshDC::Mesh::GetMeshEditor" ref="66ae25fc3c278592ba3a23a9973de5ca" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetMeshEditor </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="0cb466605e4826639a1c2606b03e51de"></a><!-- doxytag: member="smeshDC::Mesh::GetMEDMesh" ref="0cb466605e4826639a1c2606b03e51de" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetMEDMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2584e68d5f83e2472dc31f672032b830"></a><!-- doxytag: member="smeshDC::Mesh::NbNodes" ref="2584e68d5f83e2472dc31f672032b830" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="32aca468f35dee817c574f685c19340c"></a><!-- doxytag: member="smeshDC::Mesh::NbElements" ref="32aca468f35dee817c574f685c19340c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2a5a6924c6917c3edd61381f7767f2ce"></a><!-- doxytag: member="smeshDC::Mesh::NbEdges" ref="2a5a6924c6917c3edd61381f7767f2ce" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a8cc56138278b062b3fc61b343b9a9b0"></a><!-- doxytag: member="smeshDC::Mesh::NbEdgesOfOrder" ref="a8cc56138278b062b3fc61b343b9a9b0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbEdgesOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3e98a54848efa261461d04bcc37c032c"></a><!-- doxytag: member="smeshDC::Mesh::NbFaces" ref="3e98a54848efa261461d04bcc37c032c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cb2398ea3a1ad0f83daba071af271ae3"></a><!-- doxytag: member="smeshDC::Mesh::NbFacesOfOrder" ref="cb2398ea3a1ad0f83daba071af271ae3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbFacesOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="24a43384422c391646fbb9c77084f44f"></a><!-- doxytag: member="smeshDC::Mesh::NbTriangles" ref="24a43384422c391646fbb9c77084f44f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbTriangles </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="72022a3452810f55ff254e304bc12d4b"></a><!-- doxytag: member="smeshDC::Mesh::NbTrianglesOfOrder" ref="72022a3452810f55ff254e304bc12d4b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbTrianglesOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ae13cdc351ee0c608ed91835bdd5317a"></a><!-- doxytag: member="smeshDC::Mesh::NbQuadrangles" ref="ae13cdc351ee0c608ed91835bdd5317a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbQuadrangles </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="74597459a83d05097fa3a159b4f4fa05"></a><!-- doxytag: member="smeshDC::Mesh::NbQuadranglesOfOrder" ref="74597459a83d05097fa3a159b4f4fa05" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbQuadranglesOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="900f9dd693371843c6ab877d5a42382a"></a><!-- doxytag: member="smeshDC::Mesh::NbPolygons" ref="900f9dd693371843c6ab877d5a42382a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPolygons </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3fa7ae366a834f698a097976028e7d28"></a><!-- doxytag: member="smeshDC::Mesh::NbVolumes" ref="3fa7ae366a834f698a097976028e7d28" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbVolumes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c82174b2e7063aebc6700930be4b66b2"></a><!-- doxytag: member="smeshDC::Mesh::NbVolumesOfOrder" ref="c82174b2e7063aebc6700930be4b66b2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbVolumesOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="36e3b930b278620e8e467aef77bda9b4"></a><!-- doxytag: member="smeshDC::Mesh::NbTetras" ref="36e3b930b278620e8e467aef77bda9b4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbTetras </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1f2e5161166e9eacafb404e14331ea42"></a><!-- doxytag: member="smeshDC::Mesh::NbTetrasOfOrder" ref="1f2e5161166e9eacafb404e14331ea42" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbTetrasOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="06c95e05917e4a7f5caebb439b3d0f7b"></a><!-- doxytag: member="smeshDC::Mesh::NbHexas" ref="06c95e05917e4a7f5caebb439b3d0f7b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbHexas </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7ce22fe449679f671eb98154c133ac91"></a><!-- doxytag: member="smeshDC::Mesh::NbHexasOfOrder" ref="7ce22fe449679f671eb98154c133ac91" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbHexasOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="39f3b03a825603e0c3c8c2fd8fa35685"></a><!-- doxytag: member="smeshDC::Mesh::NbPyramids" ref="39f3b03a825603e0c3c8c2fd8fa35685" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPyramids </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="80ee709b9f8bf2d706833f2010a6873b"></a><!-- doxytag: member="smeshDC::Mesh::NbPyramidsOfOrder" ref="80ee709b9f8bf2d706833f2010a6873b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPyramidsOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="00a2ee826040c763152c28bc2f45d54d"></a><!-- doxytag: member="smeshDC::Mesh::NbPrisms" ref="00a2ee826040c763152c28bc2f45d54d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPrisms </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bd0854dc0bd1520d566d3e9f59d7ec22"></a><!-- doxytag: member="smeshDC::Mesh::NbPrismsOfOrder" ref="bd0854dc0bd1520d566d3e9f59d7ec22" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPrismsOfOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementOrder</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5025ca15b456b79f18c5f487f525aa1d"></a><!-- doxytag: member="smeshDC::Mesh::NbPolyhedrons" ref="5025ca15b456b79f18c5f487f525aa1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbPolyhedrons </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e50c4f6b5e8fd20526ae6a2cf4b4b3d"></a><!-- doxytag: member="smeshDC::Mesh::NbSubMesh" ref="6e50c4f6b5e8fd20526ae6a2cf4b4b3d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.NbSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e634c3574cfe53f945ec937a15a1a5a4"></a><!-- doxytag: member="smeshDC::Mesh::GetElementsId" ref="e634c3574cfe53f945ec937a15a1a5a4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetElementsId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e26ef77b1133bcba8d694220a43bb0c7"></a><!-- doxytag: member="smeshDC::Mesh::GetElementsByType" ref="e26ef77b1133bcba8d694220a43bb0c7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetElementsByType </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is required type of elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="548dd7ee73c4f714a976233520f1afe7"></a><!-- doxytag: member="smeshDC::Mesh::GetNodesId" ref="548dd7ee73c4f714a976233520f1afe7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetNodesId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c2cecd9dda12f1bb0ace5d0fbf83cd56"></a><!-- doxytag: member="smeshDC::Mesh::GetElementType" ref="c2cecd9dda12f1bb0ace5d0fbf83cd56" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetElementType </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>iselem</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b68f23b2eade0a29627e85f3ad6073b2"></a><!-- doxytag: member="smeshDC::Mesh::GetSubMeshElementsId" ref="b68f23b2eade0a29627e85f3ad6073b2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetSubMeshElementsId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>shapeID</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2efd22f2dee3f2f0a118a4ceb6793716"></a><!-- doxytag: member="smeshDC::Mesh::GetSubMeshNodesId" ref="2efd22f2dee3f2f0a118a4ceb6793716" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetSubMeshNodesId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>shapeID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>all</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4b29aa5027d111923d72130b2ce8e37c"></a><!-- doxytag: member="smeshDC::Mesh::GetSubMeshElementType" ref="4b29aa5027d111923d72130b2ce8e37c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetSubMeshElementType </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>shapeID</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="ede2e5f1f4aad2f6a3e2618efb879d02"></a><!-- doxytag: member="smeshDC::Mesh::Dump" ref="ede2e5f1f4aad2f6a3e2618efb879d02" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Dump </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ac4b569cd8022047a473edbe4f216802"></a><!-- doxytag: member="smeshDC::Mesh::GetNodeXYZ" ref="ac4b569cd8022047a473edbe4f216802" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetNodeXYZ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ea303e542d760d9748e6f4adb657f434"></a><!-- doxytag: member="smeshDC::Mesh::GetNodeInverseElements" ref="ea303e542d760d9748e6f4adb657f434" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetNodeInverseElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="95bd2c550e6485befcada57b13029242"></a><!-- doxytag: member="smeshDC::Mesh::GetShapeID" ref="95bd2c550e6485befcada57b13029242" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetShapeID </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="37691b345bd2fe31129f5d306c7285ff"></a><!-- doxytag: member="smeshDC::Mesh::GetShapeIDForElem" ref="37691b345bd2fe31129f5d306c7285ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetShapeIDForElem </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ea4c97bd804514962ff613a9545a99c3"></a><!-- doxytag: member="smeshDC::Mesh::GetElemNbNodes" ref="ea4c97bd804514962ff613a9545a99c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetElemNbNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="795fb7cd896a9336c2fb287edba1df46"></a><!-- doxytag: member="smeshDC::Mesh::GetElemNode" ref="795fb7cd896a9336c2fb287edba1df46" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetElemNode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>index</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7f8130a3b16c8459d0c8ad23389b3dac"></a><!-- doxytag: member="smeshDC::Mesh::IsMediumNode" ref="7f8130a3b16c8459d0c8ad23389b3dac" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IsMediumNode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>nodeID</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e405cf3b31ed146203c601d268824e34"></a><!-- doxytag: member="smeshDC::Mesh::IsMediumNodeOfAnyElem" ref="e405cf3b31ed146203c601d268824e34" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IsMediumNodeOfAnyElem </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>nodeID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4775548250a94a28fdc4349df6b5e664"></a><!-- doxytag: member="smeshDC::Mesh::ElemNbEdges" ref="4775548250a94a28fdc4349df6b5e664" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ElemNbEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4c42af133c335bb357f847e2dcc95a3e"></a><!-- doxytag: member="smeshDC::Mesh::ElemNbFaces" ref="4c42af133c335bb357f847e2dcc95a3e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ElemNbFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2d3c8a45cb35fed969935471438dd229"></a><!-- doxytag: member="smeshDC::Mesh::IsPoly" ref="2d3c8a45cb35fed969935471438dd229" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IsPoly </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="de565d48cd768a56da73df5eb12c8c4b"></a><!-- doxytag: member="smeshDC::Mesh::IsQuadratic" ref="de565d48cd768a56da73df5eb12c8c4b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.IsQuadratic </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c9c7f540a885ad5718f28c1b1cc8cc74"></a><!-- doxytag: member="smeshDC::Mesh::BaryCenter" ref="c9c7f540a885ad5718f28c1b1cc8cc74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.BaryCenter </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>id</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d71d7b886bb422f3eea601d22b4b419d"></a><!-- doxytag: member="smeshDC::Mesh::RemoveElements" ref="d71d7b886bb422f3eea601d22b4b419d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RemoveElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is list of ids of elements to remove </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="867a060a8a8ee32c75dcced1da15b022"></a><!-- doxytag: member="smeshDC::Mesh::RemoveNodes" ref="867a060a8a8ee32c75dcced1da15b022" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RemoveNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfNodes</em> </td><td>is list of ids of nodes to remove </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a4acf9d064dbf154f1f07cf18601c0ea"></a><!-- doxytag: member="smeshDC::Mesh::AddNode" ref="a4acf9d064dbf154f1f07cf18601c0ea" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddNode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="26131c97ad04a78613bdae200bb17660"></a><!-- doxytag: member="smeshDC::Mesh::AddEdge" ref="26131c97ad04a78613bdae200bb17660" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
+ This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7120695c0343590b47ef6e8f02766fa4"></a><!-- doxytag: member="smeshDC::Mesh::AddFace" ref="7120695c0343590b47ef6e8f02766fa4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
+ This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3d6fc9c8186016f2e37e4f2185d11446"></a><!-- doxytag: member="smeshDC::Mesh::AddPolygonalFace" ref="3d6fc9c8186016f2e37e4f2185d11446" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddPolygonalFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IdsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3ae39f43bb819ce72356e1ed1fd88589"></a><!-- doxytag: member="smeshDC::Mesh::AddVolume" ref="3ae39f43bb819ce72356e1ed1fd88589" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddVolume </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
+ This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4a537d81fc2a84c90dea4159c788f37c"></a><!-- doxytag: member="smeshDC::Mesh::AddPolyhedralVolume" ref="4a537d81fc2a84c90dea4159c788f37c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddPolyhedralVolume </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IdsOfNodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Quantities</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for volume creation face by face. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Quantities</em> </td><td>List of integer values, Quantities[i] gives quantity of nodes in face number i. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7c54c114d76ed3f108863a9639a17ca8"></a><!-- doxytag: member="smeshDC::Mesh::AddPolyhedralVolumeByFaces" ref="7c54c114d76ed3f108863a9639a17ca8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AddPolyhedralVolumeByFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IdsOfFaces</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IdsOfFaces</em> </td><td>List of face IDs for volume creation.</td></tr>
+ </table>
+</dl>
+Note: The created volume will refer only to nodes of the given faces, not to the faces itself.
+</div>
+</div><p>
+<a class="anchor" name="3a1236e58d50d925689b76e1e923f455"></a><!-- doxytag: member="smeshDC::Mesh::MoveNode" ref="3a1236e58d50d925689b76e1e923f455" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MoveNode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NodeID</em> </td><td>id of the node </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>new X coordinate </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>new Y coordinate </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>new Z coordinate </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="305fdba055982c393cfbbdb6dbb50646"></a><!-- doxytag: member="smeshDC::Mesh::FindNodeClosestTo" ref="305fdba055982c393cfbbdb6dbb50646" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.FindNodeClosestTo </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>X coordinate of a point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>Y coordinate of a point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>Z coordinate of a point </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>id of a node </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fd794d99dc4539f0b3c04f9a9372d476"></a><!-- doxytag: member="smeshDC::Mesh::MeshToPassThroughAPoint" ref="fd794d99dc4539f0b3c04f9a9372d476" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MeshToPassThroughAPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>X coordinate of a point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>Y coordinate of a point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>Z coordinate of a point </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>id of a moved node </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d5a94fade689f8efc3ed2c9e8ab7c7b1"></a><!-- doxytag: member="smeshDC::Mesh::InverseDiag" ref="d5a94fade689f8efc3ed2c9e8ab7c7b1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.InverseDiag </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NodeID1</em> </td><td>first node id </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NodeID2</em> </td><td>second node id </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if proper faces not found </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b76da5a684955529e10b291b421967f2"></a><!-- doxytag: member="smeshDC::Mesh::DeleteDiag" ref="b76da5a684955529e10b291b421967f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.DeleteDiag </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>NodeID1</em> </td><td>first node id </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NodeID2</em> </td><td>second node id </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if proper faces not found </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cf69091c91c36ce5335e4da2631ef7b6"></a><!-- doxytag: member="smeshDC::Mesh::Reorient" ref="cf69091c91c36ce5335e4da2631ef7b6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Reorient </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em> = <code>None</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>if undefined reorient all mesh elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="735a23aa0c42779067e6cc81be38dee3"></a><!-- doxytag: member="smeshDC::Mesh::ReorientObject" ref="735a23aa0c42779067e6cc81be38dee3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ReorientObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is mesh, submesh or group </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d0af9e5504148afa14cbfe672f05eb99"></a><!-- doxytag: member="smeshDC::Mesh::TriToQuad" ref="d0af9e5504148afa14cbfe672f05eb99" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.TriToQuad </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxAngle</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>The triangles to be fused, </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a neighbour to fuse with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAngle</em> </td><td>is a max angle between element normals at which fusion is still performed; theMaxAngle is mesured in radians. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b460127d4a11dc7093673699aa596251"></a><!-- doxytag: member="smeshDC::Mesh::TriToQuadObject" ref="b460127d4a11dc7093673699aa596251" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.TriToQuadObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxAngle</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is mesh, submesh or group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a neighbour to fuse with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAngle</em> </td><td>is a max angle between element normals at which fusion is still performed; theMaxAngle is mesured in radians. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0ed805191162c718c85f628da184399a"></a><!-- doxytag: member="smeshDC::Mesh::QuadToTri" ref="0ed805191162c718c85f628da184399a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.QuadToTri </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>the faces to be splitted. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a diagonal for splitting. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1338b63884c90a486869d1ca6bc1e5f3"></a><!-- doxytag: member="smeshDC::Mesh::QuadToTriObject" ref="1338b63884c90a486869d1ca6bc1e5f3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.QuadToTriObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to taking list of elements from, is mesh, submesh or group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a diagonal for splitting. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="79bebb3280d8727e0aa63abf72895e00"></a><!-- doxytag: member="smeshDC::Mesh::SplitQuad" ref="79bebb3280d8727e0aa63abf72895e00" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SplitQuad </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Diag13</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theElems</em> </td><td>The faces to be splitted </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>the13Diag</em> </td><td>is used to choose a diagonal for splitting. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9f72cd3ce05553fa81cb9ab55276c6e3"></a><!-- doxytag: member="smeshDC::Mesh::SplitQuadObject" ref="9f72cd3ce05553fa81cb9ab55276c6e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SplitQuadObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Diag13</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is object to taking list of elements from, is mesh, submesh or group </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0ccd083fa2ca43dca1df29a07dbc61d9"></a><!-- doxytag: member="smeshDC::Mesh::BestSplit" ref="0ccd083fa2ca43dca1df29a07dbc61d9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.BestSplit </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDOfQuad</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDOfQuad</em> </td><td>ID of the quadrangle to be splitted. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; a criterion to choose a diagonal for splitting. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 if 1-3 diagonal is better, 2 if 2-4 diagonal is better, 0 if error occurs. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c458281ac5240ea90076231f2ac91b7f"></a><!-- doxytag: member="smeshDC::Mesh::SplitQuadsNearTriangularFacets" ref="c458281ac5240ea90076231f2ac91b7f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SplitQuadsNearTriangularFacets </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="15037374765f1e7439997f1a2416590b"></a><!-- doxytag: member="smeshDC::Mesh::SplitHexaToTetras" ref="15037374765f1e7439997f1a2416590b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SplitHexaToTetras </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNode000</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNode001</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Use pattern mapping functionality for splitting. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to take list of hexahedrons from; is mesh, submesh or group. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNode000,theNode001</em> </td><td>is in range [0,7]; give an orientation of the pattern relatively each hexahedron: the (0,0,0) key-point of pattern will be mapped into <theNode000>-th node of each volume, the (0,0,1) key-point will be mapped into <theNode001>-th node of each volume. The (0,0,0) key-point of used pattern corresponds to not split corner. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="bcb5ef95810e1c2a8edb3041a73bf339"></a><!-- doxytag: member="smeshDC::Mesh::SplitHexaToPrisms" ref="bcb5ef95810e1c2a8edb3041a73bf339" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SplitHexaToPrisms </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNode000</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNode001</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Use pattern mapping functionality for splitting. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to take list of hexahedrons from; is mesh, submesh or group. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNode000,theNode001</em> </td><td>is in range [0,7]; give an orientation of the pattern relatively each hexahedron: the (0,0,0) key-point of pattern will be mapped into <theNode000>-th node of each volume, the (0,0,1) key-point will be mapped into <theNode001>-th node of each volume. The edge (0,0,0)-(0,0,1) of used pattern connects two not split corners. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="47625763762791aa12b279915db0f5bb"></a><!-- doxytag: member="smeshDC::Mesh::Smooth" ref="47625763762791aa12b279915db0f5bb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Smooth </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfFixedNodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxNbOfIterations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxAspectRatio</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Method</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list if ids of elements to smooth </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="02b0945fb6cba824e7a02398d58ff2d2"></a><!-- doxytag: member="smeshDC::Mesh::SmoothObject" ref="02b0945fb6cba824e7a02398d58ff2d2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SmoothObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfFixedNodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxNbOfIterations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxxAspectRatio</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Method</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to smooth </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="576f1975cee8eccb70bddcbf5c79a1b8"></a><!-- doxytag: member="smeshDC::Mesh::SmoothParametric" ref="576f1975cee8eccb70bddcbf5c79a1b8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SmoothParametric </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfFixedNodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxNbOfIterations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxAspectRatio</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Method</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list if ids of elements to smooth </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e6188d5cbc547c960b65cbf03a64c360"></a><!-- doxytag: member="smeshDC::Mesh::SmoothParametricObject" ref="e6188d5cbc547c960b65cbf03a64c360" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SmoothParametricObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfFixedNodes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxNbOfIterations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MaxAspectRatio</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Method</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to smooth </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="950b615f72cf87e1b1f30b9bcba1def7"></a><!-- doxytag: member="smeshDC::Mesh::ConvertToQuadratic" ref="950b615f72cf87e1b1f30b9bcba1def7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ConvertToQuadratic </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theForce3d</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="63fdf86ae5a1c450d372789732dc85ed"></a><!-- doxytag: member="smeshDC::Mesh::ConvertFromQuadratic" ref="63fdf86ae5a1c450d372789732dc85ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ConvertFromQuadratic </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8b7a1f81371994a5fcbb58b56ec26382"></a><!-- doxytag: member="smeshDC::Mesh::RenumberNodes" ref="8b7a1f81371994a5fcbb58b56ec26382" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RenumberNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="05d3b3ae8bda7842bc69a72b9426a69d"></a><!-- doxytag: member="smeshDC::Mesh::RenumberElements" ref="05d3b3ae8bda7842bc69a72b9426a69d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RenumberElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="51fafc65b1c00aa71fb3368302879e90"></a><!-- doxytag: member="smeshDC::Mesh::RotationSweep" ref="51fafc65b1c00aa71fb3368302879e90" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RotationSweep </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Axix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>AngleInRadians</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Tolerance</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of ids of elements to sweep </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Axix</em> </td><td>axis of rotation, AxisStruct or line(geom object) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of Rotation </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>number of steps </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e1801356bd22826c806ff0991e44e9ab"></a><!-- doxytag: member="smeshDC::Mesh::RotationSweepObject" ref="e1801356bd22826c806ff0991e44e9ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RotationSweepObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Axix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>AngleInRadians</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Tolerance</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be sweeped </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Axix</em> </td><td>axis of rotation, AxisStruct or line(geom object) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of Rotation </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>number of steps </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a9104edbd7b7c6cbc3b1ba9538ed9f59"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionSweep" ref="a9104edbd7b7c6cbc3b1ba9538ed9f59" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionSweep </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>StepVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids for extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f67f780ee272071948ac9ef85373dc3a"></a><!-- doxytag: member="smeshDC::Mesh::AdvancedExtrusion" ref="f67f780ee272071948ac9ef85373dc3a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.AdvancedExtrusion </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>StepVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ExtrFlags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SewTolerance</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ExtrFlags</em> </td><td>set flags for performing extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>SewTolerance</em> </td><td>uses for comparing locations of nodes if flag EXTRUSION_FLAG_SEW is set </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="42c025c8067cc5cc0090d6ec1412ad4d"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionSweepObject" ref="42c025c8067cc5cc0090d6ec1412ad4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionSweepObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>StepVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e95c632534893826ba9946d97caef095"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionSweepObject1D" ref="e95c632534893826ba9946d97caef095" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionSweepObject1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>StepVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="43fb0ee239a93e665d6d7cb743b08325"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionSweepObject2D" ref="43fb0ee239a93e665d6d7cb743b08325" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionSweepObject2D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>StepVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbOfSteps</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="faef42567ec17757143a6b0b1b0ffd14"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionAlongPath" ref="faef42567ec17757143a6b0b1b0ffd14" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionAlongPath </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>PathMesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>PathShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeStart</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>HasAngles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Angles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>HasRefPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>RefPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LinearVariation</em> = <code>False</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>PathMesh</em> </td><td>mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>PathShape</em> </td><td>is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NodeStart</em> </td><td>the first or the last node on the edge. It is used to define the direction of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>HasAngles</em> </td><td>allows the shape to be rotated around the path to get the resulting mesh in a helical fashion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Angles</em> </td><td>list of angles </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>HasRefPoint</em> </td><td>allows to use base point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>RefPoint</em> </td><td>point around which the shape is rotated(the mass center of the shape by default). User can specify any point as the Base Point and the shape will be rotated with respect to this point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>LinearVariation</em> </td><td>makes compute rotation angles as linear variation of given Angles along path steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="802c0f3464746978efbf0194bb7472fc"></a><!-- doxytag: member="smeshDC::Mesh::ExtrusionAlongPathObject" ref="802c0f3464746978efbf0194bb7472fc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ExtrusionAlongPathObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>PathMesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>PathShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeStart</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>HasAngles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Angles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>HasRefPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>RefPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LinearVariation</em> = <code>False</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>PathMesh</em> </td><td>mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>PathShape</em> </td><td>is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NodeStart</em> </td><td>the first or the last node on the edge. It is used to define the direction of extrusion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>HasAngles</em> </td><td>allows the shape to be rotated around the path to get the resulting mesh in a helical fashion </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Angles</em> </td><td>list of angles </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>HasRefPoint</em> </td><td>allows to use base point </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>RefPoint</em> </td><td>point around which the shape is rotated(the mass center of the shape by default). User can specify any point as the Base Point and the shape will be rotated with respect to this point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>LinearVariation</em> </td><td>makes compute rotation angles as linear variation of given Angles along path steps </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4f24d9ac04c1f7adb4ce72630103b39e"></a><!-- doxytag: member="smeshDC::Mesh::Mirror" ref="4f24d9ac04c1f7adb4ce72630103b39e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Mirror </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Mirror</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMirrorType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Mirror</em> </td><td>is AxisStruct or geom object(point, line, plane) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMirrorType</em> </td><td>is POINT, AXIS or PLANE If the Mirror is geom object this parameter is unnecessary </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="921c02f7d4778d395bcab56d067207e4"></a><!-- doxytag: member="smeshDC::Mesh::MirrorObject" ref="921c02f7d4778d395bcab56d067207e4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MirrorObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Mirror</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMirrorType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>mesh, submesh or group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Mirror</em> </td><td>is AxisStruct or geom object(point, line, plane) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMirrorType</em> </td><td>is POINT, AXIS or PLANE If the Mirror is geom object this parameter is unnecessary </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1e2faa9a7a0d7f38608bc5b4c4e9102a"></a><!-- doxytag: member="smeshDC::Mesh::Translate" ref="1e2faa9a7a0d7f38608bc5b4c4e9102a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Translate </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Vector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Vector</em> </td><td>direction of translation(DirStruct or vector) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the translated elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="22ec87ab4df5e8998e574e8c05a9723a"></a><!-- doxytag: member="smeshDC::Mesh::TranslateObject" ref="22ec87ab4df5e8998e574e8c05a9723a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.TranslateObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Vector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to translate(mesh, submesh, or group) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Vector</em> </td><td>direction of translation(DirStruct or geom vector) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the translated elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="228afef21b2340aa09e0b193f59001b0"></a><!-- doxytag: member="smeshDC::Mesh::Rotate" ref="228afef21b2340aa09e0b193f59001b0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.Rotate </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Axis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>AngleInRadians</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Axis</em> </td><td>axis of rotation(AxisStruct or geom line) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of rotation(in radians) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the rotated elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="aaf823b609d2b45aee3f2751b32c8d2d"></a><!-- doxytag: member="smeshDC::Mesh::RotateObject" ref="aaf823b609d2b45aee3f2751b32c8d2d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.RotateObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Axis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>AngleInRadians</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Copy</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to rotate(mesh, submesh, or group) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Axis</em> </td><td>axis of rotation(AxisStruct or geom line) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of rotation(in radians) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the rotated elements </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="264d2001aebb0e526af2bf9495750f6c"></a><!-- doxytag: member="smeshDC::Mesh::FindCoincidentNodes" ref="264d2001aebb0e526af2bf9495750f6c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.FindCoincidentNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Tolerance</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance value </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b05f9ed75d38e2038924b88cdfd546ae"></a><!-- doxytag: member="smeshDC::Mesh::FindCoincidentNodesOnPart" ref="b05f9ed75d38e2038924b88cdfd546ae" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.FindCoincidentNodesOnPart </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SubMeshOrGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Tolerance</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance value </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>SubMeshOrGroup</em> </td><td>SubMesh or Group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="503c866e8a58227e6d70877843b96e4a"></a><!-- doxytag: member="smeshDC::Mesh::MergeNodes" ref="503c866e8a58227e6d70877843b96e4a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MergeNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>GroupsOfNodes</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="643c80318fafd3d98c530c88ebdc4257"></a><!-- doxytag: member="smeshDC::Mesh::FindEqualElements" ref="643c80318fafd3d98c530c88ebdc4257" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.FindEqualElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>MeshOrSubMeshOrGroup</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>MeshOrSubMeshOrGroup</em> </td><td><a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> or SubMesh, or Group of elements for searching </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a list of groups of equal elements </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="023c5ccae0e02e73485019fe82ab8b35"></a><!-- doxytag: member="smeshDC::Mesh::MergeElements" ref="023c5ccae0e02e73485019fe82ab8b35" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MergeElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>GroupsOfElementsID</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>GroupsOfElementsID</em> </td><td>groups of elements for merging </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f76363128b31cbe3fc32afc9cd771565"></a><!-- doxytag: member="smeshDC::Mesh::MergeEqualElements" ref="f76363128b31cbe3fc32afc9cd771565" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.MergeEqualElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="079f6131307a4be37245823e6fd724da"></a><!-- doxytag: member="smeshDC::Mesh::SewFreeBorders" ref="079f6131307a4be37245823e6fd724da" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SewFreeBorders </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SecondNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LastNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeID2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SecondNodeID2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LastNodeID2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CreatePolygons</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CreatePolyedrs</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="0c54ec7794e65956ecfab94476230a6e"></a><!-- doxytag: member="smeshDC::Mesh::SewConformFreeBorders" ref="0c54ec7794e65956ecfab94476230a6e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SewConformFreeBorders </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SecondNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LastNodeID1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeID2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SecondNodeID2</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e887767b6fb87c6be80763f4f78e2252"></a><!-- doxytag: member="smeshDC::Mesh::SewBorderToSide" ref="e887767b6fb87c6be80763f4f78e2252" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SewBorderToSide </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeIDOnFreeBorder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>SecondNodeIDOnFreeBorder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LastNodeIDOnFreeBorder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>FirstNodeIDOnSide</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>LastNodeIDOnSide</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CreatePolygons</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CreatePolyedrs</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1feede9a829e6f347641ba073840f13d"></a><!-- doxytag: member="smeshDC::Mesh::SewSideElements" ref="1feede9a829e6f347641ba073840f13d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.SewSideElements </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfSide1Elements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>IDsOfSide2Elements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID1OfSide1ToMerge</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID1OfSide2ToMerge</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID2OfSide1ToMerge</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NodeID2OfSide2ToMerge</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Nodes belonging to Side1 are merged with nodes of elements of Side2. Number of elements in theSide1 and in theSide2 must be equal and they should have similar node connectivity. The nodes to merge should belong to sides borders and the first node should be linked to the second.
+</div>
+</div><p>
+<a class="anchor" name="e613925597654962cd6bc1354cd847ab"></a><!-- doxytag: member="smeshDC::Mesh::ChangeElemNodes" ref="e613925597654962cd6bc1354cd847ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.ChangeElemNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ide</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>newIDs</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ide</em> </td><td>the element id </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>newIDs</em> </td><td>nodes ids </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>If number of nodes is not corresponded to type of element - returns false </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8589dd93f380f74a91d1a270a3329392"></a><!-- doxytag: member="smeshDC::Mesh::GetLastCreatedNodes" ref="8589dd93f380f74a91d1a270a3329392" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetLastCreatedNodes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="86d590631a7eb99c5e0e6c38c596ed7c"></a><!-- doxytag: member="smeshDC::Mesh::GetLastCreatedElems" ref="86d590631a7eb99c5e0e6c38c596ed7c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh.GetLastCreatedElems </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="9f46fbb458e5173bd4ef0f816ed778a2"></a><!-- doxytag: member="smeshDC::Mesh::geom" ref="9f46fbb458e5173bd4ef0f816ed778a2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh.html#9f46fbb458e5173bd4ef0f816ed778a2">smeshDC.Mesh.geom</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ab3d2e782c81eb8c172ffea4934d9afc"></a><!-- doxytag: member="smeshDC::Mesh::mesh" ref="ab3d2e782c81eb8c172ffea4934d9afc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh.html#ab3d2e782c81eb8c172ffea4934d9afc">smeshDC.Mesh.mesh</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2208820f1e04d15486802226576b45d8"></a><!-- doxytag: member="smeshDC::Mesh::editor" ref="2208820f1e04d15486802226576b45d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh.html#2208820f1e04d15486802226576b45d8">smeshDC.Mesh.editor</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="0be9a9dabe33b7f3fdd5a1e31a19de30"></a><!-- doxytag: member="smeshDC::Mesh::smeshpyD" ref="0be9a9dabe33b7f3fdd5a1e31a19de30" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh.html#0be9a9dabe33b7f3fdd5a1e31a19de30">smeshDC.Mesh.smeshpyD</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8d2ba56c7de00d23867fb26908a09dbd"></a><!-- doxytag: member="smeshDC::Mesh::geompyD" ref="8d2ba56c7de00d23867fb26908a09dbd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh.html#8d2ba56c7de00d23867fb26908a09dbd">smeshDC.Mesh.geompyD</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="85b1f2feb28730e9a226fbe98b9198a8"></a><!-- doxytag: member="smeshDC::Mesh::geom" ref="85b1f2feb28730e9a226fbe98b9198a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh.html#9f46fbb458e5173bd4ef0f816ed778a2">smeshDC.Mesh.geom</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="046173eaa203630e4a12147a8dc031da"></a><!-- doxytag: member="smeshDC::Mesh::mesh" ref="046173eaa203630e4a12147a8dc031da" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh.html#ab3d2e782c81eb8c172ffea4934d9afc">smeshDC.Mesh.mesh</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a7484397c0eafe910f9e5b1fb77a20f3"></a><!-- doxytag: member="smeshDC::Mesh::editor" ref="a7484397c0eafe910f9e5b1fb77a20f3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh.html#2208820f1e04d15486802226576b45d8">smeshDC.Mesh.editor</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:52 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html">Mesh_Algorithm</a></div>
+<h1>smeshDC.Mesh_Algorithm Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Algorithm" -->Mother class to define algorithm, recommended to don't use directly.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Algorithm:<p><center><img src="classsmeshDC_1_1Mesh__Algorithm__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Algorithm__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Algorithm__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Hexahedron.html" shape="rect" coords="258,8,466,32" alt="">
+<area href="classsmeshDC_1_1Mesh__Netgen.html" shape="rect" coords="274,56,450,80" alt="">
+<area href="classsmeshDC_1_1Mesh__Prism3D.html" shape="rect" coords="272,104,453,128" alt="">
+<area href="classsmeshDC_1_1Mesh__Projection1D.html" shape="rect" coords="257,152,468,176" alt="">
+<area href="classsmeshDC_1_1Mesh__Projection2D.html" shape="rect" coords="257,200,468,224" alt="">
+<area href="classsmeshDC_1_1Mesh__Projection3D.html" shape="rect" coords="257,248,468,272" alt="">
+<area href="classsmeshDC_1_1Mesh__Quadrangle.html" shape="rect" coords="260,296,465,320" alt="">
+<area href="classsmeshDC_1_1Mesh__RadialPrism3D.html" shape="rect" coords="250,344,474,368" alt="">
+<area href="classsmeshDC_1_1Mesh__Segment.html" shape="rect" coords="269,392,456,416" alt="">
+<area href="classsmeshDC_1_1Mesh__Tetrahedron.html" shape="rect" coords="260,440,465,464" alt="">
+<area href="classsmeshDC_1_1Mesh__Triangle.html" shape="rect" coords="273,488,452,512" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Algorithm::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:41 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__CompositeSegment.html">Mesh_CompositeSegment</a></div>
+<h1>smeshDC.Mesh_CompositeSegment Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_CompositeSegment" --><!-- doxytag: inherits="smeshDC::Mesh_Segment" -->Class to define a segment 1D algorithm for discretization.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_CompositeSegment:<p><center><img src="classsmeshDC_1_1Mesh__CompositeSegment__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__CompositeSegment__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__CompositeSegment__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Segment.html" shape="rect" coords="42,84,229,108" alt="">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="40,9,232,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__CompositeSegment.html#3e92141214a56886fdf7918a922ef0af">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#3e92141214a56886fdf7918a922ef0af"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#2f9d15d24a38ccc273014f85ea6dcd24">LocalLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#2f9d15d24a38ccc273014f85ea6dcd24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#04608e6ca6e7008ebd248548f24a8248">NumberOfSegments</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#04608e6ca6e7008ebd248548f24a8248"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#4e44e56e3986592ea4b373314350ba1e">Arithmetic1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#4e44e56e3986592ea4b373314350ba1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#55111c455f6db69788784ab3592422bf">StartEndLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#55111c455f6db69788784ab3592422bf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#9c66c7680baa0ad57798f636f1f76714">Deflection1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#9c66c7680baa0ad57798f636f1f76714"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#a056c4ab47821070f56256c5247a83dc">Propagation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#a056c4ab47821070f56256c5247a83dc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#37c89f203f0c2d4b668775f38d406d00">AutomaticLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#37c89f203f0c2d4b668775f38d406d00"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#b55e9b34c5e68ad2a4bf8aa5b737de9b">LengthNearVertex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#99a77d794183b6b42d27c4d63f85fe74">QuadraticMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#99a77d794183b6b42d27c4d63f85fe74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3e92141214a56886fdf7918a922ef0af"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::__init__" ref="3e92141214a56886fdf7918a922ef0af" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_CompositeSegment.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented from <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#5c4a83872230465157d06af21b0b0982">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2f9d15d24a38ccc273014f85ea6dcd24"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::LocalLength" ref="2f9d15d24a38ccc273014f85ea6dcd24" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LocalLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>l</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="04608e6ca6e7008ebd248548f24a8248"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::NumberOfSegments" ref="04608e6ca6e7008ebd248548f24a8248" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.NumberOfSegments </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s</em> = <code>[]</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4e44e56e3986592ea4b373314350ba1e"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::Arithmetic1D" ref="4e44e56e3986592ea4b373314350ba1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Arithmetic1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="55111c455f6db69788784ab3592422bf"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::StartEndLength" ref="55111c455f6db69788784ab3592422bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.StartEndLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9c66c7680baa0ad57798f636f1f76714"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::Deflection1D" ref="9c66c7680baa0ad57798f636f1f76714" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Deflection1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>d</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a056c4ab47821070f56256c5247a83dc"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::Propagation" ref="a056c4ab47821070f56256c5247a83dc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Propagation </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="37c89f203f0c2d4b668775f38d406d00"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::AutomaticLength" ref="37c89f203f0c2d4b668775f38d406d00" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.AutomaticLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::LengthNearVertex" ref="b55e9b34c5e68ad2a4bf8aa5b737de9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LengthNearVertex </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>vertex</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="99a77d794183b6b42d27c4d63f85fe74"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::QuadraticMesh" ref="99a77d794183b6b42d27c4d63f85fe74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.QuadraticMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails.
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="44e8968ec16413fd4aac2b906c313c0e"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::geom" ref="44e8968ec16413fd4aac2b906c313c0e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented from <a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm</a>.
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_CompositeSegment::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:43 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Hexahedron.html">Mesh_Hexahedron</a></div>
+<h1>smeshDC.Mesh_Hexahedron Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Hexahedron" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a hexahedron 3D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Hexahedron:<p><center><img src="classsmeshDC_1_1Mesh__Hexahedron__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Hexahedron__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Hexahedron__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="16,9,208,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Hexahedron.html#eba90a9ad532744e074d3de1479c6c67">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#eba90a9ad532744e074d3de1479c6c67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="eba90a9ad532744e074d3de1479c6c67"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::__init__" ref="eba90a9ad532744e074d3de1479c6c67" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Hexahedron.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Hexahedron::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:47 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Netgen.html">Mesh_Netgen</a></div>
+<h1>smeshDC.Mesh_Netgen Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Netgen" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Netgen:<p><center><img src="classsmeshDC_1_1Mesh__Netgen__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Netgen__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Netgen__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,200,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#cc249253a950e976bbbd35bb2bfeb38e">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#cc249253a950e976bbbd35bb2bfeb38e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#10530284277e8628d75bfc54415ed540">Parameters</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define hypothesis containing parameters of the algorithm. <a href="#10530284277e8628d75bfc54415ed540"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#fe33f93c8752f6c1e82ff3023bc1d3fd">is3D</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#deeb4b81754fbde417907ac821dc7134">is3D</a> = 0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+independent)<p>
+This class is deprecated, only for compatibility!<p>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="cc249253a950e976bbbd35bb2bfeb38e"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::__init__" ref="cc249253a950e976bbbd35bb2bfeb38e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Netgen.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>is3D</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="10530284277e8628d75bfc54415ed540"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::Parameters" ref="10530284277e8628d75bfc54415ed540" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Netgen.Parameters </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="deeb4b81754fbde417907ac821dc7134"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::is3D" ref="deeb4b81754fbde417907ac821dc7134" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#deeb4b81754fbde417907ac821dc7134">smeshDC.Mesh_Netgen.is3D</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fe33f93c8752f6c1e82ff3023bc1d3fd"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::is3D" ref="fe33f93c8752f6c1e82ff3023bc1d3fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html#deeb4b81754fbde417907ac821dc7134">smeshDC.Mesh_Netgen.is3D</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Netgen::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:48 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Prism3D.html">Mesh_Prism3D</a></div>
+<h1>smeshDC.Mesh_Prism3D Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Prism3D" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a 3D extrusion algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Prism3D:<p><center><img src="classsmeshDC_1_1Mesh__Prism3D__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Prism3D__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Prism3D__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,200,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Prism3D.html#4ce95d1e28e83b154b907b13478c1d9e">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#4ce95d1e28e83b154b907b13478c1d9e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="4ce95d1e28e83b154b907b13478c1d9e"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::__init__" ref="4ce95d1e28e83b154b907b13478c1d9e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Prism3D.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Prism3D::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:51 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Projection1D.html">Mesh_Projection1D</a></div>
+<h1>smeshDC.Mesh_Projection1D Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Projection1D" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a projection 1D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Projection1D:<p><center><img src="classsmeshDC_1_1Mesh__Projection1D__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Projection1D__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Projection1D__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="17,9,209,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection1D.html#2149b168dc43aee773f8c2abd254c3ab">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#2149b168dc43aee773f8c2abd254c3ab"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection1D.html#e0701063b5905dfd9da3b451fc2dd5e1">SourceEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Edge" hypothesis, specifying a meshed edge to take a mesh pattern from, and optionally association of vertices between the source edge and a target one (where a hipothesis is assigned to). <a href="#e0701063b5905dfd9da3b451fc2dd5e1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="2149b168dc43aee773f8c2abd254c3ab"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::__init__" ref="2149b168dc43aee773f8c2abd254c3ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection1D.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e0701063b5905dfd9da3b451fc2dd5e1"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::SourceEdge" ref="e0701063b5905dfd9da3b451fc2dd5e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection1D.SourceEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>edge</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>srcV</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>tgtV</em> = <code>None</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>edge</em> </td><td>to take nodes distribution from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take nodes distribution from (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>srcV</em> </td><td>is vertex of <em>edge</em> to associate with <em>tgtV</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tgtV</em> </td><td>is vertex of <em>the</em> edge where the algorithm is assigned, to associate with <em>srcV</em> (optional) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Projection1D::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:49 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Projection2D.html">Mesh_Projection2D</a></div>
+<h1>smeshDC.Mesh_Projection2D Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Projection2D" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a projection 2D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Projection2D:<p><center><img src="classsmeshDC_1_1Mesh__Projection2D__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Projection2D__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Projection2D__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="17,9,209,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection2D.html#b218b943a0376aa9edec0520e11cabc6">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#b218b943a0376aa9edec0520e11cabc6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection2D.html#455c8da553d208def480454bfa9e915f">SourceFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Face" hypothesis, specifying a meshed face to take a mesh pattern from, and optionally association of vertices between the source face and a target one (where a hipothesis is assigned to). <a href="#455c8da553d208def480454bfa9e915f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="b218b943a0376aa9edec0520e11cabc6"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::__init__" ref="b218b943a0376aa9edec0520e11cabc6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection2D.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="455c8da553d208def480454bfa9e915f"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::SourceFace" ref="455c8da553d208def480454bfa9e915f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection2D.SourceFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>face</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>srcV1</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>tgtV1</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>srcV2</em> = <code>None</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>tgtV2</em> = <code>None</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>face</em> </td><td>to take mesh pattern from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take mesh pattern from (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>srcV1</em> </td><td>is vertex of <em>face</em> to associate with <em>tgtV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tgtV1</em> </td><td>is vertex of <em>the</em> face where the algorithm is assigned, to associate with <em>srcV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>srcV2</em> </td><td>is vertex of <em>face</em> to associate with <em>tgtV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tgtV2</em> </td><td>is vertex of <em>the</em> face where the algorithm is assigned, to associate with <em>srcV2</em> (optional)</td></tr>
+ </table>
+</dl>
+Note: association vertices must belong to one edge of a face
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Projection2D::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:50 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Projection3D.html">Mesh_Projection3D</a></div>
+<h1>smeshDC.Mesh_Projection3D Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Projection3D" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a projection 3D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Projection3D:<p><center><img src="classsmeshDC_1_1Mesh__Projection3D__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Projection3D__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Projection3D__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="17,9,209,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection3D.html#a2b866785c6c7c5d71b79c44a743e7a0">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#a2b866785c6c7c5d71b79c44a743e7a0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection3D.html#7b3368edafb7a696506b2d2ab703c835">SourceShape3D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Shape 3D" hypothesis, specifying a meshed solid to take a mesh pattern from, and optionally association of vertices between the source solid and a target one (where a hipothesis is assigned to). <a href="#7b3368edafb7a696506b2d2ab703c835"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="a2b866785c6c7c5d71b79c44a743e7a0"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::__init__" ref="a2b866785c6c7c5d71b79c44a743e7a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection3D.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7b3368edafb7a696506b2d2ab703c835"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::SourceShape3D" ref="7b3368edafb7a696506b2d2ab703c835" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Projection3D.SourceShape3D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>solid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>srcV1</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>tgtV1</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>srcV2</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>tgtV2</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>solid</em> </td><td>to take mesh pattern from </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take mesh pattern from (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>srcV1</em> </td><td>is vertex of <em>solid</em> to associate with <em>tgtV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tgtV1</em> </td><td>is vertex of <em>the</em> solid where the algorithm is assigned, to associate with <em>srcV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>srcV2</em> </td><td>is vertex of <em>solid</em> to associate with <em>tgtV1</em> (optional) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>tgtV2</em> </td><td>is vertex of <em>the</em> solid where the algorithm is assigned, to associate with <em>srcV2</em> (optional)</td></tr>
+ </table>
+</dl>
+Note: association vertices must belong to one edge of a solid
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Projection3D::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:51 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Quadrangle.html">Mesh_Quadrangle</a></div>
+<h1>smeshDC.Mesh_Quadrangle Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Quadrangle" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a quadrangle 2D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Quadrangle:<p><center><img src="classsmeshDC_1_1Mesh__Quadrangle__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Quadrangle__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Quadrangle__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="14,9,206,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Quadrangle.html#be7e16731b1a94760df4e685f714da46">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#be7e16731b1a94760df4e685f714da46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Quadrangle.html#fe1d8832a448dd80ae454a959901bb80">QuadranglePreference</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadranglePreference" hypothesis, forcing construction of quadrangles if the number of nodes on opposite edges is not the same in the case where the global number of nodes on edges is even. <a href="#fe1d8832a448dd80ae454a959901bb80"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="be7e16731b1a94760df4e685f714da46"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::__init__" ref="be7e16731b1a94760df4e685f714da46" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Quadrangle.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fe1d8832a448dd80ae454a959901bb80"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::QuadranglePreference" ref="fe1d8832a448dd80ae454a959901bb80" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Quadrangle.QuadranglePreference </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Quadrangle::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:46 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html">Mesh_RadialPrism3D</a></div>
+<h1>smeshDC.Mesh_RadialPrism3D Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_RadialPrism3D" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a Radial Prism 3D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_RadialPrism3D:<p><center><img src="classsmeshDC_1_1Mesh__RadialPrism3D__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__RadialPrism3D__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__RadialPrism3D__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="24,9,216,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#8fcbbe1962a3f18d7fb41aadc7fd1c77">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#8fcbbe1962a3f18d7fb41aadc7fd1c77"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#caad8abecf265d92e1a43bbbced3e7ab">Get3DHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return 3D hypothesis holding the 1D one. <a href="#caad8abecf265d92e1a43bbbced3e7ab"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#a819a98bc2f4bae947d8cb3fcaae857b">OwnHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method creating 1D hypothes and storing it in the LayerDistribution hypothes. <a href="#a819a98bc2f4bae947d8cb3fcaae857b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#d1a1a93cf42a184945572e48023e32ca">NumberOfLayers</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfLayers" hypothesis, specifying a number of layers of prisms to build between the inner and outer shells. <a href="#d1a1a93cf42a184945572e48023e32ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#439d3fde7be45cf430d4a14a0a3abbfa">LocalLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis, specifying segment length to build between the inner and outer shells. <a href="#439d3fde7be45cf430d4a14a0a3abbfa"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#fba81e8f71b3a76b1bced257da509989">NumberOfSegments</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis, specifying a number of layers of prisms to build between the inner and outer shells. <a href="#fba81e8f71b3a76b1bced257da509989"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#3a989ad23dfeaae5d2e26a993effe4ad">Arithmetic1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis, specifying distribution of segments to build between the inner and outer shells as arithmetic length increasing. <a href="#3a989ad23dfeaae5d2e26a993effe4ad"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#645825522286911f7257b6c258e650ca">StartEndLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis, specifying distribution of segments to build between the inner and outer shells as geometric length increasing. <a href="#645825522286911f7257b6c258e650ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#e47fd6f4c97e698438369657c14a3bbb">AutomaticLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis, specifying number of segments to build between the inner and outer shells. <a href="#e47fd6f4c97e698438369657c14a3bbb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#ff0943173414c92c9d36420a195b898f">distribHyp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#9f6f2363961e154bfc8212c155acf6bf">nbLayers</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="8fcbbe1962a3f18d7fb41aadc7fd1c77"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::__init__" ref="8fcbbe1962a3f18d7fb41aadc7fd1c77" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="caad8abecf265d92e1a43bbbced3e7ab"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::Get3DHypothesis" ref="caad8abecf265d92e1a43bbbced3e7ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.Get3DHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a819a98bc2f4bae947d8cb3fcaae857b"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::OwnHypothesis" ref="a819a98bc2f4bae947d8cb3fcaae857b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.OwnHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Returns the created hypothes
+</div>
+</div><p>
+<a class="anchor" name="d1a1a93cf42a184945572e48023e32ca"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::NumberOfLayers" ref="d1a1a93cf42a184945572e48023e32ca" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.NumberOfLayers </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="439d3fde7be45cf430d4a14a0a3abbfa"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::LocalLength" ref="439d3fde7be45cf430d4a14a0a3abbfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.LocalLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>l</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fba81e8f71b3a76b1bced257da509989"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::NumberOfSegments" ref="fba81e8f71b3a76b1bced257da509989" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.NumberOfSegments </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s</em> = <code>[]</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3a989ad23dfeaae5d2e26a993effe4ad"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::Arithmetic1D" ref="3a989ad23dfeaae5d2e26a993effe4ad" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.Arithmetic1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="645825522286911f7257b6c258e650ca"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::StartEndLength" ref="645825522286911f7257b6c258e650ca" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.StartEndLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e47fd6f4c97e698438369657c14a3bbb"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::AutomaticLength" ref="e47fd6f4c97e698438369657c14a3bbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_RadialPrism3D.AutomaticLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="ff0943173414c92c9d36420a195b898f"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::distribHyp" ref="ff0943173414c92c9d36420a195b898f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#ff0943173414c92c9d36420a195b898f">smeshDC.Mesh_RadialPrism3D.distribHyp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9f6f2363961e154bfc8212c155acf6bf"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::nbLayers" ref="9f6f2363961e154bfc8212c155acf6bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html#9f6f2363961e154bfc8212c155acf6bf">smeshDC.Mesh_RadialPrism3D.nbLayers</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_RadialPrism3D::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:52 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Segment.html">Mesh_Segment</a></div>
+<h1>smeshDC.Mesh_Segment Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Segment" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a segment 1D algorithm for discretization.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Segment:<p><center><img src="classsmeshDC_1_1Mesh__Segment__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Segment__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Segment__inherit__map">
+<area href="classsmeshDC_1_1Mesh__CompositeSegment.html" shape="rect" coords="7,158,263,182" alt="">
+<area href="classsmeshDC_1_1Mesh__Segment__Python.html" shape="rect" coords="287,158,525,182" alt="">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="174,9,366,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#5c4a83872230465157d06af21b0b0982">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#5c4a83872230465157d06af21b0b0982"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#2f9d15d24a38ccc273014f85ea6dcd24">LocalLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#2f9d15d24a38ccc273014f85ea6dcd24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#04608e6ca6e7008ebd248548f24a8248">NumberOfSegments</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#04608e6ca6e7008ebd248548f24a8248"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#4e44e56e3986592ea4b373314350ba1e">Arithmetic1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#4e44e56e3986592ea4b373314350ba1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#55111c455f6db69788784ab3592422bf">StartEndLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#55111c455f6db69788784ab3592422bf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#9c66c7680baa0ad57798f636f1f76714">Deflection1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#9c66c7680baa0ad57798f636f1f76714"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#a056c4ab47821070f56256c5247a83dc">Propagation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#a056c4ab47821070f56256c5247a83dc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#37c89f203f0c2d4b668775f38d406d00">AutomaticLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#37c89f203f0c2d4b668775f38d406d00"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#b55e9b34c5e68ad2a4bf8aa5b737de9b">LengthNearVertex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#99a77d794183b6b42d27c4d63f85fe74">QuadraticMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#99a77d794183b6b42d27c4d63f85fe74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="5c4a83872230465157d06af21b0b0982"></a><!-- doxytag: member="smeshDC::Mesh_Segment::__init__" ref="5c4a83872230465157d06af21b0b0982" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__CompositeSegment.html#3e92141214a56886fdf7918a922ef0af">smeshDC.Mesh_CompositeSegment</a>, and <a class="el" href="classsmeshDC_1_1Mesh__Segment__Python.html#e38eb8379c79bc2a3f29658209098f2b">smeshDC.Mesh_Segment_Python</a>.
+</div>
+</div><p>
+<a class="anchor" name="2f9d15d24a38ccc273014f85ea6dcd24"></a><!-- doxytag: member="smeshDC::Mesh_Segment::LocalLength" ref="2f9d15d24a38ccc273014f85ea6dcd24" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LocalLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>l</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="04608e6ca6e7008ebd248548f24a8248"></a><!-- doxytag: member="smeshDC::Mesh_Segment::NumberOfSegments" ref="04608e6ca6e7008ebd248548f24a8248" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.NumberOfSegments </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s</em> = <code>[]</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4e44e56e3986592ea4b373314350ba1e"></a><!-- doxytag: member="smeshDC::Mesh_Segment::Arithmetic1D" ref="4e44e56e3986592ea4b373314350ba1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Arithmetic1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="55111c455f6db69788784ab3592422bf"></a><!-- doxytag: member="smeshDC::Mesh_Segment::StartEndLength" ref="55111c455f6db69788784ab3592422bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.StartEndLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9c66c7680baa0ad57798f636f1f76714"></a><!-- doxytag: member="smeshDC::Mesh_Segment::Deflection1D" ref="9c66c7680baa0ad57798f636f1f76714" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Deflection1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>d</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a056c4ab47821070f56256c5247a83dc"></a><!-- doxytag: member="smeshDC::Mesh_Segment::Propagation" ref="a056c4ab47821070f56256c5247a83dc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Propagation </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="37c89f203f0c2d4b668775f38d406d00"></a><!-- doxytag: member="smeshDC::Mesh_Segment::AutomaticLength" ref="37c89f203f0c2d4b668775f38d406d00" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.AutomaticLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><!-- doxytag: member="smeshDC::Mesh_Segment::LengthNearVertex" ref="b55e9b34c5e68ad2a4bf8aa5b737de9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LengthNearVertex </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>vertex</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="99a77d794183b6b42d27c4d63f85fe74"></a><!-- doxytag: member="smeshDC::Mesh_Segment::QuadraticMesh" ref="99a77d794183b6b42d27c4d63f85fe74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.QuadraticMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails.
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Segment::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Segment::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Segment::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Segment::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Segment::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Segment::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Segment::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Segment::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Segment::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="44e8968ec16413fd4aac2b906c313c0e"></a><!-- doxytag: member="smeshDC::Mesh_Segment::geom" ref="44e8968ec16413fd4aac2b906c313c0e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment.geom</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented from <a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm</a>.
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Segment::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Segment::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Segment::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Segment::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:42 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Segment__Python.html">Mesh_Segment_Python</a></div>
+<h1>smeshDC.Mesh_Segment_Python Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Segment_Python" --><!-- doxytag: inherits="smeshDC::Mesh_Segment" -->Class to define a segment 1D algorithm for discretization with python function.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Segment_Python:<p><center><img src="classsmeshDC_1_1Mesh__Segment__Python__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Segment__Python__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Segment__Python__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Segment.html" shape="rect" coords="33,84,219,108" alt="">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="30,9,222,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment__Python.html#e38eb8379c79bc2a3f29658209098f2b">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#e38eb8379c79bc2a3f29658209098f2b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment__Python.html#67acdf24af043a2ee0d852c2b5281cd5">PythonSplit1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "PythonSplit1D" hypothesis based on the Erwan Adam patch, awaiting equivalent SALOME functionality. <a href="#67acdf24af043a2ee0d852c2b5281cd5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#2f9d15d24a38ccc273014f85ea6dcd24">LocalLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#2f9d15d24a38ccc273014f85ea6dcd24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#04608e6ca6e7008ebd248548f24a8248">NumberOfSegments</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#04608e6ca6e7008ebd248548f24a8248"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#4e44e56e3986592ea4b373314350ba1e">Arithmetic1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#4e44e56e3986592ea4b373314350ba1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#55111c455f6db69788784ab3592422bf">StartEndLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#55111c455f6db69788784ab3592422bf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#9c66c7680baa0ad57798f636f1f76714">Deflection1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#9c66c7680baa0ad57798f636f1f76714"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#a056c4ab47821070f56256c5247a83dc">Propagation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#a056c4ab47821070f56256c5247a83dc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#37c89f203f0c2d4b668775f38d406d00">AutomaticLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#37c89f203f0c2d4b668775f38d406d00"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#b55e9b34c5e68ad2a4bf8aa5b737de9b">LengthNearVertex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#99a77d794183b6b42d27c4d63f85fe74">QuadraticMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#99a77d794183b6b42d27c4d63f85fe74"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="e38eb8379c79bc2a3f29658209098f2b"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::__init__" ref="e38eb8379c79bc2a3f29658209098f2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment_Python.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented from <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#5c4a83872230465157d06af21b0b0982">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="67acdf24af043a2ee0d852c2b5281cd5"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::PythonSplit1D" ref="67acdf24af043a2ee0d852c2b5281cd5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment_Python.PythonSplit1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>func</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>for the python function that calculate the length of all segments </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2f9d15d24a38ccc273014f85ea6dcd24"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::LocalLength" ref="2f9d15d24a38ccc273014f85ea6dcd24" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LocalLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>l</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="04608e6ca6e7008ebd248548f24a8248"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::NumberOfSegments" ref="04608e6ca6e7008ebd248548f24a8248" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.NumberOfSegments </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s</em> = <code>[]</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4e44e56e3986592ea4b373314350ba1e"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::Arithmetic1D" ref="4e44e56e3986592ea4b373314350ba1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Arithmetic1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="55111c455f6db69788784ab3592422bf"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::StartEndLength" ref="55111c455f6db69788784ab3592422bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.StartEndLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>end</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="9c66c7680baa0ad57798f636f1f76714"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::Deflection1D" ref="9c66c7680baa0ad57798f636f1f76714" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Deflection1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>d</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a056c4ab47821070f56256c5247a83dc"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::Propagation" ref="a056c4ab47821070f56256c5247a83dc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.Propagation </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="37c89f203f0c2d4b668775f38d406d00"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::AutomaticLength" ref="37c89f203f0c2d4b668775f38d406d00" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.AutomaticLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>fineness</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b55e9b34c5e68ad2a4bf8aa5b737de9b"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::LengthNearVertex" ref="b55e9b34c5e68ad2a4bf8aa5b737de9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.LengthNearVertex </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>vertex</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="99a77d794183b6b42d27c4d63f85fe74"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::QuadraticMesh" ref="99a77d794183b6b42d27c4d63f85fe74" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Segment.QuadraticMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails.
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="44e8968ec16413fd4aac2b906c313c0e"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::geom" ref="44e8968ec16413fd4aac2b906c313c0e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented from <a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm</a>.
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Segment_Python::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:44 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html">Mesh_Tetrahedron</a></div>
+<h1>smeshDC.Mesh_Tetrahedron Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Tetrahedron" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a tetrahedron 3D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Tetrahedron:<p><center><img src="classsmeshDC_1_1Mesh__Tetrahedron__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Tetrahedron__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Tetrahedron__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="14,9,206,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#291e0ee90a057800355c611106b047f7">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#291e0ee90a057800355c611106b047f7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#b6a52d8875cd697f1873c7cdbfc48953">MaxElementVolume</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedral. <a href="#b6a52d8875cd697f1873c7cdbfc48953"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#3fb1e88e134722730c09c710e79d7d2d">Parameters</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Netgen 3D Parameters" hypothesis. <a href="#3fb1e88e134722730c09c710e79d7d2d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#a1b26f4f423560c7b12ef02b65714f48">SetMaxSize</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set MaxSize. <a href="#a1b26f4f423560c7b12ef02b65714f48"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#10a8529a53e7476391bd34a564485aed">SetSecondOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set SecondOrder flag. <a href="#10a8529a53e7476391bd34a564485aed"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#4f4cb87cace8b3f653967399fb068bbb">SetOptimize</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Optimize flag. <a href="#4f4cb87cace8b3f653967399fb068bbb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#27abbf4e34c4f9f328ba24a15243807a">SetFineness</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Fineness. <a href="#27abbf4e34c4f9f328ba24a15243807a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#d42c68ee93e1ba30db62a937e4093c46">SetGrowthRate</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set GrowthRate. <a href="#d42c68ee93e1ba30db62a937e4093c46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#99f943f5f235d0c9eb67d11a95bfd1b4">SetNbSegPerEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerEdge. <a href="#99f943f5f235d0c9eb67d11a95bfd1b4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#204fedb21f34d4f0356c1ee5e9b7efaf">SetNbSegPerRadius</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerRadius. <a href="#204fedb21f34d4f0356c1ee5e9b7efaf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#cc69e601c3ecf0ebbd62b0b6e8133656">algoType</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#e1c0c8f0f6685cfc798c660d7bf150eb">params</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#20aacdf4680ef9ac8478b884b1fa9821">params</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#06ddd1af2a9d8e7282cea1ebb641206e">algoType</a> = 0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="291e0ee90a057800355c611106b047f7"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::__init__" ref="291e0ee90a057800355c611106b047f7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>algoType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b6a52d8875cd697f1873c7cdbfc48953"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::MaxElementVolume" ref="b6a52d8875cd697f1873c7cdbfc48953" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.MaxElementVolume </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>vol</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>vol</em> </td><td>for the maximum volume of each tetrahedral </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3fb1e88e134722730c09c710e79d7d2d"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::Parameters" ref="3fb1e88e134722730c09c710e79d7d2d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.Parameters </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a1b26f4f423560c7b12ef02b65714f48"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetMaxSize" ref="a1b26f4f423560c7b12ef02b65714f48" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetMaxSize </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSize</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="10a8529a53e7476391bd34a564485aed"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetSecondOrder" ref="10a8529a53e7476391bd34a564485aed" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetSecondOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4f4cb87cace8b3f653967399fb068bbb"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetOptimize" ref="4f4cb87cace8b3f653967399fb068bbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetOptimize </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="27abbf4e34c4f9f328ba24a15243807a"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetFineness" ref="27abbf4e34c4f9f328ba24a15243807a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetFineness </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFineness</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theFineness</em> </td><td>is: VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d42c68ee93e1ba30db62a937e4093c46"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetGrowthRate" ref="d42c68ee93e1ba30db62a937e4093c46" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetGrowthRate </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRate</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="99f943f5f235d0c9eb67d11a95bfd1b4"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetNbSegPerEdge" ref="99f943f5f235d0c9eb67d11a95bfd1b4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetNbSegPerEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="204fedb21f34d4f0356c1ee5e9b7efaf"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetNbSegPerRadius" ref="204fedb21f34d4f0356c1ee5e9b7efaf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Tetrahedron.SetNbSegPerRadius </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="20aacdf4680ef9ac8478b884b1fa9821"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::params" ref="20aacdf4680ef9ac8478b884b1fa9821" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#20aacdf4680ef9ac8478b884b1fa9821">smeshDC.Mesh_Tetrahedron.params</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="06ddd1af2a9d8e7282cea1ebb641206e"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::algoType" ref="06ddd1af2a9d8e7282cea1ebb641206e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#06ddd1af2a9d8e7282cea1ebb641206e">smeshDC.Mesh_Tetrahedron.algoType</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc69e601c3ecf0ebbd62b0b6e8133656"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::algoType" ref="cc69e601c3ecf0ebbd62b0b6e8133656" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#06ddd1af2a9d8e7282cea1ebb641206e">smeshDC.Mesh_Tetrahedron.algoType</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e1c0c8f0f6685cfc798c660d7bf150eb"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::params" ref="e1c0c8f0f6685cfc798c660d7bf150eb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html#20aacdf4680ef9ac8478b884b1fa9821">smeshDC.Mesh_Tetrahedron.params</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Tetrahedron::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:46 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1Mesh__Triangle.html">Mesh_Triangle</a></div>
+<h1>smeshDC.Mesh_Triangle Class Reference</h1><!-- doxytag: class="smeshDC::Mesh_Triangle" --><!-- doxytag: inherits="smeshDC::Mesh_Algorithm" -->Class to define a triangle 2D algorithm.
+<a href="#_details">More...</a>
+<p>
+Inheritance diagram for smeshDC.Mesh_Triangle:<p><center><img src="classsmeshDC_1_1Mesh__Triangle__inherit__graph.jpg" border="0" usemap="#smeshDC_8Mesh__Triangle__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8Mesh__Triangle__inherit__map">
+<area href="classsmeshDC_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,200,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#2ed3a3036c54f80493180f63129ff648">__init__</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#2ed3a3036c54f80493180f63129ff648"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#7ac62e5402ad301f21fc2a600aac487c">MaxElementArea</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "MaxElementArea" hypothesis to give the maximun area of each triangles. <a href="#7ac62e5402ad301f21fc2a600aac487c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#aed380b422fdbd0f5dfce46a31f13584">LengthFromEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LengthFromEdges" hypothesis to build triangles based on the length of the edges taken from the wire. <a href="#aed380b422fdbd0f5dfce46a31f13584"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#467351133f6b28085085ce816486df3b">Parameters</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Netgen 2D Parameters" hypothesis. <a href="#467351133f6b28085085ce816486df3b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#a4315cba92bf8d811dd4165ea3d414a8">SetMaxSize</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set MaxSize. <a href="#a4315cba92bf8d811dd4165ea3d414a8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#dcc055f5a48f07f5e6e3795f8e20df91">SetSecondOrder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set SecondOrder flag. <a href="#dcc055f5a48f07f5e6e3795f8e20df91"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#1038229839470562de0dfa5ea3295ffe">SetOptimize</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Optimize flag. <a href="#1038229839470562de0dfa5ea3295ffe"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#d89eb1da49de683da7aee6c9fcce8c35">SetFineness</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Fineness. <a href="#d89eb1da49de683da7aee6c9fcce8c35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#d4d2280c1856f1c79802a35b02d3b85f">SetGrowthRate</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set GrowthRate. <a href="#d4d2280c1856f1c79802a35b02d3b85f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#71b7b2d8b2838a9cab8171918fa2b9a3">SetNbSegPerEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerEdge. <a href="#71b7b2d8b2838a9cab8171918fa2b9a3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#efa78245bff3e67168cd332b4320283e">SetNbSegPerRadius</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerRadius. <a href="#efa78245bff3e67168cd332b4320283e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#adebc1bdaeda926b21c2fc46fa6a4141">SetQuadAllowed</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set QuadAllowed flag. <a href="#adebc1bdaeda926b21c2fc46fa6a4141"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#d236fbbd88c3548e3e1cbaad693587fd">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6e10699dca080739fe879c39242d383f">GetSubMesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
+ else return the submesh associated to this algorithm. <a href="#6e10699dca080739fe879c39242d383f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#823bceab89ad9844fbdcf7a2b59b82d4">GetAlgorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#823bceab89ad9844fbdcf7a2b59b82d4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#cc7b73f68fec47890cf16932a71e71ff">GetCompatibleHypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#cc7b73f68fec47890cf16932a71e71ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#07001c3590c379d357754b3a8b4e62f2">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#07001c3590c379d357754b3a8b4e62f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#fc9788a5b000f2f7afb7f7e81888bc1d">SetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#fc9788a5b000f2f7afb7f7e81888bc1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#84a52154a90fef60f7939fc73084dea2">GetId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#84a52154a90fef60f7939fc73084dea2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#6ed4da82cee92b3be4b42debecb10bfd">Create</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#6ed4da82cee92b3be4b42debecb10bfd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#088088a4a4c2f4057984a8d5f5af05d0">Hypothesis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#088088a4a4c2f4057984a8d5f5af05d0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#0989ce5ccd64fdee56033da4cc267d01">algoType</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#61485147eeee81ea323ae74d6a020a9b">params</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">subm</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">algo</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#e9274508a096be121aecc16717c7befb">algoType</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#816078764568abdbe333915df1d5a643">params</a> = 0</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+More details.
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="2ed3a3036c54f80493180f63129ff648"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::__init__" ref="2ed3a3036c54f80493180f63129ff648" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>algoType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7ac62e5402ad301f21fc2a600aac487c"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::MaxElementArea" ref="7ac62e5402ad301f21fc2a600aac487c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.MaxElementArea </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>area</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>area</em> </td><td>for the maximum area of each triangles </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="aed380b422fdbd0f5dfce46a31f13584"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::LengthFromEdges" ref="aed380b422fdbd0f5dfce46a31f13584" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.LengthFromEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="467351133f6b28085085ce816486df3b"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::Parameters" ref="467351133f6b28085085ce816486df3b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.Parameters </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a4315cba92bf8d811dd4165ea3d414a8"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetMaxSize" ref="a4315cba92bf8d811dd4165ea3d414a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetMaxSize </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSize</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="dcc055f5a48f07f5e6e3795f8e20df91"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetSecondOrder" ref="dcc055f5a48f07f5e6e3795f8e20df91" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetSecondOrder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1038229839470562de0dfa5ea3295ffe"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetOptimize" ref="1038229839470562de0dfa5ea3295ffe" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetOptimize </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d89eb1da49de683da7aee6c9fcce8c35"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetFineness" ref="d89eb1da49de683da7aee6c9fcce8c35" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetFineness </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFineness</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theFineness</em> </td><td>is: VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d4d2280c1856f1c79802a35b02d3b85f"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetGrowthRate" ref="d4d2280c1856f1c79802a35b02d3b85f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetGrowthRate </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRate</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="71b7b2d8b2838a9cab8171918fa2b9a3"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetNbSegPerEdge" ref="71b7b2d8b2838a9cab8171918fa2b9a3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetNbSegPerEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="efa78245bff3e67168cd332b4320283e"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetNbSegPerRadius" ref="efa78245bff3e67168cd332b4320283e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetNbSegPerRadius </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVal</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="adebc1bdaeda926b21c2fc46fa6a4141"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetQuadAllowed" ref="adebc1bdaeda926b21c2fc46fa6a4141" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Triangle.SetQuadAllowed </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>toAllow</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d236fbbd88c3548e3e1cbaad693587fd"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::__init__" ref="d236fbbd88c3548e3e1cbaad693587fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.__init__ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>smesh</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6e10699dca080739fe879c39242d383f"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::GetSubMesh" ref="6e10699dca080739fe879c39242d383f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetSubMesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="823bceab89ad9844fbdcf7a2b59b82d4"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::GetAlgorithm" ref="823bceab89ad9844fbdcf7a2b59b82d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetAlgorithm </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc7b73f68fec47890cf16932a71e71ff"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::GetCompatibleHypothesis" ref="cc7b73f68fec47890cf16932a71e71ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetCompatibleHypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="07001c3590c379d357754b3a8b4e62f2"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::GetName" ref="07001c3590c379d357754b3a8b4e62f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fc9788a5b000f2f7afb7f7e81888bc1d"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::SetName" ref="fc9788a5b000f2f7afb7f7e81888bc1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="84a52154a90fef60f7939fc73084dea2"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::GetId" ref="84a52154a90fef60f7939fc73084dea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.GetId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6ed4da82cee92b3be4b42debecb10bfd"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::Create" ref="6ed4da82cee92b3be4b42debecb10bfd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Create </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geom</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="088088a4a4c2f4057984a8d5f5af05d0"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::Hypothesis" ref="088088a4a4c2f4057984a8d5f5af05d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.Mesh_Algorithm.Hypothesis </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hyp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>args</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [inherited]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="e9274508a096be121aecc16717c7befb"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::algoType" ref="e9274508a096be121aecc16717c7befb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#e9274508a096be121aecc16717c7befb">smeshDC.Mesh_Triangle.algoType</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="816078764568abdbe333915df1d5a643"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::params" ref="816078764568abdbe333915df1d5a643" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#816078764568abdbe333915df1d5a643">smeshDC.Mesh_Triangle.params</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="0989ce5ccd64fdee56033da4cc267d01"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::algoType" ref="0989ce5ccd64fdee56033da4cc267d01" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#e9274508a096be121aecc16717c7befb">smeshDC.Mesh_Triangle.algoType</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="61485147eeee81ea323ae74d6a020a9b"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::params" ref="61485147eeee81ea323ae74d6a020a9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html#816078764568abdbe333915df1d5a643">smeshDC.Mesh_Triangle.params</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a26131bcccd55e4d89612e43aeba151a"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::smesh" ref="a26131bcccd55e4d89612e43aeba151a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#a26131bcccd55e4d89612e43aeba151a">smeshDC.Mesh_Algorithm.smesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="389abfff22e0cd47e6fd98f5f5000cfa"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::mesh" ref="389abfff22e0cd47e6fd98f5f5000cfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#389abfff22e0cd47e6fd98f5f5000cfa">smeshDC.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="20ae4013ee7d13170461eca766fdda32"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::geom" ref="20ae4013ee7d13170461eca766fdda32" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#20ae4013ee7d13170461eca766fdda32">smeshDC.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Reimplemented in <a class="el" href="classsmeshDC_1_1Mesh__Segment.html#44e8968ec16413fd4aac2b906c313c0e">smeshDC.Mesh_Segment</a>.
+</div>
+</div><p>
+<a class="anchor" name="3292dd6a8b832264d19f199469602054"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::subm" ref="3292dd6a8b832264d19f199469602054" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#3292dd6a8b832264d19f199469602054">smeshDC.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f42e17af989dda7a186b5d7e68f2ec71"></a><!-- doxytag: member="smeshDC::Mesh_Triangle::algo" ref="f42e17af989dda7a186b5d7e68f2ec71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html#f42e17af989dda7a186b5d7e68f2ec71">smeshDC.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:45 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<div class="nav">
+<a class="el" href="namespacesmeshDC.html">smeshDC</a>.<a class="el" href="classsmeshDC_1_1smeshDC.html">smeshDC</a></div>
+<h1>smeshDC.smeshDC Class Reference</h1><!-- doxytag: class="smeshDC::smeshDC" --><!-- doxytag: inherits="SMESH::_objref_SMESH_Gen" -->Inheritance diagram for smeshDC.smeshDC:<p><center><img src="classsmeshDC_1_1smeshDC__inherit__graph.jpg" border="0" usemap="#smeshDC_8smeshDC__inherit__map" alt="Inheritance graph"></center>
+<map name="smeshDC_8smeshDC__inherit__map">
+<area href="classSMESH_1_1__objref__SMESH__Gen.html" shape="rect" coords="8,9,216,33" alt="">
+</map>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#3499c2d17eefbcd7bf18afd55724d8d0">init_smesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#2e7b8d092fdcbaf79a26288b0d626687">Mesh</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#334a64d26357505f4c01bac941dd4a62">EnumToLong</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns long value from enumeration Uses for SMESH.FunctorType enumeration. <a href="#334a64d26357505f4c01bac941dd4a62"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#64ad34d9c5d0e80645c2bb39987c317e">GetPointStruct</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get PointStruct from vertex. <a href="#64ad34d9c5d0e80645c2bb39987c317e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#2c9c34b4bb4cda25e0c79762e18b7cee">GetDirStruct</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get DirStruct from vector. <a href="#2c9c34b4bb4cda25e0c79762e18b7cee"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#0d27bea973eb458dd78cb34063409637">GetAxisStruct</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get AxisStruct from object. <a href="#0d27bea973eb458dd78cb34063409637"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#c1b7b046cf266b180366258adff61c58">SetEmbeddedMode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the current mode. <a href="#c1b7b046cf266b180366258adff61c58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#56f3b2cf98523408e29c9e37ddbcd30b">IsEmbeddedMode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current mode. <a href="#56f3b2cf98523408e29c9e37ddbcd30b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#d651984dfb70f141191ecb0ea19eef53">SetCurrentStudy</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the current study. <a href="#d651984dfb70f141191ecb0ea19eef53"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#a3092b9e1113eb7e8f6dd836504109e5">GetCurrentStudy</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current study. <a href="#a3092b9e1113eb7e8f6dd836504109e5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#6b8533345f9c0daaaa0461274c137896">CreateMeshesFromUNV</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> object importing data from given UNV file. <a href="#6b8533345f9c0daaaa0461274c137896"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#f4baebaebf0a5d22e8b17b4ce6111531">CreateMeshesFromMED</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> object(s) importing data from given MED file. <a href="#f4baebaebf0a5d22e8b17b4ce6111531"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#475c4a1a7f9b19a0c5e75b8c6d8d87dd">CreateMeshesFromSTL</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> object importing data from given STL file. <a href="#475c4a1a7f9b19a0c5e75b8c6d8d87dd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#73a72dd2b3247d457e84cc743542d512">GetSubShapesId</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">From SMESH_Gen interface. <a href="#73a72dd2b3247d457e84cc743542d512"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#c58d54d598efd8a04016374d9ec44f20">GetPattern</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">From SMESH_Gen interface. <a href="#c58d54d598efd8a04016374d9ec44f20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#ba6515d9b4002b5424eca054f53e3651">GetEmptyCriterion</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty criterion. <a href="#ba6515d9b4002b5424eca054f53e3651"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#d33640d1175a81d55932d21c3f1725fd">GetCriterion</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a criterion by given parameters. <a href="#d33640d1175a81d55932d21c3f1725fd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#547c7463acea82f6802261ff0f403820">GetFilter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates filter by given parameters of criterion. <a href="#547c7463acea82f6802261ff0f403820"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#a40eee73fe02962d0365c131cb16eca7">GetFunctor</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates numerical functor by its type. <a href="#a40eee73fe02962d0365c131cb16eca7"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html#4eb4abcdb87e8fd7d57e41ae2f0a1f5c">geompyD</a></td></tr>
+
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="3499c2d17eefbcd7bf18afd55724d8d0"></a><!-- doxytag: member="smeshDC::smeshDC::init_smesh" ref="3499c2d17eefbcd7bf18afd55724d8d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.init_smesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStudy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geompyD</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2e7b8d092fdcbaf79a26288b0d626687"></a><!-- doxytag: member="smeshDC::smeshDC::Mesh" ref="2e7b8d092fdcbaf79a26288b0d626687" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.Mesh </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>obj</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em> = <code>0</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="334a64d26357505f4c01bac941dd4a62"></a><!-- doxytag: member="smeshDC::smeshDC::EnumToLong" ref="334a64d26357505f4c01bac941dd4a62" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.EnumToLong </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theItem</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="64ad34d9c5d0e80645c2bb39987c317e"></a><!-- doxytag: member="smeshDC::smeshDC::GetPointStruct" ref="64ad34d9c5d0e80645c2bb39987c317e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetPointStruct </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVertex</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theVertex</em> </td><td>is GEOM object(vertex) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH.PointStruct </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2c9c34b4bb4cda25e0c79762e18b7cee"></a><!-- doxytag: member="smeshDC::smeshDC::GetDirStruct" ref="2c9c34b4bb4cda25e0c79762e18b7cee" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetDirStruct </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVector</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>is GEOM object(vector) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH.DirStruct </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0d27bea973eb458dd78cb34063409637"></a><!-- doxytag: member="smeshDC::smeshDC::GetAxisStruct" ref="0d27bea973eb458dd78cb34063409637" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetAxisStruct </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theObj</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theObj</em> </td><td>is GEOM object(line or plane) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH.AxisStruct </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c1b7b046cf266b180366258adff61c58"></a><!-- doxytag: member="smeshDC::smeshDC::SetEmbeddedMode" ref="c1b7b046cf266b180366258adff61c58" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.SetEmbeddedMode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMode</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="56f3b2cf98523408e29c9e37ddbcd30b"></a><!-- doxytag: member="smeshDC::smeshDC::IsEmbeddedMode" ref="56f3b2cf98523408e29c9e37ddbcd30b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.IsEmbeddedMode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d651984dfb70f141191ecb0ea19eef53"></a><!-- doxytag: member="smeshDC::smeshDC::SetCurrentStudy" ref="d651984dfb70f141191ecb0ea19eef53" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.SetCurrentStudy </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStudy</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="a3092b9e1113eb7e8f6dd836504109e5"></a><!-- doxytag: member="smeshDC::smeshDC::GetCurrentStudy" ref="a3092b9e1113eb7e8f6dd836504109e5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetCurrentStudy </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6b8533345f9c0daaaa0461274c137896"></a><!-- doxytag: member="smeshDC::smeshDC::CreateMeshesFromUNV" ref="6b8533345f9c0daaaa0461274c137896" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.CreateMeshesFromUNV </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFileName</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>an instance of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f4baebaebf0a5d22e8b17b4ce6111531"></a><!-- doxytag: member="smeshDC::smeshDC::CreateMeshesFromMED" ref="f4baebaebf0a5d22e8b17b4ce6111531" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.CreateMeshesFromMED </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFileName</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>a list of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class instances </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="475c4a1a7f9b19a0c5e75b8c6d8d87dd"></a><!-- doxytag: member="smeshDC::smeshDC::CreateMeshesFromSTL" ref="475c4a1a7f9b19a0c5e75b8c6d8d87dd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.CreateMeshesFromSTL </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFileName</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>an instance of <a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a> class </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="73a72dd2b3247d457e84cc743542d512"></a><!-- doxytag: member="smeshDC::smeshDC::GetSubShapesId" ref="73a72dd2b3247d457e84cc743542d512" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetSubShapesId </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMainObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theListOfSubObjects</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c58d54d598efd8a04016374d9ec44f20"></a><!-- doxytag: member="smeshDC::smeshDC::GetPattern" ref="c58d54d598efd8a04016374d9ec44f20" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetPattern </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Creates pattern
+</div>
+</div><p>
+<a class="anchor" name="ba6515d9b4002b5424eca054f53e3651"></a><!-- doxytag: member="smeshDC::smeshDC::GetEmptyCriterion" ref="ba6515d9b4002b5424eca054f53e3651" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetEmptyCriterion </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH.Filter.Criterion </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d33640d1175a81d55932d21c3f1725fd"></a><!-- doxytag: member="smeshDC::smeshDC::GetCriterion" ref="d33640d1175a81d55932d21c3f1725fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetCriterion </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CritType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Treshold</em> = <code>""</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>UnaryOp</em> = <code>FT_Undefined</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>BinaryOp</em> = <code>FT_Undefined</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements(NODE, EDGE, FACE, VOLUME) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of ids as string, shape, numeric) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>BinaryOp</em> </td><td>is binary logical operation FT_LogicalAND, FT_LogicalOR or FT_Undefined(must be for the last criterion in criteria) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH.Filter.Criterion </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="547c7463acea82f6802261ff0f403820"></a><!-- doxytag: member="smeshDC::smeshDC::GetFilter" ref="547c7463acea82f6802261ff0f403820" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetFilter </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>elementType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>CritType</em> = <code>FT_Undefined</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Treshold</em> = <code>""</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>UnaryOp</em> = <code>FT_Undefined</code></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of id ids as string, shape, numeric) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Filter </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a40eee73fe02962d0365c131cb16eca7"></a><!-- doxytag: member="smeshDC::smeshDC::GetFunctor" ref="a40eee73fe02962d0365c131cb16eca7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.smeshDC.GetFunctor </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCriterion</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theCrierion</em> </td><td>is FT_...; functor type </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>SMESH_NumericalFunctor </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="4eb4abcdb87e8fd7d57e41ae2f0a1f5c"></a><!-- doxytag: member="smeshDC::smeshDC::geompyD" ref="4eb4abcdb87e8fd7d57e41ae2f0a1f5c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classsmeshDC_1_1smeshDC.html#4eb4abcdb87e8fd7d57e41ae2f0a1f5c">smeshDC.smeshDC.geompyD</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:40 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh.html">Mesh</a></div>
-<h1>smesh.Mesh Class Reference</h1><!-- doxytag: class="smesh::Mesh" -->Class to define a mesh.
-<a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2f592ce85252933c16d53b2233326e78">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#2f592ce85252933c16d53b2233326e78"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#bd750f18fbb3bbaec4658dbf9abf9a6a">SetMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that inits the <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> object from SMESH_Mesh interface. <a href="#bd750f18fbb3bbaec4658dbf9abf9a6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#dbacc8ea6620b9d3f75c78ccd01447f5">GetMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that returns the mesh. <a href="#dbacc8ea6620b9d3f75c78ccd01447f5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b87f0d109e7dd97722ee0bfea949d534">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get mesh name. <a href="#b87f0d109e7dd97722ee0bfea949d534"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1c8c2f704ec04470c635bafbffc2fd89">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to mesh. <a href="#1c8c2f704ec04470c635bafbffc2fd89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#6a6cf011f8f9ae71976677e5fc252cba">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the subMesh object associated to a subShape. <a href="#6a6cf011f8f9ae71976677e5fc252cba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8cd4dd97fd482c2dc9366831d9edfade">GetShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that returns the shape associated to the mesh. <a href="#8cd4dd97fd482c2dc9366831d9edfade"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3c65a48f65595eca0cb35537327f66e7">SetShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Method that associates given shape to the mesh(entails the mesh recreation). <a href="#3c65a48f65595eca0cb35537327f66e7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8b180b0fecdee7086fd87b6e399fb920">IsReadyToCompute</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return true if hypotheses are defined well. <a href="#8b180b0fecdee7086fd87b6e399fb920"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8a4a3f3f1b1c3ab7344043fc0462b34c">GetAlgoState</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return errors of hypotheses definintion error list is empty if everything is OK. <a href="#8a4a3f3f1b1c3ab7344043fc0462b34c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#98eebf424797ca54f6f8d26bfe5fa198">GetGeometryByMeshElement</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return geometrical object the given element is built on. <a href="#98eebf424797ca54f6f8d26bfe5fa198"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#06348840fb6e34f96868289711e081b8">MeshDimension</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns mesh dimension depending on shape one. <a href="#06348840fb6e34f96868289711e081b8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c482d4a5eb26a6215d5da9b368e19c45">Segment</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a segment discretization 1D algorithm. <a href="#c482d4a5eb26a6215d5da9b368e19c45"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#0670294973fa7bfe28b9011e0f09f6a1">Triangle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a triangle 2D algorithm for faces. <a href="#0670294973fa7bfe28b9011e0f09f6a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4ca1886a1ff06e16c670f1675c5a573b">Quadrangle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a quadrangle 2D algorithm for faces. <a href="#4ca1886a1ff06e16c670f1675c5a573b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#25ec76b72df8bebc8a612910a0318620">Tetrahedron</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a tetrahedron 3D algorithm for solids. <a href="#25ec76b72df8bebc8a612910a0318620"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#21ec3ac09ca0ad1a9fdc6935654893fd">Hexahedron</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a hexahedron 3D algorithm for solids. <a href="#21ec3ac09ca0ad1a9fdc6935654893fd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#27c0aef5694eea45b0670207d5580bc6">Netgen</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated, only for compatibility! <a href="#27c0aef5694eea45b0670207d5580bc6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#7ddf97abf59d1ddb743142357ba56103">Projection1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 1D algorithm for edges. <a href="#7ddf97abf59d1ddb743142357ba56103"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c906452c66b813462d49a5e0e7aff93c">Projection2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 2D algorithm for faces. <a href="#c906452c66b813462d49a5e0e7aff93c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#cab360c7269abf3caa7705cdb5274dea">Projection3D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a projection 3D algorithm for solids. <a href="#cab360c7269abf3caa7705cdb5274dea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c5e64828cdb2bc6bb626fc66e7bc5134">Prism</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a 3D extrusion (Prism 3D) or RadialPrism 3D algorithm for solids. <a href="#c5e64828cdb2bc6bb626fc66e7bc5134"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ed26e60b9561403c1966a8a4aac5f512">Compute</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute the mesh and return the status of the computation. <a href="#ed26e60b9561403c1966a8a4aac5f512"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d23d8a7c9fc382821d4016774fa9e98d">AutomaticTetrahedralization</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN The parameter <em>fineness</em> [0,-1] defines mesh fineness. <a href="#d23d8a7c9fc382821d4016774fa9e98d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1c78238cdf0aad20ab2d6eef4a184799">AutomaticHexahedralization</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron The parameter <em>fineness</em> [0,-1] defines mesh fineness. <a href="#1c78238cdf0aad20ab2d6eef4a184799"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1b0f1c169956e949c4aef9997ae2c8b3">AddHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assign hypothesis. <a href="#1b0f1c169956e949c4aef9997ae2c8b3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#9dcaabbf09856c4a4d7465cb12eaf28e">GetHypothesisList</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of hypothesis added on a geom. <a href="#9dcaabbf09856c4a4d7465cb12eaf28e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#95d999f08f0aaef05f6dcdb8292e00e0">RemoveGlobalHypotheses</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes all global hypotheses. <a href="#95d999f08f0aaef05f6dcdb8292e00e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#6deeda0a7c76698bdf314b7c81b15c0f">Group</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group based on geometric object <em>grp</em> and give a <em>name</em>, <br>
- if this parameter is not defined the name is the same as the geometric group name <br>
- Note: Works like <a class="el" href="classsmesh_1_1Mesh.html#4766ca881b87442bb269d843d6e0fbee">GroupOnGeom()</a>. <a href="#6deeda0a7c76698bdf314b7c81b15c0f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#36933e515825d7d1c62863686546a84f">ExportToMED</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated, only for compatibility! Please, use <a class="el" href="classsmesh_1_1Mesh.html#a86bdbce4f2f57e951bcea9ab1986ecb">ExportMED()</a> method instead. <a href="#36933e515825d7d1c62863686546a84f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#a86bdbce4f2f57e951bcea9ab1986ecb">ExportMED</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the MED format. <a href="#a86bdbce4f2f57e951bcea9ab1986ecb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5db000b98b9608f1f3384a4b09b35f58">ExportDAT</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the DAT format. <a href="#5db000b98b9608f1f3384a4b09b35f58"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c008bc59ddf84fb975ea54fdd9c5b20e">ExportUNV</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the UNV format. <a href="#c008bc59ddf84fb975ea54fdd9c5b20e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5f0cfa067db19492048fc67f9214a938">ExportSTL</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the mesh in a file with the STL format. <a href="#5f0cfa067db19492048fc67f9214a938"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d0f9d4c25155f1aa2f2f9d9439bbd380">CreateEmptyGroup</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty mesh group. <a href="#d0f9d4c25155f1aa2f2f9d9439bbd380"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4766ca881b87442bb269d843d6e0fbee">GroupOnGeom</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a mesh group based on geometric object <em>grp</em> and give a <em>name</em>, <br>
- if this parameter is not defined the name is the same as the geometric group name. <a href="#4766ca881b87442bb269d843d6e0fbee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3b3954caebc6f212681cdc43d683d81f">MakeGroupByIds</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given ids of elements. <a href="#3b3954caebc6f212681cdc43d683d81f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#971e345218f95e1d56d59450aebb8dec">MakeGroup</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given conditions. <a href="#971e345218f95e1d56d59450aebb8dec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3ed52b9c18af35719986e962143a5ffb">MakeGroupByCriterion</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given criterion. <a href="#3ed52b9c18af35719986e962143a5ffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1db8830048163a89d6e8a5b38bc0aff6">MakeGroupByCriteria</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given criteria(list of criterions). <a href="#1db8830048163a89d6e8a5b38bc0aff6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8f4952f18ef6e065b1f21b9c501acdbd">MakeGroupByFilter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a mesh group by the given filter. <a href="#8f4952f18ef6e065b1f21b9c501acdbd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#14ec9ac71e14ef62aa41ab5427dc874b">GetIdsFromFilter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Pass mesh elements through the given filter and return ids. <a href="#14ec9ac71e14ef62aa41ab5427dc874b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#bf1218d5cb3988330c0bf61db2a2b2b7">GetFreeBorders</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Verify whether 2D mesh element has free edges(edges connected to one face only)<br>
- Returns list of special structures(borders). <a href="#bf1218d5cb3988330c0bf61db2a2b2b7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#cf78d6ee5bf4142a7c47c542dd29774e">RemoveGroup</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove a group. <a href="#cf78d6ee5bf4142a7c47c542dd29774e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#7b925f04a22f5b1b6b2e534da1ecbd92">RemoveGroupWithContents</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove group with its contents. <a href="#7b925f04a22f5b1b6b2e534da1ecbd92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#95da60a43691e2555e1246346bab95cc">GetGroups</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of groups existing in the mesh. <a href="#95da60a43691e2555e1246346bab95cc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ec1357647df1fae2de711e46f33bce59">GetGroupNames</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the list of names of groups existing in the mesh. <a href="#ec1357647df1fae2de711e46f33bce59"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#adce4d7372f7f85d7851aac8fa8223ab">UnionGroups</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Union of two groups New group is created. <a href="#adce4d7372f7f85d7851aac8fa8223ab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ff4bc7665f316f9afe4091a1aa195938">IntersectGroups</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Intersection of two groups New group is created. <a href="#ff4bc7665f316f9afe4091a1aa195938"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#93a759ed3183676d160b210ea16f4152">CutGroups</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Cut of two groups New group is created. <a href="#93a759ed3183676d160b210ea16f4152"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#a8eb2739e60747e3e4f21f6d044fb8ea">GetLog</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the log of nodes and elements added or removed since previous clear of the log. <a href="#a8eb2739e60747e3e4f21f6d044fb8ea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ca397e42479735387f28e60daba5fa21">ClearLog</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear the log of nodes and elements added or removed since previous clear. <a href="#ca397e42479735387f28e60daba5fa21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8c2b5b28778a8c8e75dbf67e9e173e96">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the internal Id. <a href="#8c2b5b28778a8c8e75dbf67e9e173e96"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#aefae881bffe9563d1d94a8aa94311aa">GetStudyId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the study Id. <a href="#aefae881bffe9563d1d94a8aa94311aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d1846b2ee111a6720a7bfdb7bae9a04e">HasDuplicatedGroupNamesMED</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Check group names for duplications. <a href="#d1846b2ee111a6720a7bfdb7bae9a04e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#e65f765b6a402c7c8b26335fa4422cf5">GetMeshEditor</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain instance of SMESH_MeshEditor. <a href="#e65f765b6a402c7c8b26335fa4422cf5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#23967469975fb15ab095fbef5d3fff4c">GetMEDMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get MED <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a>. <a href="#23967469975fb15ab095fbef5d3fff4c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#726ae692c089873060904db2f5be2489">NbNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of nodes in mesh. <a href="#726ae692c089873060904db2f5be2489"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ab9164bf03dfc3f96373c83890faeac7">NbElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of elements in mesh. <a href="#ab9164bf03dfc3f96373c83890faeac7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8f6a7ba5c4246afbe8c23c31b54fe151">NbEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges in mesh. <a href="#8f6a7ba5c4246afbe8c23c31b54fe151"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#62493e2dea0235f7043c35850ea67bc1">NbEdgesOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges with given order in mesh. <a href="#62493e2dea0235f7043c35850ea67bc1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#7e9df39cf5129962023043abcc898e69">NbFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces in mesh. <a href="#7e9df39cf5129962023043abcc898e69"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b5f5d0f76b75110f373c2978bec4511d">NbFacesOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces with given order in mesh. <a href="#b5f5d0f76b75110f373c2978bec4511d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#45deec5dbf334ba86f69210edb6eb031">NbTriangles</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of triangles in mesh. <a href="#45deec5dbf334ba86f69210edb6eb031"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#81cdae5d219351e937d02a8ea5c8bd66">NbTrianglesOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of triangles with given order in mesh. <a href="#81cdae5d219351e937d02a8ea5c8bd66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d83429db26cce1bc35795935c4c22e0a">NbQuadrangles</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of quadrangles in mesh. <a href="#d83429db26cce1bc35795935c4c22e0a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4c9bca301fa2170813406412cfd9c1aa">NbQuadranglesOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of quadrangles with given order in mesh. <a href="#4c9bca301fa2170813406412cfd9c1aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f086f62d71136f0e5a24ee9a4150515b">NbPolygons</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of polygons in mesh. <a href="#f086f62d71136f0e5a24ee9a4150515b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#e35ea16aadc59efecaff428c0b3c2dfe">NbVolumes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of volumes in mesh. <a href="#e35ea16aadc59efecaff428c0b3c2dfe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b5dc83d1838f66e925667cd6634b5919">NbVolumesOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of volumes with given order in mesh. <a href="#b5dc83d1838f66e925667cd6634b5919"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2a7fd2a66045ad4ef37395899cf3e2b4">NbTetras</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of tetrahedrons in mesh. <a href="#2a7fd2a66045ad4ef37395899cf3e2b4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5f6f04aee13f5e9146b0b83dc4a29136">NbTetrasOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of tetrahedrons with given order in mesh. <a href="#5f6f04aee13f5e9146b0b83dc4a29136"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#fd3a0392332424162db67bdc18a66b9e">NbHexas</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of hexahedrons in mesh. <a href="#fd3a0392332424162db67bdc18a66b9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#30d469eb020c16ac95fe4ccc86df9847">NbHexasOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of hexahedrons with given order in mesh. <a href="#30d469eb020c16ac95fe4ccc86df9847"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#aee1ae2972f4256dbc23281f212bd63d">NbPyramids</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of pyramids in mesh. <a href="#aee1ae2972f4256dbc23281f212bd63d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#6f9f0c840846170841655ffe6c88c9ba">NbPyramidsOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of pyramids with given order in mesh. <a href="#6f9f0c840846170841655ffe6c88c9ba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#497d7d510d365904c8850f8a1ab9b9c6">NbPrisms</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of prisms in mesh. <a href="#497d7d510d365904c8850f8a1ab9b9c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8d37e2b2ec7aff3b89b0933c03409e5b">NbPrismsOfOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of prisms with given order in mesh. <a href="#8d37e2b2ec7aff3b89b0933c03409e5b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#84903e975c77cc2542ea50143f9cb877">NbPolyhedrons</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of polyhedrons in mesh. <a href="#84903e975c77cc2542ea50143f9cb877"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#fafa87c1893299b30bffdaa748837ace">NbSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of submeshes in mesh. <a href="#fafa87c1893299b30bffdaa748837ace"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2f7b4230985fdf7dac8c1a3dc5d96efa">GetElementsId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of mesh elements ids. <a href="#2f7b4230985fdf7dac8c1a3dc5d96efa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1dbede49ac46741782d4b88096024754">GetElementsByType</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of ids of mesh elements with given type. <a href="#1dbede49ac46741782d4b88096024754"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d4f0260724efd10fc07d6cc030348bf7">GetNodesId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of mesh nodes ids. <a href="#d4f0260724efd10fc07d6cc030348bf7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#09d64e636ad97f4929174795376cb79a">GetElementType</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns type of mesh element. <a href="#09d64e636ad97f4929174795376cb79a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#cff00e6b2f5d63f24af53e5d654d259e">GetSubMeshElementsId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of submesh elements ids. <a href="#cff00e6b2f5d63f24af53e5d654d259e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#df30b3062d9420c85f457d8d67716c6a">GetSubMeshNodesId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of submesh nodes ids. <a href="#df30b3062d9420c85f457d8d67716c6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#01928943dd569e70590f7a82d5a9c083">GetSubMeshElementType</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns list of ids of submesh elements with given type. <a href="#01928943dd569e70590f7a82d5a9c083"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#97cc6a5900b73642880b5c5327167347">Dump</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get mesh description. <a href="#97cc6a5900b73642880b5c5327167347"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8c5f43b40615e416e8723250aedca198">GetNodeXYZ</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get XYZ coordinates of node as list of double <br>
- If there is not node for given ID - returns empty list. <a href="#8c5f43b40615e416e8723250aedca198"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#89759593eb975e4a98f21fad2f0471d9">GetNodeInverseElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For given node returns list of IDs of inverse elements <br>
- If there is not node for given ID - returns empty list. <a href="#89759593eb975e4a98f21fad2f0471d9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#819f94ff143442f18726ad6d571f4d4d">GetShapeID</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If given element is node returns IDs of shape from position <br>
- If there is not node for given ID - returns -1. <a href="#819f94ff143442f18726ad6d571f4d4d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#eef3aa74ef3616715448260f21f743fe">GetShapeIDForElem</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">For given element returns ID of result shape after FindShape() from SMESH_MeshEditor <br>
- If there is not element for given ID - returns -1. <a href="#eef3aa74ef3616715448260f21f743fe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8a3f80335947fd570bba6b4f53a8a561">GetElemNbNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of nodes for given element <br>
- If there is not element for given ID - returns -1. <a href="#8a3f80335947fd570bba6b4f53a8a561"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b962a2eb7fc5b6ee8c50795d185c45d0">GetElemNode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns ID of node by given index for given element <br>
- If there is not element for given ID - returns -1 <br>
- If there is not node for given index - returns -2. <a href="#b962a2eb7fc5b6ee8c50795d185c45d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#e51aaa086dca92d2b7966ae0b49aefd7">IsMediumNode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given node is medium node in given quadratic element. <a href="#e51aaa086dca92d2b7966ae0b49aefd7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#10e70db0e24a1ec78636f8651a402873">IsMediumNodeOfAnyElem</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given node is medium node in one of quadratic elements. <a href="#10e70db0e24a1ec78636f8651a402873"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#bf279ea4ea4ea4aa0e01ef0b2da41376">ElemNbEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of edges for given element. <a href="#bf279ea4ea4ea4aa0e01ef0b2da41376"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ba5c055ca37c30cb77d2c698cb062d18">ElemNbFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of faces for given element. <a href="#ba5c055ca37c30cb77d2c698cb062d18"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#0711cb1be29ca2d8e186e921650b9a75">IsPoly</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given element is polygon. <a href="#0711cb1be29ca2d8e186e921650b9a75"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#a6688e1a2742f29aa5b662cc7aaa4032">IsQuadratic</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if given element is quadratic. <a href="#a6688e1a2742f29aa5b662cc7aaa4032"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#512996a6214d6d7bb82c449126602dcb">BaryCenter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns XYZ coordinates of bary center for given element as list of double <br>
- If there is not element for given ID - returns empty list. <a href="#512996a6214d6d7bb82c449126602dcb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#7ef5a1396c6ca2f87f866019d6994fda">RemoveElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes elements from mesh by ids. <a href="#7ef5a1396c6ca2f87f866019d6994fda"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3660e81cc2503176aeaaf791d91583aa">RemoveNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes nodes from mesh by ids. <a href="#3660e81cc2503176aeaaf791d91583aa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1fc905250f88b780af041874783e1aba">AddNode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add node to mesh by coordinates. <a href="#1fc905250f88b780af041874783e1aba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5300171dc7f8dcb867641e99ddfe1259">AddEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create edge both similar and quadratic (this is determed by number of given nodes). <a href="#5300171dc7f8dcb867641e99ddfe1259"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#ac29ca675d96e76ac464d552d0677bef">AddFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create face both similar and quadratic (this is determed by number of given nodes). <a href="#ac29ca675d96e76ac464d552d0677bef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1ff012def84bb3df64b313060f6de7ba">AddPolygonalFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add polygonal face to mesh by list of nodes ids. <a href="#1ff012def84bb3df64b313060f6de7ba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#21e6382dee8cc24808416494abc93e5f">AddVolume</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume both similar and quadratic (this is determed by number of given nodes). <a href="#21e6382dee8cc24808416494abc93e5f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2d584c652eeb55d174ad4e2107ad4702">AddPolyhedralVolume</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume of many faces, giving nodes for each face. <a href="#2d584c652eeb55d174ad4e2107ad4702"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#77d8a4cee1fa308e4ce7d2b80f15e52e">AddPolyhedralVolumeByFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create volume of many faces, giving IDs of existing faces. <a href="#77d8a4cee1fa308e4ce7d2b80f15e52e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3a0b58036724d0068a346f233ac1744f">MoveNode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Move node with given id. <a href="#3a0b58036724d0068a346f233ac1744f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#6a25defc09698efbe65b5e4b33ae1621">FindNodeClosestTo</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a node closest to a point. <a href="#6a25defc09698efbe65b5e4b33ae1621"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d6159f5aa96dde48576c9906c004d878">MeshToPassThroughAPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a node closest to a point and move it to a point location. <a href="#d6159f5aa96dde48576c9906c004d878"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b1cd711562c3f4cf4d2989606210dc6d">InverseDiag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace two neighbour triangles sharing Node1-Node2 link with ones built on the same 4 nodes but having other common link. <a href="#b1cd711562c3f4cf4d2989606210dc6d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#1f9d69024eb5959bacf0f14c9a99f89f">DeleteDiag</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace two neighbour triangles sharing Node1-Node2 link with a quadrangle built on the same 4 nodes. <a href="#1f9d69024eb5959bacf0f14c9a99f89f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#70be24d065258cab090116d94431f08b">Reorient</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reorient elements by ids. <a href="#70be24d065258cab090116d94431f08b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3135d68c4429b2941870e19bb3233dce">ReorientObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reorient all elements of the object. <a href="#3135d68c4429b2941870e19bb3233dce"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#922f422cb40bc3412f7561defe43ef3b">TriToQuad</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Fuse neighbour triangles into quadrangles. <a href="#922f422cb40bc3412f7561defe43ef3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b6d00be6bccc1478f6dd627ab10ef0b0">TriToQuadObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Fuse neighbour triangles of the object into quadrangles. <a href="#b6d00be6bccc1478f6dd627ab10ef0b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#0c0ad8d78fb361a3270325ceb3f495b6">QuadToTri</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#0c0ad8d78fb361a3270325ceb3f495b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5ce3b8a9451caf30b6150c81000beb38">QuadToTriObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#5ce3b8a9451caf30b6150c81000beb38"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c0a1a58709e0b852d34ad4c800e4dbe5">SplitQuad</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#c0a1a58709e0b852d34ad4c800e4dbe5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#597d364ed43deec20e76bbe76733f24a">SplitQuadObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quadrangles into triangles. <a href="#597d364ed43deec20e76bbe76733f24a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#318863d98fc0ceae3d2c40f2e140ddcc">BestSplit</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find better splitting of the given quadrangle. <a href="#318863d98fc0ceae3d2c40f2e140ddcc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4e9b0332c2c020c0f9baa1be7ff436f7">SplitQuadsNearTriangularFacets</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split quafrangle faces near triangular facets of volumes. <a href="#4e9b0332c2c020c0f9baa1be7ff436f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#3ae71a6aea314843e0f9f5cc7d24cf4a">SplitHexaToTetras</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split hexahedrons into tetrahedrons. <a href="#3ae71a6aea314843e0f9f5cc7d24cf4a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4270db271f6180980c28cf58e835c3f3">SplitHexaToPrisms</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Split hexahedrons into prisms. <a href="#4270db271f6180980c28cf58e835c3f3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#84d7a34fff0606afb1ad5ec38fbff51b">Smooth</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Smooth elements. <a href="#84d7a34fff0606afb1ad5ec38fbff51b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#35fe184fb7df14af5ed11780133242b6">SmoothObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Smooth elements belong to given object. <a href="#35fe184fb7df14af5ed11780133242b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f1a03b74c100180c10eebe21623a2c08">SmoothParametric</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parametric smooth the given elements. <a href="#f1a03b74c100180c10eebe21623a2c08"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#72f3d72d6e05ee787657079f7fae7569">SmoothParametricObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Parametric smooth elements belong to given object. <a href="#72f3d72d6e05ee787657079f7fae7569"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4dc4ca27b4d1b0dfc975b5ebb9e74b98">ConvertToQuadratic</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts all mesh to quadratic one, deletes old elements, replacing them with quadratic ones with the same id. <a href="#4dc4ca27b4d1b0dfc975b5ebb9e74b98"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#bf3a3a02b1ec06aaa4b518eacbc61c13">ConvertFromQuadratic</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts all mesh from quadratic to ordinary ones, deletes old quadratic elements, <br>
- replacing them with ordinary mesh elements with the same id. <a href="#bf3a3a02b1ec06aaa4b518eacbc61c13"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#67efca0e9f290689ed21b473e52cbd50">RenumberNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Renumber mesh nodes. <a href="#67efca0e9f290689ed21b473e52cbd50"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#425c345fea14aac8d46daf65e28aa361">RenumberElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Renumber mesh elements. <a href="#425c345fea14aac8d46daf65e28aa361"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5c1411e04a23bd4f4ba721a24638a833">RotationSweep</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by rotation of the elements around the axis. <a href="#5c1411e04a23bd4f4ba721a24638a833"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#9e3953602695cb8cfdca1357cd4281a0">RotationSweepObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by rotation of the elements of object around the axis. <a href="#9e3953602695cb8cfdca1357cd4281a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#975714cfcbcbb60eabd43045fe7d80f0">ExtrusionSweep</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements with given ids. <a href="#975714cfcbcbb60eabd43045fe7d80f0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#4f3409fde48b1edb83ea3c598e061b01">AdvancedExtrusion</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements with given ids. <a href="#4f3409fde48b1edb83ea3c598e061b01"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5d29416945e6a665b83258b6f20a3b9d">ExtrusionSweepObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#5d29416945e6a665b83258b6f20a3b9d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#afa41c3158cd8b1fcfaf86db26d8550f">ExtrusionSweepObject1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#afa41c3158cd8b1fcfaf86db26d8550f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#079e59af58714725629b5081b5ec15c4">ExtrusionSweepObject2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object. <a href="#079e59af58714725629b5081b5ec15c4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#691522416f481a91a268d58e15646eb7">ExtrusionAlongPath</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the given elements A path of extrusion must be a meshed edge. <a href="#691522416f481a91a268d58e15646eb7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f0248dfbb1f18de28754468c1173f88c">ExtrusionAlongPathObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generate new elements by extrusion of the elements belong to object A path of extrusion must be a meshed edge. <a href="#f0248dfbb1f18de28754468c1173f88c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#e847af1a376e90dc10becf6c24475577">Mirror</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Symmetrical copy of mesh elements. <a href="#e847af1a376e90dc10becf6c24475577"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b1d7bc19611c4e6cbb9c6a39aa7d41e7">MirrorObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Symmetrical copy of object. <a href="#b1d7bc19611c4e6cbb9c6a39aa7d41e7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#17a4c398f12048ee97be9e34c6fcf0df">Translate</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translates the elements. <a href="#17a4c398f12048ee97be9e34c6fcf0df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#8fd2fa7ac4bd7733b92cfdc93bc06c6a">TranslateObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translates the object. <a href="#8fd2fa7ac4bd7733b92cfdc93bc06c6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#9490661f177f27ab7c4ada20e244e049">Rotate</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotates the elements. <a href="#9490661f177f27ab7c4ada20e244e049"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#edbcc6762a097b389338f3fb79dd2e43">RotateObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotates the object. <a href="#edbcc6762a097b389338f3fb79dd2e43"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#cdf92cb074d0bdfdce13a7c496d593d4">FindCoincidentNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find group of nodes close to each other within Tolerance. <a href="#cdf92cb074d0bdfdce13a7c496d593d4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#5bd7d2b42269c8783342692d99bceccf">FindCoincidentNodesOnPart</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find group of nodes close to each other within Tolerance. <a href="#5bd7d2b42269c8783342692d99bceccf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#189cb7bee4e396e1cd429f55bdeb7830">MergeNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Merge nodes. <a href="#189cb7bee4e396e1cd429f55bdeb7830"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f650e7e34b5019b7e0439046daccc898">FindEqualElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find elements built on the same nodes. <a href="#f650e7e34b5019b7e0439046daccc898"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b23dd407618c78f92c709f8a33e89f26">MergeElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Merge elements in each given group. <a href="#b23dd407618c78f92c709f8a33e89f26"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#6d065ef099f2d589074a7236cd17a8b8">MergeEqualElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all but one of elements built on the same nodes. <a href="#6d065ef099f2d589074a7236cd17a8b8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2a8b90d2e3ab295e130c72fa1b700e87">SewFreeBorders</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew free borders. <a href="#2a8b90d2e3ab295e130c72fa1b700e87"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#33e575a39b2721c5f307ed633f826971">SewConformFreeBorders</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew conform free borders. <a href="#33e575a39b2721c5f307ed633f826971"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#b92ca31f6a9cc3b67ad97c5dfc6d0df0">SewBorderToSide</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew border to side. <a href="#b92ca31f6a9cc3b67ad97c5dfc6d0df0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#bf094f8b9d3152d4b6ad03818c2e53ae">SewSideElements</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sew two sides of a mesh. <a href="#bf094f8b9d3152d4b6ad03818c2e53ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f0a5ee1d36cbd2f05f0096a85f013d6a">ChangeElemNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set new nodes for given element. <a href="#f0a5ee1d36cbd2f05f0096a85f013d6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#2e52a15f9fa25f6a0dc17b80636b9ef4">GetLastCreatedNodes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If during last operation of MeshEditor some nodes were created this method returns list of it's IDs, <br>
- if new nodes not created - returns empty list. <a href="#2e52a15f9fa25f6a0dc17b80636b9ef4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#08160d8eccea10d14367996bb1459b77">GetLastCreatedElems</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If during last operation of MeshEditor some elements were created this method returns list of it's IDs, <br>
- if new elements not creared - returns empty list. <a href="#08160d8eccea10d14367996bb1459b77"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#eb2e95e036f629d22802fe1caa0dea77">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#d4c31f83ccca912b41330a80953b19e2">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f6f61e4be25bdf3a89492e8d9e466f1c">editor</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#f3e48df7fb0b782b294824894c7c5589">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#05914b93aefd09a1702655e3eebde220">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html#c57794e9c688fc591fa6a634ae7ecf24">editor</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The class contains mesh shape, SMESH_Mesh, SMESH_MeshEditor More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="2f592ce85252933c16d53b2233326e78"></a><!-- doxytag: member="smesh::Mesh::__init__" ref="2f592ce85252933c16d53b2233326e78" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>obj</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Creates mesh on the shape <em>geom(or the empty mesh if geom equal to 0)</em>, sets GUI name of this mesh to <em>name</em>. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>Shape to be meshed or SMESH_Mesh object </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Study name of the mesh </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bd750f18fbb3bbaec4658dbf9abf9a6a"></a><!-- doxytag: member="smesh::Mesh::SetMesh" ref="bd750f18fbb3bbaec4658dbf9abf9a6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SetMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMesh</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is SMESH_Mesh object </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="dbacc8ea6620b9d3f75c78ccd01447f5"></a><!-- doxytag: member="smesh::Mesh::GetMesh" ref="dbacc8ea6620b9d3f75c78ccd01447f5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Mesh object </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b87f0d109e7dd97722ee0bfea949d534"></a><!-- doxytag: member="smesh::Mesh::GetName" ref="b87f0d109e7dd97722ee0bfea949d534" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1c8c2f704ec04470c635bafbffc2fd89"></a><!-- doxytag: member="smesh::Mesh::SetName" ref="1c8c2f704ec04470c635bafbffc2fd89" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6a6cf011f8f9ae71976677e5fc252cba"></a><!-- doxytag: member="smesh::Mesh::GetSubMesh" ref="6a6cf011f8f9ae71976677e5fc252cba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-The subMesh object gives access to nodes and elements IDs. <br>
- SubMesh will be used instead of SubShape in a next idl version to adress a specific subMesh... </td>
- </tr>
-</table>
-<a class="anchor" name="8cd4dd97fd482c2dc9366831d9edfade"></a><!-- doxytag: member="smesh::Mesh::GetShape" ref="8cd4dd97fd482c2dc9366831d9edfade" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>GEOM_Object </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3c65a48f65595eca0cb35537327f66e7"></a><!-- doxytag: member="smesh::Mesh::SetShape" ref="3c65a48f65595eca0cb35537327f66e7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SetShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>shape to be meshed(GEOM_Object) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8b180b0fecdee7086fd87b6e399fb920"></a><!-- doxytag: member="smesh::Mesh::IsReadyToCompute" ref="8b180b0fecdee7086fd87b6e399fb920" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IsReadyToCompute </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubObject</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubObject</em> </td><td>subshape of a mesh shape </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8a4a3f3f1b1c3ab7344043fc0462b34c"></a><!-- doxytag: member="smesh::Mesh::GetAlgoState" ref="8a4a3f3f1b1c3ab7344043fc0462b34c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetAlgoState </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubObject</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubObject</em> </td><td>subshape of a mesh shape </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>a list of errors </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="98eebf424797ca54f6f8d26bfe5fa198"></a><!-- doxytag: member="smesh::Mesh::GetGeometryByMeshElement" ref="98eebf424797ca54f6f8d26bfe5fa198" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetGeometryByMeshElement </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theElementID</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theGeomName</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-The returned geometrical object, if not nil, is either found in the study or is published by this method with the given name <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theMesh</em> </td><td>is an instance of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theElementID</em> </td><td>an id of the mesh element </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theGeomName</em> </td><td>user defined name of geometrical object </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>GEOM.GEOM_Object instance </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="06348840fb6e34f96868289711e081b8"></a><!-- doxytag: member="smesh::Mesh::MeshDimension" ref="06348840fb6e34f96868289711e081b8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MeshDimension </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c482d4a5eb26a6215d5da9b368e19c45"></a><!-- doxytag: member="smesh::Mesh::Segment" ref="c482d4a5eb26a6215d5da9b368e19c45" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Segment </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>algo</em> = <code><a class="el" href="namespacesmesh.html#85f3ed596d91251bfa3b2d2ac4151739">REGULAR</a></code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>algo</em> parameter is not sets, this algorithm is REGULAR. If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
- Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are <a class="el" href="namespacesmesh.html#85f3ed596d91251bfa3b2d2ac4151739">smesh.REGULAR</a> or <a class="el" href="namespacesmesh.html#40eed802c94269a68ec2194609fac2f0">smesh.PYTHON</a> for discretization via python function </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0670294973fa7bfe28b9011e0f09f6a1"></a><!-- doxytag: member="smesh::Mesh::Triangle" ref="0670294973fa7bfe28b9011e0f09f6a1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Triangle </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>algo</em> = <code><a class="el" href="namespacesmesh.html#4449cc4d5e7910c0afa9a35238736519">MEFISTO</a></code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
- Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are: <a class="el" href="namespacesmesh.html#4449cc4d5e7910c0afa9a35238736519">smesh.MEFISTO</a> or <a class="el" href="namespacesmesh.html#72b65da5195aa8d71574f95e5533d612">smesh.NETGEN</a> </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4ca1886a1ff06e16c670f1675c5a573b"></a><!-- doxytag: member="smesh::Mesh::Quadrangle" ref="4ca1886a1ff06e16c670f1675c5a573b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Quadrangle </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
- Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="25ec76b72df8bebc8a612910a0318620"></a><!-- doxytag: member="smesh::Mesh::Tetrahedron" ref="25ec76b72df8bebc8a612910a0318620" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Tetrahedron </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>algo</em> = <code><a class="el" href="namespacesmesh.html#72b65da5195aa8d71574f95e5533d612">NETGEN</a></code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-The parameter <em>algo</em> permits to choice the algorithm: NETGEN or GHS3D If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
- Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>algo</em> </td><td>values are: <a class="el" href="namespacesmesh.html#72b65da5195aa8d71574f95e5533d612">smesh.NETGEN</a>, <a class="el" href="namespacesmesh.html#bf6aaa2e2cf565cbe3ae34954dee8926">smesh.GHS3D</a>, <a class="el" href="namespacesmesh.html#13a34e1016fc530291cb7c688709efb3">smesh.FULL_NETGEN</a> </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="21ec3ac09ca0ad1a9fdc6935654893fd"></a><!-- doxytag: member="smesh::Mesh::Hexahedron" ref="21ec3ac09ca0ad1a9fdc6935654893fd" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Hexahedron </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. <br>
- Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="27c0aef5694eea45b0670207d5580bc6"></a><!-- doxytag: member="smesh::Mesh::Netgen" ref="27c0aef5694eea45b0670207d5580bc6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Netgen </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>is3D</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7ddf97abf59d1ddb743142357ba56103"></a><!-- doxytag: member="smesh::Mesh::Projection1D" ref="7ddf97abf59d1ddb743142357ba56103" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Projection1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c906452c66b813462d49a5e0e7aff93c"></a><!-- doxytag: member="smesh::Mesh::Projection2D" ref="c906452c66b813462d49a5e0e7aff93c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Projection2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="cab360c7269abf3caa7705cdb5274dea"></a><!-- doxytag: member="smesh::Mesh::Projection3D" ref="cab360c7269abf3caa7705cdb5274dea" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Projection3D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c5e64828cdb2bc6bb626fc66e7bc5134"></a><!-- doxytag: member="smesh::Mesh::Prism" ref="c5e64828cdb2bc6bb626fc66e7bc5134" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Prism </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the optional <em>geom</em> parameter is not sets, this algorithm is global. Otherwise, this algorithm define a submesh based on <em>geom</em> subshape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>If defined, subshape to be meshed </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ed26e60b9561403c1966a8a4aac5f512"></a><!-- doxytag: member="smesh::Mesh::Compute" ref="ed26e60b9561403c1966a8a4aac5f512" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Compute </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d23d8a7c9fc382821d4016774fa9e98d"></a><!-- doxytag: member="smesh::Mesh::AutomaticTetrahedralization" ref="d23d8a7c9fc382821d4016774fa9e98d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AutomaticTetrahedralization </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1c78238cdf0aad20ab2d6eef4a184799"></a><!-- doxytag: member="smesh::Mesh::AutomaticHexahedralization" ref="1c78238cdf0aad20ab2d6eef4a184799" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AutomaticHexahedralization </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1b0f1c169956e949c4aef9997ae2c8b3"></a><!-- doxytag: member="smesh::Mesh::AddHypothesis" ref="1b0f1c169956e949c4aef9997ae2c8b3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>hyp</em> </td><td>is a hypothesis to assign </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>is subhape of mesh geometry </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9dcaabbf09856c4a4d7465cb12eaf28e"></a><!-- doxytag: member="smesh::Mesh::GetHypothesisList" ref="9dcaabbf09856c4a4d7465cb12eaf28e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetHypothesisList </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>geom</em> </td><td>is subhape of mesh geometry </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="95d999f08f0aaef05f6dcdb8292e00e0"></a><!-- doxytag: member="smesh::Mesh::RemoveGlobalHypotheses" ref="95d999f08f0aaef05f6dcdb8292e00e0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RemoveGlobalHypotheses </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6deeda0a7c76698bdf314b7c81b15c0f"></a><!-- doxytag: member="smesh::Mesh::Group" ref="6deeda0a7c76698bdf314b7c81b15c0f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Group </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>grp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em> = <code>""</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>grp</em> </td><td>is a geometric group, a vertex, an edge, a face or a solid </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_GroupOnGeom </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="36933e515825d7d1c62863686546a84f"></a><!-- doxytag: member="smesh::Mesh::ExportToMED" ref="36933e515825d7d1c62863686546a84f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExportToMED </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>version</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>opt</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Export the mesh in a file with the MED format and choice the <em>version</em> of MED format <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>version</em> </td><td>values are SMESH.MED_V2_1, SMESH.MED_V2_2 </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a86bdbce4f2f57e951bcea9ab1986ecb"></a><!-- doxytag: member="smesh::Mesh::ExportMED" ref="a86bdbce4f2f57e951bcea9ab1986ecb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExportMED </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>auto_groups</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>version</em> = <code>MED_V2_2</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>auto_groups</em> </td><td>boolean parameter for creating/not creating the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; the typical use is auto_groups=false. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>version</em> </td><td>MED format version(MED_V2_1 or MED_V2_2) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5db000b98b9608f1f3384a4b09b35f58"></a><!-- doxytag: member="smesh::Mesh::ExportDAT" ref="5db000b98b9608f1f3384a4b09b35f58" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExportDAT </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>f</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c008bc59ddf84fb975ea54fdd9c5b20e"></a><!-- doxytag: member="smesh::Mesh::ExportUNV" ref="c008bc59ddf84fb975ea54fdd9c5b20e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExportUNV </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>f</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5f0cfa067db19492048fc67f9214a938"></a><!-- doxytag: member="smesh::Mesh::ExportSTL" ref="5f0cfa067db19492048fc67f9214a938" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExportSTL </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>f</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ascii</em> = <code>1</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>is the file name </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ascii</em> </td><td>defined the kind of file contents </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d0f9d4c25155f1aa2f2f9d9439bbd380"></a><!-- doxytag: member="smesh::Mesh::CreateEmptyGroup" ref="d0f9d4c25155f1aa2f2f9d9439bbd380" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.CreateEmptyGroup </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4766ca881b87442bb269d843d6e0fbee"></a><!-- doxytag: member="smesh::Mesh::GroupOnGeom" ref="4766ca881b87442bb269d843d6e0fbee" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GroupOnGeom </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>grp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em> = <code>""</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>type</em> = <code>None</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>grp</em> </td><td>is a geometric group, a vertex, an edge, a face or a solid </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>is the name of the mesh group </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_GroupOnGeom </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3b3954caebc6f212681cdc43d683d81f"></a><!-- doxytag: member="smesh::Mesh::MakeGroupByIds" ref="3b3954caebc6f212681cdc43d683d81f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MakeGroupByIds </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>groupName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elemIDs</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>elemIDs</em> </td><td>is the list of ids </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="971e345218f95e1d56d59450aebb8dec"></a><!-- doxytag: member="smesh::Mesh::MakeGroup" ref="971e345218f95e1d56d59450aebb8dec" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MakeGroup </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>groupName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CritType</em> = <code>FT_Undefined</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Treshold</em> = <code>""</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>UnaryOp</em> = <code>FT_Undefined</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of id ids as string, shape, numeric) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3ed52b9c18af35719986e962143a5ffb"></a><!-- doxytag: member="smesh::Mesh::MakeGroupByCriterion" ref="3ed52b9c18af35719986e962143a5ffb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MakeGroupByCriterion </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>groupName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Criterion</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Criterion</em> </td><td>is the instance of Criterion class </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1db8830048163a89d6e8a5b38bc0aff6"></a><!-- doxytag: member="smesh::Mesh::MakeGroupByCriteria" ref="1db8830048163a89d6e8a5b38bc0aff6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MakeGroupByCriteria </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>groupName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriteria</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Criteria</em> </td><td>is the list of criterions </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8f4952f18ef6e065b1f21b9c501acdbd"></a><!-- doxytag: member="smesh::Mesh::MakeGroupByFilter" ref="8f4952f18ef6e065b1f21b9c501acdbd" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MakeGroupByFilter </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>groupName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFilter</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>groupName</em> </td><td>is the name of the mesh group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Criterion</em> </td><td>is the instance of Filter class </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Group </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="14ec9ac71e14ef62aa41ab5427dc874b"></a><!-- doxytag: member="smesh::Mesh::GetIdsFromFilter" ref="14ec9ac71e14ef62aa41ab5427dc874b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetIdsFromFilter </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFilter</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theFilter</em> </td><td>is SMESH_Filter </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>list of ids </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bf1218d5cb3988330c0bf61db2a2b2b7"></a><!-- doxytag: member="smesh::Mesh::GetFreeBorders" ref="bf1218d5cb3988330c0bf61db2a2b2b7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetFreeBorders </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>list of SMESH.FreeEdges.Border structure: edge id and two its nodes ids. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="cf78d6ee5bf4142a7c47c542dd29774e"></a><!-- doxytag: member="smesh::Mesh::RemoveGroup" ref="cf78d6ee5bf4142a7c47c542dd29774e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RemoveGroup </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7b925f04a22f5b1b6b2e534da1ecbd92"></a><!-- doxytag: member="smesh::Mesh::RemoveGroupWithContents" ref="7b925f04a22f5b1b6b2e534da1ecbd92" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RemoveGroupWithContents </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="95da60a43691e2555e1246346bab95cc"></a><!-- doxytag: member="smesh::Mesh::GetGroups" ref="95da60a43691e2555e1246346bab95cc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetGroups </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ec1357647df1fae2de711e46f33bce59"></a><!-- doxytag: member="smesh::Mesh::GetGroupNames" ref="ec1357647df1fae2de711e46f33bce59" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetGroupNames </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="adce4d7372f7f85d7851aac8fa8223ab"></a><!-- doxytag: member="smesh::Mesh::UnionGroups" ref="adce4d7372f7f85d7851aac8fa8223ab" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.UnionGroups </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-All mesh elements that are present in initial groups are added to the new one </td>
- </tr>
-</table>
-<a class="anchor" name="ff4bc7665f316f9afe4091a1aa195938"></a><!-- doxytag: member="smesh::Mesh::IntersectGroups" ref="ff4bc7665f316f9afe4091a1aa195938" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IntersectGroups </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>group2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-All mesh elements that are present in both initial groups are added to the new one. </td>
- </tr>
-</table>
-<a class="anchor" name="93a759ed3183676d160b210ea16f4152"></a><!-- doxytag: member="smesh::Mesh::CutGroups" ref="93a759ed3183676d160b210ea16f4152" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.CutGroups </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mainGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>toolGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-All mesh elements that are present in main group but do not present in tool group are added to the new one </td>
- </tr>
-</table>
-<a class="anchor" name="a8eb2739e60747e3e4f21f6d044fb8ea"></a><!-- doxytag: member="smesh::Mesh::GetLog" ref="a8eb2739e60747e3e4f21f6d044fb8ea" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetLog </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>clearAfterGet</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>clearAfterGet</em> </td><td>log is emptied after Get (safe if concurrents access) </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>list of log_block structures: commandType number coords indexes </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ca397e42479735387f28e60daba5fa21"></a><!-- doxytag: member="smesh::Mesh::ClearLog" ref="ca397e42479735387f28e60daba5fa21" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ClearLog </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Must be used immediately after GetLog if clearAfterGet is false. </td>
- </tr>
-</table>
-<a class="anchor" name="8c2b5b28778a8c8e75dbf67e9e173e96"></a><!-- doxytag: member="smesh::Mesh::GetId" ref="8c2b5b28778a8c8e75dbf67e9e173e96" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="aefae881bffe9563d1d94a8aa94311aa"></a><!-- doxytag: member="smesh::Mesh::GetStudyId" ref="aefae881bffe9563d1d94a8aa94311aa" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetStudyId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d1846b2ee111a6720a7bfdb7bae9a04e"></a><!-- doxytag: member="smesh::Mesh::HasDuplicatedGroupNamesMED" ref="d1846b2ee111a6720a7bfdb7bae9a04e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.HasDuplicatedGroupNamesMED </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Consider maximum group name length stored in MED file. </td>
- </tr>
-</table>
-<a class="anchor" name="e65f765b6a402c7c8b26335fa4422cf5"></a><!-- doxytag: member="smesh::Mesh::GetMeshEditor" ref="e65f765b6a402c7c8b26335fa4422cf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetMeshEditor </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="23967469975fb15ab095fbef5d3fff4c"></a><!-- doxytag: member="smesh::Mesh::GetMEDMesh" ref="23967469975fb15ab095fbef5d3fff4c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetMEDMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="726ae692c089873060904db2f5be2489"></a><!-- doxytag: member="smesh::Mesh::NbNodes" ref="726ae692c089873060904db2f5be2489" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ab9164bf03dfc3f96373c83890faeac7"></a><!-- doxytag: member="smesh::Mesh::NbElements" ref="ab9164bf03dfc3f96373c83890faeac7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8f6a7ba5c4246afbe8c23c31b54fe151"></a><!-- doxytag: member="smesh::Mesh::NbEdges" ref="8f6a7ba5c4246afbe8c23c31b54fe151" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="62493e2dea0235f7043c35850ea67bc1"></a><!-- doxytag: member="smesh::Mesh::NbEdgesOfOrder" ref="62493e2dea0235f7043c35850ea67bc1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbEdgesOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e9df39cf5129962023043abcc898e69"></a><!-- doxytag: member="smesh::Mesh::NbFaces" ref="7e9df39cf5129962023043abcc898e69" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b5f5d0f76b75110f373c2978bec4511d"></a><!-- doxytag: member="smesh::Mesh::NbFacesOfOrder" ref="b5f5d0f76b75110f373c2978bec4511d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbFacesOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="45deec5dbf334ba86f69210edb6eb031"></a><!-- doxytag: member="smesh::Mesh::NbTriangles" ref="45deec5dbf334ba86f69210edb6eb031" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbTriangles </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="81cdae5d219351e937d02a8ea5c8bd66"></a><!-- doxytag: member="smesh::Mesh::NbTrianglesOfOrder" ref="81cdae5d219351e937d02a8ea5c8bd66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbTrianglesOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d83429db26cce1bc35795935c4c22e0a"></a><!-- doxytag: member="smesh::Mesh::NbQuadrangles" ref="d83429db26cce1bc35795935c4c22e0a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbQuadrangles </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4c9bca301fa2170813406412cfd9c1aa"></a><!-- doxytag: member="smesh::Mesh::NbQuadranglesOfOrder" ref="4c9bca301fa2170813406412cfd9c1aa" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbQuadranglesOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f086f62d71136f0e5a24ee9a4150515b"></a><!-- doxytag: member="smesh::Mesh::NbPolygons" ref="f086f62d71136f0e5a24ee9a4150515b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPolygons </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e35ea16aadc59efecaff428c0b3c2dfe"></a><!-- doxytag: member="smesh::Mesh::NbVolumes" ref="e35ea16aadc59efecaff428c0b3c2dfe" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbVolumes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b5dc83d1838f66e925667cd6634b5919"></a><!-- doxytag: member="smesh::Mesh::NbVolumesOfOrder" ref="b5dc83d1838f66e925667cd6634b5919" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbVolumesOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="2a7fd2a66045ad4ef37395899cf3e2b4"></a><!-- doxytag: member="smesh::Mesh::NbTetras" ref="2a7fd2a66045ad4ef37395899cf3e2b4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbTetras </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5f6f04aee13f5e9146b0b83dc4a29136"></a><!-- doxytag: member="smesh::Mesh::NbTetrasOfOrder" ref="5f6f04aee13f5e9146b0b83dc4a29136" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbTetrasOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="fd3a0392332424162db67bdc18a66b9e"></a><!-- doxytag: member="smesh::Mesh::NbHexas" ref="fd3a0392332424162db67bdc18a66b9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbHexas </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="30d469eb020c16ac95fe4ccc86df9847"></a><!-- doxytag: member="smesh::Mesh::NbHexasOfOrder" ref="30d469eb020c16ac95fe4ccc86df9847" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbHexasOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="aee1ae2972f4256dbc23281f212bd63d"></a><!-- doxytag: member="smesh::Mesh::NbPyramids" ref="aee1ae2972f4256dbc23281f212bd63d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPyramids </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6f9f0c840846170841655ffe6c88c9ba"></a><!-- doxytag: member="smesh::Mesh::NbPyramidsOfOrder" ref="6f9f0c840846170841655ffe6c88c9ba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPyramidsOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="497d7d510d365904c8850f8a1ab9b9c6"></a><!-- doxytag: member="smesh::Mesh::NbPrisms" ref="497d7d510d365904c8850f8a1ab9b9c6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPrisms </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8d37e2b2ec7aff3b89b0933c03409e5b"></a><!-- doxytag: member="smesh::Mesh::NbPrismsOfOrder" ref="8d37e2b2ec7aff3b89b0933c03409e5b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPrismsOfOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementOrder</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementOrder</em> </td><td>is order of elements: ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="84903e975c77cc2542ea50143f9cb877"></a><!-- doxytag: member="smesh::Mesh::NbPolyhedrons" ref="84903e975c77cc2542ea50143f9cb877" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbPolyhedrons </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="fafa87c1893299b30bffdaa748837ace"></a><!-- doxytag: member="smesh::Mesh::NbSubMesh" ref="fafa87c1893299b30bffdaa748837ace" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.NbSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="2f7b4230985fdf7dac8c1a3dc5d96efa"></a><!-- doxytag: member="smesh::Mesh::GetElementsId" ref="2f7b4230985fdf7dac8c1a3dc5d96efa" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetElementsId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1dbede49ac46741782d4b88096024754"></a><!-- doxytag: member="smesh::Mesh::GetElementsByType" ref="1dbede49ac46741782d4b88096024754" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetElementsByType </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementType</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is required type of elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d4f0260724efd10fc07d6cc030348bf7"></a><!-- doxytag: member="smesh::Mesh::GetNodesId" ref="d4f0260724efd10fc07d6cc030348bf7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetNodesId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="09d64e636ad97f4929174795376cb79a"></a><!-- doxytag: member="smesh::Mesh::GetElementType" ref="09d64e636ad97f4929174795376cb79a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetElementType </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>iselem</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="cff00e6b2f5d63f24af53e5d654d259e"></a><!-- doxytag: member="smesh::Mesh::GetSubMeshElementsId" ref="cff00e6b2f5d63f24af53e5d654d259e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetSubMeshElementsId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>shapeID</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="df30b3062d9420c85f457d8d67716c6a"></a><!-- doxytag: member="smesh::Mesh::GetSubMeshNodesId" ref="df30b3062d9420c85f457d8d67716c6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetSubMeshNodesId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>shapeID</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>all</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="01928943dd569e70590f7a82d5a9c083"></a><!-- doxytag: member="smesh::Mesh::GetSubMeshElementType" ref="01928943dd569e70590f7a82d5a9c083" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetSubMeshElementType </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>shapeID</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>shapeID</em> </td><td>is geom object(subshape) IOR </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="97cc6a5900b73642880b5c5327167347"></a><!-- doxytag: member="smesh::Mesh::Dump" ref="97cc6a5900b73642880b5c5327167347" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Dump </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8c5f43b40615e416e8723250aedca198"></a><!-- doxytag: member="smesh::Mesh::GetNodeXYZ" ref="8c5f43b40615e416e8723250aedca198" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetNodeXYZ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="89759593eb975e4a98f21fad2f0471d9"></a><!-- doxytag: member="smesh::Mesh::GetNodeInverseElements" ref="89759593eb975e4a98f21fad2f0471d9" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetNodeInverseElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="819f94ff143442f18726ad6d571f4d4d"></a><!-- doxytag: member="smesh::Mesh::GetShapeID" ref="819f94ff143442f18726ad6d571f4d4d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetShapeID </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="eef3aa74ef3616715448260f21f743fe"></a><!-- doxytag: member="smesh::Mesh::GetShapeIDForElem" ref="eef3aa74ef3616715448260f21f743fe" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetShapeIDForElem </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8a3f80335947fd570bba6b4f53a8a561"></a><!-- doxytag: member="smesh::Mesh::GetElemNbNodes" ref="8a3f80335947fd570bba6b4f53a8a561" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetElemNbNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b962a2eb7fc5b6ee8c50795d185c45d0"></a><!-- doxytag: member="smesh::Mesh::GetElemNode" ref="b962a2eb7fc5b6ee8c50795d185c45d0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetElemNode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>index</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e51aaa086dca92d2b7966ae0b49aefd7"></a><!-- doxytag: member="smesh::Mesh::IsMediumNode" ref="e51aaa086dca92d2b7966ae0b49aefd7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IsMediumNode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementID</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>nodeID</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="10e70db0e24a1ec78636f8651a402873"></a><!-- doxytag: member="smesh::Mesh::IsMediumNodeOfAnyElem" ref="10e70db0e24a1ec78636f8651a402873" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IsMediumNodeOfAnyElem </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>nodeID</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>elementType</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bf279ea4ea4ea4aa0e01ef0b2da41376"></a><!-- doxytag: member="smesh::Mesh::ElemNbEdges" ref="bf279ea4ea4ea4aa0e01ef0b2da41376" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ElemNbEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ba5c055ca37c30cb77d2c698cb062d18"></a><!-- doxytag: member="smesh::Mesh::ElemNbFaces" ref="ba5c055ca37c30cb77d2c698cb062d18" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ElemNbFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0711cb1be29ca2d8e186e921650b9a75"></a><!-- doxytag: member="smesh::Mesh::IsPoly" ref="0711cb1be29ca2d8e186e921650b9a75" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IsPoly </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a6688e1a2742f29aa5b662cc7aaa4032"></a><!-- doxytag: member="smesh::Mesh::IsQuadratic" ref="a6688e1a2742f29aa5b662cc7aaa4032" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.IsQuadratic </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="512996a6214d6d7bb82c449126602dcb"></a><!-- doxytag: member="smesh::Mesh::BaryCenter" ref="512996a6214d6d7bb82c449126602dcb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.BaryCenter </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>id</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7ef5a1396c6ca2f87f866019d6994fda"></a><!-- doxytag: member="smesh::Mesh::RemoveElements" ref="7ef5a1396c6ca2f87f866019d6994fda" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RemoveElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is list of ids of elements to remove </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3660e81cc2503176aeaaf791d91583aa"></a><!-- doxytag: member="smesh::Mesh::RemoveNodes" ref="3660e81cc2503176aeaaf791d91583aa" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RemoveNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfNodes</em> </td><td>is list of ids of nodes to remove </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1fc905250f88b780af041874783e1aba"></a><!-- doxytag: member="smesh::Mesh::AddNode" ref="1fc905250f88b780af041874783e1aba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddNode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5300171dc7f8dcb867641e99ddfe1259"></a><!-- doxytag: member="smesh::Mesh::AddEdge" ref="5300171dc7f8dcb867641e99ddfe1259" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
- This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ac29ca675d96e76ac464d552d0677bef"></a><!-- doxytag: member="smesh::Mesh::AddFace" ref="ac29ca675d96e76ac464d552d0677bef" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
- This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1ff012def84bb3df64b313060f6de7ba"></a><!-- doxytag: member="smesh::Mesh::AddPolygonalFace" ref="1ff012def84bb3df64b313060f6de7ba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddPolygonalFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IdsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="21e6382dee8cc24808416494abc93e5f"></a><!-- doxytag: member="smesh::Mesh::AddVolume" ref="21e6382dee8cc24808416494abc93e5f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddVolume </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for creation of element. Needed order of nodes in this list corresponds to description of MED. <br>
- This description is located by the following link: <a href="http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.">http://www.salome-platform.org/salome2/web_med_internet/logiciels/medV2.2.2_doc_html/html/modele_de_donnees.html#3.</a> </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="2d584c652eeb55d174ad4e2107ad4702"></a><!-- doxytag: member="smesh::Mesh::AddPolyhedralVolume" ref="2d584c652eeb55d174ad4e2107ad4702" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddPolyhedralVolume </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IdsOfNodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Quantities</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IdsOfNodes</em> </td><td>List of node IDs for volume creation face by face. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Quantities</em> </td><td>List of integer values, Quantities[i] gives quantity of nodes in face number i. </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="77d8a4cee1fa308e4ce7d2b80f15e52e"></a><!-- doxytag: member="smesh::Mesh::AddPolyhedralVolumeByFaces" ref="77d8a4cee1fa308e4ce7d2b80f15e52e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AddPolyhedralVolumeByFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IdsOfFaces</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IdsOfFaces</em> </td><td>List of face IDs for volume creation.</td></tr>
- </table>
-</dl>
-Note: The created volume will refer only to nodes of the given faces, not to the faces itself. </td>
- </tr>
-</table>
-<a class="anchor" name="3a0b58036724d0068a346f233ac1744f"></a><!-- doxytag: member="smesh::Mesh::MoveNode" ref="3a0b58036724d0068a346f233ac1744f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MoveNode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>NodeID</em> </td><td>id of the node </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>new X coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>new Y coordinate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>new Z coordinate </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6a25defc09698efbe65b5e4b33ae1621"></a><!-- doxytag: member="smesh::Mesh::FindNodeClosestTo" ref="6a25defc09698efbe65b5e4b33ae1621" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.FindNodeClosestTo </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>X coordinate of a point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>Y coordinate of a point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>Z coordinate of a point </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>id of a node </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d6159f5aa96dde48576c9906c004d878"></a><!-- doxytag: member="smesh::Mesh::MeshToPassThroughAPoint" ref="d6159f5aa96dde48576c9906c004d878" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MeshToPassThroughAPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>x</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>X coordinate of a point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>y</em> </td><td>Y coordinate of a point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>z</em> </td><td>Z coordinate of a point </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>id of a moved node </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1cd711562c3f4cf4d2989606210dc6d"></a><!-- doxytag: member="smesh::Mesh::InverseDiag" ref="b1cd711562c3f4cf4d2989606210dc6d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.InverseDiag </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID2</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>NodeID1</em> </td><td>first node id </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NodeID2</em> </td><td>second node id </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>false if proper faces not found </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1f9d69024eb5959bacf0f14c9a99f89f"></a><!-- doxytag: member="smesh::Mesh::DeleteDiag" ref="1f9d69024eb5959bacf0f14c9a99f89f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.DeleteDiag </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID2</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>NodeID1</em> </td><td>first node id </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NodeID2</em> </td><td>second node id </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>false if proper faces not found </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="70be24d065258cab090116d94431f08b"></a><!-- doxytag: member="smesh::Mesh::Reorient" ref="70be24d065258cab090116d94431f08b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Reorient </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em> = <code>None</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>if undefined reorient all mesh elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3135d68c4429b2941870e19bb3233dce"></a><!-- doxytag: member="smesh::Mesh::ReorientObject" ref="3135d68c4429b2941870e19bb3233dce" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ReorientObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is mesh, submesh or group </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="922f422cb40bc3412f7561defe43ef3b"></a><!-- doxytag: member="smesh::Mesh::TriToQuad" ref="922f422cb40bc3412f7561defe43ef3b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.TriToQuad </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriterion</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxAngle</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>The triangles to be fused, </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a neighbour to fuse with. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAngle</em> </td><td>is a max angle between element normals at which fusion is still performed; theMaxAngle is mesured in radians. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b6d00be6bccc1478f6dd627ab10ef0b0"></a><!-- doxytag: member="smesh::Mesh::TriToQuadObject" ref="b6d00be6bccc1478f6dd627ab10ef0b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.TriToQuadObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriterion</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxAngle</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is mesh, submesh or group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a neighbour to fuse with. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAngle</em> </td><td>is a max angle between element normals at which fusion is still performed; theMaxAngle is mesured in radians. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0c0ad8d78fb361a3270325ceb3f495b6"></a><!-- doxytag: member="smesh::Mesh::QuadToTri" ref="0c0ad8d78fb361a3270325ceb3f495b6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.QuadToTri </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriterion</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>the faces to be splitted. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a diagonal for splitting. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5ce3b8a9451caf30b6150c81000beb38"></a><!-- doxytag: member="smesh::Mesh::QuadToTriObject" ref="5ce3b8a9451caf30b6150c81000beb38" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.QuadToTriObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriterion</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to taking list of elements from, is mesh, submesh or group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; used to choose a diagonal for splitting. </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c0a1a58709e0b852d34ad4c800e4dbe5"></a><!-- doxytag: member="smesh::Mesh::SplitQuad" ref="c0a1a58709e0b852d34ad4c800e4dbe5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SplitQuad </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Diag13</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theElems</em> </td><td>The faces to be splitted </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>the13Diag</em> </td><td>is used to choose a diagonal for splitting. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>TRUE in case of success, FALSE otherwise. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="597d364ed43deec20e76bbe76733f24a"></a><!-- doxytag: member="smesh::Mesh::SplitQuadObject" ref="597d364ed43deec20e76bbe76733f24a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SplitQuadObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Diag13</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>is object to taking list of elements from, is mesh, submesh or group </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="318863d98fc0ceae3d2c40f2e140ddcc"></a><!-- doxytag: member="smesh::Mesh::BestSplit" ref="318863d98fc0ceae3d2c40f2e140ddcc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.BestSplit </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDOfQuad</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCriterion</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDOfQuad</em> </td><td>ID of the quadrangle to be splitted. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCriterion</em> </td><td>is FT_...; a criterion to choose a diagonal for splitting. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>1 if 1-3 diagonal is better, 2 if 2-4 diagonal is better, 0 if error occurs. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4e9b0332c2c020c0f9baa1be7ff436f7"></a><!-- doxytag: member="smesh::Mesh::SplitQuadsNearTriangularFacets" ref="4e9b0332c2c020c0f9baa1be7ff436f7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SplitQuadsNearTriangularFacets </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="3ae71a6aea314843e0f9f5cc7d24cf4a"></a><!-- doxytag: member="smesh::Mesh::SplitHexaToTetras" ref="3ae71a6aea314843e0f9f5cc7d24cf4a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SplitHexaToTetras </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNode000</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNode001</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Use pattern mapping functionality for splitting. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to take list of hexahedrons from; is mesh, submesh or group. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNode000,theNode001</em> </td><td>is in range [0,7]; give an orientation of the pattern relatively each hexahedron: the (0,0,0) key-point of pattern will be mapped into <theNode000>-th node of each volume, the (0,0,1) key-point will be mapped into <theNode001>-th node of each volume. The (0,0,0) key-point of used pattern corresponds to not split corner. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4270db271f6180980c28cf58e835c3f3"></a><!-- doxytag: member="smesh::Mesh::SplitHexaToPrisms" ref="4270db271f6180980c28cf58e835c3f3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SplitHexaToPrisms </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNode000</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNode001</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Use pattern mapping functionality for splitting. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to take list of hexahedrons from; is mesh, submesh or group. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNode000,theNode001</em> </td><td>is in range [0,7]; give an orientation of the pattern relatively each hexahedron: the (0,0,0) key-point of pattern will be mapped into <theNode000>-th node of each volume, the (0,0,1) key-point will be mapped into <theNode001>-th node of each volume. The edge (0,0,0)-(0,0,1) of used pattern connects two not split corners. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em></em> </td><td>TRUE in case of success, FALSE otherwise. </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="84d7a34fff0606afb1ad5ec38fbff51b"></a><!-- doxytag: member="smesh::Mesh::Smooth" ref="84d7a34fff0606afb1ad5ec38fbff51b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Smooth </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfFixedNodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxNbOfIterations</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxAspectRatio</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Method</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list if ids of elements to smooth </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="35fe184fb7df14af5ed11780133242b6"></a><!-- doxytag: member="smesh::Mesh::SmoothObject" ref="35fe184fb7df14af5ed11780133242b6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SmoothObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfFixedNodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxNbOfIterations</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxxAspectRatio</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Method</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to smooth </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f1a03b74c100180c10eebe21623a2c08"></a><!-- doxytag: member="smesh::Mesh::SmoothParametric" ref="f1a03b74c100180c10eebe21623a2c08" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SmoothParametric </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfFixedNodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxNbOfIterations</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxAspectRatio</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Method</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list if ids of elements to smooth </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="72f3d72d6e05ee787657079f7fae7569"></a><!-- doxytag: member="smesh::Mesh::SmoothParametricObject" ref="72f3d72d6e05ee787657079f7fae7569" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SmoothParametricObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfFixedNodes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxNbOfIterations</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MaxAspectRatio</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Method</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to smooth </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>IDsOfFixedNodes</em> </td><td>list of ids of fixed nodes. Note that nodes built on edges and boundary nodes are always fixed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxNbOfIterations</em> </td><td>maximum number of iterations </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>MaxAspectRatio</em> </td><td>varies in range [1.0, inf] </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Method</em> </td><td>is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4dc4ca27b4d1b0dfc975b5ebb9e74b98"></a><!-- doxytag: member="smesh::Mesh::ConvertToQuadratic" ref="4dc4ca27b4d1b0dfc975b5ebb9e74b98" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ConvertToQuadratic </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theForce3d</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bf3a3a02b1ec06aaa4b518eacbc61c13"></a><!-- doxytag: member="smesh::Mesh::ConvertFromQuadratic" ref="bf3a3a02b1ec06aaa4b518eacbc61c13" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ConvertFromQuadratic </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67efca0e9f290689ed21b473e52cbd50"></a><!-- doxytag: member="smesh::Mesh::RenumberNodes" ref="67efca0e9f290689ed21b473e52cbd50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RenumberNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="425c345fea14aac8d46daf65e28aa361"></a><!-- doxytag: member="smesh::Mesh::RenumberElements" ref="425c345fea14aac8d46daf65e28aa361" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RenumberElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5c1411e04a23bd4f4ba721a24638a833"></a><!-- doxytag: member="smesh::Mesh::RotationSweep" ref="5c1411e04a23bd4f4ba721a24638a833" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RotationSweep </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Axix</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>AngleInRadians</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Tolerance</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of ids of elements to sweep </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Axix</em> </td><td>axis of rotation, AxisStruct or line(geom object) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of Rotation </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>number of steps </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9e3953602695cb8cfdca1357cd4281a0"></a><!-- doxytag: member="smesh::Mesh::RotationSweepObject" ref="9e3953602695cb8cfdca1357cd4281a0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RotationSweepObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Axix</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>AngleInRadians</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Tolerance</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be sweeped </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Axix</em> </td><td>axis of rotation, AxisStruct or line(geom object) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of Rotation </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>number of steps </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="975714cfcbcbb60eabd43045fe7d80f0"></a><!-- doxytag: member="smesh::Mesh::ExtrusionSweep" ref="975714cfcbcbb60eabd43045fe7d80f0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionSweep </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>StepVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids for extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4f3409fde48b1edb83ea3c598e061b01"></a><!-- doxytag: member="smesh::Mesh::AdvancedExtrusion" ref="4f3409fde48b1edb83ea3c598e061b01" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.AdvancedExtrusion </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>StepVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ExtrFlags</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SewTolerance</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ExtrFlags</em> </td><td>set flags for performing extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SewTolerance</em> </td><td>uses for comparing locations of nodes if flag EXTRUSION_FLAG_SEW is set </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5d29416945e6a665b83258b6f20a3b9d"></a><!-- doxytag: member="smesh::Mesh::ExtrusionSweepObject" ref="5d29416945e6a665b83258b6f20a3b9d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionSweepObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>StepVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="afa41c3158cd8b1fcfaf86db26d8550f"></a><!-- doxytag: member="smesh::Mesh::ExtrusionSweepObject1D" ref="afa41c3158cd8b1fcfaf86db26d8550f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionSweepObject1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>StepVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="079e59af58714725629b5081b5ec15c4"></a><!-- doxytag: member="smesh::Mesh::ExtrusionSweepObject2D" ref="079e59af58714725629b5081b5ec15c4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionSweepObject2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>StepVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbOfSteps</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object wich elements should be processed </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>StepVector</em> </td><td>vector, defining the direction and value of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbOfSteps</em> </td><td>the number of steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="691522416f481a91a268d58e15646eb7"></a><!-- doxytag: member="smesh::Mesh::ExtrusionAlongPath" ref="691522416f481a91a268d58e15646eb7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionAlongPath </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>PathMesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>PathShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeStart</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>HasAngles</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Angles</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>HasRefPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>RefPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LinearVariation</em> = <code>False</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>PathMesh</em> </td><td>mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>PathShape</em> </td><td>is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NodeStart</em> </td><td>the first or the last node on the edge. It is used to define the direction of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HasAngles</em> </td><td>allows the shape to be rotated around the path to get the resulting mesh in a helical fashion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Angles</em> </td><td>list of angles </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HasRefPoint</em> </td><td>allows to use base point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RefPoint</em> </td><td>point around which the shape is rotated(the mass center of the shape by default). User can specify any point as the Base Point and the shape will be rotated with respect to this point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>LinearVariation</em> </td><td>makes compute rotation angles as linear variation of given Angles along path steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f0248dfbb1f18de28754468c1173f88c"></a><!-- doxytag: member="smesh::Mesh::ExtrusionAlongPathObject" ref="f0248dfbb1f18de28754468c1173f88c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ExtrusionAlongPathObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>PathMesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>PathShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeStart</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>HasAngles</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Angles</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>HasRefPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>RefPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LinearVariation</em> = <code>False</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>is ids of elements </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>PathMesh</em> </td><td>mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>PathShape</em> </td><td>is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NodeStart</em> </td><td>the first or the last node on the edge. It is used to define the direction of extrusion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HasAngles</em> </td><td>allows the shape to be rotated around the path to get the resulting mesh in a helical fashion </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Angles</em> </td><td>list of angles </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>HasRefPoint</em> </td><td>allows to use base point </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RefPoint</em> </td><td>point around which the shape is rotated(the mass center of the shape by default). User can specify any point as the Base Point and the shape will be rotated with respect to this point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>LinearVariation</em> </td><td>makes compute rotation angles as linear variation of given Angles along path steps </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e847af1a376e90dc10becf6c24475577"></a><!-- doxytag: member="smesh::Mesh::Mirror" ref="e847af1a376e90dc10becf6c24475577" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Mirror </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Mirror</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMirrorType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Mirror</em> </td><td>is AxisStruct or geom object(point, line, plane) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMirrorType</em> </td><td>is POINT, AXIS or PLANE If the Mirror is geom object this parameter is unnecessary </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1d7bc19611c4e6cbb9c6a39aa7d41e7"></a><!-- doxytag: member="smesh::Mesh::MirrorObject" ref="b1d7bc19611c4e6cbb9c6a39aa7d41e7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MirrorObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Mirror</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMirrorType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>mesh, submesh or group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Mirror</em> </td><td>is AxisStruct or geom object(point, line, plane) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMirrorType</em> </td><td>is POINT, AXIS or PLANE If the Mirror is geom object this parameter is unnecessary </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="17a4c398f12048ee97be9e34c6fcf0df"></a><!-- doxytag: member="smesh::Mesh::Translate" ref="17a4c398f12048ee97be9e34c6fcf0df" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Translate </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Vector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Vector</em> </td><td>direction of translation(DirStruct or vector) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the translated elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8fd2fa7ac4bd7733b92cfdc93bc06c6a"></a><!-- doxytag: member="smesh::Mesh::TranslateObject" ref="8fd2fa7ac4bd7733b92cfdc93bc06c6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.TranslateObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Vector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to translate(mesh, submesh, or group) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Vector</em> </td><td>direction of translation(DirStruct or geom vector) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the translated elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9490661f177f27ab7c4ada20e244e049"></a><!-- doxytag: member="smesh::Mesh::Rotate" ref="9490661f177f27ab7c4ada20e244e049" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.Rotate </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfElements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Axis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>AngleInRadians</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>IDsOfElements</em> </td><td>list of elements ids </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Axis</em> </td><td>axis of rotation(AxisStruct or geom line) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of rotation(in radians) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the rotated elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="edbcc6762a097b389338f3fb79dd2e43"></a><!-- doxytag: member="smesh::Mesh::RotateObject" ref="edbcc6762a097b389338f3fb79dd2e43" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.RotateObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Axis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>AngleInRadians</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Copy</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObject</em> </td><td>object to rotate(mesh, submesh, or group) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Axis</em> </td><td>axis of rotation(AxisStruct or geom line) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>AngleInRadians</em> </td><td>angle of rotation(in radians) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Copy</em> </td><td>allows to copy the rotated elements </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="cdf92cb074d0bdfdce13a7c496d593d4"></a><!-- doxytag: member="smesh::Mesh::FindCoincidentNodes" ref="cdf92cb074d0bdfdce13a7c496d593d4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.FindCoincidentNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Tolerance</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance value </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5bd7d2b42269c8783342692d99bceccf"></a><!-- doxytag: member="smesh::Mesh::FindCoincidentNodesOnPart" ref="5bd7d2b42269c8783342692d99bceccf" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.FindCoincidentNodesOnPart </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SubMeshOrGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Tolerance</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Tolerance</em> </td><td>tolerance value </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>SubMeshOrGroup</em> </td><td>SubMesh or Group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="189cb7bee4e396e1cd429f55bdeb7830"></a><!-- doxytag: member="smesh::Mesh::MergeNodes" ref="189cb7bee4e396e1cd429f55bdeb7830" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MergeNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>GroupsOfNodes</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>of group of nodes </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f650e7e34b5019b7e0439046daccc898"></a><!-- doxytag: member="smesh::Mesh::FindEqualElements" ref="f650e7e34b5019b7e0439046daccc898" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.FindEqualElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>MeshOrSubMeshOrGroup</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>MeshOrSubMeshOrGroup</em> </td><td><a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> or SubMesh, or Group of elements for searching </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>a list of groups of equal elements </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b23dd407618c78f92c709f8a33e89f26"></a><!-- doxytag: member="smesh::Mesh::MergeElements" ref="b23dd407618c78f92c709f8a33e89f26" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MergeElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>GroupsOfElementsID</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>GroupsOfElementsID</em> </td><td>groups of elements for merging </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6d065ef099f2d589074a7236cd17a8b8"></a><!-- doxytag: member="smesh::Mesh::MergeEqualElements" ref="6d065ef099f2d589074a7236cd17a8b8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.MergeEqualElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="2a8b90d2e3ab295e130c72fa1b700e87"></a><!-- doxytag: member="smesh::Mesh::SewFreeBorders" ref="2a8b90d2e3ab295e130c72fa1b700e87" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SewFreeBorders </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SecondNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LastNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeID2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SecondNodeID2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LastNodeID2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CreatePolygons</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CreatePolyedrs</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="33e575a39b2721c5f307ed633f826971"></a><!-- doxytag: member="smesh::Mesh::SewConformFreeBorders" ref="33e575a39b2721c5f307ed633f826971" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SewConformFreeBorders </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SecondNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LastNodeID1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeID2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SecondNodeID2</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b92ca31f6a9cc3b67ad97c5dfc6d0df0"></a><!-- doxytag: member="smesh::Mesh::SewBorderToSide" ref="b92ca31f6a9cc3b67ad97c5dfc6d0df0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SewBorderToSide </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeIDOnFreeBorder</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>SecondNodeIDOnFreeBorder</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LastNodeIDOnFreeBorder</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>FirstNodeIDOnSide</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>LastNodeIDOnSide</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CreatePolygons</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CreatePolyedrs</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bf094f8b9d3152d4b6ad03818c2e53ae"></a><!-- doxytag: member="smesh::Mesh::SewSideElements" ref="bf094f8b9d3152d4b6ad03818c2e53ae" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.SewSideElements </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfSide1Elements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>IDsOfSide2Elements</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID1OfSide1ToMerge</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID1OfSide2ToMerge</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID2OfSide1ToMerge</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NodeID2OfSide2ToMerge</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Nodes belonging to Side1 are merged with nodes of elements of Side2. Number of elements in theSide1 and in theSide2 must be equal and they should have similar node connectivity. The nodes to merge should belong to sides borders and the first node should be linked to the second. </td>
- </tr>
-</table>
-<a class="anchor" name="f0a5ee1d36cbd2f05f0096a85f013d6a"></a><!-- doxytag: member="smesh::Mesh::ChangeElemNodes" ref="f0a5ee1d36cbd2f05f0096a85f013d6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.ChangeElemNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ide</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>newIDs</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ide</em> </td><td>the element id </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>newIDs</em> </td><td>nodes ids </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>If number of nodes is not corresponded to type of element - returns false </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="2e52a15f9fa25f6a0dc17b80636b9ef4"></a><!-- doxytag: member="smesh::Mesh::GetLastCreatedNodes" ref="2e52a15f9fa25f6a0dc17b80636b9ef4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetLastCreatedNodes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="08160d8eccea10d14367996bb1459b77"></a><!-- doxytag: member="smesh::Mesh::GetLastCreatedElems" ref="08160d8eccea10d14367996bb1459b77" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh.GetLastCreatedElems </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="f3e48df7fb0b782b294824894c7c5589"></a><!-- doxytag: member="smesh::Mesh::geom" ref="f3e48df7fb0b782b294824894c7c5589" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh.html#f3e48df7fb0b782b294824894c7c5589">smesh.Mesh.geom</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="05914b93aefd09a1702655e3eebde220"></a><!-- doxytag: member="smesh::Mesh::mesh" ref="05914b93aefd09a1702655e3eebde220" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh.html#05914b93aefd09a1702655e3eebde220">smesh.Mesh.mesh</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c57794e9c688fc591fa6a634ae7ecf24"></a><!-- doxytag: member="smesh::Mesh::editor" ref="c57794e9c688fc591fa6a634ae7ecf24" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh.html#c57794e9c688fc591fa6a634ae7ecf24">smesh.Mesh.editor</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="eb2e95e036f629d22802fe1caa0dea77"></a><!-- doxytag: member="smesh::Mesh::geom" ref="eb2e95e036f629d22802fe1caa0dea77" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh.html#f3e48df7fb0b782b294824894c7c5589">smesh.Mesh.geom</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d4c31f83ccca912b41330a80953b19e2"></a><!-- doxytag: member="smesh::Mesh::mesh" ref="d4c31f83ccca912b41330a80953b19e2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh.html#05914b93aefd09a1702655e3eebde220">smesh.Mesh.mesh</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6f61e4be25bdf3a89492e8d9e466f1c"></a><!-- doxytag: member="smesh::Mesh::editor" ref="f6f61e4be25bdf3a89492e8d9e466f1c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh.html#c57794e9c688fc591fa6a634ae7ecf24">smesh.Mesh.editor</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Algorithm.html">Mesh_Algorithm</a></div>
-<h1>smesh.Mesh_Algorithm Class Reference</h1><!-- doxytag: class="smesh::Mesh_Algorithm" -->Mother class to define algorithm, recommended to don't use directly.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Algorithm:<p><center><img src="classsmesh_1_1Mesh__Algorithm__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Algorithm__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Algorithm__inherit__map">
-<area href="classsmesh_1_1Mesh__Hexahedron.html" shape="rect" coords="227,8,403,32" alt="">
-<area href="classsmesh_1_1Mesh__Netgen.html" shape="rect" coords="242,56,389,80" alt="">
-<area href="classsmesh_1_1Mesh__Prism3D.html" shape="rect" coords="238,104,393,128" alt="">
-<area href="classsmesh_1_1Mesh__Projection1D.html" shape="rect" coords="225,152,406,176" alt="">
-<area href="classsmesh_1_1Mesh__Projection2D.html" shape="rect" coords="225,200,406,224" alt="">
-<area href="classsmesh_1_1Mesh__Projection3D.html" shape="rect" coords="225,248,406,272" alt="">
-<area href="classsmesh_1_1Mesh__Quadrangle.html" shape="rect" coords="229,296,402,320" alt="">
-<area href="classsmesh_1_1Mesh__RadialPrism3D.html" shape="rect" coords="219,344,411,368" alt="">
-<area href="classsmesh_1_1Mesh__Segment.html" shape="rect" coords="237,392,394,416" alt="">
-<area href="classsmesh_1_1Mesh__Tetrahedron.html" shape="rect" coords="227,440,403,464" alt="">
-<area href="classsmesh_1_1Mesh__Triangle.html" shape="rect" coords="239,488,391,512" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Algorithm::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Algorithm::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Algorithm::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Algorithm::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Algorithm::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Algorithm::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Algorithm::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Algorithm::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Algorithm::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Algorithm::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Algorithm::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Algorithm::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Algorithm::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Algorithm::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Algorithm::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Algorithm::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__CompositeSegment.html">Mesh_CompositeSegment</a></div>
-<h1>smesh.Mesh_CompositeSegment Class Reference</h1><!-- doxytag: class="smesh::Mesh_CompositeSegment" --><!-- doxytag: inherits="smesh::Mesh_Segment" -->Class to define a segment 1D algorithm for discretization.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_CompositeSegment:<p><center><img src="classsmesh_1_1Mesh__CompositeSegment__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__CompositeSegment__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__CompositeSegment__inherit__map">
-<area href="classsmesh_1_1Mesh__Segment.html" shape="rect" coords="39,84,197,108" alt="">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="38,9,198,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__CompositeSegment.html#517bc6da0e79cb989f3346810fe5c471">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#517bc6da0e79cb989f3346810fe5c471"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#474a476f4ee613be478c94398202c6ad">LocalLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#474a476f4ee613be478c94398202c6ad"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#f562aced3f41d5dec7c344c78a21ff3b">NumberOfSegments</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#f562aced3f41d5dec7c344c78a21ff3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#54cb7674f55ecb828ecadb1f3408b95f">Arithmetic1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#54cb7674f55ecb828ecadb1f3408b95f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#8824c58a068d8ebb6dfafe276cc45b6a">StartEndLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#8824c58a068d8ebb6dfafe276cc45b6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7bfa579e708b6c7558183fe50e414668">Deflection1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#7bfa579e708b6c7558183fe50e414668"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#e5d33518995c1ea6c97a4ae364841730">Propagation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#e5d33518995c1ea6c97a4ae364841730"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7a7aff5f8542efaee0115e90f2dff9c8">AutomaticLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#7a7aff5f8542efaee0115e90f2dff9c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#d12bcd1749874d541101bf8af001dd65">LengthNearVertex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#d12bcd1749874d541101bf8af001dd65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7e99441cd6f8b7be3888663345ce8f20">QuadraticMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#7e99441cd6f8b7be3888663345ce8f20"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="517bc6da0e79cb989f3346810fe5c471"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::__init__" ref="517bc6da0e79cb989f3346810fe5c471" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_CompositeSegment.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented from <a class="el" href="classsmesh_1_1Mesh__Segment.html#3028b681627a583d99eee297936d2d8e">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="474a476f4ee613be478c94398202c6ad"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::LocalLength" ref="474a476f4ee613be478c94398202c6ad" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LocalLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>l</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f562aced3f41d5dec7c344c78a21ff3b"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::NumberOfSegments" ref="f562aced3f41d5dec7c344c78a21ff3b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.NumberOfSegments </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s</em> = <code>[]</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="54cb7674f55ecb828ecadb1f3408b95f"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::Arithmetic1D" ref="54cb7674f55ecb828ecadb1f3408b95f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Arithmetic1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8824c58a068d8ebb6dfafe276cc45b6a"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::StartEndLength" ref="8824c58a068d8ebb6dfafe276cc45b6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.StartEndLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7bfa579e708b6c7558183fe50e414668"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::Deflection1D" ref="7bfa579e708b6c7558183fe50e414668" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Deflection1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>d</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e5d33518995c1ea6c97a4ae364841730"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::Propagation" ref="e5d33518995c1ea6c97a4ae364841730" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Propagation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7a7aff5f8542efaee0115e90f2dff9c8"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::AutomaticLength" ref="7a7aff5f8542efaee0115e90f2dff9c8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.AutomaticLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d12bcd1749874d541101bf8af001dd65"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::LengthNearVertex" ref="d12bcd1749874d541101bf8af001dd65" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LengthNearVertex </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>length</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>vertex</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e99441cd6f8b7be3888663345ce8f20"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::QuadraticMesh" ref="7e99441cd6f8b7be3888663345ce8f20" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.QuadraticMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails. </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="b6907301d8393ce0e80bf014d37133ac"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::geom" ref="b6907301d8393ce0e80bf014d37133ac" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented from <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_CompositeSegment::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Hexahedron.html">Mesh_Hexahedron</a></div>
-<h1>smesh.Mesh_Hexahedron Class Reference</h1><!-- doxytag: class="smesh::Mesh_Hexahedron" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a hexahedron 3D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Hexahedron:<p><center><img src="classsmesh_1_1Mesh__Hexahedron__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Hexahedron__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Hexahedron__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="16,9,176,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Hexahedron.html#d65de99b0553d2994bf93b9bc4194fba">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#d65de99b0553d2994bf93b9bc4194fba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="d65de99b0553d2994bf93b9bc4194fba"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::__init__" ref="d65de99b0553d2994bf93b9bc4194fba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Hexahedron.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Hexahedron::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Netgen.html">Mesh_Netgen</a></div>
-<h1>smesh.Mesh_Netgen Class Reference</h1><!-- doxytag: class="smesh::Mesh_Netgen" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Netgen:<p><center><img src="classsmesh_1_1Mesh__Netgen__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Netgen__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Netgen__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,168,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Netgen.html#18bbc559d35c96498968cca5a6a489e2">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#18bbc559d35c96498968cca5a6a489e2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Netgen.html#0620ef2bccc9c400fb193dfd28fb0a26">Parameters</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define hypothesis containing parameters of the algorithm. <a href="#0620ef2bccc9c400fb193dfd28fb0a26"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Netgen.html#021b44db5124e62363500490c9b2cb33">is3D</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Netgen.html#ffe45db8ad553008d544a5aaf0ca980d">is3D</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-independent)<p>
-This class is deprecated, only for compatibility!<p>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="18bbc559d35c96498968cca5a6a489e2"></a><!-- doxytag: member="smesh::Mesh_Netgen::__init__" ref="18bbc559d35c96498968cca5a6a489e2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Netgen.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>is3D</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0620ef2bccc9c400fb193dfd28fb0a26"></a><!-- doxytag: member="smesh::Mesh_Netgen::Parameters" ref="0620ef2bccc9c400fb193dfd28fb0a26" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Netgen.Parameters </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Netgen::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Netgen::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Netgen::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Netgen::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Netgen::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Netgen::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Netgen::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Netgen::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="ffe45db8ad553008d544a5aaf0ca980d"></a><!-- doxytag: member="smesh::Mesh_Netgen::is3D" ref="ffe45db8ad553008d544a5aaf0ca980d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Netgen.html#ffe45db8ad553008d544a5aaf0ca980d">smesh.Mesh_Netgen.is3D</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="021b44db5124e62363500490c9b2cb33"></a><!-- doxytag: member="smesh::Mesh_Netgen::is3D" ref="021b44db5124e62363500490c9b2cb33" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Netgen.html#ffe45db8ad553008d544a5aaf0ca980d">smesh.Mesh_Netgen.is3D</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Netgen::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Netgen::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Netgen::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Netgen::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Netgen::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Netgen::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Netgen::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Netgen::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Prism3D.html">Mesh_Prism3D</a></div>
-<h1>smesh.Mesh_Prism3D Class Reference</h1><!-- doxytag: class="smesh::Mesh_Prism3D" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a 3D extrusion algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Prism3D:<p><center><img src="classsmesh_1_1Mesh__Prism3D__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Prism3D__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Prism3D__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,168,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Prism3D.html#cfb1228c508c53e74da3ec741a6e9d54">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#cfb1228c508c53e74da3ec741a6e9d54"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="cfb1228c508c53e74da3ec741a6e9d54"></a><!-- doxytag: member="smesh::Mesh_Prism3D::__init__" ref="cfb1228c508c53e74da3ec741a6e9d54" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Prism3D.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Prism3D::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Prism3D::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Prism3D::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Prism3D::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Prism3D::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Prism3D::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Prism3D::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Prism3D::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Prism3D::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Prism3D::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Prism3D::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Prism3D::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Prism3D::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Prism3D::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Prism3D::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Prism3D::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Projection1D.html">Mesh_Projection1D</a></div>
-<h1>smesh.Mesh_Projection1D Class Reference</h1><!-- doxytag: class="smesh::Mesh_Projection1D" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a projection 1D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Projection1D:<p><center><img src="classsmesh_1_1Mesh__Projection1D__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Projection1D__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Projection1D__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="18,9,178,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection1D.html#a6462d220b600938ae89e6c5d2f3e3da">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#a6462d220b600938ae89e6c5d2f3e3da"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection1D.html#4652f536579bbde78d30ea313f7dcff5">SourceEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Edge" hypothesis, specifying a meshed edge to take a mesh pattern from, and optionally association of vertices between the source edge and a target one (where a hipothesis is assigned to). <a href="#4652f536579bbde78d30ea313f7dcff5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="a6462d220b600938ae89e6c5d2f3e3da"></a><!-- doxytag: member="smesh::Mesh_Projection1D::__init__" ref="a6462d220b600938ae89e6c5d2f3e3da" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection1D.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4652f536579bbde78d30ea313f7dcff5"></a><!-- doxytag: member="smesh::Mesh_Projection1D::SourceEdge" ref="4652f536579bbde78d30ea313f7dcff5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection1D.SourceEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>edge</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>srcV</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>tgtV</em> = <code>None</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>edge</em> </td><td>to take nodes distribution from </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take nodes distribution from (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>srcV</em> </td><td>is vertex of <em>edge</em> to associate with <em>tgtV</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tgtV</em> </td><td>is vertex of <em>the</em> edge where the algorithm is assigned, to associate with <em>srcV</em> (optional) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Projection1D::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Projection1D::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Projection1D::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Projection1D::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Projection1D::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Projection1D::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Projection1D::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Projection1D::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Projection1D::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Projection1D::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Projection1D::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Projection1D::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Projection1D::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Projection1D::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Projection1D::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Projection1D::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Projection2D.html">Mesh_Projection2D</a></div>
-<h1>smesh.Mesh_Projection2D Class Reference</h1><!-- doxytag: class="smesh::Mesh_Projection2D" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a projection 2D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Projection2D:<p><center><img src="classsmesh_1_1Mesh__Projection2D__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Projection2D__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Projection2D__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="18,9,178,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection2D.html#b7d6061733659b600b2a8f33ae2ff3ee">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#b7d6061733659b600b2a8f33ae2ff3ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection2D.html#bc9aab57b17456ce4ff66ef4e14993c3">SourceFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Face" hypothesis, specifying a meshed face to take a mesh pattern from, and optionally association of vertices between the source face and a target one (where a hipothesis is assigned to). <a href="#bc9aab57b17456ce4ff66ef4e14993c3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="b7d6061733659b600b2a8f33ae2ff3ee"></a><!-- doxytag: member="smesh::Mesh_Projection2D::__init__" ref="b7d6061733659b600b2a8f33ae2ff3ee" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection2D.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bc9aab57b17456ce4ff66ef4e14993c3"></a><!-- doxytag: member="smesh::Mesh_Projection2D::SourceFace" ref="bc9aab57b17456ce4ff66ef4e14993c3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection2D.SourceFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>face</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>srcV1</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>tgtV1</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>srcV2</em> = <code>None</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>tgtV2</em> = <code>None</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>face</em> </td><td>to take mesh pattern from </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take mesh pattern from (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>srcV1</em> </td><td>is vertex of <em>face</em> to associate with <em>tgtV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tgtV1</em> </td><td>is vertex of <em>the</em> face where the algorithm is assigned, to associate with <em>srcV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>srcV2</em> </td><td>is vertex of <em>face</em> to associate with <em>tgtV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tgtV2</em> </td><td>is vertex of <em>the</em> face where the algorithm is assigned, to associate with <em>srcV2</em> (optional)</td></tr>
- </table>
-</dl>
-Note: association vertices must belong to one edge of a face </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Projection2D::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Projection2D::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Projection2D::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Projection2D::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Projection2D::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Projection2D::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Projection2D::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Projection2D::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Projection2D::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Projection2D::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Projection2D::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Projection2D::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Projection2D::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Projection2D::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Projection2D::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Projection2D::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Projection3D.html">Mesh_Projection3D</a></div>
-<h1>smesh.Mesh_Projection3D Class Reference</h1><!-- doxytag: class="smesh::Mesh_Projection3D" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a projection 3D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Projection3D:<p><center><img src="classsmesh_1_1Mesh__Projection3D__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Projection3D__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Projection3D__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="18,9,178,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection3D.html#28be0d3ffb986e05a77c1039db579eba">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#28be0d3ffb986e05a77c1039db579eba"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection3D.html#873f563b7e1da2000b3d2387839e216c">SourceShape3D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Source Shape 3D" hypothesis, specifying a meshed solid to take a mesh pattern from, and optionally association of vertices between the source solid and a target one (where a hipothesis is assigned to). <a href="#873f563b7e1da2000b3d2387839e216c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="28be0d3ffb986e05a77c1039db579eba"></a><!-- doxytag: member="smesh::Mesh_Projection3D::__init__" ref="28be0d3ffb986e05a77c1039db579eba" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection3D.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="873f563b7e1da2000b3d2387839e216c"></a><!-- doxytag: member="smesh::Mesh_Projection3D::SourceShape3D" ref="873f563b7e1da2000b3d2387839e216c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Projection3D.SourceShape3D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>solid</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>srcV1</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>tgtV1</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>srcV2</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>tgtV2</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>solid</em> </td><td>to take mesh pattern from </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mesh</em> </td><td>to take mesh pattern from (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>srcV1</em> </td><td>is vertex of <em>solid</em> to associate with <em>tgtV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tgtV1</em> </td><td>is vertex of <em>the</em> solid where the algorithm is assigned, to associate with <em>srcV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>srcV2</em> </td><td>is vertex of <em>solid</em> to associate with <em>tgtV1</em> (optional) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tgtV2</em> </td><td>is vertex of <em>the</em> solid where the algorithm is assigned, to associate with <em>srcV2</em> (optional)</td></tr>
- </table>
-</dl>
-Note: association vertices must belong to one edge of a solid </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Projection3D::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Projection3D::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Projection3D::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Projection3D::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Projection3D::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Projection3D::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Projection3D::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Projection3D::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Projection3D::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Projection3D::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Projection3D::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Projection3D::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Projection3D::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Projection3D::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Projection3D::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Projection3D::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Quadrangle.html">Mesh_Quadrangle</a></div>
-<h1>smesh.Mesh_Quadrangle Class Reference</h1><!-- doxytag: class="smesh::Mesh_Quadrangle" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a quadrangle 2D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Quadrangle:<p><center><img src="classsmesh_1_1Mesh__Quadrangle__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Quadrangle__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Quadrangle__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="14,9,174,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Quadrangle.html#5e71a8605f4a289ce099d399d33d362e">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#5e71a8605f4a289ce099d399d33d362e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Quadrangle.html#21ffcfa5246f721b875247de6b6b70cf">QuadranglePreference</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadranglePreference" hypothesis, forcing construction of quadrangles if the number of nodes on opposite edges is not the same in the case where the global number of nodes on edges is even. <a href="#21ffcfa5246f721b875247de6b6b70cf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="5e71a8605f4a289ce099d399d33d362e"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::__init__" ref="5e71a8605f4a289ce099d399d33d362e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Quadrangle.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="21ffcfa5246f721b875247de6b6b70cf"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::QuadranglePreference" ref="21ffcfa5246f721b875247de6b6b70cf" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Quadrangle.QuadranglePreference </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Quadrangle::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html">Mesh_RadialPrism3D</a></div>
-<h1>smesh.Mesh_RadialPrism3D Class Reference</h1><!-- doxytag: class="smesh::Mesh_RadialPrism3D" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a Radial Prism 3D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_RadialPrism3D:<p><center><img src="classsmesh_1_1Mesh__RadialPrism3D__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__RadialPrism3D__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__RadialPrism3D__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="24,9,184,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#e3effd52303e9e8c9588761bff06d11a">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#e3effd52303e9e8c9588761bff06d11a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#7279a424b7a0d408b72939ca4f531e8d">Get3DHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return 3D hypothesis holding the 1D one. <a href="#7279a424b7a0d408b72939ca4f531e8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#fd84fe6d5878f16dc0ede22db76f5c5e">OwnHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method creating 1D hypothes and storing it in the LayerDistribution hypothes. <a href="#fd84fe6d5878f16dc0ede22db76f5c5e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#ea054202c708371703103fe8fcab3f39">NumberOfLayers</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfLayers" hypothesis, specifying a number of layers of prisms to build between the inner and outer shells. <a href="#ea054202c708371703103fe8fcab3f39"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#1e17e03a641e4e5a63dd35a03f361982">LocalLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis, specifying segment length to build between the inner and outer shells. <a href="#1e17e03a641e4e5a63dd35a03f361982"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#b94222316c2706f288b2214ff9243de1">NumberOfSegments</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis, specifying a number of layers of prisms to build between the inner and outer shells. <a href="#b94222316c2706f288b2214ff9243de1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#322032da05195de9c046c0207ece3d0b">Arithmetic1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis, specifying distribution of segments to build between the inner and outer shells as arithmetic length increasing. <a href="#322032da05195de9c046c0207ece3d0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#8fc5e38c27e4b3da61a1258d53b4620a">StartEndLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis, specifying distribution of segments to build between the inner and outer shells as geometric length increasing. <a href="#8fc5e38c27e4b3da61a1258d53b4620a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#b96d5f036ae41b3624d2cf1f2599eafc">AutomaticLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis, specifying number of segments to build between the inner and outer shells. <a href="#b96d5f036ae41b3624d2cf1f2599eafc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#fad916e0e29ef3ddb981ad0170b6f550">distribHyp</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#80a82d7d4fd3b53dd210da8cc734320a">nbLayers</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="e3effd52303e9e8c9588761bff06d11a"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::__init__" ref="e3effd52303e9e8c9588761bff06d11a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7279a424b7a0d408b72939ca4f531e8d"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::Get3DHypothesis" ref="7279a424b7a0d408b72939ca4f531e8d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.Get3DHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="fd84fe6d5878f16dc0ede22db76f5c5e"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::OwnHypothesis" ref="fd84fe6d5878f16dc0ede22db76f5c5e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.OwnHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Returns the created hypothes </td>
- </tr>
-</table>
-<a class="anchor" name="ea054202c708371703103fe8fcab3f39"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::NumberOfLayers" ref="ea054202c708371703103fe8fcab3f39" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.NumberOfLayers </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="1e17e03a641e4e5a63dd35a03f361982"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::LocalLength" ref="1e17e03a641e4e5a63dd35a03f361982" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.LocalLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>l</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b94222316c2706f288b2214ff9243de1"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::NumberOfSegments" ref="b94222316c2706f288b2214ff9243de1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.NumberOfSegments </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s</em> = <code>[]</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="322032da05195de9c046c0207ece3d0b"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::Arithmetic1D" ref="322032da05195de9c046c0207ece3d0b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.Arithmetic1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8fc5e38c27e4b3da61a1258d53b4620a"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::StartEndLength" ref="8fc5e38c27e4b3da61a1258d53b4620a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.StartEndLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b96d5f036ae41b3624d2cf1f2599eafc"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::AutomaticLength" ref="b96d5f036ae41b3624d2cf1f2599eafc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_RadialPrism3D.AutomaticLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="fad916e0e29ef3ddb981ad0170b6f550"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::distribHyp" ref="fad916e0e29ef3ddb981ad0170b6f550" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#fad916e0e29ef3ddb981ad0170b6f550">smesh.Mesh_RadialPrism3D.distribHyp</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="80a82d7d4fd3b53dd210da8cc734320a"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::nbLayers" ref="80a82d7d4fd3b53dd210da8cc734320a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html#80a82d7d4fd3b53dd210da8cc734320a">smesh.Mesh_RadialPrism3D.nbLayers</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_RadialPrism3D::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Segment.html">Mesh_Segment</a></div>
-<h1>smesh.Mesh_Segment Class Reference</h1><!-- doxytag: class="smesh::Mesh_Segment" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a segment 1D algorithm for discretization.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Segment:<p><center><img src="classsmesh_1_1Mesh__Segment__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Segment__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Segment__inherit__map">
-<area href="classsmesh_1_1Mesh__CompositeSegment.html" shape="rect" coords="7,158,229,182" alt="">
-<area href="classsmesh_1_1Mesh__Segment__Python.html" shape="rect" coords="253,158,461,182" alt="">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="157,9,317,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#3028b681627a583d99eee297936d2d8e">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#3028b681627a583d99eee297936d2d8e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#474a476f4ee613be478c94398202c6ad">LocalLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#474a476f4ee613be478c94398202c6ad"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#f562aced3f41d5dec7c344c78a21ff3b">NumberOfSegments</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#f562aced3f41d5dec7c344c78a21ff3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#54cb7674f55ecb828ecadb1f3408b95f">Arithmetic1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#54cb7674f55ecb828ecadb1f3408b95f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#8824c58a068d8ebb6dfafe276cc45b6a">StartEndLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#8824c58a068d8ebb6dfafe276cc45b6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7bfa579e708b6c7558183fe50e414668">Deflection1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#7bfa579e708b6c7558183fe50e414668"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#e5d33518995c1ea6c97a4ae364841730">Propagation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#e5d33518995c1ea6c97a4ae364841730"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7a7aff5f8542efaee0115e90f2dff9c8">AutomaticLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#7a7aff5f8542efaee0115e90f2dff9c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#d12bcd1749874d541101bf8af001dd65">LengthNearVertex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#d12bcd1749874d541101bf8af001dd65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7e99441cd6f8b7be3888663345ce8f20">QuadraticMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#7e99441cd6f8b7be3888663345ce8f20"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="3028b681627a583d99eee297936d2d8e"></a><!-- doxytag: member="smesh::Mesh_Segment::__init__" ref="3028b681627a583d99eee297936d2d8e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__CompositeSegment.html#517bc6da0e79cb989f3346810fe5c471">smesh.Mesh_CompositeSegment</a>, and <a class="el" href="classsmesh_1_1Mesh__Segment__Python.html#fc80535134635f793e2b3b2aa31a8277">smesh.Mesh_Segment_Python</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="474a476f4ee613be478c94398202c6ad"></a><!-- doxytag: member="smesh::Mesh_Segment::LocalLength" ref="474a476f4ee613be478c94398202c6ad" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LocalLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>l</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f562aced3f41d5dec7c344c78a21ff3b"></a><!-- doxytag: member="smesh::Mesh_Segment::NumberOfSegments" ref="f562aced3f41d5dec7c344c78a21ff3b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.NumberOfSegments </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s</em> = <code>[]</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="54cb7674f55ecb828ecadb1f3408b95f"></a><!-- doxytag: member="smesh::Mesh_Segment::Arithmetic1D" ref="54cb7674f55ecb828ecadb1f3408b95f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Arithmetic1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8824c58a068d8ebb6dfafe276cc45b6a"></a><!-- doxytag: member="smesh::Mesh_Segment::StartEndLength" ref="8824c58a068d8ebb6dfafe276cc45b6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.StartEndLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7bfa579e708b6c7558183fe50e414668"></a><!-- doxytag: member="smesh::Mesh_Segment::Deflection1D" ref="7bfa579e708b6c7558183fe50e414668" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Deflection1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>d</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e5d33518995c1ea6c97a4ae364841730"></a><!-- doxytag: member="smesh::Mesh_Segment::Propagation" ref="e5d33518995c1ea6c97a4ae364841730" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Propagation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7a7aff5f8542efaee0115e90f2dff9c8"></a><!-- doxytag: member="smesh::Mesh_Segment::AutomaticLength" ref="7a7aff5f8542efaee0115e90f2dff9c8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.AutomaticLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d12bcd1749874d541101bf8af001dd65"></a><!-- doxytag: member="smesh::Mesh_Segment::LengthNearVertex" ref="d12bcd1749874d541101bf8af001dd65" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LengthNearVertex </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>length</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>vertex</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e99441cd6f8b7be3888663345ce8f20"></a><!-- doxytag: member="smesh::Mesh_Segment::QuadraticMesh" ref="7e99441cd6f8b7be3888663345ce8f20" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.QuadraticMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails. </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Segment::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Segment::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Segment::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Segment::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Segment::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Segment::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Segment::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Segment::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="b6907301d8393ce0e80bf014d37133ac"></a><!-- doxytag: member="smesh::Mesh_Segment::geom" ref="b6907301d8393ce0e80bf014d37133ac" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment.geom</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented from <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Segment::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Segment::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Segment::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Segment::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Segment::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Segment::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Segment__Python.html">Mesh_Segment_Python</a></div>
-<h1>smesh.Mesh_Segment_Python Class Reference</h1><!-- doxytag: class="smesh::Mesh_Segment_Python" --><!-- doxytag: inherits="smesh::Mesh_Segment" -->Class to define a segment 1D algorithm for discretization with python function.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Segment_Python:<p><center><img src="classsmesh_1_1Mesh__Segment__Python__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Segment__Python__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Segment__Python__inherit__map">
-<area href="classsmesh_1_1Mesh__Segment.html" shape="rect" coords="33,84,190,108" alt="">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="32,9,192,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment__Python.html#fc80535134635f793e2b3b2aa31a8277">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#fc80535134635f793e2b3b2aa31a8277"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment__Python.html#f76e302de7146a1af9ad154f37108b6f">PythonSplit1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "PythonSplit1D" hypothesis based on the Erwan Adam patch, awaiting equivalent SALOME functionality. <a href="#f76e302de7146a1af9ad154f37108b6f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#474a476f4ee613be478c94398202c6ad">LocalLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LocalLength" hypothesis to cut an edge in several segments with the same length. <a href="#474a476f4ee613be478c94398202c6ad"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#f562aced3f41d5dec7c344c78a21ff3b">NumberOfSegments</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments. <a href="#f562aced3f41d5dec7c344c78a21ff3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#54cb7674f55ecb828ecadb1f3408b95f">Arithmetic1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing. <a href="#54cb7674f55ecb828ecadb1f3408b95f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#8824c58a068d8ebb6dfafe276cc45b6a">StartEndLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing. <a href="#8824c58a068d8ebb6dfafe276cc45b6a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7bfa579e708b6c7558183fe50e414668">Deflection1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Deflection1D" hypothesis. <a href="#7bfa579e708b6c7558183fe50e414668"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#e5d33518995c1ea6c97a4ae364841730">Propagation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in the opposite side in the case of quadrangular faces. <a href="#e5d33518995c1ea6c97a4ae364841730"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7a7aff5f8542efaee0115e90f2dff9c8">AutomaticLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "AutomaticLength" hypothesis. <a href="#7a7aff5f8542efaee0115e90f2dff9c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#d12bcd1749874d541101bf8af001dd65">LengthNearVertex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "SegmentLengthAroundVertex" hypothesis. <a href="#d12bcd1749874d541101bf8af001dd65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#7e99441cd6f8b7be3888663345ce8f20">QuadraticMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges. <a href="#7e99441cd6f8b7be3888663345ce8f20"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="fc80535134635f793e2b3b2aa31a8277"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::__init__" ref="fc80535134635f793e2b3b2aa31a8277" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment_Python.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented from <a class="el" href="classsmesh_1_1Mesh__Segment.html#3028b681627a583d99eee297936d2d8e">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="f76e302de7146a1af9ad154f37108b6f"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::PythonSplit1D" ref="f76e302de7146a1af9ad154f37108b6f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment_Python.PythonSplit1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>func</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>for the python function that calculate the length of all segments </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="474a476f4ee613be478c94398202c6ad"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::LocalLength" ref="474a476f4ee613be478c94398202c6ad" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LocalLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>l</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>for the length of segments that cut an edge </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f562aced3f41d5dec7c344c78a21ff3b"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::NumberOfSegments" ref="f562aced3f41d5dec7c344c78a21ff3b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.NumberOfSegments </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>n</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s</em> = <code>[]</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>for the number of segments that cut an edge </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>for the scale factor (optional) </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="54cb7674f55ecb828ecadb1f3408b95f"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::Arithmetic1D" ref="54cb7674f55ecb828ecadb1f3408b95f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Arithmetic1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8824c58a068d8ebb6dfafe276cc45b6a"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::StartEndLength" ref="8824c58a068d8ebb6dfafe276cc45b6a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.StartEndLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>start</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>end</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>for the length of the first segment </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>for the length of the last segment </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7bfa579e708b6c7558183fe50e414668"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::Deflection1D" ref="7bfa579e708b6c7558183fe50e414668" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Deflection1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>d</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>for the deflection </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e5d33518995c1ea6c97a4ae364841730"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::Propagation" ref="e5d33518995c1ea6c97a4ae364841730" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.Propagation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7a7aff5f8542efaee0115e90f2dff9c8"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::AutomaticLength" ref="7a7aff5f8542efaee0115e90f2dff9c8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.AutomaticLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>fineness</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>fineness</em> </td><td>for the fineness [0-1] </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d12bcd1749874d541101bf8af001dd65"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::LengthNearVertex" ref="d12bcd1749874d541101bf8af001dd65" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.LengthNearVertex </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>length</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>vertex</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>for the segment length </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vertex</em> </td><td>for the length localization: vertex index [0,1] | verext object </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e99441cd6f8b7be3888663345ce8f20"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::QuadraticMesh" ref="7e99441cd6f8b7be3888663345ce8f20" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Segment.QuadraticMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-If the 2D mesher sees that all boundary edges are quadratic ones, it generates quadratic faces, else it generates linear faces using medium nodes as if they were vertex ones. The 3D mesher generates quadratic volumes only if all boundary faces are quadratic ones, else it fails. </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="b6907301d8393ce0e80bf014d37133ac"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::geom" ref="b6907301d8393ce0e80bf014d37133ac" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented from <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Segment_Python::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html">Mesh_Tetrahedron</a></div>
-<h1>smesh.Mesh_Tetrahedron Class Reference</h1><!-- doxytag: class="smesh::Mesh_Tetrahedron" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a tetrahedron 3D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Tetrahedron:<p><center><img src="classsmesh_1_1Mesh__Tetrahedron__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Tetrahedron__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Tetrahedron__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="16,9,176,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#4f6c4b76dac2b592bb1a035f59662e86">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#4f6c4b76dac2b592bb1a035f59662e86"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#b00ebafde33e06e82ec0d156891a83be">MaxElementVolume</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedral. <a href="#b00ebafde33e06e82ec0d156891a83be"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#c0eaf2eaf4fadde975e6127e4a2156f1">Parameters</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Netgen 3D Parameters" hypothesis. <a href="#c0eaf2eaf4fadde975e6127e4a2156f1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#8aeb0f8ae2afe7607508e66917048b1f">SetMaxSize</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set MaxSize. <a href="#8aeb0f8ae2afe7607508e66917048b1f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#0d5a4b74e9536e327df4212466138887">SetSecondOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set SecondOrder flag. <a href="#0d5a4b74e9536e327df4212466138887"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#c24fc1ef1afa5850e995284d77c5caee">SetOptimize</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Optimize flag. <a href="#c24fc1ef1afa5850e995284d77c5caee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#c23b97b21244cd1ae46d5dba22c446af">SetFineness</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Fineness. <a href="#c23b97b21244cd1ae46d5dba22c446af"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#54cff72fa1177898bf489cdec09606e0">SetGrowthRate</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set GrowthRate. <a href="#54cff72fa1177898bf489cdec09606e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e72ccfb372fab5e0f9636e0f3dc8d1ff">SetNbSegPerEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerEdge. <a href="#e72ccfb372fab5e0f9636e0f3dc8d1ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#88005a951d36f15c14471339564696d8">SetNbSegPerRadius</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerRadius. <a href="#88005a951d36f15c14471339564696d8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#79b86fe05d300bb0a784b2ceea0b4327">algoType</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e44277e96e89677fb254311f462a4c2f">params</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e00a10e0a5c1eb4497dbb504aac70f6b">params</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e6ef59593ce8ba300a4a46ab154d4546">algoType</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="4f6c4b76dac2b592bb1a035f59662e86"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::__init__" ref="4f6c4b76dac2b592bb1a035f59662e86" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>algoType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b00ebafde33e06e82ec0d156891a83be"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::MaxElementVolume" ref="b00ebafde33e06e82ec0d156891a83be" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.MaxElementVolume </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>vol</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vol</em> </td><td>for the maximum volume of each tetrahedral </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c0eaf2eaf4fadde975e6127e4a2156f1"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::Parameters" ref="c0eaf2eaf4fadde975e6127e4a2156f1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.Parameters </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8aeb0f8ae2afe7607508e66917048b1f"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetMaxSize" ref="8aeb0f8ae2afe7607508e66917048b1f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetMaxSize </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSize</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0d5a4b74e9536e327df4212466138887"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetSecondOrder" ref="0d5a4b74e9536e327df4212466138887" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetSecondOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c24fc1ef1afa5850e995284d77c5caee"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetOptimize" ref="c24fc1ef1afa5850e995284d77c5caee" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetOptimize </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c23b97b21244cd1ae46d5dba22c446af"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetFineness" ref="c23b97b21244cd1ae46d5dba22c446af" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetFineness </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFineness</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theFineness</em> </td><td>is: VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="54cff72fa1177898bf489cdec09606e0"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetGrowthRate" ref="54cff72fa1177898bf489cdec09606e0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetGrowthRate </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRate</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e72ccfb372fab5e0f9636e0f3dc8d1ff"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetNbSegPerEdge" ref="e72ccfb372fab5e0f9636e0f3dc8d1ff" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetNbSegPerEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="88005a951d36f15c14471339564696d8"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetNbSegPerRadius" ref="88005a951d36f15c14471339564696d8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Tetrahedron.SetNbSegPerRadius </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="e00a10e0a5c1eb4497dbb504aac70f6b"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::params" ref="e00a10e0a5c1eb4497dbb504aac70f6b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e00a10e0a5c1eb4497dbb504aac70f6b">smesh.Mesh_Tetrahedron.params</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6ef59593ce8ba300a4a46ab154d4546"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::algoType" ref="e6ef59593ce8ba300a4a46ab154d4546" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e6ef59593ce8ba300a4a46ab154d4546">smesh.Mesh_Tetrahedron.algoType</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="79b86fe05d300bb0a784b2ceea0b4327"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::algoType" ref="79b86fe05d300bb0a784b2ceea0b4327" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e6ef59593ce8ba300a4a46ab154d4546">smesh.Mesh_Tetrahedron.algoType</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e44277e96e89677fb254311f462a4c2f"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::params" ref="e44277e96e89677fb254311f462a4c2f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html#e00a10e0a5c1eb4497dbb504aac70f6b">smesh.Mesh_Tetrahedron.params</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Tetrahedron::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
+++ /dev/null
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
- <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-
-</body>
-</html>
-<!-- Generated by Doxygen 1.4.6 -->
-<div class="nav">
-<a class="el" href="namespacesmesh.html">smesh</a>.<a class="el" href="classsmesh_1_1Mesh__Triangle.html">Mesh_Triangle</a></div>
-<h1>smesh.Mesh_Triangle Class Reference</h1><!-- doxytag: class="smesh::Mesh_Triangle" --><!-- doxytag: inherits="smesh::Mesh_Algorithm" -->Class to define a triangle 2D algorithm.
-<a href="#_details">More...</a>
-<p>
-Inheritance diagram for smesh.Mesh_Triangle:<p><center><img src="classsmesh_1_1Mesh__Triangle__inherit__graph.jpg" border="0" usemap="#smesh_8Mesh__Triangle__inherit__map" alt="Inheritance graph"></center>
-<map name="smesh_8Mesh__Triangle__inherit__map">
-<area href="classsmesh_1_1Mesh__Algorithm.html" shape="rect" coords="8,9,168,33" alt="">
-</map>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#d7de151c483aa4ccc41757e1986718b0">__init__</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private constructor. <a href="#d7de151c483aa4ccc41757e1986718b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#9fe448143f3fa207b3d46536b30342ec">MaxElementArea</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "MaxElementArea" hypothesis to give the maximun area of each triangles. <a href="#9fe448143f3fa207b3d46536b30342ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#d2b41cafc2001c01d19619ce21379760">LengthFromEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "LengthFromEdges" hypothesis to build triangles based on the length of the edges taken from the wire. <a href="#d2b41cafc2001c01d19619ce21379760"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#69a341f624cb8402e386658fa98e29d0">Parameters</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Define "Netgen 2D Parameters" hypothesis. <a href="#69a341f624cb8402e386658fa98e29d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#7a07e4f1132d91e8ba07fca47ca5d0f9">SetMaxSize</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set MaxSize. <a href="#7a07e4f1132d91e8ba07fca47ca5d0f9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#4e81ffd268d1bbd163b8686a4d6ed263">SetSecondOrder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set SecondOrder flag. <a href="#4e81ffd268d1bbd163b8686a4d6ed263"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#aedfeb9fd639cb01e01b7989c3619524">SetOptimize</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Optimize flag. <a href="#aedfeb9fd639cb01e01b7989c3619524"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#4a348dfd84e1c7d17437cffb6ba5011a">SetFineness</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set Fineness. <a href="#4a348dfd84e1c7d17437cffb6ba5011a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#b1fce7c1e3c257b65069b05e906f94cb">SetGrowthRate</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set GrowthRate. <a href="#b1fce7c1e3c257b65069b05e906f94cb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#dbc76e5ec41100c11642f29a1e1bdb42">SetNbSegPerEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerEdge. <a href="#dbc76e5ec41100c11642f29a1e1bdb42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#ea4546d82521e441d31d1db1254b94b2">SetNbSegPerRadius</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set NbSegPerRadius. <a href="#ea4546d82521e441d31d1db1254b94b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#34ee5173a46e2ea3ca66f9225229efbb">SetQuadAllowed</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set QuadAllowed flag. <a href="#34ee5173a46e2ea3ca66f9225229efbb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#39dd34eb5db727c1ff2b69a84df18394">GetSubMesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the algorithm is global, return 0; <br>
- else return the submesh associated to this algorithm. <a href="#39dd34eb5db727c1ff2b69a84df18394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#8451e22abaaba662c00052d95f47f7b0">GetAlgorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the wrapped mesher. <a href="#8451e22abaaba662c00052d95f47f7b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f13cd452b3fce74939e43d49ae937e9e">GetCompatibleHypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get list of hypothesis that can be used with this algorithm. <a href="#f13cd452b3fce74939e43d49ae937e9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b1b1de005b6bb9764bc282f54b2925c2">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name of algo. <a href="#b1b1de005b6bb9764bc282f54b2925c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#67ab9bf21cd85694a9702c5c9a4db8b2">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set name to algo. <a href="#67ab9bf21cd85694a9702c5c9a4db8b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#9ddd321337780f828103a7aef5662a66">GetId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get id of algo. <a href="#9ddd321337780f828103a7aef5662a66"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b0ee92d94d1907fc263864b727685187">Create</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#b0ee92d94d1907fc263864b727685187"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e6c4621e95fa72626c26a320a53c5929">Hypothesis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Private method. <a href="#e6c4621e95fa72626c26a320a53c5929"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#57e6b5372ec214aab175c16ebbf2fd18">algoType</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#a0a5947fbd5e4c91734d87c73af00a2d">params</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#a2388901def73df05eabdc3dd0aeb876">mesh</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#b637c67f711a33b32c3b56073a65db52">geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#e31641d994477ff6913cef21bc8eed50">subm</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#169100dea59b37e7e9a0d155b7208fc8">algo</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#78df0a3eb610328638ec5c69e7c6af60">algoType</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#099db285c4146ebe49dd7a1323693a9a">params</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">mesh</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">geom</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">subm</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">algo</a> = 0</td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-More details.
-<p>
-<hr><h2>Member Function Documentation</h2>
-<a class="anchor" name="d7de151c483aa4ccc41757e1986718b0"></a><!-- doxytag: member="smesh::Mesh_Triangle::__init__" ref="d7de151c483aa4ccc41757e1986718b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.__init__ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>algoType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em> = <code>0</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9fe448143f3fa207b3d46536b30342ec"></a><!-- doxytag: member="smesh::Mesh_Triangle::MaxElementArea" ref="9fe448143f3fa207b3d46536b30342ec" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.MaxElementArea </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>area</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>area</em> </td><td>for the maximum area of each triangles </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d2b41cafc2001c01d19619ce21379760"></a><!-- doxytag: member="smesh::Mesh_Triangle::LengthFromEdges" ref="d2b41cafc2001c01d19619ce21379760" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.LengthFromEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="69a341f624cb8402e386658fa98e29d0"></a><!-- doxytag: member="smesh::Mesh_Triangle::Parameters" ref="69a341f624cb8402e386658fa98e29d0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.Parameters </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7a07e4f1132d91e8ba07fca47ca5d0f9"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetMaxSize" ref="7a07e4f1132d91e8ba07fca47ca5d0f9" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetMaxSize </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSize</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4e81ffd268d1bbd163b8686a4d6ed263"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetSecondOrder" ref="4e81ffd268d1bbd163b8686a4d6ed263" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetSecondOrder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>seld</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="aedfeb9fd639cb01e01b7989c3619524"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetOptimize" ref="aedfeb9fd639cb01e01b7989c3619524" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetOptimize </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4a348dfd84e1c7d17437cffb6ba5011a"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetFineness" ref="4a348dfd84e1c7d17437cffb6ba5011a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetFineness </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFineness</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theFineness</em> </td><td>is: VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1fce7c1e3c257b65069b05e906f94cb"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetGrowthRate" ref="b1fce7c1e3c257b65069b05e906f94cb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetGrowthRate </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRate</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="dbc76e5ec41100c11642f29a1e1bdb42"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetNbSegPerEdge" ref="dbc76e5ec41100c11642f29a1e1bdb42" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetNbSegPerEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ea4546d82521e441d31d1db1254b94b2"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetNbSegPerRadius" ref="ea4546d82521e441d31d1db1254b94b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetNbSegPerRadius </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVal</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="34ee5173a46e2ea3ca66f9225229efbb"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetQuadAllowed" ref="34ee5173a46e2ea3ca66f9225229efbb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Triangle.SetQuadAllowed </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>toAllow</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="39dd34eb5db727c1ff2b69a84df18394"></a><!-- doxytag: member="smesh::Mesh_Triangle::GetSubMesh" ref="39dd34eb5db727c1ff2b69a84df18394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetSubMesh </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8451e22abaaba662c00052d95f47f7b0"></a><!-- doxytag: member="smesh::Mesh_Triangle::GetAlgorithm" ref="8451e22abaaba662c00052d95f47f7b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetAlgorithm </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f13cd452b3fce74939e43d49ae937e9e"></a><!-- doxytag: member="smesh::Mesh_Triangle::GetCompatibleHypothesis" ref="f13cd452b3fce74939e43d49ae937e9e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetCompatibleHypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b1b1de005b6bb9764bc282f54b2925c2"></a><!-- doxytag: member="smesh::Mesh_Triangle::GetName" ref="b1b1de005b6bb9764bc282f54b2925c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67ab9bf21cd85694a9702c5c9a4db8b2"></a><!-- doxytag: member="smesh::Mesh_Triangle::SetName" ref="67ab9bf21cd85694a9702c5c9a4db8b2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9ddd321337780f828103a7aef5662a66"></a><!-- doxytag: member="smesh::Mesh_Triangle::GetId" ref="9ddd321337780f828103a7aef5662a66" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.GetId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>self</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0ee92d94d1907fc263864b727685187"></a><!-- doxytag: member="smesh::Mesh_Triangle::Create" ref="b0ee92d94d1907fc263864b727685187" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Create </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>mesh</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geom</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypo</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e6c4621e95fa72626c26a320a53c5929"></a><!-- doxytag: member="smesh::Mesh_Triangle::Hypothesis" ref="e6c4621e95fa72626c26a320a53c5929" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.Mesh_Algorithm.Hypothesis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>self</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hyp</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>args</em> = <code>[]</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>so</em> = <code>"libStdMeshersEngine.so"</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [inherited]</code></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<hr><h2>Field Documentation</h2>
-<a class="anchor" name="78df0a3eb610328638ec5c69e7c6af60"></a><!-- doxytag: member="smesh::Mesh_Triangle::algoType" ref="78df0a3eb610328638ec5c69e7c6af60" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Triangle.html#78df0a3eb610328638ec5c69e7c6af60">smesh.Mesh_Triangle.algoType</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="099db285c4146ebe49dd7a1323693a9a"></a><!-- doxytag: member="smesh::Mesh_Triangle::params" ref="099db285c4146ebe49dd7a1323693a9a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Triangle.html#099db285c4146ebe49dd7a1323693a9a">smesh.Mesh_Triangle.params</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="57e6b5372ec214aab175c16ebbf2fd18"></a><!-- doxytag: member="smesh::Mesh_Triangle::algoType" ref="57e6b5372ec214aab175c16ebbf2fd18" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#78df0a3eb610328638ec5c69e7c6af60">smesh.Mesh_Triangle.algoType</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a0a5947fbd5e4c91734d87c73af00a2d"></a><!-- doxytag: member="smesh::Mesh_Triangle::params" ref="a0a5947fbd5e4c91734d87c73af00a2d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Triangle.html#099db285c4146ebe49dd7a1323693a9a">smesh.Mesh_Triangle.params</a> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="47bfe89357342e4a889d4723518288e1"></a><!-- doxytag: member="smesh::Mesh_Triangle::mesh" ref="47bfe89357342e4a889d4723518288e1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a2388901def73df05eabdc3dd0aeb876"></a><!-- doxytag: member="smesh::Mesh_Triangle::mesh" ref="a2388901def73df05eabdc3dd0aeb876" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#47bfe89357342e4a889d4723518288e1">smesh.Mesh_Algorithm.mesh</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6608d059606200dce0679f3367112d1"></a><!-- doxytag: member="smesh::Mesh_Triangle::geom" ref="f6608d059606200dce0679f3367112d1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="b637c67f711a33b32c3b56073a65db52"></a><!-- doxytag: member="smesh::Mesh_Triangle::geom" ref="b637c67f711a33b32c3b56073a65db52" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#f6608d059606200dce0679f3367112d1">smesh.Mesh_Algorithm.geom</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-
-<p>
-Reimplemented in <a class="el" href="classsmesh_1_1Mesh__Segment.html#b6907301d8393ce0e80bf014d37133ac">smesh.Mesh_Segment</a>. </td>
- </tr>
-</table>
-<a class="anchor" name="981bc18824369ac623f4527b7ddddaf5"></a><!-- doxytag: member="smesh::Mesh_Triangle::subm" ref="981bc18824369ac623f4527b7ddddaf5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e31641d994477ff6913cef21bc8eed50"></a><!-- doxytag: member="smesh::Mesh_Triangle::subm" ref="e31641d994477ff6913cef21bc8eed50" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#981bc18824369ac623f4527b7ddddaf5">smesh.Mesh_Algorithm.subm</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae7e23c67b8497a4b5bbf0cc53ac6693"></a><!-- doxytag: member="smesh::Mesh_Triangle::algo" ref="ae7e23c67b8497a4b5bbf0cc53ac6693" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a> = 0<code> [static, inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="169100dea59b37e7e9a0d155b7208fc8"></a><!-- doxytag: member="smesh::Mesh_Triangle::algo" ref="169100dea59b37e7e9a0d155b7208fc8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html#ae7e23c67b8497a4b5bbf0cc53ac6693">smesh.Mesh_Algorithm.algo</a><code> [inherited]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-</BODY>
-</HTML>
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
<h1>Package smesh</h1>
-Python package smesh defines several classes, destined for easy and
-clear mesh creation and edition.
-<p class="whs2"><a
- href="../../../../../../../../../misc/dn22/SALOME/series3x/CURRENT/current19.10.2006/Mandrake/SMESH/doc/salome/gui/SMESH/smesh.py_introduction.htm">Example.</a><br>
-<br>
-</p>
+<p>
+<p>
+For available methods and classes please see documentation of
+<a class="el" href="namespacesmeshDC.html">smeshDC</a> package.
+All methods of smeshDC package are accessible via smesh namespace,
+for example "mesh = smesh.Mesh(shape, name)".
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Algorithm.html">Mesh_Algorithm</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Mother class to define algorithm, recommended to don't use directly. <a href="classsmesh_1_1Mesh__Algorithm.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment.html">Mesh_Segment</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization. <a href="classsmesh_1_1Mesh__Segment.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__CompositeSegment.html">Mesh_CompositeSegment</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization. <a href="classsmesh_1_1Mesh__CompositeSegment.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Segment__Python.html">Mesh_Segment_Python</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization with python function. <a href="classsmesh_1_1Mesh__Segment__Python.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Triangle.html">Mesh_Triangle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a triangle 2D algorithm. <a href="classsmesh_1_1Mesh__Triangle.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Quadrangle.html">Mesh_Quadrangle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a quadrangle 2D algorithm. <a href="classsmesh_1_1Mesh__Quadrangle.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Tetrahedron.html">Mesh_Tetrahedron</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a tetrahedron 3D algorithm. <a href="classsmesh_1_1Mesh__Tetrahedron.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Hexahedron.html">Mesh_Hexahedron</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a hexahedron 3D algorithm. <a href="classsmesh_1_1Mesh__Hexahedron.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Netgen.html">Mesh_Netgen</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e. <a href="classsmesh_1_1Mesh__Netgen.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection1D.html">Mesh_Projection1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 1D algorithm. <a href="classsmesh_1_1Mesh__Projection1D.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection2D.html">Mesh_Projection2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 2D algorithm. <a href="classsmesh_1_1Mesh__Projection2D.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Projection3D.html">Mesh_Projection3D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 3D algorithm. <a href="classsmesh_1_1Mesh__Projection3D.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__Prism3D.html">Mesh_Prism3D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a 3D extrusion algorithm. <a href="classsmesh_1_1Mesh__Prism3D.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh__RadialPrism3D.html">Mesh_RadialPrism3D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a Radial Prism 3D algorithm. <a href="classsmesh_1_1Mesh__RadialPrism3D.html#_details">More...</a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmesh_1_1Mesh.html">Mesh</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a mesh. <a href="classsmesh_1_1Mesh.html#_details">More...</a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#78d19ec2e8b9d0290e401878b14ade9c">GetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets object name. <a href="#78d19ec2e8b9d0290e401878b14ade9c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#79291ef16549a9ea4338f6515d2a3347">SetName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets name to object. <a href="#79291ef16549a9ea4338f6515d2a3347"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#5c11d47101c96bda3d7162617b33f58a">EnumToLong</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns long value from enumeration Uses for SMESH.FunctorType enumeration. <a href="#5c11d47101c96bda3d7162617b33f58a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#7e175d2c5495363a6df421313faf4c43">GetPointStruct</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get PointStruct from vertex. <a href="#7e175d2c5495363a6df421313faf4c43"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#d26e9b90b0cb5d2e43123e6f127e5a87">GetDirStruct</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get DirStruct from vector. <a href="#d26e9b90b0cb5d2e43123e6f127e5a87"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#ee0c3f87cae057e11d1d18a657e315f9">GetAxisStruct</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get AxisStruct from object. <a href="#ee0c3f87cae057e11d1d18a657e315f9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#e40116571038fba2db7a1c3588b89598">SetEmbeddedMode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the current mode. <a href="#e40116571038fba2db7a1c3588b89598"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#14affae9db8e4a412eafb2a6fe174218">IsEmbeddedMode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current mode. <a href="#14affae9db8e4a412eafb2a6fe174218"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#d39ae64cb08100cd93234d15aca978d5">SetCurrentStudy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the current study. <a href="#d39ae64cb08100cd93234d15aca978d5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#451cd7527b6484ed2dd7bf58275adaf6">GetCurrentStudy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current study. <a href="#451cd7527b6484ed2dd7bf58275adaf6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#e92c083f2c9ac716012531aa3e9f786f">CreateMeshesFromUNV</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> object importing data from given UNV file. <a href="#e92c083f2c9ac716012531aa3e9f786f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#45cc030efe388e131d0aa54d75b83b31">CreateMeshesFromMED</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> object(s) importing data from given MED file. <a href="#45cc030efe388e131d0aa54d75b83b31"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#eab78614705c83dd55a54e7239b164e4">CreateMeshesFromSTL</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> object importing data from given STL file. <a href="#eab78614705c83dd55a54e7239b164e4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#fa73ac57b58b7d409a33ec3971bbd278">GetSubShapesId</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">From SMESH_Gen interface. <a href="#fa73ac57b58b7d409a33ec3971bbd278"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#f2e028022f5f3399ba1b1790acc5a853">GetPattern</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">From SMESH_Gen interface. <a href="#f2e028022f5f3399ba1b1790acc5a853"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#03961f7bbd325cfd29d0a80685ec719d">GetEmptyCriterion</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty criterion. <a href="#03961f7bbd325cfd29d0a80685ec719d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#f1ee4dcc9ba12ec95d99eb794ae4636f">GetCriterion</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a criterion by given parameters. <a href="#f1ee4dcc9ba12ec95d99eb794ae4636f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#62eb2a46d9a194cc14210a3b169a0206">GetFilter</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates filter by given parameters of criterion. <a href="#62eb2a46d9a194cc14210a3b169a0206"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#99e71a9fd57d9298e553af661f46c420">GetFunctor</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates numerical functor by its type. <a href="#99e71a9fd57d9298e553af661f46c420"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#4c9816c7de2ca573df022a3395498a77">TreatHypoStatus</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Print error message if a hypothesis was not assigned. <a href="#4c9816c7de2ca573df022a3395498a77"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#f6669b275aa02ad8b527f8480374c308">noNETGENPlugin</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#f6669b275aa02ad8b527f8480374c308">noNETGENPlugin</a> = 1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#85f3ed596d91251bfa3b2d2ac4151739">REGULAR</a> = 1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#40eed802c94269a68ec2194609fac2f0">PYTHON</a> = 2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#76a5fdf46440e128f9ab6791d61f76a6">COMPOSITE</a> = 3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#4449cc4d5e7910c0afa9a35238736519">MEFISTO</a> = 3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#72b65da5195aa8d71574f95e5533d612">NETGEN</a> = 4</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#bf6aaa2e2cf565cbe3ae34954dee8926">GHS3D</a> = 5</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#13a34e1016fc530291cb7c688709efb3">FULL_NETGEN</a> = 6</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#b0be2f91db6c32bfdd43d124340b7af7">POINT</a> = <a class="el" href="namespacesmesh.html#b0be2f91db6c32bfdd43d124340b7af7">SMESH_MeshEditor.POINT</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#0365dc0276024fad14f43dec877248a4">AXIS</a> = <a class="el" href="namespacesmesh.html#0365dc0276024fad14f43dec877248a4">SMESH_MeshEditor.AXIS</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#a7f05b05f3918e114ad62c869b824310">PLANE</a> = <a class="el" href="namespacesmesh.html#a7f05b05f3918e114ad62c869b824310">SMESH_MeshEditor.PLANE</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#9fe9597639de7e8c26f4b92657568c62">LAPLACIAN_SMOOTH</a> = <a class="el" href="namespacesmesh.html#9fe9597639de7e8c26f4b92657568c62">SMESH_MeshEditor.LAPLACIAN_SMOOTH</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#85f9acba1823ef2dcb8f0c33d44f626c">CENTROIDAL_SMOOTH</a> = <a class="el" href="namespacesmesh.html#85f9acba1823ef2dcb8f0c33d44f626c">SMESH_MeshEditor.CENTROIDAL_SMOOTH</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#8063a2dbc510a33b4f6c056b0e059ce3">VeryCoarse</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#f7f5ba712f050ae89776eb0b27edc1bf">Coarse</a> = 1</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#ac157436ade9909f14cc94865ec94ef7">Moderate</a> = 2</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#0cbc436d589be051e2bd733da2006528">Fine</a> = 3</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#b2cb5fe43d16d24399313f85d6956b05">VeryFine</a> = 4</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#beaf031bab31506b47b3c28066afb637">Custom</a> = 5</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#d821cab222bc6c9405a89a6c6082d388">NO_NAME</a> = "NoName"</td></tr>
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmesh.html#6e041b9ca898fefe3ea0abafeed4aff2">smesh</a> = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")</td></tr>
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="78d19ec2e8b9d0290e401878b14ade9c"></a><!-- doxytag: member="smesh::GetName" ref="78d19ec2e8b9d0290e401878b14ade9c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>obj</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="79291ef16549a9ea4338f6515d2a3347"></a><!-- doxytag: member="smesh::SetName" ref="79291ef16549a9ea4338f6515d2a3347" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.SetName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>obj</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>name</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="5c11d47101c96bda3d7162617b33f58a"></a><!-- doxytag: member="smesh::EnumToLong" ref="5c11d47101c96bda3d7162617b33f58a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.EnumToLong </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theItem</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e175d2c5495363a6df421313faf4c43"></a><!-- doxytag: member="smesh::GetPointStruct" ref="7e175d2c5495363a6df421313faf4c43" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetPointStruct </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theVertex</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theVertex</em> </td><td>is GEOM object(vertex) </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH.PointStruct </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d26e9b90b0cb5d2e43123e6f127e5a87"></a><!-- doxytag: member="smesh::GetDirStruct" ref="d26e9b90b0cb5d2e43123e6f127e5a87" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetDirStruct </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theVector</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>is GEOM object(vector) </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH.DirStruct </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ee0c3f87cae057e11d1d18a657e315f9"></a><!-- doxytag: member="smesh::GetAxisStruct" ref="ee0c3f87cae057e11d1d18a657e315f9" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetAxisStruct </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theObj</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theObj</em> </td><td>is GEOM object(line or plane) </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH.AxisStruct </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e40116571038fba2db7a1c3588b89598"></a><!-- doxytag: member="smesh::SetEmbeddedMode" ref="e40116571038fba2db7a1c3588b89598" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.SetEmbeddedMode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theMode</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="14affae9db8e4a412eafb2a6fe174218"></a><!-- doxytag: member="smesh::IsEmbeddedMode" ref="14affae9db8e4a412eafb2a6fe174218" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.IsEmbeddedMode </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d39ae64cb08100cd93234d15aca978d5"></a><!-- doxytag: member="smesh::SetCurrentStudy" ref="d39ae64cb08100cd93234d15aca978d5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.SetCurrentStudy </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theStudy</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="451cd7527b6484ed2dd7bf58275adaf6"></a><!-- doxytag: member="smesh::GetCurrentStudy" ref="451cd7527b6484ed2dd7bf58275adaf6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetCurrentStudy </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e92c083f2c9ac716012531aa3e9f786f"></a><!-- doxytag: member="smesh::CreateMeshesFromUNV" ref="e92c083f2c9ac716012531aa3e9f786f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.CreateMeshesFromUNV </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theFileName</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>an instance of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="45cc030efe388e131d0aa54d75b83b31"></a><!-- doxytag: member="smesh::CreateMeshesFromMED" ref="45cc030efe388e131d0aa54d75b83b31" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.CreateMeshesFromMED </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theFileName</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>a list of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class instances </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="eab78614705c83dd55a54e7239b164e4"></a><!-- doxytag: member="smesh::CreateMeshesFromSTL" ref="eab78614705c83dd55a54e7239b164e4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.CreateMeshesFromSTL </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theFileName</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>an instance of <a class="el" href="classsmesh_1_1Mesh.html">Mesh</a> class </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="fa73ac57b58b7d409a33ec3971bbd278"></a><!-- doxytag: member="smesh::GetSubShapesId" ref="fa73ac57b58b7d409a33ec3971bbd278" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetSubShapesId </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theMainObject</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theListOfSubObjects</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f2e028022f5f3399ba1b1790acc5a853"></a><!-- doxytag: member="smesh::GetPattern" ref="f2e028022f5f3399ba1b1790acc5a853" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetPattern </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-Creates pattern </td>
- </tr>
-</table>
-<a class="anchor" name="03961f7bbd325cfd29d0a80685ec719d"></a><!-- doxytag: member="smesh::GetEmptyCriterion" ref="03961f7bbd325cfd29d0a80685ec719d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetEmptyCriterion </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH.Filter.Criterion </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f1ee4dcc9ba12ec95d99eb794ae4636f"></a><!-- doxytag: member="smesh::GetCriterion" ref="f1ee4dcc9ba12ec95d99eb794ae4636f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetCriterion </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>elementType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CritType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Treshold</em> = <code>""</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>UnaryOp</em> = <code>FT_Undefined</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>BinaryOp</em> = <code>FT_Undefined</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements(NODE, EDGE, FACE, VOLUME) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of ids as string, shape, numeric) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>BinaryOp</em> </td><td>is binary logical operation FT_LogicalAND, FT_LogicalOR or FT_Undefined(must be for the last criterion in criteria) </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH.Filter.Criterion </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="62eb2a46d9a194cc14210a3b169a0206"></a><!-- doxytag: member="smesh::GetFilter" ref="62eb2a46d9a194cc14210a3b169a0206" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetFilter </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>elementType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>CritType</em> = <code>FT_Undefined</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Compare</em> = <code>FT_EqualTo</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>Treshold</em> = <code>""</code>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>UnaryOp</em> = <code>FT_Undefined</code></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>elementType</em> </td><td>is the type of elements in the group </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>CritType</em> </td><td>is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. ) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Compare</em> </td><td>belong to {FT_LessThan, FT_MoreThan, FT_EqualTo} </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Treshold</em> </td><td>is threshold value (range of id ids as string, shape, numeric) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>UnaryOp</em> </td><td>is FT_LogicalNOT or FT_Undefined </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_Filter </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="99e71a9fd57d9298e553af661f46c420"></a><!-- doxytag: member="smesh::GetFunctor" ref="99e71a9fd57d9298e553af661f46c420" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.GetFunctor </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theCriterion</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theCrierion</em> </td><td>is FT_...; functor type </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>SMESH_NumericalFunctor </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4c9816c7de2ca573df022a3395498a77"></a><!-- doxytag: member="smesh::TreatHypoStatus" ref="4c9816c7de2ca573df022a3395498a77" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def smesh.TreatHypoStatus </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>status</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>hypName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>geomName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isAlgo</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
</table>
<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="f6669b275aa02ad8b527f8480374c308"></a><!-- doxytag: member="smesh::noNETGENPlugin" ref="f6669b275aa02ad8b527f8480374c308" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#f6669b275aa02ad8b527f8480374c308">smesh.noNETGENPlugin</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f6669b275aa02ad8b527f8480374c308"></a><!-- doxytag: member="smesh::noNETGENPlugin" ref="f6669b275aa02ad8b527f8480374c308" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#f6669b275aa02ad8b527f8480374c308">smesh.noNETGENPlugin</a> = 1<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="85f3ed596d91251bfa3b2d2ac4151739"></a><!-- doxytag: member="smesh::REGULAR" ref="85f3ed596d91251bfa3b2d2ac4151739" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#85f3ed596d91251bfa3b2d2ac4151739">smesh.REGULAR</a> = 1<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="40eed802c94269a68ec2194609fac2f0"></a><!-- doxytag: member="smesh::PYTHON" ref="40eed802c94269a68ec2194609fac2f0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#40eed802c94269a68ec2194609fac2f0">smesh.PYTHON</a> = 2<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="76a5fdf46440e128f9ab6791d61f76a6"></a><!-- doxytag: member="smesh::COMPOSITE" ref="76a5fdf46440e128f9ab6791d61f76a6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#76a5fdf46440e128f9ab6791d61f76a6">smesh.COMPOSITE</a> = 3<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4449cc4d5e7910c0afa9a35238736519"></a><!-- doxytag: member="smesh::MEFISTO" ref="4449cc4d5e7910c0afa9a35238736519" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#4449cc4d5e7910c0afa9a35238736519">smesh.MEFISTO</a> = 3<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="72b65da5195aa8d71574f95e5533d612"></a><!-- doxytag: member="smesh::NETGEN" ref="72b65da5195aa8d71574f95e5533d612" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#72b65da5195aa8d71574f95e5533d612">smesh.NETGEN</a> = 4<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="bf6aaa2e2cf565cbe3ae34954dee8926"></a><!-- doxytag: member="smesh::GHS3D" ref="bf6aaa2e2cf565cbe3ae34954dee8926" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#bf6aaa2e2cf565cbe3ae34954dee8926">smesh.GHS3D</a> = 5<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="13a34e1016fc530291cb7c688709efb3"></a><!-- doxytag: member="smesh::FULL_NETGEN" ref="13a34e1016fc530291cb7c688709efb3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#13a34e1016fc530291cb7c688709efb3">smesh.FULL_NETGEN</a> = 6<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b0be2f91db6c32bfdd43d124340b7af7"></a><!-- doxytag: member="smesh::POINT" ref="b0be2f91db6c32bfdd43d124340b7af7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="namespacesmesh.html#b0be2f91db6c32bfdd43d124340b7af7">smesh.POINT</a> = <a class="el" href="namespacesmesh.html#b0be2f91db6c32bfdd43d124340b7af7">SMESH_MeshEditor.POINT</a><code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0365dc0276024fad14f43dec877248a4"></a><!-- doxytag: member="smesh::AXIS" ref="0365dc0276024fad14f43dec877248a4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="namespacesmesh.html#0365dc0276024fad14f43dec877248a4">smesh.AXIS</a> = <a class="el" href="namespacesmesh.html#0365dc0276024fad14f43dec877248a4">SMESH_MeshEditor.AXIS</a><code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a7f05b05f3918e114ad62c869b824310"></a><!-- doxytag: member="smesh::PLANE" ref="a7f05b05f3918e114ad62c869b824310" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="namespacesmesh.html#a7f05b05f3918e114ad62c869b824310">smesh.PLANE</a> = <a class="el" href="namespacesmesh.html#a7f05b05f3918e114ad62c869b824310">SMESH_MeshEditor.PLANE</a><code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9fe9597639de7e8c26f4b92657568c62"></a><!-- doxytag: member="smesh::LAPLACIAN_SMOOTH" ref="9fe9597639de7e8c26f4b92657568c62" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="namespacesmesh.html#9fe9597639de7e8c26f4b92657568c62">smesh.LAPLACIAN_SMOOTH</a> = <a class="el" href="namespacesmesh.html#9fe9597639de7e8c26f4b92657568c62">SMESH_MeshEditor.LAPLACIAN_SMOOTH</a><code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="85f9acba1823ef2dcb8f0c33d44f626c"></a><!-- doxytag: member="smesh::CENTROIDAL_SMOOTH" ref="85f9acba1823ef2dcb8f0c33d44f626c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"><a class="el" href="namespacesmesh.html#85f9acba1823ef2dcb8f0c33d44f626c">smesh.CENTROIDAL_SMOOTH</a> = <a class="el" href="namespacesmesh.html#85f9acba1823ef2dcb8f0c33d44f626c">SMESH_MeshEditor.CENTROIDAL_SMOOTH</a><code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="8063a2dbc510a33b4f6c056b0e059ce3"></a><!-- doxytag: member="smesh::VeryCoarse" ref="8063a2dbc510a33b4f6c056b0e059ce3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#8063a2dbc510a33b4f6c056b0e059ce3">smesh.VeryCoarse</a> = 0<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f7f5ba712f050ae89776eb0b27edc1bf"></a><!-- doxytag: member="smesh::Coarse" ref="f7f5ba712f050ae89776eb0b27edc1bf" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#f7f5ba712f050ae89776eb0b27edc1bf">smesh.Coarse</a> = 1<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ac157436ade9909f14cc94865ec94ef7"></a><!-- doxytag: member="smesh::Moderate" ref="ac157436ade9909f14cc94865ec94ef7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#ac157436ade9909f14cc94865ec94ef7">smesh.Moderate</a> = 2<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="0cbc436d589be051e2bd733da2006528"></a><!-- doxytag: member="smesh::Fine" ref="0cbc436d589be051e2bd733da2006528" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#0cbc436d589be051e2bd733da2006528">smesh.Fine</a> = 3<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="b2cb5fe43d16d24399313f85d6956b05"></a><!-- doxytag: member="smesh::VeryFine" ref="b2cb5fe43d16d24399313f85d6956b05" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#b2cb5fe43d16d24399313f85d6956b05">smesh.VeryFine</a> = 4<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="beaf031bab31506b47b3c28066afb637"></a><!-- doxytag: member="smesh::Custom" ref="beaf031bab31506b47b3c28066afb637" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">int <a class="el" href="namespacesmesh.html#beaf031bab31506b47b3c28066afb637">smesh.Custom</a> = 5<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-
-<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="d821cab222bc6c9405a89a6c6082d388"></a><!-- doxytag: member="smesh::NO_NAME" ref="d821cab222bc6c9405a89a6c6082d388" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+<a class="anchor" name="6e041b9ca898fefe3ea0abafeed4aff2"></a><!-- doxytag: member="smesh::smesh" ref="6e041b9ca898fefe3ea0abafeed4aff2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top">string <a class="el" href="namespacesmesh.html#d821cab222bc6c9405a89a6c6082d388">smesh.NO_NAME</a> = "NoName"<code> [static]</code> </td>
+ <td class="memname">tuple <a class="el" href="namespacesmesh.html#6e041b9ca898fefe3ea0abafeed4aff2">smesh.smesh</a> = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")<code> [static]</code> </td>
</tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
+</div>
+<div class="memdoc">
<p>
- </td>
- </tr>
-</table>
-<a class="anchor" name="6e041b9ca898fefe3ea0abafeed4aff2"></a><!-- doxytag: member="smesh::smesh" ref="6e041b9ca898fefe3ea0abafeed4aff2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">tuple <a class="el" href="namespacesmesh.html#6e041b9ca898fefe3ea0abafeed4aff2">smesh.smesh</a> = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")<code> [static]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
-<p>
- </td>
- </tr>
-</table>
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:39 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
</BODY>
</HTML>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+ <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.4.7 -->
+<h1>Package smeshDC</h1>
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1smeshDC.html">smeshDC</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Algorithm.html">Mesh_Algorithm</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Mother class to define algorithm, recommended to don't use directly. <a href="classsmeshDC_1_1Mesh__Algorithm.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment.html">Mesh_Segment</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization. <a href="classsmeshDC_1_1Mesh__Segment.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__CompositeSegment.html">Mesh_CompositeSegment</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization. <a href="classsmeshDC_1_1Mesh__CompositeSegment.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Segment__Python.html">Mesh_Segment_Python</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a segment 1D algorithm for discretization with python function. <a href="classsmeshDC_1_1Mesh__Segment__Python.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Triangle.html">Mesh_Triangle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a triangle 2D algorithm. <a href="classsmeshDC_1_1Mesh__Triangle.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Quadrangle.html">Mesh_Quadrangle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a quadrangle 2D algorithm. <a href="classsmeshDC_1_1Mesh__Quadrangle.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Tetrahedron.html">Mesh_Tetrahedron</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a tetrahedron 3D algorithm. <a href="classsmeshDC_1_1Mesh__Tetrahedron.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Hexahedron.html">Mesh_Hexahedron</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a hexahedron 3D algorithm. <a href="classsmeshDC_1_1Mesh__Hexahedron.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Netgen.html">Mesh_Netgen</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a NETGEN-based 2D or 3D algorithm that need no discrete boundary (i.e. <a href="classsmeshDC_1_1Mesh__Netgen.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection1D.html">Mesh_Projection1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 1D algorithm. <a href="classsmeshDC_1_1Mesh__Projection1D.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection2D.html">Mesh_Projection2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 2D algorithm. <a href="classsmeshDC_1_1Mesh__Projection2D.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Projection3D.html">Mesh_Projection3D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a projection 3D algorithm. <a href="classsmeshDC_1_1Mesh__Projection3D.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__Prism3D.html">Mesh_Prism3D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a 3D extrusion algorithm. <a href="classsmeshDC_1_1Mesh__Prism3D.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh__RadialPrism3D.html">Mesh_RadialPrism3D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a Radial Prism 3D algorithm. <a href="classsmeshDC_1_1Mesh__RadialPrism3D.html#_details">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsmeshDC_1_1Mesh.html">Mesh</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class to define a mesh. <a href="classsmeshDC_1_1Mesh.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#77e81fcdcad4ae78d1742a9b3fcce17e">GetName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets object name. <a href="#77e81fcdcad4ae78d1742a9b3fcce17e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#3acd2894e05c10d68008d96002621164">SetName</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#e95246982a965040a02c573066a8196e">TreatHypoStatus</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#f49588f8e1034367434a54957435b7ea">noNETGENPlugin</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#f49588f8e1034367434a54957435b7ea">noNETGENPlugin</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#fcd10952f4e87878b85f48b0b225372f">REGULAR</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#955814fbbff4cdc590cd03dbbb859927">PYTHON</a> = 2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#e50ede87044d2daa26c4f139fe696c53">COMPOSITE</a> = 3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#12ae6b0bb6a0f0e08228bb238dab824d">MEFISTO</a> = 3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#12e2315ca0c10d490928dcc3b2351864">NETGEN</a> = 4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#67ce8984d9b8d988f78b632def748817">GHS3D</a> = 5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#118f33758b4f4725cc68db7aebd34083">FULL_NETGEN</a> = 6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#fd5b5cedbc611e37e599f437c575ae36">POINT</a> = <a class="el" href="namespacesmeshDC.html#fd5b5cedbc611e37e599f437c575ae36">SMESH_MeshEditor.POINT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#b9611ddbe9d93a2d4760a7de092cfd1f">AXIS</a> = <a class="el" href="namespacesmeshDC.html#b9611ddbe9d93a2d4760a7de092cfd1f">SMESH_MeshEditor.AXIS</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#92fd2c2fd43b6ce9f16f89ba7626742c">PLANE</a> = <a class="el" href="namespacesmeshDC.html#92fd2c2fd43b6ce9f16f89ba7626742c">SMESH_MeshEditor.PLANE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#e8fab2e03b1a8d462378fe74c57de619">LAPLACIAN_SMOOTH</a> = <a class="el" href="namespacesmeshDC.html#e8fab2e03b1a8d462378fe74c57de619">SMESH_MeshEditor.LAPLACIAN_SMOOTH</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#676e25a560cffbde266e642411de6c89">CENTROIDAL_SMOOTH</a> = <a class="el" href="namespacesmeshDC.html#676e25a560cffbde266e642411de6c89">SMESH_MeshEditor.CENTROIDAL_SMOOTH</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#f13ac029f6502c7c30cf9d57eb799a1b">VeryCoarse</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#926afa25436fb731b6ad7402f054bb9a">Coarse</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#b434de550c6237c4896761aa23b9eac3">Moderate</a> = 2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#8633ea7354db60e8ba8bf538280be54a">Fine</a> = 3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#5c61377a364e30640a40aa6d1a9660e1">VeryFine</a> = 4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#8a359232ccf0e37f34296dc3c74fca2c">Custom</a> = 5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacesmeshDC.html#f609ee42a882d226c71c6491757c7d86">NO_NAME</a> = "NoName"</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="77e81fcdcad4ae78d1742a9b3fcce17e"></a><!-- doxytag: member="smeshDC::GetName" ref="77e81fcdcad4ae78d1742a9b3fcce17e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.GetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>obj</em> </td>
+ <td> ) </td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3acd2894e05c10d68008d96002621164"></a><!-- doxytag: member="smeshDC::SetName" ref="3acd2894e05c10d68008d96002621164" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.SetName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>obj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>name</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e95246982a965040a02c573066a8196e"></a><!-- doxytag: member="smeshDC::TreatHypoStatus" ref="e95246982a965040a02c573066a8196e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def smeshDC.TreatHypoStatus </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>status</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>hypName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>geomName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isAlgo</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="f49588f8e1034367434a54957435b7ea"></a><!-- doxytag: member="smeshDC::noNETGENPlugin" ref="f49588f8e1034367434a54957435b7ea" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#f49588f8e1034367434a54957435b7ea">smeshDC.noNETGENPlugin</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f49588f8e1034367434a54957435b7ea"></a><!-- doxytag: member="smeshDC::noNETGENPlugin" ref="f49588f8e1034367434a54957435b7ea" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#f49588f8e1034367434a54957435b7ea">smeshDC.noNETGENPlugin</a> = 1<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fcd10952f4e87878b85f48b0b225372f"></a><!-- doxytag: member="smeshDC::REGULAR" ref="fcd10952f4e87878b85f48b0b225372f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#fcd10952f4e87878b85f48b0b225372f">smeshDC.REGULAR</a> = 1<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="955814fbbff4cdc590cd03dbbb859927"></a><!-- doxytag: member="smeshDC::PYTHON" ref="955814fbbff4cdc590cd03dbbb859927" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#955814fbbff4cdc590cd03dbbb859927">smeshDC.PYTHON</a> = 2<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e50ede87044d2daa26c4f139fe696c53"></a><!-- doxytag: member="smeshDC::COMPOSITE" ref="e50ede87044d2daa26c4f139fe696c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#e50ede87044d2daa26c4f139fe696c53">smeshDC.COMPOSITE</a> = 3<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="12ae6b0bb6a0f0e08228bb238dab824d"></a><!-- doxytag: member="smeshDC::MEFISTO" ref="12ae6b0bb6a0f0e08228bb238dab824d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#12ae6b0bb6a0f0e08228bb238dab824d">smeshDC.MEFISTO</a> = 3<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="12e2315ca0c10d490928dcc3b2351864"></a><!-- doxytag: member="smeshDC::NETGEN" ref="12e2315ca0c10d490928dcc3b2351864" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#12e2315ca0c10d490928dcc3b2351864">smeshDC.NETGEN</a> = 4<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="67ce8984d9b8d988f78b632def748817"></a><!-- doxytag: member="smeshDC::GHS3D" ref="67ce8984d9b8d988f78b632def748817" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#67ce8984d9b8d988f78b632def748817">smeshDC.GHS3D</a> = 5<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="118f33758b4f4725cc68db7aebd34083"></a><!-- doxytag: member="smeshDC::FULL_NETGEN" ref="118f33758b4f4725cc68db7aebd34083" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#118f33758b4f4725cc68db7aebd34083">smeshDC.FULL_NETGEN</a> = 6<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="fd5b5cedbc611e37e599f437c575ae36"></a><!-- doxytag: member="smeshDC::POINT" ref="fd5b5cedbc611e37e599f437c575ae36" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacesmeshDC.html#fd5b5cedbc611e37e599f437c575ae36">smeshDC.POINT</a> = <a class="el" href="namespacesmeshDC.html#fd5b5cedbc611e37e599f437c575ae36">SMESH_MeshEditor.POINT</a><code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b9611ddbe9d93a2d4760a7de092cfd1f"></a><!-- doxytag: member="smeshDC::AXIS" ref="b9611ddbe9d93a2d4760a7de092cfd1f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacesmeshDC.html#b9611ddbe9d93a2d4760a7de092cfd1f">smeshDC.AXIS</a> = <a class="el" href="namespacesmeshDC.html#b9611ddbe9d93a2d4760a7de092cfd1f">SMESH_MeshEditor.AXIS</a><code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="92fd2c2fd43b6ce9f16f89ba7626742c"></a><!-- doxytag: member="smeshDC::PLANE" ref="92fd2c2fd43b6ce9f16f89ba7626742c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacesmeshDC.html#92fd2c2fd43b6ce9f16f89ba7626742c">smeshDC.PLANE</a> = <a class="el" href="namespacesmeshDC.html#92fd2c2fd43b6ce9f16f89ba7626742c">SMESH_MeshEditor.PLANE</a><code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e8fab2e03b1a8d462378fe74c57de619"></a><!-- doxytag: member="smeshDC::LAPLACIAN_SMOOTH" ref="e8fab2e03b1a8d462378fe74c57de619" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacesmeshDC.html#e8fab2e03b1a8d462378fe74c57de619">smeshDC.LAPLACIAN_SMOOTH</a> = <a class="el" href="namespacesmeshDC.html#e8fab2e03b1a8d462378fe74c57de619">SMESH_MeshEditor.LAPLACIAN_SMOOTH</a><code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="676e25a560cffbde266e642411de6c89"></a><!-- doxytag: member="smeshDC::CENTROIDAL_SMOOTH" ref="676e25a560cffbde266e642411de6c89" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacesmeshDC.html#676e25a560cffbde266e642411de6c89">smeshDC.CENTROIDAL_SMOOTH</a> = <a class="el" href="namespacesmeshDC.html#676e25a560cffbde266e642411de6c89">SMESH_MeshEditor.CENTROIDAL_SMOOTH</a><code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f13ac029f6502c7c30cf9d57eb799a1b"></a><!-- doxytag: member="smeshDC::VeryCoarse" ref="f13ac029f6502c7c30cf9d57eb799a1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#f13ac029f6502c7c30cf9d57eb799a1b">smeshDC.VeryCoarse</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="926afa25436fb731b6ad7402f054bb9a"></a><!-- doxytag: member="smeshDC::Coarse" ref="926afa25436fb731b6ad7402f054bb9a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#926afa25436fb731b6ad7402f054bb9a">smeshDC.Coarse</a> = 1<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b434de550c6237c4896761aa23b9eac3"></a><!-- doxytag: member="smeshDC::Moderate" ref="b434de550c6237c4896761aa23b9eac3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#b434de550c6237c4896761aa23b9eac3">smeshDC.Moderate</a> = 2<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8633ea7354db60e8ba8bf538280be54a"></a><!-- doxytag: member="smeshDC::Fine" ref="8633ea7354db60e8ba8bf538280be54a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#8633ea7354db60e8ba8bf538280be54a">smeshDC.Fine</a> = 3<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5c61377a364e30640a40aa6d1a9660e1"></a><!-- doxytag: member="smeshDC::VeryFine" ref="5c61377a364e30640a40aa6d1a9660e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#5c61377a364e30640a40aa6d1a9660e1">smeshDC.VeryFine</a> = 4<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8a359232ccf0e37f34296dc3c74fca2c"></a><!-- doxytag: member="smeshDC::Custom" ref="8a359232ccf0e37f34296dc3c74fca2c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="namespacesmeshDC.html#8a359232ccf0e37f34296dc3c74fca2c">smeshDC.Custom</a> = 5<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="f609ee42a882d226c71c6491757c7d86"></a><!-- doxytag: member="smeshDC::NO_NAME" ref="f609ee42a882d226c71c6491757c7d86" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">string <a class="el" href="namespacesmeshDC.html#f609ee42a882d226c71c6491757c7d86">smeshDC.NO_NAME</a> = "NoName"<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 13:26:39 2007 for SALOME - SMESH - v.4.0.0 by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> 1.4.7</DIV>
+</BODY>
+</HTML>
--- /dev/null
+H1 {
+ text-align: center;
+}
+
+CAPTION {
+ font-weight: bold
+}
+
+/* Link in the top navbar */
+A.qindex {}
+
+A.qindexRef {}
+
+/* Link to any cross-referenced Doxygen element */
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+
+A.elRef {
+ font-weight: bold
+}
+
+/* Link to any cross-referenced Doxygen element inside a code section
+ (ex: header)
+*/
+A.code {
+ text-decoration: none;
+ font-weight: normal;
+ color: #4444ee
+}
+
+A.codeRef {
+ font-weight: normal;
+ color: #4444ee
+}
+
+A:hover {
+ text-decoration: none;
+ background-color: lightblue
+}
+
+DL.el {
+ margin-left: -1cm
+}
+
+/* A code fragment (ex: header) */
+DIV.fragment {
+ width: 100%;
+ border: none;
+ background-color: #CCCCCC
+}
+
+/* In the alpha list (coumpound index), style of an alphabetical index letter */
+DIV.ah {
+ background-color: #CCCCCC;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+/* Method name (+ type) */
+TD.md {
+ background-color: lightblue;
+ font-weight: bold;
+}
+
+/* Method parameter (some of them) */
+TD.mdname1 {
+ background-color: lightblue;
+ font-weight: bold; color: #602020;
+}
+
+/* Method parameter (some of them) */
+TD.mdname {
+ background-color: lightblue;
+ font-weight: bold;
+ color: #602020;
+ width: 600px;
+}
+
+/* Separator between methods group (usually empty, seems not supported by IE) */
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold
+}
+
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: smaller
+}
+
+BODY {
+ background: #FFFFFF;
+}
+
+/*div.div-page {
+ background-color: #FFFFFF;
+ margin-left: 1em;
+ margin-right: 1em;
+ margin-top: 1em;
+ margin-bottom: 0.1em;
+
+ padding-left: 1em;
+ padding-right: 1em;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+
+ border: 2px solid #0D299A;
+ border-width: 2px;
+ border-color: #0D299A;
+}*/
+
+div.tabs {
+ text-align: justify;
+ margin-left : 2px;
+ margin-right : 2px;
+ margin-top : 2px;
+ margin-bottom : 2px
+ font-weight: bold;
+ color: #FFFFFF;
+}
+
+DIV.div-footer {
+ margin-left: 1em;
+ margin-right: 1em;
+ margin-bottom: 0.2em;
+ text-align: right;
+ font-size: 9pt;
+}
+
+/* In File List, Coumpound List, etc, 1st column of the index */
+TD.indexkey {
+ background-color: #CCCCCC;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+
+/* In File List, Coumpound List, etc, 2nd column of the index */
+TD.indexvalue {
+ background-color: #CCCCCC;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+
+span.keyword { color: #008000 }
+span.keywordtype { color: #604020 }
+span.keywordflow { color: #e08000 }
+span.comment { color: #800000 }
+span.preprocessor { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral { color: #008080 }
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+</head>
+<body>
+<hr style="width: 100%; height: 2px;">
+<div style="text-align: center;">Copyright © 2003-2007 CEA, EDF<br>
+</div>
+</body>
+</html>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>$title</title>
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<hr>
+<center>
+SALOME documentation central
+</center>
+<hr>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Transforming Meshes</title>
-<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">
-<!--
-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; font-family:'Lucida Console' , monospace; }
-p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
-p.whs6 { margin-top:0pt; margin-bottom:0pt; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "h3.whs1 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "h4.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.whs5 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nTransforming Meshes");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Transforming Meshes</h1>
-
-<h3 class="whs1">Transforming Meshes</h3>
-
-<h4 class="whs2"> </h4>
-
-<h4 class="whs2"><a name=bookmark>Translation</a></h4>
-
-<p class="whs3"> </p>
-
-<p class="whs4">import SMESH_mechanic</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">smesh
- = SMESH_mechanic.smesh </span></p>
-
-<p class="whs4">mesh = SMESH_mechanic.mesh
- </p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># define translation
- vector</p>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">point
- = smesh.PointStruct(-150., -150., 0.)</span></p>
-
-<p class="whs4">vector =smesh.DirStruct(point)
- </p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># translate a mesh</p>
-
-<p class="whs4">doCopy = 1</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">mesh.Translate([],
- vector, doCopy) </p>
-
-<p class="whs6"> </p>
-
-<h4 class="whs2"><a name=bookmark1>Rotation</a></h4>
-
-<p class="whs3"> </p>
-
-<p class="whs3">import math</p>
-
-<p class="whs3">import SMESH_mechanic</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">smesh
- = SMESH_mechanic.smesh</span></p>
-
-<p class="whs3">mesh = SMESH_mechanic.mesh </p>
-
-<p class="whs3"> </p>
-
-<p class="whs5"># define rotation axis
- and angle</p>
-
-<p class="whs3">axisXYZ = smesh.AxisStruct(0., 0., 0.,
- 5., 5., 20.)</p>
-
-<p class="whs3">angle270 = 1.5 * math.pi</p>
-
-<p class="whs3"> </p>
-
-<p class="whs5"># rotate a mesh</p>
-
-<p class="whs4">mesh.Rotate([],
- axisXYZ, angle270, 1) </p>
-
-<p class="whs6"> </p>
-
-<h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>
-
-<p class="whs3"> </p>
-
-<p class="whs3">import math</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3">import SMESH_mechanic</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">smesh
- = SMESH_mechanic.smesh</span></p>
-
-<p class="whs3">mesh = SMESH_mechanic.mesh </p>
-
-<p class="whs3"> </p>
-
-<p class="whs5"># create a symmetrical
- copy of the mesh mirrored through a point</p>
-
-<p class="whs3">axis = SMESH.AxisStruct(0, 0, 0, 0, 0,
- 0)</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3">mesh.Mirror([], axis, smesh.POINT, 1)
- </p>
-
-<p class="whs6"> </p>
-
-<h4 class="whs2"><a name=bookmark3>Merging
- Nodes</a></h4>
-
-<p class="whs3"> </p>
-
-<p class="whs4">import SMESH_mechanic</p>
-
-<p class="whs4">mesh = SMESH_mechanic.mesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># merge nodes</p>
-
-<p class="whs4">Tolerance = 25.0</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">GroupsOfNodes =
- mesh.FindCoincidentNodes(Tolerance)</p>
-
-<p class="whs4">mesh.MergeNodes(GroupsOfNodes)
- </p>
-
-<p class="whs6"> </p>
-
-<h4><a name=bookmark8>Merging Elements</a></h4>
-
-<p class="whs4">import salome</p>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a face to
- be meshed</p>
-
-<p class="whs4">px = geompy.MakeVertex(100.,
- 0. , 0.
- )</p>
-
-<p class="whs4">py = geompy.MakeVertex(0.
- , 100.,
- 0. )</p>
-
-<p class="whs4">pz = geompy.MakeVertex(0.
- , 0. ,
- 100.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs4">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p class="whs4">isPlanarFace = 1</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">face1 = geompy.MakeFace(wire,
- isPlanarFace)</p>
-
-<p class="whs4">id_face1 = geompy.addToStudy(face1,
- "Face1")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a circle to
- be an extrusion path</p>
-
-<p class="whs4">px1 = geompy.MakeVertex(
- 100., 100.,
- 0.)</p>
-
-<p class="whs4">py1 = geompy.MakeVertex(-100.,
- -100., 0.)</p>
-
-<p class="whs4">pz1 = geompy.MakeVertex(
- 0.,
- 0.,
- 50.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">circle = geompy.MakeCircleThreePnt(py1,
- pz1, px1)</p>
-
-<p class="whs4">id_circle = geompy.addToStudy(circle,
- "Path")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a 2D mesh
- on the face</p>
-
-<p class="whs4">trias = smesh.Mesh(face1,
- "Face : 2D mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo1D = trias.Segment()</p>
-
-<p class="whs4">algo1D.NumberOfSegments(6)</p>
-
-<p class="whs4">algo2D = trias.Triangle()</p>
-
-<p class="whs4">algo2D.LengthFromEdges()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">trias.Compute()</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"># create a path mesh</p>
-
-<p class="whs4">circlemesh = smesh.Mesh(circle,
- "Path mesh")</p>
-
-<p class="whs4">algo = circlemesh.Segment()</p>
-
-<p class="whs4">algo.NumberOfSegments(10)</p>
-
-<p class="whs4">circlemesh.Compute()</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"># extrusion of the
- mesh</p>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">trias.ExtrusionAlongPath([],
- circlemesh, circle,</span></p>
-
-<p class="whs4"> 1,
- 0, [], 0, smesh.PointStruct(0, 0, 0))</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># merge nodes</p>
-
-<p class="whs4">print "Number
- of nodes before MergeNodes:", </p>
-
-<p class="whs4">trias.NbNodes()</p>
-
-<p class="whs4">tolerance = 0.001</p>
-
-<p class="whs4">array_of_nodes_groups
- = trias.FindCoincidentNodes(tolerance)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">trias.MergeNodes(array_of_nodes_groups)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">print "Number
- of nodes after MergeNodes:", trias.NbNodes()</p>
-
-<p class="whs4">print ""</p>
-
-<p class="whs4">print "Number
- of elements before MergeEqualElements:"</p>
-
-<p class="whs4">print "Edges
- :
- ", trias.NbEdges()</p>
-
-<p class="whs4">print "Triangles
- : ",
- trias.NbTriangles()</p>
-
-<p class="whs4">print "Quadrangles:
- ", trias.NbQuadrangles()</p>
-
-<p class="whs4">print "Volumes
- :
- ", trias.NbVolumes()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># merge elements</p>
-
-<p class="whs4">trias.MergeEqualElements()</p>
-
-<p class="whs4">print "Number
- of elements after MergeEqualElements:"</p>
-
-<p class="whs4">print "Edges
- :
- ", trias.NbEdges()</p>
-
-<p class="whs4">print "Triangles
- : ",
- trias.NbTriangles()</p>
-
-<p class="whs4">print "Quadrangles:
- ", trias.NbQuadrangles()</p>
-
-<p class="whs4">print "Volumes
- :
- ", trias.NbVolumes()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs4"> </p>
-
-<h3>Sewing Meshes</h3>
-
-<h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create two faces
- of a box</p>
-
-<p class="whs4">box1 = geompy.MakeBox(0.,
- 0., -10., 30., 20., 25.)</p>
-
-<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face1 = facesList1[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">box2 = geompy.MakeBox(0.,
- 5., 0., 20., 20., 15.)</p>
-
-<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face2 = facesList2[1]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">edgesList = geompy.SubShapeAll(face2,
- geompy.ShapeType["EDGE"])</p>
-
-<p class="whs4">edge1 = edgesList[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">aComp = geompy.MakeCompound([face1,
- face2])</p>
-
-<p class="whs4">geompy.addToStudy(aComp,
- "Two faces")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh on
- two faces</p>
-
-<p class="whs4">mesh = smesh.Mesh(aComp,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo1D = mesh.Segment()</p>
-
-<p class="whs4">algo1D.NumberOfSegments(9)</p>
-
-<p class="whs4">algo2D = mesh.Quadrangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo_local = mesh.Segment(edge1)</p>
-
-<p class="whs4">algo_local.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs4">algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">mesh.Compute()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># sew border to side</p>
-
-<p class="whs5"># FirstNodeIDOnFreeBorder,
- SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,</p>
-
-<p class="whs5"># FirstNodeIDOnSide,
- LastNodeIDOnSide,</p>
-
-<p class="whs5"># CreatePolygons, CreatePolyedrs</p>
-
-<p class="whs4">mesh.SewBorderToSide(5,
- 45, 6, 113, 109, 0, 0) </p>
-
-<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create two faces
- of the box</p>
-
-<p class="whs4">box1 = geompy.MakeBox(0.,
- 0., -10., 20., 20., 15.)</p>
-
-<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face1 = facesList1[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">box2 = geompy.MakeBox(0.,
- 5., 0., 20., 20., 15.)</p>
-
-<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face2 = facesList2[1]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">edgesList = geompy.SubShapeAll(face2,
- geompy.ShapeType["EDGE"])</p>
-
-<p class="whs4">edge1 = edgesList[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">aComp = geompy.MakeCompound([face1,
- face2])</p>
-
-<p class="whs4">geompy.addToStudy(aComp,
- "Two faces")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh on
- two faces</p>
-
-<p class="whs4">mesh = smesh.Mesh(aComp,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo1D = mesh.Segment()</p>
-
-<p class="whs4">algo1D.NumberOfSegments(9)</p>
-
-<p class="whs4">algo2D = mesh.Quadrangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo_local = mesh.Segment(edge1)</p>
-
-<p class="whs4">algo_local.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs4">algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">mesh.Compute()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># sew conform free
- borders</p>
-
-<p class="whs5"># FirstNodeID1, SecondNodeID1,
- LastNodeID1, FirstNodeID2, SecondNodeID2</p>
-
-<p class="whs4">mesh.SewConformFreeBorders(5,
- 45, 6, 3, 24) </p>
-
-<h4><a name=bookmark6>Sew Free Borders</a></h4>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create two faces
- of the box</p>
-
-<p class="whs4">box1 = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face1 = facesList1[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">box2 = geompy.MakeBox(0.,
- 5., 0., 20., 20., 15.)</p>
-
-<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs4">face2 = facesList2[1]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">edgesList = geompy.SubShapeAll(face2,
- geompy.ShapeType["EDGE"])</p>
-
-<p class="whs4">edge1 = edgesList[2]</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">aComp = geompy.MakeCompound([face1,
- face2])</p>
-
-<p class="whs4">geompy.addToStudy(aComp,
- "Two faces")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh on
- two faces</p>
-
-<p class="whs4">mesh = smesh.Mesh(aComp,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo1D = mesh.Segment()</p>
-
-<p class="whs4">algo1D.NumberOfSegments(4)</p>
-
-<p class="whs4">algo2D = mesh.Quadrangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo_local = mesh.Segment(edge1)</p>
-
-<p class="whs4">algo_local.Arithmetic1D(1,
- 4)</p>
-
-<p class="whs4">algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">mesh.Compute()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># sew free borders</p>
-
-<p class="whs5"># FirstNodeID1, SecondNodeID1,
- LastNodeID1,</p>
-
-<p class="whs5"># FirstNodeID2, SecondNodeID2,
- LastNodeID2, CreatePolygons, CreatePolyedrs</p>
-
-<p class="whs6">mesh.SewFreeBorders(6,
- 21, 5, 1, 12, 3, 0, 0) </p>
-
-<h4><a name=bookmark7>Sew Side Elements</a></h4>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import smesh</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create two boxes</p>
-
-<p class="whs4">box1 = geompy.MakeBox(0.,
- 0., 0.,
- 10., 10., 10.)</p>
-
-<p class="whs4">box2 = geompy.MakeBox(0.,
- 15., 0., 20., 25., 10.)</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">EdgesList = geompy.SubShapeAll(box2,
- geompy.ShapeType["EDGE"])</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">aComp = geompy.MakeCompound([box1,
- box2])</p>
-
-<p class="whs4">geompy.addToStudy(aComp,
- "Two boxes")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a mesh on
- two boxes</p>
-
-<p class="whs4">mesh = smesh.Mesh(aComp,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo1D = mesh.Segment()</p>
-
-<p class="whs4">algo1D.NumberOfSegments(2)</p>
-
-<p class="whs4">algo2D = mesh.Quadrangle()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">algo_local = mesh.Segment(EdgesList[8])</p>
-
-<p class="whs4">algo_local.NumberOfSegments(4)</p>
-
-<p class="whs4">algo_local.Propagation()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4">mesh.Compute()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># sew side elements</p>
-
-<p class="whs5"># IDsOfSide1Elements,
- IDsOfSide2Elements,</p>
-
-<p class="whs5"># NodeID1OfSide1ToMerge,
- NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge</p>
-
-<p class="whs4">mesh.SewSideElements([69,
- 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58) </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Transparency</title>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
-<!--
-if (navigator.appName !="Netscape")
-{ document.write("<link rel='stylesheet' href='default.css'>");}
-//-->
-</script>
-<style type="text/css">
-<!--
-p.whs1 { margin-left:40px; }
-img_whs2 { border:none; border-style:none; width:354px; height:173px; float:none; }
--->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nViewing meshes\nTransparency");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Transparency</h1>
-
-<p class="whs1"><img src="pics/a-transparency.png" x-maintain-ratio="TRUE" width="354px" height="173px" border="0" class="img_whs2"></p>
-
-<p> </p>
-
-<p>Using this slider you can set the transparency of shading. Absolutely
- transparent shading will be invisible. By default it is absolutely opaque.
- </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Viewing Meshes</title>
-<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 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }
-p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-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 +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nTUI Scripts\nViewing Meshes");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1>Viewing Meshes</h1>
-
-<h3>Viewing Mesh Infos</h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import smesh</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBox(0., 0., 0., 20.,
- 20., 20.)</p>
-
-<p class="whs1">geompy.addToStudy(box, "box")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a mesh</p>
-
-<p class="whs1">tetra = smesh.Mesh(box, "MeshBox")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">algo1D = tetra.Segment()</p>
-
-<p class="whs1">algo1D.NumberOfSegments(3)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">algo2D = tetra.Triangle()</p>
-
-<p class="whs1">algo2D.MaxElementArea(10.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-
-<p class="whs1">algo3D.MaxElementVolume(900.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># compute the mesh</p>
-
-<p class="whs1">tetra.Compute()</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># print information
- about the mesh</p>
-
-<p class="whs1">print "Information about mesh:"
- </p>
-
-<p class="whs1">print "Number of nodes :
- ", tetra.NbNodes()</p>
-
-<p class="whs1">print "Number of edges :
- ", tetra.NbEdges()</p>
-
-<p class="whs1">print "Number of faces :
- ", tetra.NbFaces()</p>
-
-<p class="whs1">print " triangles
- :
- ", tetra.NbTriangles()</p>
-
-<p class="whs1">print " quadrangles
- : ", tetra.NbQuadrangles()</p>
-
-<p class="whs1">print " polygons
- :
- ", tetra.NbPolygons()</p>
-
-<p class="whs1">print "Number of volumes :
- ", tetra.NbVolumes()</p>
-
-<p class="whs1">print " tetrahedrons:
- ", tetra.NbTetras()</p>
-
-<p class="whs1">print " hexahedrons
- : ", tetra.NbHexas()</p>
-
-<p class="whs1">print " prisms
- :
- ", tetra.NbPrisms()</p>
-
-<p class="whs1">print " pyramids
- :
- ", tetra.NbPyramids()</p>
-
-<p class="whs1">print " polyhedrons
- : ", tetra.NbPolyhedrons() </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Volume</title>
-<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">
-<!--
-h1.whs1 { font-size:24pt; }
-img_whs2 { border:none; width:30px; height:30px; float:none; border-style:none; }
-p.whs3 { margin-left:40px; }
-img_whs4 { border:none; width:164px; height:199px; border-style:none; }
-img_whs5 { border:none; width:23px; height:25px; border-style:none; }
-p.whs6 { margin-left:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs6 {margin-left:1pt; }";
- strNSS +="</style>";
- document.write(strNSS);
-}
-//-->
-</script>
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
-<!--
-function reDo() {
- if (innerWidth != origWidth || innerHeight != origHeight)
- location.reload();
-}
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
-}
-onerror = null;
-//-->
-</script>
-<style type="text/css">
-<!--
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
-p.WebHelpNavBar { text-align:right; }
--->
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
-<script type="text/javascript" language="javascript" src="whver.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- addTocInfo("MESH module\nQuality controls\nVolume");
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
-
- }
-
-
- if (window.setRelStartPage)
- {
- setRelStartPage("index.htm");
-
- autoSync(1);
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-</head>
-<body><script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(4);
-//-->
-</script>
-<h1 class="whs1">Volume</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs2"> <span style="font-weight: bold;"><B>Volume</B></span> mesh quality
- criterion reflects the volume of meshes of a 3D object. </p>
-
-<p class="whs3"><img src="image143.gif" width="164px" height="199px" border="0" class="img_whs4"></p>
-
-<p class=TODO
- style="font-family: 'Arial Black', sans-serif; font-style: italic;">To
- apply the Volume quality criterion to your mesh:</p>
-
-<p class="whs3">1. Display your mesh in the viewer.</p>
-
-<p class="whs3">2. Choose <span style="font-weight: bold;"><B>Controls
- > Volume </B></span>or click <img src="image145.gif" width="23px" height="25px" border="0" class="img_whs5"> button in the toolbar. Your
- mesh will be displayed in the viewer with its elements colored according
- to the applied mesh quality control criterion:</p>
-
-<p class="whs6"><span style="font-weight: bold;"><B>See Also</B></span>
- a sample TUI Script of a <a href="quality_controls.htm#bookmark12"><span
- style="font-weight: bold;"><B>Volume</B></span> quality control</a> operation.
- </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<html>
-<script language="javascript1.2" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2">
-<!--
-if(gbIE4||gbNav61)
-{
- document.write("<body></body>");
-}
-else
-{
- document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");
-}
-var gCSHFileName="whcshdata.htm";
-
-var gHomePage="index.htm";
-var gaProj=new Array();
-gaProj[0]=new Object();
-gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));
-gaProj[0].nLoadState=0;
-var gCurrent=0;
-
-var gsTopicURL="";
-var gnCurProj=0;
-var gnCommand=-1;
-var CMD_SHOWTOC=1;
-var CMD_SHOWINDEX=2;
-var CMD_SHOWSEARCH=3;
-var CMD_SHOWGLOSSARY=4;
-var CMD_SHOWNONE=0;
-
-var RHWO_LOCATION=0x01; /*need location bar?*/
-var RHWO_MENUBAR=0x02; /*need menubar?*/
-var RHWO_RESIZABLE=0x04; /*resizable window?*/
-var RHWO_TOOLBAR=0x08; /*need toolbar?*/
-var RHWO_STATUS=0x10; /*need statusbar?*/
-var RHWO_SCROLLBARS=0x20; /*need scrollbars?*/
-
-var gsStr="";
-var gnId=-1;
-var gsWindow="";
-var gsJava="false";
-var gbUseStr=false;
-var gbURLReady=false;
-var goWnd=new Object();
-goWnd.sName="whCshDefault";
-goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;
-goWnd.sBLeft="49%";
-goWnd.sBTop="0";
-goWnd.sBWidth="49%";
-goWnd.sBHeight="49%";
-goWnd.nPanes=1;
-var goFullWnd=new Object();
-goFullWnd.sName="whDefault";
-goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;
-goFullWnd.sBLeft="20%";
-goFullWnd.sBTop="0";
-goFullWnd.sBWidth="79%";
-goFullWnd.sBHeight="79%";
-goFullWnd.nPanes=2;
-
-var goNewWnd=null;
-var gbLoadWnd=false;
-var gsURL="";
-
-function showCSH(sParam)
-{
- //id=
- //str=
- //url=
- //cmd=
- //with the format #<a=xxx>>b=xxx>>c=xxx...
- parseParam(sParam);
- SwitchURL();
-}
-
-function IsWndReady()
-{
- if(gaProj[0].nLoadState==0)
- {
- var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);
- gaProj[0].nLoadState=1;
- setTimeout("loadFail("+0+");",3000);
- loadDataCsh(sCshFile);
- gbLoadWnd=true;
- return false;
- }
- else
- return true;
-}
-
-function SwitchURL()
-{
- if(gbURLReady)
- {
- var sURL="";
- var oWnd=null;
- if(gsTopicURL)
- {
- sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;
- oWnd=goWnd;
- }
- else
- {
- if(gnCommand!=-1)
- sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;
- else
- sURL=_getPath(document.location.href)+gHomePage;
- oWnd=goFullWnd;
- }
- if(gsWindow)
- {
- if(!IsWndReady())
- return false;
- if(gaProj[gnCurProj].aWnd)
- {
- var aWnd=gaProj[gnCurProj].aWnd;
- var bFound=false;
- for(var i=0;i<aWnd.length;i++)
- {
- if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())
- {
- oWnd=aWnd[i];
- bFound=true;
- break;
- }
- }
- if(!bFound&&gnCurProj!=0)
- {
- var aWnd=gaProj[0].aWnd;
- for(var j=0;j<aWnd.length;j++)
- {
- if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())
- {
- oWnd=aWnd[j];
- break;
- }
- }
- }
- }
- }
-
- if(sURL&&oWnd)
- {
- strURLOpt="";
- if(oWnd.sCaption)
- strURLOpt+=">>cap="+oWnd.sCaption;
- if(oWnd.nPanes==1)
- strURLOpt+=">>pan="+oWnd.nPanes;
- else if(oWnd.nPanes==2)
- {
- strURLOpt+=">>pan="+oWnd.nPanes;
- if(oWnd.nPOptions)
- strURLOpt+=">>pot="+oWnd.nPOptions;
- if(oWnd.sPButtons)
- strURLOpt+=">>pbs="+oWnd.sPButtons;
- if(oWnd.sPDefBtn)
- strURLOpt+=">>pdb="+oWnd.sPDefBtn;
- }
- if(strURLOpt)
- {
- if(sURL.indexOf("#")==-1)
- sURL+="#";
- sURL+=strURLOpt;
- }
- if(gsJava=="false")
- {
- var strOpt=getBrowserOptionString(oWnd);
- var sNewName=convertWindowName(oWnd.sName);
- if(gbNav4)
- {
- if (gbNav6)
- {
- gsURL = sURL;
- goNewWnd=window.open("about:blank",sNewName,strOpt);
- setTimeout("postWindowNSOpen();",100);
- }
- else
- {
- window.open("about:blank",sNewName,strOpt);
- var oNewWnd=window.open(sURL,sNewName);
- window.close();
- oNewWnd.focus();
- }
- }
- else
- {
- if(gbIE5)
- {
- window.open("about:blank",sNewName,strOpt);
- goNewWnd=window.open(sURL,sNewName);
- }
- else
- {
- gsURL = sURL; // IE4 had hard time to handle bookmark.
- goNewWnd=window.open("about:blank",sNewName,strOpt);
- }
- setTimeout("postWindowOpen();",100);
- }
- }
- else
- document.location=sURL;
- }
- }
-}
-
-function convertWindowName(strName)
-{
- var strNewName = strName;
- var strResultName = "";
- var re=new RegExp("_","g");
- strNewName = strName.replace(re,"__");
- for (var i=0;i<strNewName.length;i++)
- if (!(strNewName[i] == '_' ||
- (strNewName[i] <= '9' && strNewName[i] >= '0') ||
- (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||
- (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))
- {
- strResultName += "_" + strNewName.charCodeAt(i);
- }
- else
- strResultName += strNewName[i];
- return strResultName;
-}
-
-function postWindowNSOpen()
-{
- if(goNewWnd)
- {
- if (gsURL)
- goNewWnd.document.location.href=gsURL;
- window.close();
- goNewWnd.focus();
- }
-}
-
-function postWindowOpen()
-{
- if(goNewWnd)
- {
- if (gsURL&&!gbIE5&&gbIE4)
- goNewWnd.document.location.href=gsURL;
- goNewWnd.focus();
- }
-}
-
-function parseParam(sParam)
-{
- if(sParam)
- {
- var nBPos=0;
- do
- {
- var nPos=sParam.indexOf(">>",nBPos);
- if(nPos!=-1)
- {
- if(nPos>0)
- {
- var sPart=sParam.substring(nBPos,nPos);
- parsePart(sPart);
- }
- nBPos=nPos+2;
- }
- else
- {
- var sPart=sParam.substring(nBPos);
- parsePart(sPart);
- break;
- }
- }while(nBPos<sParam.length);
- }
-}
-
-function parsePart(sPart)
-{
- if(sPart.toLowerCase().indexOf("id=")==0)
- {
- fetchURLById(sPart.substring(3));
- gbURLReady=false;
- }
- else if(sPart.toLowerCase().indexOf("str=")==0)
- {
- fetchURLByStr(sPart.substring(4));
- gbURLReady=false;
- }
- else if(sPart.toLowerCase().indexOf("url=")==0)
- {
- gsTopicURL=sPart.substring(4);
- gbURLReady=true;
- }
- else if(sPart.toLowerCase().indexOf("cmd=")==0)
- {
- var sCmd=sPart.substring(4);
- if(sCmd.toLowerCase()=="toc")
- {
- gnCommand=CMD_SHOWTOC;
- }
- else if(sCmd.toLowerCase()=="idx")
- {
- gnCommand=CMD_SHOWINDEX;
- }
- else if(sCmd.toLowerCase()=="fts")
- {
- gnCommand=CMD_SHOWSEARCH;
- }
- else if(sCmd.toLowerCase()=="glo")
- {
- gnCommand=CMD_SHOWGLOSSARY;
- }
- else if(sCmd.toLowerCase()=="none")
- {
- gnCommand=CMD_SHOWNONE;
- }
- gbURLReady=true;
- }
- else if(sPart.toLowerCase().indexOf("wnd=")==0)
- {
- gsWindow=_browserStringToText(sPart.substring(4));
- }
- else if(sPart.toLowerCase().indexOf("java=")==0)
- {
- gsJava=sPart.substring(5);
- }
-}
-
-function fetchURLById(sId)
-{
- var nId=parseInt(sId);
- gsTopicURL="";
- fetchURL("",nId,false);
-}
-
-function fetchURLByStr(sStr)
-{
- gsTopicURL="";
- fetchURL(sStr,0,true);
-}
-
-function fetchURL(sStr,nId,bUseStr)
-{
- var bNeedLoad=false;
- var bFound=false;
- for(var i=0;i<gaProj.length;i++)
- {
- if(gaProj[i].nLoadState==3)
- {
- if(gaProj[i].aCsh)
- {
- for(var j=0;j<gaProj[i].aCsh.length;j++)
- {
- var sTopicURL="";
- if(bUseStr)
- {
- if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())
- sTopicURL=gaProj[i].aCsh[j].strUrl;
- }
- else
- {
- if(gaProj[i].aCsh[j].nTopicNum==nId)
- sTopicURL=gaProj[i].aCsh[j].strUrl;
- }
- if(sTopicURL)
- {
- if(i!=0)
- {
- gnCurProj=i;
- if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)
- {
- var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);
- gsTopicURL=sRelPath+sTopicURL;
- }
- else
- gsTopicURL=gaProj[i].sProjPath+sTopicURL;
- }
- else
- gsTopicURL=sTopicURL;
- bFound=true;
- break;
- }
- }
- }
-
- }
- else if(gaProj[i].nLoadState==0)
- {
- gsStr=sStr;
- gnId=nId;
- gbUseStr=bUseStr;
- var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);
- gaProj[i].nLoadState=1;
- setTimeout("loadFail("+i+");",3000);
- loadDataCsh(sCshFile);
- bNeedLoad=true;
- }
- if(bFound||bNeedLoad)
- break;
- }
- if(!bNeedLoad)
- {
- gbURLReady=true;
- SwitchURL();
- }
-}
-
-function loadDataCsh(sFile)
-{
- if(gbIE4||gbNav61)
- loadData(sFile);
- else
- {
- window.frames[0].location=sFile;
- }
-}
-
-function loadFail(nProj)
-{
- if(gaProj[nProj].nLoadState==1)
- {
- gaProj[nProj].nLoadState=2;
- if(!gbLoadWnd)
- fetchURL(gsStr,gnId,gbUseStr);
- else
- SwitchURL();
- }
-}
-
-function putCshData(strProj,aCsh,aWnd,aRmtProj)
-{
- if(strProj)
- {
- strProj=_replaceSlash(strProj);
- if(strProj.lastIndexOf("/")!=strProj.length-1)
- strProj+="/";
- for(var i=0;i<gaProj.length;i++)
- {
- if(gaProj[i].sProjPath)
- {
- if(isSamePath(gaProj[i].sProjPath,strProj))
- {
- gaProj[i].nLoadState=3;
- gaProj[i].aCsh=aCsh;
- gaProj[i].aWnd=aWnd;
- break;
- }
- }
- }
- if(aRmtProj&&aRmtProj.length)
- {
- for(var j=0;j<aRmtProj.length;j++)
- {
- var strRPath=_getFullPath(strProj,aRmtProj[j]);
- var bFound=false;
- for (var k=0;k<gaProj.length;k++)
- {
- if(gaProj[k].sProjPath)
- {
- if(isSamePath(gaProj[k].sProjPath,strRPath))
- {
- bFound=true;
- break;
- }
- }
- }
- if(!bFound)
- {
- var len=gaProj.length;
- gaProj[len]=new Object();
- gaProj[len].sProjPath=strRPath;
- gaProj[len].nLoadState=0;
- }
- }
- }
- if(!gbLoadWnd)
- fetchURL(gsStr,gnId,gbUseStr);
- else
- SwitchURL();
-
- }
-}
-
-function isSamePath(strPath1,strPath2)
-{
- return strPath1.toLowerCase()==strPath2.toLowerCase();
-}
-
-function getRelHomePage(strLocation)
-{
- var strCurPPath=_getPath(strLocation);
- var strOriPPath=_getPath(getHomePage());
- var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);
- var strURL=getHomePage()+"#"+strRelPath;
- return strURL;
-}
-
-function getHomePage()
-{
- var strHomePage;
- var strTmp=location.toString();
- var nPos=strTmp.indexOf("#");
- if(nPos!=-1)
- {
- strHomePage=strTmp.substring(0,nPos);
- }
- else
- {
- strHomePage=strTmp;
- }
- return strHomePage;
-}
-
-function getBrowserOptionString(oWnd)
-{
- var strOpts="";
- if(oWnd.bUseDefault)
- return strOpts;
- if(oWnd.nBOptions&RHWO_LOCATION)
- strOpts+="location=yes";
- else
- strOpts+="location=no";
- if(oWnd.nBOptions&RHWO_TOOLBAR)
- strOpts+=",toolbar=yes";
- else
- strOpts+=",toolbar=no";
- if(oWnd.nBOptions&RHWO_MENUBAR)
- strOpts+=",menubar=yes";
- else
- strOpts+=",menubar=no";
- if(oWnd.nBOptions&RHWO_STATUS)
- strOpts+=",status=yes";
- else
- strOpts+=",status=no";
- if(oWnd.nBOptions&RHWO_SCROLLBARS)
- strOpts+=",scrollbars=yes";
- else
- strOpts+=",scrollbars=no";
- if(oWnd.nBOptions&RHWO_RESIZABLE)
- strOpts+=",resizable=yes";
- else
- strOpts+=",resizable=no";
- if(oWnd.sBTop)
- {
- var nTop=getSValue(oWnd.sBTop,screen.height);
- strOpts+=",top="+nTop;
- strOpts+=",screenY="+nTop;
- }
- if(oWnd.sBLeft)
- {
- var nLeft=getSValue(oWnd.sBLeft,screen.width);
- strOpts+=",left="+nLeft;
- strOpts+=",screenX="+nLeft;
- }
- if(oWnd.sBWidth)
- {
- var nWidth=getSValue(oWnd.sBWidth,screen.width);
- strOpts+=",width="+nWidth;
- strOpts+=",outerWidth="+nWidth;
- }
- if(oWnd.sBHeight)
- {
- var nHeight=getSValue(oWnd.sBHeight,screen.height);
- strOpts+=",height="+nHeight;
- strOpts+=",outerHeight="+nHeight;
- }
- return strOpts;
-}
-
-function getSValue(sValue,nLength)
-{
- var nValue=0;
- var nPos=sValue.indexOf("%");
- if(nPos!=-1)
- {
- if(nPos>0)
- {
- var nPart=parseInt(sValue.substring(0,nPos));
- nValue=nLength*nPart/100;
- }
- }
- else
- nValue=parseInt(sValue);
- return nValue;
-}
-
-
-window.onload=window_OnLoad;
-
-function window_OnLoad()
-{
- if(document.location.hash.length>0)
- {
- showCSH(document.location.hash.substring(1));
- }
-
- if(gsJava=="false")
- window.moveTo(screen.width,screen.height);
-}
-//-->
-</script>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body>
-<script language="javascript1.2" src="whver.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="JavaScript">
-<!--
-var gaCsh=new Array();
-
-var gaWindow=new Array();
-
-var gaRmtProj=new Array();
-
-var gsProjPath=_getPath(document.location.href);
-
-function CshEntityItem(strAliasId,nTopicNum,strUrl)
-{
- this.strAliasId=strAliasId;
- this.nTopicNum=nTopicNum;
- this.strUrl=strUrl;
-}
-
-function CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)
-{
- this.sName=sWName;
- this.bUseDefault=bBUseDefault;
- if(!this.bUseDefault)
- {
- this.nBOptions=nWBOptions;
- this.sBLeft=sWBLeft;
- this.sBTop=sWBTop;
- this.sBWidth=sWBWidth;
- this.sBHeight=sWBHeight;
- }
- this.sCaption=sWCaption;
- this.nPanes=nWPanes;
- if(this.nPanes==2)
- {
- this.nPOptions=nWPOptions;
- this.sPButtons=sWPButtons;
- this.sPDefBtn=sWPDefBtn;
- }
-}
-
-function addRemoteProject(sPath)
-{
- if(sPath.length!=0)
- {
- if(sPath.lastIndexOf("/")!=sPath.length-1)
- sPath+="/";
- gaRmtProj[gaRmtProj.length]=sPath;
- }
-}
-
-//Set Context-sensitive help entity...
-function SetCsh(n,strAliasId,nTopicNum,strUrl)
-{
- gaCsh[n]=new CshEntityItem(strAliasId,nTopicNum,strUrl);
-}
-
-function addWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)
-{
- gaWindow[gaWindow.length]=new CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn);
-}
-
-
-
-
-
-window.onload=window_OnLoad;
-
-function window_OnLoad()
-{
- if(parent&&parent!=this&&parent.putCshData)
- {
- parent.putCshData(gsProjPath,gaCsh,gaWindow,gaRmtProj);
- }
-}
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Navigator Pane</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body border=0 topmargin=0 bottommargin=0 rightmargin=0 leftmargin=0 scroll=no>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whphost.js"></script>
-<script language="javascript1.2">
-<!--
-var gsNavReDirect="whgdata/whnvp30.htm";
-var gbReDirectThis=false;
- var bPreferXML = false;
- var strProjectFileXML = "whproj.xml";
- var strProjectFileHTM = "whproj.htm";
-if(window.gbWhPHost)
-{
- addProject(bPreferXML, strProjectFileXML, strProjectFileHTM);
- addPane("toc","whtdhtml.htm");
- addPane("fts","whfdhtml.htm");
- addPane("glo","whgdhtml.htm");
- setShowPane("toc");
-
-}
-else
- document.location.reload();
-
-if (window.gbNav6)
-{
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);
- SendMessage(oMsg);
-}
-
-//-->
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Navigation Pane</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-</head>
-<frameset rows="30, *" border="0" frameborder="0">
- <frame name="navtabs" title="tab selection frame" src="whd_tabs.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>
- <frame name="navpane" title="navigation frame" src="whd_dpns.htm" ></frame>
-</frameset>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>navigation pane</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2">
-<!--
-var gsInitPane="toc";
-var gsCurrentPane="";
-var gbLoading = "unknown";
-var gbTryTime = 0;
-var gbMaxTryTime = 6;
-var gbPassPhase0 = 0;
-var gbretried = 0;
-var gbmaxretry = 3;
-var gbretrytime = new Array();
-
-var origWidth = 0;
-var origHeight = 0;
-
-gbretrytime[0]= 5000;
-gbretrytime[1]= 30000;
-gbretrytime[2]= 60000;
-
-function addPane(sName, sFile)
-{
-}
-
-function setShowPane(sName)
-{
- gsInitPane=sName;
-}
-
- addPane("toc","whtdhtml.htm");
- addPane("fts","whfdhtml.htm");
- addPane("glo","whgdhtml.htm");
- setShowPane("toc");
-
-
-function window_unload()
-{
- UnRegisterListener2(this, WH_MSG_SHOWTOC);
- UnRegisterListener2(this, WH_MSG_SHOWIDX);
- UnRegisterListener2(this, WH_MSG_SHOWFTS);
- UnRegisterListener2(this, WH_MSG_SHOWGLO);
- UnRegisterListener2(this, WH_MSG_SYNCTOC);
- UnRegisterListener2(this, WH_MSG_SEARCHTHIS);
- UnRegisterListener2(this, WH_MSG_GETPANEINFO);
-}
-
-function window_OnLoad()
-{
- var bHidePane=false;
- var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);
- if (SendMessage(oMsg))
- {
- if(oMsg.oParam>0)
- {
- if(oMsg.oParam==1)
- gsInitPane="toc";
- else if(oMsg.oParam==2)
- gsInitPane="idx";
- else if(oMsg.oParam==3)
- gsInitPane="fts";
- else if(oMsg.oParam==4)
- gsInitPane="glo";
- }
- else if(oMsg.oParam==0)
- {
- bHidePane=true;
- }
- }
- if (bHidePane)
- {
- oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)
- SendMessage(oMsg);
- }
- else if (gsInitPane == "toc")
- {
- oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)
- SendMessage(oMsg);
- }
- else if (gsInitPane=="idx")
- {
- oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)
- SendMessage(oMsg);
- }
- else if (gsInitPane=="fts")
- {
- oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)
- SendMessage(oMsg);
- }
- else if (gsInitPane=="glo")
- {
- oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)
- SendMessage(oMsg);
- }
-}
-
-function CheckLoadingPhase0()
-{
- if (!gbPassPhase0) {
- setTimeout("CheckLoadingPhase0()", 1000);
- document.applets[0];
- gbPassPhase0 = 1;
- }
- else {
- CheckLoadingPhase1();
- }
-}
-
-function CheckLoadingPhase1()
-{
- if (gbNav4) {
- if ("unknown" == gbLoading && document.readystate < 4) {
- setTimeout("CheckLoadingPhase1()", 1000);
- }
- else if ("unknown" == gbLoading) {
- CheckLoadingPhase2();
- }
- }
-}
-
-function CheckLoadingPhase2()
-{
- if (gbNav4) {
- gbTryTime ++;
- if ("unknown" == gbLoading) {
- if (gbTryTime <= gbMaxTryTime )
- setTimeout("CheckLoadingPhase2()", 1000);
- else {
- if (gnVerMinor != 4.60) {
- alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");
- }
- }
- }
- }
-}
-
-function CheckAppletLoaded()
-{
- if (typeof(document.webhelp) == "undefined")
- {
- document.location.reload();
- if (gbretried < gbmaxretry)
- {
- gbretried ++;
- setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);
- }
- }
-}
-
-function reDo()
-{
- if (innerWidth != origWidth || innerHeight != origHeight)
- {
- //reloaded applet if nessary
- gbretried = 0;
-
- if (gnVerMinor == 4.60)
- {
- //reload the applet again.
- document.location.reload();
- gbretried ++;
- }
- setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);
- }
-}
-
-function onSendMessage(oMsg)
-{
- if (oMsg)
- {
- var nMsgId = oMsg.nMessageId;
- var WebHelpApplet = null;
- if (gbNav4)
- {
- WebHelpApplet = document.applets["WebHelp"];
- if (!WebHelpApplet.Command)
- document.location="whgdata/whnvp30.htm";
- }
- else
- WebHelpApplet = WebHelp;
-
- if(nMsgId==WH_MSG_GETPANEINFO)
- {
- oMsg.oParam=gsCurrentPane;
- return false;
- }
- else if (gbLoading!="unknown"||gbNav6)
- {
- if (nMsgId == WH_MSG_SHOWTOC)
- {
- gsCurrentPane="toc";
- WebHelpApplet .Command("Contents", null);
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if (nMsgId == WH_MSG_SHOWIDX)
- {
- gsCurrentPane="idx";
- WebHelpApplet .Command("Index", null);
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if (nMsgId == WH_MSG_SHOWFTS)
- {
- gsCurrentPane="fts";
- WebHelpApplet .Command("Search", null);
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if (nMsgId == WH_MSG_SHOWGLO)
- {
- gsCurrentPane="glo";
- WebHelpApplet .Command("Glossary", null);
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if (nMsgId == WH_MSG_SYNCTOC)
- {
- gsCurrentPane="toc";
- var oTopicParam = oMsg.oParam;
- if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)
- {
- var sPPath = _browserStringToText(oTopicParam.sPPath);
- var sParam = "";
- for (var i = 0; i < oTopicParam.aPaths.length; i ++)
- {
- sParam += oTopicParam.aPaths[i] + "\r\r";
- }
- WebHelpApplet.Command("SyncToc", sPPath, sParam);
- }
- }
- else if(nMsgId==WH_MSG_SEARCHTHIS)
- {
- gsCurrentPane="fts";
- WebHelpApplet .Command("Search", oMsg.oParam);
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- }
- }
- return true;
-}
-
-function getInitTocInfo()
-{
- // send message ask for the first time sync toc info.
- var oParam = new Object();
- oParam.oTocInfo = null;
- var oMsg = new whMessage(WH_MSG_GETTOCPATHS, this, 1, oParam);
- if (SendMessage(oMsg ))
- {
- var oTopicParam = oMsg.oParam.oTocInfo;
- if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)
- {
- var sPPath = _browserStringToText(oTopicParam.sPPath);
- var sParam = "";
- for (var i = 0; i < oTopicParam.aPaths.length; i ++)
- {
- sParam += oTopicParam.aPaths[i] + "\r\r";
- }
- var WebHelpApplet;
- if (gbNav4)
- WebHelpApplet = document.applets["WebHelp"];
- else
- WebHelpApplet = WebHelp;
- WebHelpApplet.Command("SyncToc", sPPath, sParam);
- }
- }
-}
-
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
-{
- RegisterListener2(this, WH_MSG_SHOWTOC);
- RegisterListener2(this, WH_MSG_SHOWIDX);
- RegisterListener2(this, WH_MSG_SHOWFTS);
- RegisterListener2(this, WH_MSG_SHOWGLO);
- RegisterListener2(this, WH_MSG_SYNCTOC);
- RegisterListener2(this, WH_MSG_SEARCHTHIS);
- RegisterListener2(this, WH_MSG_GETPANEINFO);
-
- window.onunload = window_unload;
- window.onload=window_OnLoad;
- window.onerror = null;
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));
-
- if (gbNav4 && !gbNav6 && gbWindows) {
- setTimeout("CheckLoadingPhase0()", 1000);
- }
-
- if (gbNav4)
- {
- origWidth = innerWidth;
- origHeight = innerHeight;
- onresize = reDo;
- }
-}
-else
- document.location.reload();
-
-if (window.gbNav6)
-{
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);
- SendMessage(oMsg);
-}
-
-//-->
-</script>
-</head>
-<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" bgcolor="c0c0c0">
-<applet code=WebHelp.class name=WebHelp archive=webhelp.jar width=100% height=100% MAYSCRIPT hspace=0 vspace=0>
-<PARAM name=ProjectFile value=whproj.xml><PARAM name=ResourceFile value=whres.xml>
-<PARAM name=Frame value=bsscright>
-<PARAM name=cabbase value=webhelp.cab>
-</applet>
-</body>
-</html>
+++ /dev/null
-<HTML>
-<HEAD>
-<TITLE>WebHelp Tabs Frame in Navigation Pane</TITLE>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<!-- WebHelp version 5.10 -->
-</HEAD>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2">
-<!--
-var gsBgColor="#c0c0c0"
-var gsBgImage="";
-var gnCurPane=0;
-var gsFirstPane="";
-var goTocFont=null;
-var goIdxFont=null;
-var goFtsFont=null;
-var goGloFont=null;
-var gPane=new Array();
-var gShowFirst=0;
-var gnTabType=0;
-
-function window_unload()
-{
- UnRegisterListener2(this,WH_MSG_SHOWTOC);
- UnRegisterListener2(this,WH_MSG_SHOWIDX);
- UnRegisterListener2(this,WH_MSG_SHOWFTS);
- UnRegisterListener2(this,WH_MSG_SHOWGLO);
-}
-
-
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Toc") goTocFont=vFont;
- else if(sType=="Idx") goIdxFont=vFont;
- else if(sType=="Fts") goFtsFont=vFont;
- else if(sType=="Glo") goGloFont=vFont;
-}
-
-function TocWriteClassStyle()
-{
- var sStyle="<STYLE TYPE='text/css'>";
- sStyle+=".TextTabToc {"+getFontStyle(goTocFont)+"}";
- sStyle+=".TextTabIdx {"+getFontStyle(goIdxFont)+"}";
- sStyle+=".TextTabFts {"+getFontStyle(goFtsFont)+"}";
- sStyle+=".TextTabGlo {"+getFontStyle(goGloFont)+"}";
- sStyle+="A:hover {text-decoration:underline;}";
- sStyle+="</STYLE>";
- document.write(sStyle);
-}
-
-function setBackgroundcolor(sBgColor)
-{
- if(sBgColor!=null&&sBgColor.length>0)
- gsBgColor=sBgColor;
-}
-
-function setBackground(sBgImage)
-{
- if(sBgImage!=null&&sBgImage.length>0)
- gsBgImage=sBgImage;
-}
-
-function selectToc()
-{
- var oMessage=new whMessage(WH_MSG_SHOWTOC,this,1,null);
- SendMessage(oMessage);
-}
-
-function selectIdx()
-{
- var oMessage=new whMessage(WH_MSG_SHOWIDX,this,1,null);
- SendMessage(oMessage);
-}
-function selectFts()
-{
- var oMessage=new whMessage(WH_MSG_SHOWFTS,this,1,null);
- SendMessage(oMessage);
-}
-
-function selectGlo()
-{
- var oMessage=new whMessage(WH_MSG_SHOWGLO,this,1,null);
- SendMessage(oMessage);
-}
-
-
-function onSendMessage(oMsg)
-{
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SHOWTOC)
- {
- setTimeout("showTabByName(\"toc\");",1);
- }
- else if(nMsgId==WH_MSG_SHOWIDX)
- {
- setTimeout("showTabByName(\"idx\");",1);
- }
- else if(nMsgId==WH_MSG_SHOWFTS)
- {
- setTimeout("showTabByName(\"fts\");",1);
- }
- else if(nMsgId==WH_MSG_SHOWGLO)
- {
- setTimeout("showTabByName(\"glo\");",1);
- }
- }
- return true;
-}
-
-function showTabByName(sTabName)
-{
- for(var i=0;i<gPane.length;i++)
- {
- if(gPane[i]==sTabName)
- {
- showTab(i);
- break;
- }
- }
-}
-
-function showTab(n)
-{
- gnCurPane=n;
- if(gnTabType==0)
- {
- if(n<gPane.length)
- {
- if(document.images["TocTab"]&&document.images["TocTab"]!=null){
- if(gPane[n]=="toc")
- document.images["TocTab"].src=getBtnImage("toc",1);
- else
- document.images["TocTab"].src=getBtnImage("toc",0);
- }
- if(document.images["IndexTab"]&&document.images["IndexTab"]!=null){
- if(gPane[n]=="idx")
- document.images["IndexTab"].src=getBtnImage("idx",1);
- else
- document.images["IndexTab"].src=getBtnImage("idx",0);
- }
- if(document.images["FtsTab"]&&document.images["FtsTab"]!=null){
- if(gPane[n]=="fts")
- document.images["FtsTab"].src=getBtnImage("fts",1);
- else
- document.images["FtsTab"].src=getBtnImage("fts",0);
- }
- if(document.images["GloTab"]&&document.images["GloTab"]!=null){
- if(gPane[n]=="glo")
- document.images["GloTab"].src=getBtnImage("glo",1);
- else
- document.images["GloTab"].src=getBtnImage("glo",0);
- }
- }
- }
- else if(gnTabType==1)
- {
- }
- else if(gnTabType==2)
- {
- if(n<gPane.length)
- {
- if(document.images["tabSelection"]!=null)
- document.images["tabSelection"].src=getMapImage(gPane[n]);
- }
- }
-}
-
-function addPane(sName)
-{
- gPane[gPane.length]=sName;
-}
-
-function setShowPane(sName)
-{
- if(gsFirstPane!="")
- sName=gsFirstPane;
- for(var i=0;i<gPane.length;i++)
- {
- if(gPane[i]==sName)
- gShowFirst=i;
- }
-}
-
-function selectDefaultTab()
-{
- showTab(gShowFirst);
- if(document.body)
- {
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- }
-}
-
-function getTabsHTML()
-{
- var sHTML="";
- for(var i=0;i<gPane.length;i++)
- {
- if(gnTabType==0)
- sHTML+=getTabHTML(gPane[i]);
- else if(gnTabType==1)
- {
- if(sHTML.length>0)
- {
- sHTML+=getSeparator();
- }
- sHTML+=getTabHTMLText(gPane[i]);
- }
-
- }
- return sHTML;
-}
-
-function getSeparator()
-{
- var sSep="";
-
- return sSep;
-}
-
-function getTabHTML(sTabName)
-{
- if (sTabName == "toc")
- return "<a title=\"Contents\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\" onmouseover=\"mouseOverToc();\" onmouseout=\"mouseOutToc();\"><img name=\"TocTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";
- else if (sTabName =="idx")
- return "<a title=\"Index\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\" onmouseover=\"mouseOverIdx();\" onmouseout=\"mouseOutIdx();\"><img name=\"IndexTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";
- else if (sTabName == "fts")
- return "<a title=\"Search\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\" onmouseover=\"mouseOverFts();\" onmouseout=\"mouseOutFts();\"><img name=\"FtsTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";
- else if (sTabName == "glo")
- return "<a title=\"Glossary\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\"onmouseover=\"mouseOverGlo();\" onmouseout=\"mouseOutGlo();\"><img name=\"GloTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";
- return "";
-}
-
-function mouseOverToc()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "toc")
- {
- sImg = getBtnImage("toc", 3);
- }
- else
- {
- sImg = getBtnImage("toc", 2);
- }
- if (sImg.length > 0)
- document.images["TocTab"].src = sImg;
-}
-
-function mouseOverIdx()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "idx")
- {
- sImg = getBtnImage("idx", 3);
- }
- else
- {
- sImg = getBtnImage("idx", 2);
- }
- if (sImg.length > 0)
- document.images["IndexTab"].src = sImg;
-}
-
-function mouseOverFts()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "fts")
- {
- sImg = getBtnImage("fts", 3);
- }
- else
- {
- sImg = getBtnImage("fts", 2);
- }
- if (sImg.length > 0)
- document.images["FtsTab"].src = sImg;
-}
-
-function mouseOverGlo()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "glo")
- {
- sImg = getBtnImage("glo", 3);
- }
- else
- {
- sImg = getBtnImage("glo", 2);
- }
- if (sImg.length > 0)
- document.images["GloTab"].src = sImg;
-}
-
-function mouseOutToc()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "toc")
- {
- sImg = getBtnImage("toc", 1);
- }
- else
- {
- sImg = getBtnImage("toc", 0);
- }
- if (sImg.length > 0)
- document.images["TocTab"].src = sImg;
-}
-
-function mouseOutIdx()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "idx")
- {
- sImg = getBtnImage("idx", 1);
- }
- else
- {
- sImg = getBtnImage("idx", 0);
- }
- if (sImg.length > 0)
- document.images["IndexTab"].src = sImg;
-}
-
-function mouseOutFts()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "fts")
- {
- sImg = getBtnImage("fts", 1);
- }
- else
- {
- sImg = getBtnImage("fts", 0);
- }
- if (sImg.length > 0)
- document.images["FtsTab"].src = sImg;
-}
-
-function mouseOutGlo()
-{
- var sImg = "";
- if (gPane[gnCurPane] == "glo")
- {
- sImg = getBtnImage("glo", 1);
- }
- else
- {
- sImg = getBtnImage("glo", 0);
- }
- if (sImg.length > 0)
- document.images["GloTab"].src = sImg;
-}
-
-function getTabHTMLText(sTabName)
-{
- if (sTabName == "toc")
- return "<a class=\"TextTabToc\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">Contents</a> ";
- else if (sTabName =="idx")
- return "<a class=\"TextTabIdx\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">Index</a> ";
- else if (sTabName == "fts")
- return "<a class=\"TextTabFts\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">Search</a> ";
- else if (sTabName == "glo")
- return "<a class=\"TextTabGlo\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">Glossary</a> ";
- return "";
-}
-
-function getImageMap()
-{
- var sHTML = "<map name=\"tabSelectionMap\">";
- for (var i = 0; i < gPane.length; i ++)
- {
- sHTML += getMapArea(gPane[i]);
- }
- sHTML += "</map>";
- return sHTML;
-}
-
-function getMapArea(sTabName)
-{
- if (sTabName == "toc")
- return "<area title=\"Contents\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">";
- else if (sTabName =="idx")
- return "<area title=\"Index\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">";
- else if (sTabName == "fts")
- return "<area title=\"Search\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">";
- else if (sTabName == "glo")
- return "<area title=\"Glossary\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">";
- return "";
-}
-
-function getBtnImage(sTabName, nStatus)
-{
- if (sTabName == "toc")
- {
- if (nStatus == 0)
- return "whd_tab2.gif";
- else if (nStatus == 1)
- return "whd_tab1.gif";
- else if (nStatus == 2)
- return "";
- else if (nStatus == 3)
- return "";
- }
- else if (sTabName =="idx")
- {
- if (nStatus == 0)
- return "whd_tab4.gif";
- else if (nStatus == 1)
- return "whd_tab3.gif";
- else if (nStatus == 2)
- return "";
- else if (nStatus == 3)
- return "";
- }
- else if (sTabName == "fts")
- {
- if (nStatus == 0)
- return "whd_tab6.gif";
- else if (nStatus == 1)
- return "whd_tab5.gif";
- else if (nStatus == 2)
- return "";
- else if (nStatus == 3)
- return "";
- }
- else if (sTabName == "glo")
- {
- if (nStatus == 0)
- return "whd_tab8.gif";
- else if (nStatus == 1)
- return "whd_tab7.gif";
- else if (nStatus == 2)
- return "";
- else if (nStatus == 3)
- return "";
- }
- return "";
-}
-
-function getMapImage(sTabName)
-{
- if (sTabName == "toc")
- return "";
- else if (sTabName =="idx")
- return "";
- else if (sTabName == "fts")
- return "";
- else if (sTabName == "glo")
- return "";
- return "";
-}
-
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
-{
- window.onload = selectDefaultTab;
- RegisterListener2(this, WH_MSG_SHOWTOC);
- RegisterListener2(this, WH_MSG_SHOWIDX);
- RegisterListener2(this, WH_MSG_SHOWFTS);
- RegisterListener2(this, WH_MSG_SHOWGLO);
- window.onunload = window_unload;
- goTocFont=new whFont("Arial","9pt","#000000","normal","normal","none");
- goIdxFont=new whFont("Arial","9pt","#000000","normal","normal","none");
- goFtsFont=new whFont("Arial","9pt","#000000","normal","normal","none");
- goGloFont=new whFont("Arial","9pt","#000000","normal","normal","none");
-
- if (navigator.currentNavPen)
- gsFirstPane = navigator.currentNavPen;
-
- setBackgroundcolor("");
- setBackground("whd_tab0.gif");
-
-
-
-
- addPane("toc","whtdhtml.htm");
- addPane("fts","whfdhtml.htm");
- addPane("glo","whgdhtml.htm");
- setShowPane("toc");
-
-
- gnTabType = 0; // 0 button. // 1 text. // 2 image mapping.
- TocWriteClassStyle();
- var sHTML = "<body scroll=\"no\" bgcolor=\"#c0c0c0\" background=\"whd_tab0.gif\" style=\"margin-top:0;margin-bottom:0;margin-left:0;margin-right:0\">";
- if (gPane.length > 0)
- {
- if (gnTabType == 0 || gnTabType == 1)
- {
- sHTML += "<table width=\"100%\">";
- sHTML += "<tr>";
- sHTML += "<td>";
- sHTML += "<nobr>";
- sHTML += getTabsHTML();
- sHTML += "</nobr></td></tr>";
- sHTML += " <tr><td height=\"2\"></td></tr>";
- sHTML += "</table>";
- }
- else if (gnTabType == 2)
- {
- sHTML += getImageMap();
- sHTML +="<img name=\"tabSelection\" src=\"" + getMapImage(gPane[0]) + "\" x-maintain-ratio=\"true\" usemap=\"#tabSelectionMap\"";
- if (gbIE)
- sHTML +=" style=\"border: none; width:px; height:px; float: none;\"";
- sHTML +=" width=\"\" height=\"\" border=\"0\">";
- }
- }
- sHTML += "</body>";
- document.write(sHTML);
-}
-else
- document.location.reload();
-
-if (window.gbNav6)
-{
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);
- SendMessage(oMsg);
-}
-//-->
-</script>
-</HTML>
\ No newline at end of file
+++ /dev/null
-<?xml version='1.0' encoding='ISO-8859-1' ?>
-<topictemplate>
- <topic type="normal">
- <add tag="head" pos="endbefore" >
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_PROXY_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\">
-<!--
-if (window.gbWhTopic)
-{
- if (window.setRelStartPage)
- {
- ";
- OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");
- OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");
- OutputInTopicNavBarDataButtons("addButton(\"%s\",%s, \"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%d,%d);\r\n");
- "
- }
-
-
- if (window.setRelStartPage)
- {
- ";
- OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");
- OutputInTopicNavBarDataWebSearch.href("addSearchFormHref(\"%s\");\r\n");
- "
- autoSync(";WH_USER_OPTIONS.autosync_toc;");
- sendSyncInfo();
- sendAveInfoOut();
- }
-
-}
-else
- if (window.gbIE4)
- document.location.reload();
-//-->
-</script>
-"]]>
- </add>
- <add tag="body" pos="beginafter">
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(";WH_WEBSKIN.topic.bar.top.pos;");
-//-->
-</script>"]]>
- </add>
- <add tag="body" pos="endbefore">
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(";WH_WEBSKIN.topic.bar.bottom.pos;");
-//-->
-</script>";
-OutputInTopicNavBarDataWebSearch.form();]]>
- </add>
- </topic>
- <topic type="frameset">
- <add tag="head" pos="endbefore" >
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_FRAMESET_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>
-<script type=\"text/javascript\" language=\"javascript1.2\">
-<!--
-if (window.setRelStartPage)
-{
-";
- OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");
- OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");
- OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");
-"
-if (window.autoSync)
- autoSync(1);
-}
-//-->
-</script>
-"]]>
- </add>
- </topic>
-</topictemplate>
+++ /dev/null
-<html>
-<head>
-<title>Search Result</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<base target="bsscright">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whlang.js"></script>
-<script language="javascript1.2" src="whfhost.js"></script>
-<script language="javascript1.2">
-<!--
-if(window.gbWhFHost)
-{
-
-
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
- setFont("Error", "Arial","9pt","#000000","normal","normal","none");
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");
- setActiveBgColor("#cccccc");
- setMargin("0pt");
- setIndent("9pt");
- FtsWriteClassStyle();
-}
-else
- document.location.reload();
-//-->
-</script>
-</head>
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">
-</body>
-</html>
-
+++ /dev/null
-<html>
-<head>
-<title>Search Frame</TITLE>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script LANGUAGE="javascript1.2">
-<!--
-var gbIndexLayerInit = false;
-var strWrite="";
-if (window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)
-{
- if (gbMac)
- strWrite="<FRAMESET ROWS='45,100%' framespacing=0 frameborder=1>";
- else
- strWrite="<FRAMESET ROWS='60,100%' framespacing=0 frameborder=1>";
- strWrite +="<FRAME SRC='whfform.htm' title='search form frame' name='ftsform' noresize='yes' scrolling='no'>";
- strWrite +="<FRAME SRC='whfbody.htm' title='search result frame' name='ftsbody' scrolling='yes'>";
- strWrite +="</FRAMESET>";
- document.write(strWrite);
-}
-else
- document.location.reload();
-//-->
-</script>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Search Form</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<style>
-<!--
-body {margin:0;}
--->
-</style>
-<body bgcolor="#c0c0c0">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whform.js"></script>
-<script language="javascript1.2">
-<!--
-var gstrInput = "";
-function ftsLookup(bCR)
-{
- if (bCR)
- {
- var strInput = document.FtsInputForm.keywordField.value.toUpperCase();
- if (strInput != "") {
- var oMsg = new whMessage(WH_MSG_SEARCHFTSKEY, this, 1, strInput);
- if (!SendMessage(oMsg))
- {
- gstrInput = strInput;
- }
- else
- gstrInput = "";
- }
-
- if (gbMac) {
- document.FtsInputForm.keywordField.focus();
- }
- }
- return;
-}
-
-function beforeInit()
-{
- var oParam = new Object();
- oParam.sValue = "";
- var oMsg = new whMessage(WH_MSG_GETSEARCHS, this, 1, oParam);
- if (SendMessage(oMsg))
- {
- if (oParam.sValue != "" && oParam.sValue != "- Search -")
- {
- document.FtsInputForm.keywordField.value = oParam.sValue;
- gfunLookUp(true);
- }
- }
- init();
-}
-
-function window_unload()
-{
- UnRegisterListener2(this, WH_MSG_SHOWTOC);
- UnRegisterListener2(this, WH_MSG_SHOWIDX);
- UnRegisterListener2(this, WH_MSG_SHOWFTS);
- UnRegisterListener2(this, WH_MSG_SHOWGLO);
- UnRegisterListener2(this, WH_MSG_SEARCHTHIS);
- UnRegisterListener2(this, WH_MSG_BACKUPSEARCH);
-}
-
-function onSendMessage(oMsg)
-{
- if (oMsg.nMessageId == WH_MSG_SHOWFTS)
- {
- document.FtsInputForm.keywordField.focus();
- }
- else if (oMsg.nMessageId == WH_MSG_SHOWIDX ||
- oMsg.nMessageId == WH_MSG_SHOWTOC ||
- oMsg.nMessageId == WH_MSG_SHOWGLO)
- {
- document.FtsInputForm.keywordField.blur();
- }
- else if (oMsg.nMessageId == WH_MSG_SEARCHTHIS)
- {
- if (oMsg.oParam != "- Search -")
- {
- document.FtsInputForm.keywordField.value = oMsg.oParam;
- gfunLookUp(true);
- }
- }
- else if (oMsg.nMessageId == WH_MSG_BACKUPSEARCH)
- {
- if (gstrInput)
- {
- oMsg.oParam = gstrInput;
- gstrInput = "";
- return false;
- }
- }
- return true;
-}
-
-if (window.gbWhForm)
-{
- RegisterListener2(this, WH_MSG_SHOWTOC);
- RegisterListener2(this, WH_MSG_SHOWIDX);
- RegisterListener2(this, WH_MSG_SHOWFTS);
- RegisterListener2(this, WH_MSG_SHOWGLO);
- RegisterListener2(this, WH_MSG_SEARCHTHIS);
- RegisterListener2(this, WH_MSG_BACKUPSEARCH);
- gfunLookUp = ftsLookup;
- gfunInit = null;
- gstrFormName = "FtsInputForm"
- gsTitle = "Type in the word(s) to search for:";
- gsTitle = "Type in the word(s) to search for:";
- setGoImage1("");
-
-
-
-
-
-
- setGoText("Go");
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");
-
-
- document.write(getFormHTML());
- writeFormStyle();
- window.onload = beforeInit;
- window.onunload=window_unload;
-}
-else
- document.location.reload();
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-// WebHelp 5.10.003
-var gsSK2=null;
-var gsSK=null;
-var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";
-var gnCLF=0;
-var gsHelpCannotSearch="Cannot search for that phrase.";
-var gsNoTopics="No Topics Found.";
-var gsLoadingDivID="LoadingDiv";
-var gsLoadingMsg="Loading data, please wait...";
-var gsSearchMsg="Searching...";
-var gsResultDivID="ResultDiv";
-var gaaFCD=new Array();
-var gaaFTCD=new Array();
-var goCF=null;
-var goCTF=null;
-var gaTI=null;
-var gnCurrentOp=0;
-var gbNot=false;
-var gbReady=false;
-var gnLoadFts=1;
-var gnCacheLimits=5;
-var gaCCD=new Array();
-var gbXML=false;
-var gaData=new Array();
-var gsBgColor="#ffffff";
-var gsBgImage="";
-var gsMargin="0pt";
-var gsIndent="0pt";
-var gsCheckKey=null;
-var gnIndexNum=0;
-var gaFtsContentsCon=null;
-var gaTopicCheckInfo=null;
-var gnTopicCheck=0;
-var goFont=null;
-var goErrFont=null;
-var goHoverFont=null;
-var gsABgColor="#cccccc";
-var gbWhFHost=false;
-var gbFirst=false;
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Normal")
- goFont=vFont;
- else if(sType=="Error")
- goErrFont=vFont;
- else if(sType=="Hover")
- goHoverFont=vFont;
-}
-
-function setActiveBgColor(sBgColor)
-{
- gsABgColor=sBgColor;
-}
-
-function setMargin(sMargin)
-{
- gsMargin=sMargin;
-}
-
-function setIndent(sIndent)
-{
- gsIndent=sIndent;
-}
-
-function updateCache(oCF)
-{
- var len=gaCCD.length;
- if(len<gnCacheLimits*gnCLF)
- gaCCD[len]=oCF;
- else{
- gaCCD[0].aTopics=null;
- gaCCD[0].aFtsKeys=null;
- removeItemFromArray(gaCCD,0);
- gaCCD[len-1]=oCF;
- }
-}
-
-function addFtsInfo(sPPath,sDPath,sFtsFile)
-{
- gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);
-}
-
-function onLoadXMLError()
-{
- if(gnLoadFts==1)
- {
- var aFCD=new Array();
- var aFTCD=new Array();
- ftsReady(aFCD,aFTCD);
- }
- else if(gnLoadFts==3)
- {
- var aTopics=new Array();
- putFtsTData(aTopics);
- }
- else if(gnLoadFts==2)
- {
- putFtsWData(aFtsContents);
- var aFtsContents=new Array();
- }
-}
-
-function putDataXML(xmlDoc,sDocPath)
-{
- if(gnLoadFts==1)
- {
- var node=xmlDoc.lastChild;
- if(node)
- {
- var oChild=node.firstChild;
- var aFCD=new Array();
- var aFTCD=new Array();
- while(oChild)
- {
- if(oChild.nodeName=="chunkinfo")
- {
- var sURL=oChild.getAttribute("url");
- var sFirst=oChild.getAttribute("first");
- var sLast=oChild.getAttribute("last");
- if(sURL&&sFirst&&sLast)
- {
- item=new Object();
- item.sStartKey=sFirst;
- item.sEndKey=sLast;
- item.sFileName=sURL;
- aFCD[aFCD.length]=item;
- }
- }
- else if(oChild.nodeName=="tchunkinfo")
- {
- var sURL=oChild.getAttribute("url");
- var nB=parseInt(oChild.getAttribute("first"));
- var nE=parseInt(oChild.getAttribute("last"));
- if(sURL&&sFirst&&sLast)
- {
- item=new Object();
- item.nBegin=nB;
- item.nEnd=nE;
- item.sFileName=sURL;
- aFTCD[aFTCD.length]=item;
- }
-
- }
- oChild=oChild.nextSibling;
- }
- ftsReady(aFCD,aFTCD);
- }
- }
- else if(gnLoadFts==3)
- {
- var node=xmlDoc.lastChild;
- if(node)
- {
- var oChild=node.firstChild;
- var aTopics=new Array();
- while(oChild)
- {
- if(oChild.nodeName=="topic")
- {
- var name=oChild.getAttribute("name");
- var sURL=oChild.getAttribute("url");
- if(name&&name.length>0&&sURL)
- {
- var topic=new Object();
- topic.sTopicTitle=name;
- topic.sTopicURL=sURL;
- aTopics[aTopics.length]=topic;
- }
- }
- oChild=oChild.nextSibling;
- }
- putFtsTData(aTopics);
- }
- }
- else if(gnLoadFts==2)
- {
- var node=xmlDoc.lastChild;
- if(node)
- {
- var oChild=node.firstChild;
- var aFtsContents=new Array();
- while(oChild)
- {
- if(oChild.nodeName=="key")
- {
- var name=oChild.getAttribute("name");
- if(name&&name.length>0)
- {
- var item=new Object();
- item.sItemName=name;
- aFtsContents[aFtsContents.length]=item;
- var oChildChild=oChild.firstChild;
- while(oChildChild)
- {
- if(oChildChild.nodeName=="#text")
- {
- var sIDs=oChildChild.nodeValue;
- if(sIDs)
- {
- var nBPos=0;
- do
- {
- var nPos=sIDs.indexOf(",",nBPos);
- var sID=null;
- if(nPos!=-1)
- sID=sIDs.substring(nBPos,nPos);
- else
- sID=sIDs.substring(nBPos);
-
- if(sID)
- {
- var id=parseInt(sID);
- if(!isNaN(id))
- {
- if(!item.aTopics)
- item.aTopics=new Array();
- item.aTopics[item.aTopics.length]=id;
- }
- }
- nBPos=nPos+1;
- }while(nBPos!=0&&nBPos<sIDs.length);
- }
- }
- oChildChild=oChildChild.nextSibling;
- }
- }
- }
- oChild=oChild.nextSibling;
- }
- putFtsWData(aFtsContents);
- }
- }
-}
-
-function ftsInfo(sPPath,sDPath,sFtsFile)
-{
- this.sPPath=sPPath;
- this.sDPath=sDPath;
- this.sFtsFile=sFtsFile;
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- writeResultDiv();
- loadFts();
- var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)
- SendMessage(oMsg);
-}
-
-function writeResultDiv()
-{
- var sHTML="<div id=\""+gsResultDivID+"\" style=\"POSITION:absolute;\"></div>";
- document.body.insertAdjacentHTML("beforeEnd",sHTML);
-}
-
-function loadFts()
-{
- if(!gbReady)
- {
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
- if(SendMessage(oResMsg)&&oResMsg.oParam)
- {
- gbReady=true;
- var oProj=oResMsg.oParam;
- var aProj=oProj.aProj;
- gbXML=oProj.bXML;
- if(aProj.length>0)
- {
- var sLangId=aProj[0].sLangId;
- for(var i=0;i<aProj.length;i++)
- {
- if(aProj[i].sFts&&aProj[i].sLangId==sLangId)
- {
- addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);
- }
- }
- }
- loadFD();
-
- }
- }
-}
-
-function loadFD()
-{
- if(gnCLF<gaData.length)
- {
- gnLoadFts=1;
- loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);
- }
- else
- {
- var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);
- if (SendMessage(oMsg))
- {
- if (oMsg.oParam)
- {
- gsSK=oMsg.oParam.toLowerCase();
- findFTSKey();
- }
- }
- RegisterListener2(this, WH_MSG_SEARCHFTSKEY);
- }
-}
-
-function loadData2(sFile)
-{
- if(gbXML)
- loadDataXML(sFile);
- else
- loadData(sFile);
-}
-
-function findFTSKey()
-{
- gaTI=new Array();
- gnCurrentOp=1;
- gbNot=false;
- displayMsg(gsSearchMsg);
- if(gsSK!="")
- {
- gbFirst=true;
- findOneKey();
- }
-}
-
-function findOneKey()
-{
- if(gsSK && gsSK!="")
- {
- var sInput=gsSK;
- var sCW="";
- var nS=-1;
- var nSep=-1;
- for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){
- var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));
- if((nFound!=-1)&&((nS==-1)||(nFound<nS))){
- nS=nFound;
- nSep=nChar;
- }
- }
- if(nS==-1){
- sCW=sInput;
- sInput="";
- }else{
- sCW=sInput.substring(0,nS);
- sInput=sInput.substring(nS+1);
- }
-
- gsSK=sInput;
-
- if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){
- gnCurrentOp=0;
- gbNot=false;
- }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){
- gnCurrentOp=1;
- gbNot=false;
- }else if((sCW=="not")||
- ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){
- gbNot=!gbNot;
- }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){
- var sCurrentStem=GetStem(sCW);
- gsCW=sCurrentStem;
- ftsFindKeyword();
- return;
- }
- findOneKey();
- }
- else{
- displayTopics();
- checkAgain();
- }
-}
-
-function checkAgain()
-{
- gsCheckKey = "";
- gnIndexNum = 0;
- gsSK=gsSK2;
- gsSK2=null;
- if(gsSK!=null)
- setTimeout("findFTSKey();",1);
-}
-
-function displayTopics()
-{
- var sHTML="";
- var sLine="";
- for(var i=0;i<gaTI.length;i++){
- sLine+="<dt><nobr><a href='"+gaTI[i].sTopicURL+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";
- if(i>>4<<4==i)
- {
- sHTML+=sLine;
- sLine="";
- }
- }
- if(sLine.length>0)
- sHTML+=sLine;
-
- if(sHTML.length==0)
- sHTML="<P>"+gsNoTopics+"</P>"
- else
- sHTML="<dl>"+sHTML+"</dl>";
-
- var resultDiv=getElement(gsResultDivID);
- if(resultDiv)
- resultDiv.innerHTML=sHTML;
-}
-
-function displayMsg(sErrorMsg)
-{
- var sHTML="<P>"+sErrorMsg+"</P>";
-
- var resultDiv=getElement(gsResultDivID);
- if(resultDiv)
- resultDiv.innerHTML=sHTML;
-}
-
-function ftsFindKeyword()
-{
- var sKey=gsCW;
- var bNeedLoad=false;
- var aFtsContentsCon=null;
- var s=0;
- if(sKey==null) return;
- if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)
- {
- aFtsContentsCon=new Array();
- gnCheck=0;
- gsCheckKey=sKey;
- gnTopicCheck=0;
- gaTopicCheckInfo=null;
- }
- else{
- s=gnIndexNum;
- aFtsContentsCon=gaFtsContentsCon;
- }
- for(var i=gnCheck;i<gaaFCD.length;i++)
- {
- var oCF=getChunkedFts(i,sKey);
- if(oCF)
- {
- if(!oCF.aFtsKeys&&oCF.sFileName!=null)
- {
- bNeedLoad=true;
- oCF.nProjId=i;
- goCF=oCF;
- gnIndexNum=s;
- gnCheck=i;
- gaFtsContentsCon=aFtsContentsCon;
- gnLoadFts=2;
- beginLoading();
- loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);
- break;
- }
- else{
- aFtsContentsCon[s++]=oCF;
- }
- }
- }
- if(!bNeedLoad)
- {
- var aTI=gaTopicCheckInfo;
- for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)
- {
- var aTIPart=getTopics(aFtsContentsCon[m],sKey);
- if(aTIPart==null)
- {
- gnCheck=gaaFCD.length;
- gnTopicCheck=m;
- gaTopicCheckInfo=aTI;
- gaFtsContentsCon=aFtsContentsCon;
- return;
- }
- if(m==0)
- aTI=aTIPart;
- else
- aTI=mergeTopics(aTI,aTIPart);
- }
- if(mergewithPreviousResult(aTI))
- {
- gbFirst=false;
- findOneKey();
- }
- else
- checkAgain();
- }
-}
-
-function mergewithPreviousResult(aTI)
-{
- if(aTI!=null&&aTI.length!=0)
- {
- var nNumTopics=aTI.length;
- if(gnCurrentOp==0||gbFirst){
- if(gbNot){
- displayMsg(gsHelpCannotSearch);
- return false;
- }else{
- var aLS,aSS;
- if(gaTI.length>=aTI.length)
- {
- aLS=gaTI;
- aSS=aTI;
- }
- else
- {
- aLS=aTI;
- aSS=gaTI;
- }
- var s=0;
- for(var i=0;i<aSS.length;i++)
- {
- var bAlreadyThere=false;
- for(var j=s;j<aLS.length;j++)
- {
- if(aSS[i].equalTo(aLS[j]))
- {
- bAlreadyThere=true;
- s=j;
- break;
- }
- }
- if(!bAlreadyThere)
- {
- insertTopic(aLS,aSS[i]);
- }
- }
- gaTI=aLS;
- }
- }else if(gnCurrentOp==1){
- if(gbNot){
- var s=0;
- for(var i=0;i<aTI.length;i++)
- {
- for(var j=s;j<gaTI.length;j++)
- {
- if(aTI[i].equalTo(gaTI[j]))
- {
- removeItemFromArray(gaTI,j);
- s=j;
- break;
- }
- }
- }
- }else{
- var s=0;
- for(var i=0;i<gaTI.length;i++)
- {
- var bFound=false;
- for(var j=s;j<aTI.length;j++)
- {
- if(gaTI[i].equalTo(aTI[j]))
- {
- bFound=true;
- s=j;
- }
- }
- if(!bFound)
- {
- removeItemFromArray(gaTI,i);
- i--;
- }
- }
- }
- }
- }else{
- if((gnCurrentOp==1)&&(!gbNot)){
- gaTI.length=0;
- }else if((gnCurrentOp==0)&&(gbNot)){
- displayMsg(gsHelpCannotSearch);
- return false;
- }
- }
- return true;
-}
-
-function insertTopic(aTI,oTI)
-{
- var nB=0;
- var nE=aTI.length-1;
- if(nE>=0)
- {
- var nM;
- var bFound=false;
- do{
- nM=(nB+nE)>>1;
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)
- nE=nM-1;
- else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
- nB=nM+1;
- else
- {
- bFound=true;
- break;
- }
- }while(nB<=nE);
- if(bFound)
- insertItemIntoArray(aTI,nM,oTI);
- else
- {
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
- insertItemIntoArray(aTI,nM+1,oTI);
- else
- insertItemIntoArray(aTI,nM,oTI);
- }
- }
- else
- aTI[0]=oTI;
-}
-
-function mergeTopics(aTI1,aTI2)
-{
- var i1=0;
- var i2=0;
- var len1=aTI1.length;
- var len2=aTI2.length;
- var aTopicNew=new Array();
- var i=0;
- while(i1<len1||i2<len2)
- {
- if(i1<len1&&i2<len2)
- {
- if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)
- aTopicNew[i++]=aTI1[i1++];
- else
- aTopicNew[i++]=aTI2[i2++];
- }
- else if(i1<len1)
- aTopicNew[i++]=aTI1[i1++];
- else if(i2<len2)
- aTopicNew[i++]=aTI2[i2++];
- }
- return aTopicNew;
-}
-
-function getTopics(oCF,sKey)
-{
- var aTIPart=new Array();
- if(oCF&&oCF.aFtsKeys)
- {
- var keys=oCF.aFtsKeys;
- var nB=0;
- var nE=keys.length-1;
- var nM=-1;
- var bFound=false;
- do{
- nM=(nB+nE)>>1;
- if(compare(keys[nM].sItemName,sKey)>0)
- nE=nM-1;
- else if(compare(keys[nM].sItemName,sKey)<0)
- nB=nM+1;
- else{
- bFound=true;
- break;
- }
- }while(nB<=nE);
- if(bFound)
- {
- if(keys[nM].aTopics)
- {
- for(var i=0;i<keys[nM].aTopics.length;i++)
- {
- var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);
- if(oTC.aTopics)
- {
- aTIPart[aTIPart.length]=
- new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,
- gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);
- }
- else{
- goCTF=oTC;
- gnLoadFts=3;
- beginLoading();
- loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);
- return null;
- }
- }
- }
- }
- }
- return aTIPart;
-}
-
-function getTopicChunk(aFTCD,nTopicId)
-{
- if(aFTCD&&aFTCD.length)
- {
- var nB=0;
- var nE=aFTCD.length-1;
- var nM=-1;
- var bFound=false;
- do{
- nM=(nB+nE)>>1;
- if(aFTCD[nM].nBegin>nTopicId)
- nE=nM-1;
- else if(aFTCD[nM].nEnd<nTopicId)
- nB=nM+1;
- else{
- bFound=true;
- break;
- }
- }while(nB<=nE);
- if(bFound)
- return aFTCD[nM];
- }
- return null;
-}
-
-function endLoading()
-{
- var oDiv=getElement(gsLoadingDivID);
- if(oDiv)
- oDiv.style.visibility="hidden";
-}
-
-function beginLoading()
-{
- var oDiv=getElement(gsLoadingDivID);
- if(!oDiv)
- {
- document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());
- oDiv=getElement(gsLoadingDivID);
- }
-
- if(oDiv)
- {
- oDiv.style.top=document.body.scrollTop;
- oDiv.style.visibility="visible";
- }
-}
-
-function writeLoadingDiv(nIIdx)
-{
- return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";
-}
-
-function topicInfo(sTopicTitle,sTopicURL)
-{
- this.sTopicTitle=sTopicTitle;
- this.sTopicURL=sTopicURL;
- this.equalTo=function(oTI)
- {
- return ((this.sTopicTitle==oTI.sTopicTitle)&&
- (this.sTopicURL==oTI.sTopicURL));
- }
-}
-
-function getChunkedFts(nIndex,sKey)
-{
- var oCF=null;
- if(nIndex<gaaFCD.length)
- {
- var len=gaaFCD[nIndex].length;
- if(len>0)
- {
- var nB=0;
- var nE=len-1;
- var bFound=false;
- do{
- var nM=(nB+nE)>>1;
- if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)
- {
- nB=nM+1;
- }
- else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)
- {
- nE=nM-1;
- }
- else{
- bFound=true;
- break;
- }
- }while(nE>=nB);
- if(bFound)
- oCF=gaaFCD[nIndex][nM];
- }
- }
- return oCF;
-}
-
-function ftsReady(aFCD,aFTCD)
-{
- endLoading();
- gaaFTCD[gnCLF]=aFTCD;
- gaaFCD[gnCLF++]=aFCD;
- setTimeout("loadFD();",1);
-}
-
-function putFtsTData(aTopics)
-{
- endLoading();
- var oCTF=goCTF;
- if(oCTF)
- {
- oCTF.aTopics=aTopics;
- setTimeout("ftsFindKeyword();",1);
- }
-}
-
-function putFtsWData(aFtsContents)
-{
- endLoading();
- var oCF=goCF;
- if(oCF)
- {
- updateCache(oCF);
- oCF.aFtsKeys=aFtsContents;
- setTimeout("ftsFindKeyword();",1);
- }
-}
-
-function IsStopWord(sCW,aFtsStopArray)
-{
- var nStopArrayLen=aFtsStopArray.length;
- var nB=0;
- var nE=nStopArrayLen-1;
- var nM=0;
- var bFound=false;
- var sStopWord="";
- while(nB<=nE){
- nM=(nB+nE);
- nM>>=1;
- sStopWord=aFtsStopArray[nM];
- if(compare(sCW,sStopWord)>0){
- nB=(nB==nM)?nM+1:nM;
- }else{
- if(compare(sCW,sStopWord)<0){
- nE=(nE==nM)?nM-1:nM;
- }else{
- bFound=true;
- break;
- }
- }
- }
- return bFound;
-}
-
-function GetStem(szWord)
-{
- if(gaFtsStem==null||gaFtsStem.length==0)return szWord;
- var aStems=gaFtsStem;
-
- var nStemPos=0;
- var csStem="";
- for(var iStem=0;iStem<aStems.length;iStem++){
-
- if(aStems[iStem].length>=szWord.length-1) continue;
- nStemPos=szWord.lastIndexOf(aStems[iStem]);
- if(nStemPos>0){
- var cssub=szWord.substring(nStemPos);
- if(cssub==aStems[iStem]){
- csStem=szWord;
- if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){
- csStem=csStem.substring(0,nStemPos-1);
- }else{
- csStem=csStem.substring(0,nStemPos);
- }
- return csStem;
- }
- }
- }
- return szWord;
-}
-
-function FtsWriteClassStyle()
-{
- var sStyle="<STYLE TYPE='text/css'>\n";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";
- sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";
- sStyle+="</STYLE>";
- document.write(sStyle);
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);
- UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);
-}
-
-
-function onSendMessage(oMsg)
-{
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SEARCHFTSKEY)
- {
- if(oMsg.oParam)
- {
- if(gsSK==null||gsSK=="")
- {
- gsSK=oMsg.oParam.toLowerCase();
- findFTSKey();
- }
- else
- gsSK2=oMsg.oParam.toLowerCase();
- }
- }
- else if(nMsgId==WH_MSG_PROJECTREADY)
- {
- loadFts();
- }
- return true;
-}
-
-if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)
-{
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
- goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");
- goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
- window.onload=window_OnLoad;
- window.onbeforeunload=window_BUnload;
- window.onunload=window_Unload;
- RegisterListener2(this,WH_MSG_PROJECTREADY);
- gbWhFHost=true;
-}
-else
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001
-var gfunLookUp;
-var gbInputEnable;
-var gfunInit;
-var gstrFormName= "";
-var gbWithButton = false;
-var gsTitle="";
-var gsOverImage = "";
-var gsOutImage = "";
-var gsClickImage = "";
-var gsText = "";
-var gsBgColor = "#c0c0c0";
-var gsBgImage = "";
-var gbInImage = 0;
-var gbInputEnable = 0;
-
-var goTitleFont=null;
-var goInputFont=null;
-var goNormalFont=null;
-var goHoverFont=null;
-var gnType=-1;
-var gbWhForm=false;
-
-function setBackground(sBgImage)
-{
- if (sBgImage != null && sBgImage.length > 0)
- gsBgImage = sBgImage;
-
- if (gsBgImage && gsBgImage .length > 0)
- {
- document.body.background = gsBgImage ;
- }
-}
-
-function setBackgroundcolor(sBgColor)
-{
- if (sBgColor != null && sBgColor.length > 0)
- gsBgColor = sBgColor;
-
- if (gsBgColor&& gsBgColor.length > 0)
- {
- document.body.bgColor = gsBgColor;
- }
-}
-
-function setBtnType(sType)
-{
- if (sType == "image")
- {
- gnType = 0;
- }
- else if (sType == "text")
- {
- gnType = 1;
- }
-}
-
-function setGoImage1(sImage1)
-{
- gsOutImage = sImage1;
- if (gsOutImage && gsOutImage.length > 0)
- gbWithButton = true;
-}
-
-function setGoImage2(sImage2)
-{
- gsOverImage = sImage2;
- if (gsOverImage && gsOverImage.length > 0)
- gbWithButton = true;
-}
-
-function setGoImage3(sImage3)
-{
- gsClickImage = sImage3;
- if (gsClickImage && gsClickImage.length > 0)
- gbWithButton = true;
-}
-
-function setGoText(sText)
-{
- gsText = sText;
- if (gsText.length > 0)
- gbWithButton = true;
-}
-
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)
-{
- var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);
- if (sType == "Title")
- {
- goTitleFont = vFont;
- var vFont1 = new whFont(sFontName, sFontSize, "black", sFontStyle, sFontWeight, sFontDecoration);
- goInputFont=vFont1;
- }
- else if (sType == "Normal")
- goNormalFont = vFont;
- else if (sType == "Hover")
- goHoverFont = vFont;
-}
-
-function writeFormStyle()
-{
- var sStyle = "<style type='text/css'>";
- sStyle += "p.title {" + getFontStyle(goTitleFont) + "margin-top:0;margin-bottom:0}\n";
- sStyle += ".inputfield {" + getFontStyle(goInputFont) +"width:100%; }\n";
- sStyle+="A:link {"+getFontStyle(goNormalFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goNormalFont)+"}\n";
- sStyle +="A:hover {"+getFontStyle(goHoverFont)+"}\n";
- sStyle+=".clsFormBackground{\n";
- if (gsBgImage)
- sStyle+="border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="border-top:black 1px solid;}\n";
-
- sStyle += "</style>";
- document.write(sStyle);
-}
-
-function lookupKeyDown()
-{
- if (gbInputEnable)
- {
- if (gbIE4)
- {
- if (event.keyCode == 13) //Enter key
- gfunLookUp(true);
- else
- gfunLookUp(false);
- }
- else
- gfunLookUp(false);
- }
-}
-
-function init()
-{
- if (gfunInit)
- gfunInit();
- if (!window.Array) return;
- document.onkeyup = lookupKeyDown;
-}
-
-function inputSubmit()
-{
- if ((gbInputEnable && !gbIE4)|| gbInImage)
- gfunLookUp(true);
-}
-
-function inputEnable(bEnable)
-{
- gbInputEnable = bEnable;
-}
-
-function inImage(bImage)
-{
- gbInImage = bImage;
-}
-
-function getFormHTML()
-{
- var sForm = "";
- sForm += "<table class=\"clsFormBackground\" width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">";
- sForm += "<form name=\"" + gstrFormName + "\" method=\"POST\" action=\"javascript:inputSubmit()\" style=\"width:100%\">";
- sForm += "<tr>";
- sForm += "<td>";
- sForm += "<p class=title><nobr>" + gsTitle + "</nobr><br><table width=\"100%\"><tr valign=\"middle\"><td width=\"100%\"><input class=\"inputfield\" type=\"text\" name=\"keywordField\" onfocus=\"inputEnable(1);\" onblur=\"inputEnable(0);\"></td>";
- if (gbWithButton && gnType >= 0)
- {
- sForm += "<td><a title=\"submit button\" href=\"javascript:void(0);\" onclick=\"" + gstrFormName + ".submit(); return false;\" onfocus=\"inImage(1);\" onblur=\"inImage(0);\" onmouseup=\"onMouseUp();\" onmousedown=\"onMouseDown();\" onmouseover=\"onMouseOver();\" onmouseout=\"onMouseOut();\">"
- if (gnType == 0)
- {
- if (!gsText)
- gsText="Go";
- sForm += "<img alt=\""+gsText+"\" id=\"go\" border=\"0\" src=\"" + gsOutImage + "\">";
- }
- else
- sForm += gsText ;
- sForm += "</a></td>";
- }
- sForm += "</tr></table></p></td></tr></form></table>";
- return sForm;
-}
-
-function onMouseOver()
-{
- if (getElement("go") && gsOverImage)
- getElement("go").src = gsOverImage;
-}
-
-function onMouseDown()
-{
- if (getElement("go") && gsClickImage)
- getElement("go").src = gsClickImage;
-}
-
-function onMouseUp()
-{
- if (getElement("go") && gsOutImage)
- getElement("go").src = gsOutImage;
-}
-
-function onMouseOut()
-{
- if (getElement("go") && gsOutImage)
- getElement("go").src = gsOutImage;
-}
-
-if (window.gbWhUtil&&window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)
-{
- goTitleFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");
- goNormalFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");
- goHoverFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "underline");
- gbWhForm=true;
-}
-else
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001
-// this value should be identical to the value used in whproxy.js
-window.whname = "wh_stub";
-
-// this file will be used by Topic and NavBar and NavPane and other components
-// and this file is used in child frame html.
-// and the whstub.js will be used in the start page.
-// see reference in whstub.js.
-// Internal Area
-var gbInited = false;
-var gWndStubPage = null;
-function getStubPage()
-{
- if (!gbInited)
- {
- gWndStubPage = getStubPage_inter(window);
- gbInited = true;
- }
- return gWndStubPage;
-}
-
-function getStubPage_inter(wCurrent) {
- if (null == wCurrent.parent || wCurrent.parent == wCurrent)
- return null;
-
- if (wCurrent.parent.whname && "wh_stub" == wCurrent.parent.whname)
- return wCurrent.parent;
- else
- if (wCurrent.parent.frames.length != 0 && wCurrent.parent != wCurrent)
- return getStubPage_inter(wCurrent.parent);
- else
- return null;
-}
-
-// Public interface begin here................
-function RegisterListener(framename, nMessageId)
-{
- var wStartPage = getStubPage();
- if (wStartPage && wStartPage != this) {
- return wStartPage.RegisterListener(framename, nMessageId);
- }
- else
- return false;
-}
-
-function RegisterListener2(oframe, nMessageId)
-{
- var wStartPage = getStubPage();
- if (wStartPage && wStartPage != this) {
- return wStartPage.RegisterListener2(oframe, nMessageId);
- }
- else
- return false;
-}
-
-function UnRegisterListener2(oframe, nMessageId)
-{
- var wStartPage = getStubPage();
- if (wStartPage && wStartPage != this && wStartPage.UnRegisterListener2) {
- return wStartPage.UnRegisterListener2(oframe, nMessageId);
- }
- else
- return false;
-}
-
-function SendMessage(oMessage)
-{
- var nMsgId = oMessage.nMessageId;
- if (nMsgId == WH_MSG_ISINFRAMESET && oMessage.wSender != this)
- return true;
- var wStartPage = getStubPage();
- if (wStartPage && wStartPage != this && wStartPage.SendMessage)
- {
- return wStartPage.SendMessage(oMessage);
- }
- else
- return false;
-}
-var gbWhProxy=true;
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Glossary Term</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whlang.js"></script>
-<script language="javascript1.2" src="whhost.js"></script>
-<script language="javascript1.2" src="whghost.js"></script>
-<script language="javascript1.2">
-<!--
-if(window.gbWhGHost)
-{
-
-
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");
- setActiveBgColor("#cccccc");
- setMargin("0pt");
- setIndent("9pt");
- GloWriteClassStyle();
-}
-else
- document.location.reload();
-//-->
-</script>
-</head>
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white">
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Glossary Definition</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2">
-<!--
-var gsBgColor="#ffffff";
-var gsBgImage="";
-var goGloFont=null;
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this, WH_MSG_SHOWGLODEF);
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- document.body.background=gsBgImage;
- if(gsBgColor&&gsBgColor.length>0)
- document.body.bgColor=gsBgColor;
-}
-
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)
-{
- var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);
- if (sType == "Normal")
- goGloFont = vFont;
-}
-
-function textToHtml_nbsp_specialcare(sText)
-{
- if (sText == null) return null;
- var sHTML= sText;
- var re = new RegExp(" ","g");
- sHTML= sHTML.replace(re, " ");
- return sHTML;
-}
-
-function onSendMessage(oMsg)
-{
- var nMsgId = oMsg.nMessageId;
- if (nMsgId == WH_MSG_SHOWGLODEF)
- {
- document.body.innerHTML = sDefHead + textToHtml_nbsp_specialcare(oMsg.oParam.sDef) + sDefTail;
- return true;
- }
-}
-
-function GDefWriteClassStyle()
-{
- var sStyle="<STYLE TYPE='text/css'>\n";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- sStyle+=".definition {"+getFontStyle(goGloFont)+"margin:2;}\n";
- sStyle+="</STYLE>";
- document.write(sStyle);
-}
-
-if (window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer)
-{
- window.onload=window_OnLoad;
- window.onunload = window_Unload;
- goGloFont=new whFont("Verdana", "8pt", "#000000", "normal", "normal", "none");
-
-
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
- GDefWriteClassStyle();
- RegisterListener2(this, WH_MSG_SHOWGLODEF);
- var sDefHead = "<p class=\"definition\">";
- var sDefTail = "</p>";
-}
-else
- document.location.reload();
-//-->
-</script>
-</head>
-<body bgproperties="fixed" bgcolor="white">
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Glossary</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body bgcolor=#c0c0c0 scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2">
-<!--
-var gsBgImage="";
-var gsBgColor="";
-var goTitleFont=null;
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Title")
- goTitleFont=vFont;
-}
-
-function getTermText()
-{
- var strString="Term:";
-strString = "Term:";
- return strString;
-}
-
-function getDefinitionText()
-{
- var strString="Definition for:";
-strString = "Definition:";
- return strString;
-}
-
-function getHTML()
-{
- var sHTML="";
- sHTML+="<P class=title><nobr> " + getTermText() + "</nobr></p>";
- sHTML+="<iframe id=glossaryIFrame title=\"glossary term\" src=\"whgbody.htm\" width=100% height=200 MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";
- sHTML+="<P class=title><nobr> " + getDefinitionText() + " <b id=Name></b></nobr></p>";
- sHTML+="<iframe id=defIFrame title=\"glossary definition\" src=\"whgdef.htm\" width=100% height=100% MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";
- return sHTML;
-}
-
-function writeStyle()
-{
- var sStyle="<style type='text/css'>";
- sStyle+="p.title {" + getFontStyle(goTitleFont) + "margin-top:4;margin-bottom:4}\n";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- sStyle+="</style>";
- document.write(sStyle);
-}
-
-
-function window_OnResize()
-{
- setIFrameHeight();
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- document.body.background=gsBgImage;
- if(gsBgColor&&gsBgColor.length>0)
- document.body.bgColor=gsBgColor;
- setIFrameHeight();
-}
-
-function setIFrameHeight()
-{
- var tH=0;
- if(gbNav6)
- {
- tH=parseInt(window.innerHeight)-30;
- }
- else
- {
- tH=parseInt(document.body.clientHeight)-4;
- }
-
- var oEle=getElement("glossaryIFrame");
- if(oEle)
- {
- tH=tH-2*parseInt(oEle.offsetTop);
- if(tH>0)
- {
- oEle.style.height=Math.floor(tH*.6);
- var oEleDef=getElement("defIFrame");
- if(oEleDef)
- {
- oEleDef.style.height=tH-parseInt(oEle.style.height);
- }
- }
- }
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this,WH_MSG_SHOWGLODEF);
-}
-
-function onSendMessage(oMsg)
-{
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SHOWGLODEF)
- {
- if(getElement("Name"))
- getElement("Name").innerHTML=oMsg.oParam.sName;
- return true;
- }
-}
-
-if(window.gbWhVer&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy)
-{
- goTitleFont=new whFont("Arial","9pt","#000000","normal","normal","none");
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");
-
-
- window.onresize=window_OnResize;
- window.onload=window_OnLoad;
- window.onunload=window_Unload;
- RegisterListener2(this,WH_MSG_SHOWGLODEF);
- writeStyle();
- document.write(getHTML());
-}
-else
- document.location.reload();
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-// WebHelp 5.10.004
-var gbXML=false;
-var gaDef=new Array();
-var gsBgColor="#ffffff";
-var gsBgImage="";
-var goFont=null;
-var goHoverFont=null;
-var gsMargin="2pt";
-var gsIndent="2pt";
-var gsActiveBgColor="#cccccc";
-var gbWhGHost=false;
-var gbShowDef=true;
-var gsGloId="Glo_"
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Normal")
- goFont=vFont;
- else if(sType=="Hover")
- goHoverFont=vFont;
-}
-
-function setActiveBgColor(sBgColor)
-{
- gsActiveBgColor=sBgColor;
-}
-
-function setMargin(sMargin)
-{
- gsMargin=sMargin;
-}
-
-function setIndent(sIndent)
-{
- gsIndent=sIndent;
-}
-
-function insertDef(sKName,sDef)
-{
- var nLength=gaDef.length
- var oGlo=new nameDefPair(sKName,sDef);
- gaDef[nLength]=oGlo;
- return nLength;
-}
-
-function showDef(nDef)
-{
- if(nDef<gaDef.length)
- {
- HighLight(nDef);
- var oParam=gaDef[nDef];
- var oMsg=new whMessage(WH_MSG_SHOWGLODEF,this,1,oParam);
- SendMessage(oMsg);
- }
-}
-
-function nameDefPair(sName,sDef)
-{
- this.sName=sName;
- this.sDef=sDef;
-}
-
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
-{
- var sHTML="";
- var nIdxSet=aCurIdxSet[0];
- var nIIdx=aPos[nIdxSet];
- var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);
- var sKName=_textToHtml(sRawKName);
- var sDText=_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx));
- var sDef=sDText;
- for(var i=1;i<nLength;i++)
- {
- var nIdxSeti=aCurIdxSet[i];
- var nIIdxi=aPos[nIdxSeti];
- var sRawKNamei = getItemName(aDataCon,nIdxSeti,nIIdxi);
- var sKNamei=_textToHtml(sRawKNamei);
- var sDTexti=_textToHtml_nonbsp(getDef(aDataCon,nIdxSeti,nIIdxi));
- if (compare(sKNamei,sKName)==0)
- {
- if (sDText!=sDTexti)
- sDef+="<br>"+sDTexti;
- }
- }
- var nIndex=insertDef(sKName,sDef);
- if(nLevel==1)
- {
- sHTML+="<p><nobr id=\""+getGloId(nIndex)+"\">";
- sHTML+="<a alt=\""+sKName+"\" href=\"javascript:void(0);\" onfocus=\"HighLight("+nIndex+");\" onclick=\"showDef("+nIndex+");return false;\">"+sKName+"</a></nobr></p>";
- oHTML.addHTML(sHTML,nLength,bDown,true,sRawKName);
- if(gbShowDef)
- {
- setTimeout("showDef(0);",100);
- gbShowDef = false;
- }
- }
-}
-
-function HighLight(nIndex)
-{
- var oObj=getElement(getGloId(nIndex));
- if(oObj)
- HighLightElement(oObj,gsActiveBgColor,"transparent");
-}
-
-function getGloId(nIndex)
-{
- return gsGloId+nIndex;
-}
-
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)
-{
- if(bDown)
- {
- for(var i=0;i<nLength;i++)
- aPos[aCurIdxSet[i]]++;
- }
- else{
- for(var i=0;i<nLength;i++)
- aPos[aCurIdxSet[i]]--;
- }
-}
-
-function getDef(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].sDef;
- else
- return null;
-}
-
-function getItemName(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].sName;
- else
- return null;
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- document.body.background=gsBgImage;
- if(gsBgColor&&gsBgColor.length>0)
- document.body.bgColor=gsBgColor;
- document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());
- loadGlo();
- var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)
- SendMessage(oMsg);
-}
-
-function loadGlo()
-{
- if(!gbReady)
- {
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
- if(SendMessage(oResMsg)&&oResMsg.oParam)
- {
- gbReady=true;
- var oProj=oResMsg.oParam;
- var aProj=oProj.aProj;
- gbXML=oProj.bXML;
- if(aProj.length>0)
- {
- var sLangId=aProj[0].sLangId;
- for(var i=0;i<aProj.length;i++)
- {
- if(aProj[i].sGlo&&aProj[i].sLangId==sLangId)
- addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sGlo);
- }
- }
- writeDataIFrame();
- enEvt();
- }
- }
-}
-
-function findCKInDom()
-{
- return true;
-}
-
-function GloWriteClassStyle()
-{
- var sStyle="<STYLE TYPE='text/css'>\n";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";margin-left:"+gsIndent+";}\n";
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:active {background-color:"+gsActiveBgColor+";}\n";
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";
- sStyle+="</STYLE>";
- document.write(sStyle);
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);
- UnRegisterListener2(this,WH_MSG_SHOWGLO);
-}
-
-function onSendMessage(oMsg)
-{
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SHOWGLO)
- {
- if(!gbNav6)
- document.body.focus();
- }
- else if(nMsgId==WH_MSG_PROJECTREADY)
- {
- loadGlo();
- }
- }
- return true;
-}
-
-if (window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhHost)
-{
- RegisterListener2(this,WH_MSG_PROJECTREADY);
- RegisterListener2(this,WH_MSG_SHOWGLO);
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
- goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
- window.onload=window_OnLoad;
- window.onbeforeunload=window_BUnload;
- window.onunload=window_Unload;
- gbWhGHost=true;
-}
-else
- document.location.reload();
-
+++ /dev/null
-// WebHelp 5.10.002
-var gaChunks=new Array();
-var gaFakes=new Array();
-var gaDataCon=null;
-var gaData=new Array();
-
-var gbFindCK=false;;
-var gbNeedCalc=false;
-var gbScrl=false;
-var gbProcess=false;
-var gbReady=false;
-
-var gnCheck=0;
-var gnNum=0;
-var gnIns=-1;
-var gnLoad=0;
-var gnRef=-1;
-var gnMaxItems=0;
-var gnMaxMargin=32000;
-var gnNeeded=0;
-var gnNKI=-1;
-var gnRE=0;
-var gnScrlMgn=30;
-var gnSE=0;
-var gnVisible=0;
-var gnItems=0;
-var gnUHeight=1;
-
-var gsBCK=null;
-var gsChK=null;
-var gsCK=null;
-var gsLoadingDivID="LoadingDiv";
-var gsLoadingMsg="Loading data, please wait...";
-var gsSKA=null;
-var gsSKB=null;
-
-var gbLoadInfo=false;
-
-function onLoadXMLError()
-{
- if(gbLoadInfo)
- {
- var aChunk=new Array();
- projReady(aChunk);
- }
- else
- {
- var aData=new Array();
- putData(aData);
- }
-}
-
-function putDataXML(xmlDoc,sDocPath)
-{
- if(gbLoadInfo)
- {
- var node=xmlDoc.lastChild;
- if(node)
- {
- var nTotal=0
- var aChunk=new Array();
- var oC=node.firstChild;
- while(oC)
- {
- if(oC.nodeName=="chunkinfo")
- {
- var item=new Object();
- item.sBK=oC.getAttribute("first");
- item.sEK=oC.getAttribute("last");
- item.sFileName=oC.getAttribute("url");
- item.nNum=parseInt(oC.getAttribute("num"));
- nTotal+=item.nNum;
- item.nTotal=nTotal;
- aChunk[aChunk.length]=item;
- }
- oC=oC.nextSibling;
- }
- projReady(aChunk);
- }
- }
- else
- {
- var node=xmlDoc.lastChild;
- if(node)
- {
- var aData=new Array();
- var nPrev=0;
- var nNext=0;
- var oC=node.firstChild;
- while(oC)
- {
- nPrev=nNext;
- if(oC.nodeName=="key")
- {
- var sName=oC.getAttribute("name");
- if(sName&&sName.length>0)
- {
- var sTarget=oC.getAttribute("target");
- var item=new Object();
- item.nType=2;
- item.sName=sName;
- if(sTarget)
- item.sTarget=sTarget;
- item.nPKOff=nPrev;
- aData[aData.length]=item;
- var nCurIndex=aData.length;
- processKey(oC,aData,item);
- nNext=aData.length-nCurIndex;
- item.nNKOff=nNext;
- }
- }
- else if(oC.nodeName=="letter")
- {
- var name=oC.getAttribute("name");
- if(name&&name.length>0)
- {
- var item=new Object();
- item.nType=1;
- item.sName=name;
- item.nPKOff=nPrev;
- nNext=0;
- item.nNKOff=nNext;
- aData[aData.length]=item;
- }
- }
- else if(oC.nodeName=="entry")
- {
- var name=oC.getAttribute("name");
- var def=oC.getAttribute("value");
- if(name&&name.length>0)
- {
- var item=new Object();
- item.sName=name;
- item.sDef=def;
- item.nPKOff=nPrev;
- nNext=0;
- item.nNKOff=nNext;
- aData[aData.length]=item;
- }
- }
- oC=oC.nextSibling;
- }
- putData(aData);
- }
- }
-}
-
-function processKey(element,aData,item)
-{
- var i=0;
- var nPrev=0;
- var nNext=0;
- var oC=element.firstChild;
- while(oC)
- {
- if(oC.nodeName=="topic")
- {
- var name=oC.getAttribute("name");
- var url=oC.getAttribute("url");
- if(url&&url.length!=0)
- {
- if(!name||name.length==0)
- name=url;
- var topic=new Object();
- topic.sName=name;
- topic.sURL=url;
- if(!item.aTopics)
- item.aTopics=new Array();
- item.aTopics[item.aTopics.length]=topic;
- }
- }
- else if(oC.nodeName=="key")
- {
- nPrev=nNext;
- var name=oC.getAttribute("name");
- if(name&&name.length!=0)
- {
- var subItem=new Object();
- subItem.sName=name;
- subItem.nType=3;
- subItem.nPKOff=nPrev;
- aData[aData.length]=subItem;
- var nCurIndex=aData.length;
- processKey(oC,aData,subItem);
- nNext=aData.length-nCurIndex;
- subItem.nNKOff=nNext;
- }
- }
- oC=oC.nextSibling;
- }
-}
-
-function putData(aData)
-{
- endLoading();
- var oCData=goCData;
- if(oCData)
- {
- oCData.aKs=aData;
- if(gnNKI==-1)
- setTimeout("checkReady();",1);
- else
- {
- gsSKA=getKByIdx(oCData,gnNKI);
- gbNeedCalc=true;
- gbScrl=true;
- gnNKI=-1;
- if(gsSKA)
- setTimeout("checkReady();",1);
- else
- {
- markEnd();
- setTimeout("checkAgain();",50);
- }
- }
- }
-}
-
-function markEnd()
-{
- if(gbProcess)
- gbProcess=false;
-}
-
-function endLoading()
-{
- var oDiv=getElement(gsLoadingDivID);
- if(oDiv)
- oDiv.style.visibility="hidden";
-}
-
-function markBegin()
-{
- gbProcess=true;
-}
-
-function beginLoading()
-{
- var oDiv=getElement(gsLoadingDivID);
- if(oDiv)
- {
- oDiv.style.top=document.body.scrollTop;
- oDiv.style.visibility="visible";
- }
-}
-
-function indexHTMLPart()
-{
- this.sHTML="";
- this.nNeeded=0;
- this.nCurrent=0;
- this.nConsumed=0;
- this.sFK=null;
- this.sLK=null;
- this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){
- if(bDown)
- this.sHTML+=sHTML;
- else
- this.sHTML=sHTML+this.sHTML;
- this.nCurrent++;
- this.nConsumed+=nConsumed;
- if(bK)
- {
- if(!this.sFK)
- this.sFK=sK;
- if(!this.sLK)
- this.sLK=sK;
- if(bDown)
- this.sLK=sK;
- else
- this.sFK=sK;
- }
- }
- this.appendHTML=function(oHTML,bDown){
- this.addSubHTML(oHTML,bDown);
- if(!this.sFK)
- this.sFK=oHTML.sFK;
- if(!this.sLK)
- this.sLK=oHTML.sLK;
- if(bDown)
- this.sLK=oHTML.sLK;
- else
- this.sFK=oHTML.sFK;
- }
-
- this.addSubHTML=function(oHTML,bDown){
- if(bDown)
- this.sHTML+=oHTML.sHTML;
- else
- this.sHTML=oHTML.sHTML+this.sHTML;
- this.nCurrent+=oHTML.nCurrent;
- this.nConsumed+=oHTML.nConsumed;
- }
-}
-
-function getMaxUnits()
-{
- return Math.floor(gnMaxMargin/gnUHeight)+1;
-}
-
-function getFakeItemsHTMLbyCount(nB,nCount)
-{
- var nMU=getMaxUnits();
- var nNum=Math.floor(nCount/nMU);
- var sHTML="";
- for(var i=0;i<nNum;i++)
- sHTML+=getFakeItemHTML(nB,nMU-1);
-
- var nRest=nCount%nMU;
- sHTML+=getFakeItemHTML(nB,nRest-1);
- return sHTML;
-}
-
-function getFakeItemHTML(nB,nNum)
-{
- return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\"> </h6>";
-}
-
-function fakeItemsArea(nB,n,sKA,sKB,obj)
-{
- this.nB=nB;
- this.nNum=n;
- this.sKA=sKA;
- this.sKB=sKB;
- this.obj=obj;
- this.nMargin=(n-1)*gnUHeight;
-
- this.setNum=function(n)
- {
- var nLastobj=-1;
- var nDelta=this.nMargin;
- this.nMargin=(n-1)*gnUHeight;
- nDelta=nDelta-this.nMargin;
- if(n>0)
- {
- this.nNum=n;
- var nMU=getMaxUnits();
- nLastobj=Math.floor((n-1)/nMU);
- if(this.obj.length)
- this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;
- else
- this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;
- }
- if(this.obj.length)
- {
- for(var i=this.obj.length-1;i>nLastobj;i--)
- removeThis(this.obj[i]);
- }
- else
- {
- if(nLastobj==-1)
- removeThis(this.obj);
- }
- return nDelta;
- }
- this.insertAdjacentHTML=function(sWhere,sHTML)
- {
- if(sWhere=="beforeBegin")
- {
- if(this.obj.length)
- this.obj[0].insertAdjacentHTML(sWhere,sHTML);
- else
- this.obj.insertAdjacentHTML(sWhere,sHTML);
- }
- else if(sWhere=="afterEnd")
- {
- if(this.obj.length)
- {
- if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)
- this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
- else
- this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);
- }
- else
- {
- if(gbMac&&gbIE5&&this.obj.nextSibling)
- this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);
- else
- this.obj.insertAdjacentHTML(sWhere,sHTML);
- }
- }
- }
- this.getBtm=function()
- {
- if(this.obj.length)
- return this.obj[this.obj.length-1].offsetTop;
- else
- return this.obj.offsetTop;
- }
- this.getTop=function()
- {
- return this.getBtm()-this.nMargin;
- }
-}
-
-function usedItems(nB,nE)
-{
- this.nB=nB;
- this.nE=nE;
- this.oN=null;
-}
-
-function checkReady()
-{
- var len=gaChunks.length;
- var bNeedLoad=false;
- var aDataCon;
- var s=0;
- var bDown=(gsSKB==null);
- var sK=bDown?gsSKA:gsSKB;
- if(sK==null)
- {
- markEnd();
- setTimeout("checkAgain();",50);
- return;
- }
- if(!gsChK||sK!=gsChK||gnNum==0)
- {
- gnCheck=0;
- gsChK=sK;
- aDataCon=new Array();
- }
- else{
- s=gnNum;
- aDataCon=gaDataCon;
- }
- for(var i=gnCheck;i<len;i++)
- {
- var oCData=getChunkedData(i,bDown,sK);
- if(oCData)
- {
- if(!oCData.aKs&&oCData.sFileName!=null)
- {
- bNeedLoad=true;
- goCData=oCData;
- gnNum=s;
- gnCheck=i;
- gaDataCon=aDataCon;
- oCData.nProjId=i;
- gbLoadInfo=false;
- beginLoading();
- loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);
- return;
- }
- else{
- aDataCon[s++]=oCData;
- }
- }
- }
- if(!bNeedLoad)
- {
- gnNum=0;
- gsSKA=gsSKB=gsShowK=null;
-
- var oHTML=new indexHTMLPart();
- var aPos=new Array();
- var aOriPos=new Array();
- var aMaxPos=new Array();
- var aMinPos=new Array();
-
- if(gbNeedCalc||gbFindCK) gnIns=0;
- for(i=0;i<aDataCon.length;i++)
- {
- aPos[i]=getIdxPos(aDataCon[i],bDown,sK);
- if(gbNeedCalc||gbFindCK)
- {
- gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;
- if(!bDown)
- {
- if(aPos[i]!=-1)
- {
- if(aDataCon[i].aKs)
- gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;
- else
- {
- var n=aPos[i]+1;
- while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])
- n++;
- n=n-aPos[i]-1;
- gnIns+=n;
- }
- }
- }
- }
- aOriPos[i]=aPos[i];
- getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);
- }
- if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)
- {
- gnIns+=(aDataCon.length-1)
- }
- if(gnIns!=-1||gbFindCK)
- {
- oHTML.nNeeded=gnNeeded;
- var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);
- if(oHTML.nConsumed!=0)
- {
- var nB;
- if(!bDown)
- nB=gnIns-oHTML.nConsumed+1;
- else
- nB=gnIns;
-
- var oldScrollPos=document.body.scrollTop;
- if(insertIdxKs(nB,oHTML,gbScrl))
- {
- updateUsedK(aDataCon,aOriPos,aPos,bDown);
- if(!gbScrl&&gbMac)
- {
- while(document.body.scrollTop!=oldScrollPos)
- document.body.scrollTop=oldScrollPos;
- }
- gbScrl=false;
- }
- if(gbFindCK)
- {
- gbFindCK=false;
- gbNeedCalc=true;
- gsSKB=oHTML.sFK;
- gnIns=-1;
- setTimeout("checkReady();",50);
- return;
- }
- }
- else if(gbFindCK)
- {
- gbFindCK=false;
- gbNeedCalc=true;
- gsSKB=getFirstKeyFromPos(aDataCon,aPos);
- gnIns=-1;
- setTimeout("checkReady();",50);
- return;
- }
- if(!findCKInDom()) return;
-
- gnNeeded=gnNeeded-oHTML.nCurrent;
- gnIns=-1;
- markEnd();
- setTimeout("checkAgain();",50);
- gbNeedCalc=false;
- }
- else
- {
- if(!findCKInDom()) return;
- markEnd();
- setTimeout("checkAgain();",50);
- }
- }
-}
-
-function getFirstKeyFromPos(aDataCon,aPos)
-{
- var sCurrentK=getBiggestChar();
- for(var i=0;i<aPos.length;i++)
- {
- if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)
- {
- if(sCurrentK==""||
- compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)
- {
- sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
- }
- }
- }
- return sCurrentK;
-}
-
-function checkAgain()
-{
- if(!gbProcess)
- {
- if(gsBCK!=null)
- {
- gsCK=gsBCK;
- gsBCK=null;
- findCK();
- }
- else
- {
- markBegin();
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);
- }
- }
- else
- setTimeout("checkAgain()",50);
-}
-
-function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)
-{
- aMaxPos[i]=aDataCon[i].nNum;
- aMinPos[i]=-1;
- var oPNode=null;
- if(aDataCon[i].oUsedItems)
- {
- var oUsedItems=aDataCon[i].oUsedItems;
- do{
- if(oUsedItems.nB>aPos[i])
- {
- aMaxPos[i]=oUsedItems.nB;
- break;
- }
- oPNode=oUsedItems;
- oUsedItems=oUsedItems.oN;
- }while(oUsedItems!=null);
- if(oPNode)
- aMinPos[i]=oPNode.nE;
- }
- else if(aDataCon[i].aKs==null)
- {
- aMaxPos[i]=aMinPos[i]=aPos[i];
- }
- if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])
- {
- aMaxPos[i]=aMinPos[i]=aPos[i];
- }
-}
-
-function getIdxPos(oIdx,bDown,sK)
-{
- var aKs=oIdx.aKs;
- var nIdx;
- if(bDown)
- nIdx=oIdx.nNum;
- else
- nIdx=-1;
- if(aKs!=null)
- {
- for(var i=0;i<aKs.length;i++)
- {
- if(bDown)
- {
- if(compare(aKs[i].sName,sK)>0)
- {
- nIdx=i;
- break;
- }
- }
- else
- {
- if(compare(aKs[i].sName,sK)<0)
- nIdx=i;
- else
- break;
- }
- i+=aKs[i].nNKOff;
- }
- }
- else if(oIdx.aKsOnly)
- {
- var aKsOnly=oIdx.aKsOnly;
- for(var i=0;i<aKsOnly.length;i++)
- {
- if(aKsOnly[i])
- {
- if(bDown)
- {
- if(compare(aKsOnly[i],sK)>0)
- {
- nIdx=i;
- break;
- }
- }
- else
- {
- if(compare(aKsOnly[i],sK)<0)
- nIdx=i;
- else
- break;
- }
- }
- }
- }
- return nIdx;
-}
-
-function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
-{
- var aOldPos=new Array();
- for(var i=0;i<aPos.length;i++)
- {
- aOldPos[i]=aPos[i];
- }
- var p;
- do{
- var sCurrentK="";
- var aCurIdxSet=new Array();
- p=0;
- for(i=0;i<aDataCon.length;i++)
- {
- if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&
- (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))
- {
- if(sCurrentK==""||
- (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||
- (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))
- {
- sCurrentK=aDataCon[i].aKs[aPos[i]].sName;
- p=0;
- aCurIdxSet[p++]=i;
- }
- else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){
- aCurIdxSet[p++]=i;
- }
- }
- else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){
- if(bDown&&aPos[i]==aMaxPos[i])
- {
- if(aDataCon[i].aKs)
- {
- gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;
- return false;
- }
- }
- else if(!bDown&&aPos[i]==aMinPos[i])
- {
- if(aDataCon[i].aKs)
- {
- gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;
- return false;
- }
- }
- }
- }
- if(p>=1){
- for(var s=0;s<p;s++)
- {
- aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];
- }
- mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);
- adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);
-
- if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){
- return true;
- }
- }
- }while(p>0);
- return true;
-}
-
-function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)
-{
- for(var i=0;i<aDataCon.length;i++)
- {
- if (aOldPos[i]!=aOriPos[i])
- {
- var nBP=0;
- var nEP=0;
- if(bDown)
- {
- nBP=aOriPos[i];
- nEP=aOldPos[i]-1;
- }
- else
- {
- if (aOldPos[i]!=-1)
- nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;
- else
- nBP=0;
- nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;
- }
- if(nBP<=nEP)
- {
- setContentsUsed(aDataCon[i],nBP,nEP);
-
- var oFirstPair=aDataCon[i].oUsedItems;
- if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)
- {
- storeKeysOnly(aDataCon[i]);
- aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;
- }
- }
- }
- }
-}
-
-function storeKeysOnly(oCData)
-{
- oCData.aKsOnly=new Array();
- for(var i=0;i<oCData.aKs.length;i++)
- {
- oCData.aKsOnly[i]=oCData.aKs[i].sName;
- i+=oCData.aKs[i].nNKOff;
- }
-}
-
-function setContentsUsed(oIdx,nB,nE)
-{
- if(!oIdx.oUsedItems)
- oIdx.oUsedItems=new usedItems(nB,nE);
- else
- {
- var oUsedItems=oIdx.oUsedItems;
- var oPNode=null;
- do{
- if(oUsedItems.nB>nB)
- {
- if(oUsedItems.nB==nE+1)
- {
- oUsedItems.nB=nB;
- }
- else{
- var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);
- oNewNode.oN=oUsedItems.oN;
- oUsedItems.nB=nB;
- oUsedItems.nE=nE;
- oUsedItems.oN=oNewNode;
- }
- break;
- }
- oPNode=oUsedItems;
- oUsedItems=oUsedItems.oN;
- }while(oUsedItems);
- if(!oUsedItems)
- {
- if(oPNode!=null)
- oPNode.oN=new usedItems(nB,nE);
- }
- if(oPNode!=null){
- if(oPNode.nE==oPNode.oN.nB-1)
- {
- oPNode.nE=oPNode.oN.nE;
- oPNode.oN=oPNode.oN.oN;
- }
- }
- }
-}
-
-function projInfo(sPPath,sDPath,sFile)
-{
- this.sPPath=sPPath;
- this.sDPath=sDPath;
- this.sFile=sFile;
-}
-
-function addProjInfo(sPPath,sDPath,sFile)
-{
- var oIdxInfo=new projInfo(sPPath,sDPath,sFile);
- gaData[gaData.length]=oIdxInfo;
- return oIdxInfo;
-}
-
-function writeDataIFrame()
-{
- if(gnLoad<gaData.length)
- {
- gbLoadInfo=true;
- loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);
- }
- else{
- if(gnItems!=0)
- {
- markBegin();
- writeFakeItems();
- gsSKA="";
- gnNeeded=gnVisible;
- gnIns=0;
- checkReady();
- }
- }
-}
-
-function getH6ById(nPos)
-{
- if(document.all)
- return document.all("fk"+nPos);
- else if(document.getElementsByName)
- return document.getElementsByName("fk"+nPos);
- return null;
-}
-
-function showItemsInEvaluation(nBP)
-{
- var bRtn=true;
- var fPer=nBP/gnItems;
- var nB=Math.floor(fPer*gnMaxItems);
- var oCData=getChunkByIdx(gnRef,nB);
- if(oCData)
- {
- if(!oCData.aKs&&oCData.sFileName!=null)
- {
- gnNKI=nB;
- goCData=oCData;
- oCData.nProjId=gnRef;
- gbLoadInfo=false;
- beginLoading();
- loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);
- }
- else{
- gsSKA=getKByIdx(oCData,nB);
- if(gsSKA)
- {
- gsSKB=null;
- gbNeedCalc=true;
- gbScrl=true;
- checkReady()
- }
- else
- {
- markEnd();
- bRtn=false;
- }
- }
- }
- else
- {
- markEnd();
- bRtn=false;
- }
- return bRtn;
-}
-
-function isUsed(oCData,nPos)
-{
- var oUsed=oCData.oUsedItems;
- while(oUsed&&oUsed.nB<=nPos)
- {
- if(oUsed.nE>=nPos) return true;
- oUsed=oUsed.oN;
- }
- return false;
-}
-
-function getKByIdx(oCData,nB)
-{
- var nRelPos=nB-(oCData.nTotal-oCData.nNum);
- var aIKs=oCData.aKs;
- if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)
- {
- var oK=null;
- do{
- oK=aIKs[nRelPos++];
- }
- while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);
- if(oK.nType!=3)
- {
- return oK.sName;
- }
- else{
- nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;
- if(nRelPos>=0)
- {
- do{
- oK=aIKs[nRelPos--];
- }
- while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);
- }
- if(oK.nType!=3)
- {
- return oK.sName;
- }
- }
- }
- return null;
-}
-
-function loadData2(sFileName)
-{
- disEvt();
- if(gbXML)
- loadDataXML(sFileName);
- else
- loadData(sFileName);
- enEvt();
-}
-
-function projReady(aChunk)
-{
- gaChunks[gnLoad++]=aChunk;
- var len=aChunk.length;
- var nTotal=0;
- if(len>0)
- nTotal=aChunk[len-1].nTotal;
- gnItems+=nTotal;
- if(nTotal>gnMaxItems)
- {
- gnMaxItems=nTotal;
- gnRef=gnLoad-1;
- }
- setTimeout("writeDataIFrame();",1);
-}
-
-function writeFakeItems()
-{
- disEvt();
- gnUHeight=15;
- var sHTML=getFakeItemsHTMLbyCount(0,gnItems);
- document.body.insertAdjacentHTML("beforeEnd",sHTML);
- var obj=getH6ById(0);
- if (document.body != null)
- {
- gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
- }
- gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);
- enEvt();
-}
-
-function getEndString()
-{
- var sBC=getBiggestChar();
- return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;
-}
-
-function getUnitIdx(nScrl,nHeight)
-{
- if(gaFakes.length==0)
- {
- markEnd();
- return;
- }
- var nB=0;
- var nE=gaFakes.length-1;
- var nM=-1;
- var nTop=0;
- var nBtm=0;
- var bF=false;
- do{
- nM=(nB+nE)>>1;
- nBtm=gaFakes[nM].getBtm();
- nTop=gaFakes[nM].getTop();
-
- if(nTop>=nScrl+nHeight)
- nE=nM-1;
- else if(nBtm<nScrl)
- nB=nM+1;
- else{
- bF=true;
- break;
- }
- }while(nE>=nB);
- if(bF)
- {
- if(nTop>=nScrl){
- gsSKA=gaFakes[nM].sKA;
- gsSKB=null;
- gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);
- gnIns=gaFakes[nM].nB;
- checkReady();
- }
- else if(nBtm<=nScrl+nHeight){
- gsSKB=gaFakes[nM].sKB;
- gsSKA=null;
- gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);
- gbNeedCalc=true;
- checkReady();
- }
- else{
- gnNeeded=gnVisible;
- var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);
- if (!showItemsInEvaluation(nUnitIdx))
- {
- gsSKA=gaFakes[nM].sKA;
- gsSKB=null;
- gnNeeded=Math.ceil(nHeight/gnUHeight);
- gnIns=gaFakes[nM].nB;
- checkReady();
- }
- }
- }
- else
- markEnd();
-}
-
-function disEvt()
-{
- window.onscroll=null;
- window.onresize=null;
-}
-
-function enEvt()
-{
- window.onscroll=window_OnScroll;
- window.onresize=window_OnResize;
-}
-
-function insertIdxKs(nIns,oHTML,bScrl)
-{
- var bRtn=true;
- disEvt();
- var nCount=oHTML.nConsumed;
- var nB=0;
- var nE=gaFakes.length-1;
- var nM=-1;
- var bF=false;
- do{
- nM=(nB+nE)>>1;
- if(gaFakes[nM].nB>nIns)
- nE=nM-1;
- else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)
- nB=nM+1;
- else{
- bF=true;
- break;
- }
- }while(nE>=nB);
- if(bF)
- {
- var oFIA=gaFakes[nM];
- var nOffsetTop=oFIA.getTop();
- var nOffsetBottom=oFIA.getBtm();
- var nDelta=0;
- var nHDiff=nIns-oFIA.nB;
- var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);
- if(nHDiff>0)
- {
- nDelta=oFIA.setNum(nHDiff);
- var sOldKBefore=oFIA.sKB;
- oFIA.sKB=oHTML.sFK;
- if(nTDiff>0)
- {
- var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);
- oFIA.insertAdjacentHTML("afterEnd",sHTML);
- var obj=getH6ById(nIns);
- insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));
- }
- oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);
- if(bScrl)
- {
- if(gbMac&&gbIE4)
- {
- var nScrollPos=nOffsetBottom-nDelta;
- while(document.body.scrollTop!=nScrollPos)
- document.body.scrollTop=nScrollPos;
- }
- else
- window.scrollTo(0,nOffsetBottom-nDelta);
- }
- }
- else{
- oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);
- if(bScrl){
- if(gbMac&&gbIE4)
- {
- var nScrollPos=nOffsetTop;
- while(document.body.scrollTop!=nScrollPos)
- document.body.scrollTop=nScrollPos;
- }
- else
- window.scrollTo(0,nOffsetTop);
- }
-
- if(nTDiff>0)
- {
- oFIA.nB=nIns+nCount;
- nDelta=oFIA.setNum(nTDiff);
- oFIA.sKA=oHTML.sLK;
- }
- else{
- gaFakes[nM].setNum(0);
- removeItemFromArray(gaFakes,nM);
- }
- }
- }
- else
- bRtn=false;
- enEvt();
- return bRtn;
-}
-
-function window_OnScroll()
-{
- gnSE++;
- setTimeout("procScroll();",50);
-}
-
-function procScroll()
-{
- if(gnSE==1&&!gbProcess)
- {
- markBegin();
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);
- }
- gnSE--;
-}
-
-function window_OnResize()
-{
- gnRE++;
- setTimeout("procResize();",50);
-}
-
-function procResize()
-{
- if(gnRE==1&&!gbProcess)
- {
- markBegin();
- gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);
- if(gnIns==-1)
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);
- }
- gnRE--;
-}
-
-function getChunkByIdx(nIdx,nPosition)
-{
- var oCData=null;
- if(nIdx<gaChunks.length)
- {
- var len=gaChunks[nIdx].length;
- if(len>0)
- {
- var nB=0;
- var nE=len-1;
- var bF=false;
- do{
- var nM=(nB+nE)>>1;
- if(nPosition<gaChunks[nIdx][nM].nTotal)
- {
- bF=true;
- nE=nM;
- }
- else
- nB=nM+1;
- }while(nE>nB);
- if(bF)
- oCData=gaChunks[nIdx][nE];
- else if(nPosition<gaChunks[nIdx][nB].nTotal)
- oCData=gaChunks[nIdx][nB];
- }
- }
- return oCData;
-}
-
-function getChunkedData(nIdx,bDown,sK)
-{
- var oCData=null;
- var nCandId=-1;
- if(nIdx<gaChunks.length)
- {
- var len=gaChunks[nIdx].length;
- if(len>0)
- {
- var nB=0;
- var nE=len-1;
- var bF=false;
- do{
- var nM=(nB+nE+(bDown?0:1))>>1;
- if(bDown)
- {
- if(compare(sK,gaChunks[nIdx][nM].sEK)<0)
- {
- bF=true;
- nE=nM;
- }
- else
- nB=nM+1;
- }
- else
- {
- if(compare(sK,gaChunks[nIdx][nM].sBK)>0)
- {
- bF=true;
- nB=nM;
- }
- else
- nE=nM-1;
- }
- }while(nE>nB);
- if(bF)
- {
- if(bDown)
- nCandId=nE;
- else
- nCandId=nB;
- }
- else
- {
- if(bDown)
- {
- if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)
- nCandId=nB;
- else
- nCandId=gaChunks[nIdx].length-1;
- }
- else
- {
- if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)
- nCandId=nE;
- else
- nCandId=0;
- }
- }
- return gaChunks[nIdx][nCandId];
- }
- }
- return null;
-}
-
-function findCK()
-{
- if(gsCK!=null)
- {
- gsSKA=gsCK;
- gbFindCK=true;
- gnNeeded=1;
- markBegin();
- checkReady();
- }
-}
-
-function writeLoadingDiv(nIIdx)
-{
- return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";
-}
-
-var gbWhHost=true;
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Index content</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<base target="bsscright">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whlang.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whhost.js"></script>
-<script language="javascript1.2" src="whihost.js"></script>
-<script language="javascript1.2">
-<!--
-var goPopup = null;
-var gbPopupMenuTimeoutExpired=false;
-var gBsClientWidth=640;
-var gBsClientHeight=480;
-var g_bIsPopupMenuInit=false;
-
-function WritePopupMenuLayer()
-{
- if (!g_bIsPopupMenuInit)
- {
- document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");
- document.write("<STYLE TYPE='text/css'>");
- if (gbMac && gbIE4) {
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; text-decoration:none;}");
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; text-decoration:none;}");
- } else {
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; text-decoration:none;}");
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");
- }
- document.write("</STYLE>");
- }
- g_bIsPopupMenuInit = true;
-}
-
-function PopupMenu_Invoke()
-{
- if (gbNav6)
- resetHighLight();
-
- if (!gbNav6 && document.readyState != "complete")
- return false;
- var fn_arguments = PopupMenu_Invoke.arguments;
- // Make sure we have reasonable arguments
- var argLen = fn_arguments.length;
- if (argLen < 3) {
- return false;
- }
-
- // Check to see if we only have one target
- var strTarget = "";
-
- strTarget = "TARGET='" + fn_arguments[1] + "'";
-
- if (argLen < 5) {
- // Get the place that we will be putting the topic into
- var strURL = fn_arguments[3];
-
- if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")
- window.open(strURL, fn_arguments[1]);
- else
- window.open(strURL);
-
- return false;
- }
-
- var strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';
- if (gbMac && gbIE4) {
- strMenu += ' CELLPADDING=4';
- } else {
- strMenu += ' CELLPADDING=2';
- }
- strMenu += ' BGCOLOR=#c0c0c0>';
-
- // Add each of the items
- if (gbIE55)
- {
- var i = 2;
- while (i <= argLen - 1) {
- strMenu += '<TR><TD><NOBR>'
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A ';
- strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + excapeSingleQuotandSlash(fn_arguments[i + 1]) + '\', \'' + fn_arguments[1] + '\');"';
- strMenu += ' onmouseover="parent.PopupMenu_Over(event);"';
- strMenu += ' onmouseout="parent.PopupMenu_Out(event);"';
- strMenu += '>';
- strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';
- strMenu += '</A></DIV></NOBR></TD></TR>';
- i += 2;
- }
- }
- else
- {
- var i = 2;
- while (i <= argLen - 1) {
- strMenu += '<TR><TD><NOBR>'
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '" ' + strTarget;
- strMenu += ' onclick="PopupMenu_HandleClick(event);"';
- strMenu += ' onmouseover="PopupMenu_Over(event);"';
- strMenu += ' onmouseout="PopupMenu_Out(event);"';
- strMenu += '>';
- strMenu += '<SPAN CLASS="PopupNotOver">' + excapeSingleQuotandSlash(fn_arguments[i]) + '</SPAN>';
- strMenu += '</A></DIV></NOBR></TD></TR>';
- i += 2;
- }
- }
- strMenu += "</TABLE>";
-
- if (gbMac && gbIE4) {
- // ie5 in mac need something. </TABLE> is one of them.
- strMenu +="<TABLE></TABLE>";
- }
-
- var layerPopup = null;
- var stylePopup = null;
- var nEventX = 0;
- var nEventY = 0;
- var nWindowWidth = 0;
- if (gbIE4||gbOpera7)
- {
- layerPopup = document.all["PopupMenu"];
- layerPopup.innerHTML = strMenu;
- stylePopup = layerPopup.style;
-
- _BSPSGetClientSize();
-
- // Get the position of the item causing the event (relative to its parent)
- nEventX = window.event.clientX;
- nEventY = window.event.clientY;
-
- if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {
- nEventY += document.body.scrollTop + 10;
- } else {
- nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;
- }
- stylePopup.top = nEventY;
-
- if (nEventX + layerPopup.scrollWidth + 20 > gBsClientWidth) {
- if (gBsClientWidth - layerPopup.scrollWidth < 5) {
- stylePopup.left = 5;
- } else {
- stylePopup.left = gBsClientWidth - layerPopup.scrollWidth - 5;
- }
- } else {
- stylePopup.left = nEventX + document.body.scrollLeft + 20;
- }
-
- if (gbIE55) {
- var nPosX = window.event.clientX;
- var nPosY = window.event.clientY;
- if (window.event.srcElement)
- {
- nPosX = window.event.srcElement.offsetLeft + window.event.srcElement.offsetWidth - document.body.scrollLeft;
- nPosY = window.event.srcElement.offsetTop + window.event.srcElement.offsetHeight - document.body.scrollTop;
- }
- goPopup = window.createPopup();
- var oPopupBody = goPopup.document.body;
- goPopup.document.createStyleSheet();
- goPopup.document.styleSheets[0].addRule(".PopupOver", "{font-family:\"Arial\"; cursor: hand;color:white; background:navy; font-size:8pt; text-decoration:none;}");
- goPopup.document.styleSheets[0].addRule(".PopupNotOver", "{font-family:\"Arial\"; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");
- oPopupBody.insertAdjacentHTML("afterBegin", strMenu);
- goPopup.show(nPosX, nPosY, layerPopup.scrollWidth, layerPopup.scrollHeight, document.body);
- }
- else
- {
- stylePopup.visibility = "visible";
- document.onclick = PopupMenu_HandleClick;
- }
- } else if (gbNav6) {
- layerPopup = document.getElementById("PopupMenu");
- layerPopup.style.visibility = "hidden";
-
- var e = fn_arguments[0];
- nEventX = e.pageX;
- nEventY = e.pageY;
- _BSPSGetClientSize();
- layerPopup.innerHTML = strMenu;
-
- if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) {
- nEventY += 20;
- } else {
- nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;
- }
-
- if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {
- if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {
- nEventX = 5;
- } else {
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;
- }
- } else {
- nEventX += 20;
- }
- layerPopup.style.top = nEventY;
- layerPopup.style.left = nEventX;
-
- // set again to avoid the frash in netscape 6.
- layerPopup.innerHTML = strMenu;
- layerPopup.style.visibility = "visible";
- window.onclick = PopupMenu_HandleClick;
- }
-
- window.gbPopupMenuTimeoutExpired = false;
- setTimeout("PopupMenu_Timeout();", 100);
- return false;
-}
-
-function PopupMenu_Timeout()
-{
- window.gbPopupMenuTimeoutExpired = true;
-}
-
-function PopupMenu_Over(e)
-{
- if (gbIE4||gbOpera7)
- e.srcElement.className = "PopupOver";
- else if (gbNav6)
- e.target.parentNode.className = "PopupOver";
-}
-
-function PopupMenu_Out(e)
-{
- if (gbIE4||gbOpera7)
- e.srcElement.className = "PopupNotOver";
- else if (gbNav6)
- e.target.parentNode.className = "PopupNotOver";
-}
-
-function PopupMenu_2HandleClick(surl, starget)
-{
- window.open(surl, starget);
- goPopup.hide();
-}
-
-function PopupMenu_HandleClick(e)
-{
- if (!window.gbPopupMenuTimeoutExpired) {
- return;
- }
-
- var layerPopup = getElement("PopupMenu");
- layerPopup.style.visibility = "hidden";
-
- return;
-}
-
-//Get client size info
-function _BSPSGetClientSize()
-{
- gBsClientWidth = document.body.clientWidth;
- gBsClientHeight = document.body.clientHeight;
-}
-
-if (window.gbWhIHost)
-{
-
-
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
- setFont("Empty", "Arial","9pt","#000000","normal","normal","none");
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");
- setActiveBgColor("#cccccc");
- setMargin("0pt");
- setIndent("9pt");
- IndexWriteClassStyle();
-}
-else
- document.location.reload();
-//-->
-</script>
-</head>
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">
-<script languageE="JavaScript">
-<!--
-WritePopupMenuLayer();
-//-->
-</script>
-</body>
-</html>
-
+++ /dev/null
-<html>
-<head>
-<title>Index</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2">
-<!--
-var gbIndexLayerInit = false;
-if (window.gbWhProxy&&window.gbWhMsg&&window.gbWhVer)
-{
- var strWrite;
- if (gbMac)
- strWrite="<FRAMESET ROWS='45,100%' framespacing=0 frameborder=1>";
- else
- strWrite="<FRAMESET ROWS='60,100%' framespacing=0 frameborder=1>";
- strWrite +="<FRAME SRC='whiform.htm' title='index form frame' name='idxform' noresize='yes' scrolling='no'>";
- strWrite +="<FRAME SRC='whibody.htm' title='index content frame' name='idxbody' scrolling='yes'>";
- strWrite +="</FRAMESET>";
- document.write(strWrite);
-}
-else
- document.location.reload();
-//-->
-</script>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Index form</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<style>
-<!--
-body {margin:0;}
--->
-</style>
-<body bgcolor="#c0c0c0">
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whform.js"></script>
-<script language="javascript1.2">
-<!--
-function indexLookup(bCR)
-{
- var strInput = document.IndexInputForm.keywordField.value.toUpperCase();
- if (strInput != "") {
- var oParam = new Object();
- oParam.sInput = strInput;
- oParam.bCR = bCR;
- var oMessage = new whMessage(WH_MSG_SEARCHINDEXKEY, this, 1, oParam);
- SendMessage(oMessage);
- }
- if (gbMac) {
- document.IndexInputForm.keywordField.focus();
- }
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this, WH_MSG_SHOWTOC);
- UnRegisterListener2(this, WH_MSG_SHOWIDX);
- UnRegisterListener2(this, WH_MSG_SHOWFTS);
- UnRegisterListener2(this, WH_MSG_SHOWGLO);
-}
-
-function onSendMessage(oMessage)
-{
- if (oMessage.nMessageId == WH_MSG_SHOWIDX)
- {
- document.IndexInputForm.keywordField.focus();
- }
- else if (oMessage.nMessageId == WH_MSG_SHOWFTS ||
- oMessage.nMessageId == WH_MSG_SHOWTOC ||
- oMessage.nMessageId == WH_MSG_SHOWGLO)
- {
- document.IndexInputForm.keywordField.blur();
- }
- return true;
-}
-
-if (window.gbWhForm)
-{
- RegisterListener2(this, WH_MSG_SHOWTOC);
- RegisterListener2(this, WH_MSG_SHOWIDX);
- RegisterListener2(this, WH_MSG_SHOWFTS);
- RegisterListener2(this, WH_MSG_SHOWGLO);
- window.onunload=window_Unload;
- window.onload = init;
- gfunLookUp = indexLookup;
- gfunInit = null;
- gstrFormName = "IndexInputForm"
- gsTitle = "Type in the keyword to find:";
- gsTitle = "Type in the keyword to find:";
-
-
-
-
-
-
-
- setGoText("Go");
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");
-
-
- document.write(getFormHTML());
- writeFormStyle();
-}
-else
- document.location.reload();
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-// WebHelp 5.10.002
-var gsDefaultTarget="bsscright";
-var gsBgColor="#ffffff";
-var gsBgImage="";
-var goIdxFont=null;
-var goIdxEmptyFont=null;
-var goIdxHoverFont=null;
-var gsIdxMargin="0pt";
-var gsIdxIndent="8pt";
-var gsIdxActiveBgColor="#cccccc";
-var gsCK = null;
-var gsBCK = null;
-var gbCR = false;
-var gbBCR = false;
-var gbWhIHost=true;
-
-function myEvent()
-{
- this.pageX = 0;
- this.pageY = 0;
-}
-var _event=new myEvent();
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Normal")
- goIdxFont=vFont;
- else if(sType=="Empty")
- goIdxEmptyFont=vFont;
- else if(sType=="Hover")
- goIdxHoverFont=vFont;
-}
-
-function setActiveBgColor(sBgColor)
-{
- gsIdxActiveBgColor=sBgColor;
-}
-
-function setMargin(sMargin)
-{
- gsIdxMargin=sMargin;
-}
-
-function setIndent(sIndent)
-{
- gsIdxIndent=sIndent;
-}
-
-function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
-{
- var sHTML="";
- var nIdxSet=aCurIdxSet[0];
- var nIIdx=aPos[nIdxSet];
- var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);
- var sKName=_textToHtml(sKOriName);
-
- var nIdxIndent=parseInt(gsIdxIndent);
- var sTopics="";
- if(nLevel==1){
- if(getItemType(aDataCon,nIdxSet,nIIdx)==1)
- {
- sHTML+="<H6><nobr>";
- sHTML+="<b>"+sKName+"</b></nobr></H6>";
- }
- else{
- for(var i=0;i<nLength;i++)
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";
- sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";
- if(sTopics.length>0)
- sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";
- else
- sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></p>";
- }
- }
- else if(nLevel>=2){
- var nIndent=nIdxIndent*nLevel;
- for(var i=0;i<nLength;i++)
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- if (nLevel==2)
- sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";
- else
- sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";
- sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";
- if(sTopics.length>0)
- sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";
- else
- sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></h6>";
- }
- oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);
-}
-
-function getTargetName(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)
- return aDataCon[nIdxSet].aKs[nIIdx].sTarget;
- return gsDefaultTarget;
-}
-
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
-{
- var oLocalHTML=new indexHTMLPart();
- writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);
-
- var aLocalPos=new Array();
- var aMaxPos=new Array();
- for(var i=0;i<aPos.length;i++)
- {
- aLocalPos[i]=aPos[i];
- aMaxPos[i]=-1;
- }
-
- for(i=0;i<nLength;i++)
- {
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);
- aLocalPos[aCurIdxSet[i]]++;
- if(nNKOff>0)
- aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;
- }
- var oSubHTML=new indexHTMLPart();
- writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);
- oLocalHTML.addSubHTML(oSubHTML,true);
- oHTML.appendHTML(oLocalHTML,bDown);
-}
-
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)
-{
- if(bDown)
- {
- for(var i=0;i<nLength;i++)
- {
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- aPos[aCurIdxSet[i]]+=(1+nNKOff);
- }
- }
- else{
- for(var i=0;i<nLength;i++)
- {
- var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);
- aPos[aCurIdxSet[i]]-=(1+nPKOff);
- }
- }
-}
-
-function getItemName(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].sName;
- else
- return null;
-}
-
-function getItemType(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nType;
- else
- return 0;
-}
-
-function getNKOff(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;
- else
- return null;
-}
-
-function getPKOff(aDataCon,nIdxSet,nIIdx)
-{
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;
- else
- return null;
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());
- loadIdx();
- var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)
- SendMessage(oMsg);
-}
-
-function loadIdx()
-{
- if(!gbReady)
- {
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
- if(SendMessage(oResMsg)&&oResMsg.oParam)
- {
- gbReady=true;
- var oProj=oResMsg.oParam;
- var aProj=oProj.aProj;
- gbXML=oProj.bXML;
- if(aProj.length>0)
- {
- var sLangId=aProj[0].sLangId;
- for(var i=0;i<aProj.length;i++)
- {
- if(aProj[i].sIdx&&aProj[i].sLangId==sLangId)
- {
- addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);
- }
- }
- }
- writeDataIFrame();
- enEvt();
- }
- }
-}
-
-function getIdxTopics(aDataCon,nIdxSet,nIIdx)
-{
- var sTopics="";
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)
- {
- if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)
- {
- var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;
- var nProj=aDataCon[nIdxSet].nProjId;
- var sPath=gaData[nProj].sPPath;
- for(var i=0;i<nLen;i++)
- {
- var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;
- var sFullPath=_getFullPath(sPath,sURL);
- sTopics+=",'"+excapeSingleQuotandSlash(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+excapeSingleQuotandSlash(_textToHtml_nonbsp(sFullPath))+"'";
- }
- }
- }
- return sTopics;
-}
-
-function findCKInDom()
-{
- if(gsCK!=null)
- {
- var sK=gsCK;
- var oP=getElementsByTag(document,"P");
- if(!oP) return false;
- var len=oP.length;
- var nB=0;
- var nE=len-1;
- var nM=0;
- var sItem="";
- var bF=false;
- while(nB<nE){
- nM=(nB+nE+1)>>1;
- sItem=getInnerText(oP[nM]);
-
- if(compare(sItem,sK)==0)
- {
- bF=true;
- break;
- }
- else if(compare(sItem,sK)>0)
- nE=nM-1;
- else if(compare(sItem,sK)<0)
- nB=nM;
- }
- if(!bF)
- {
- if(nB==nE) nM=nB;
-
- if(nM+1<len)
- {
- sItem=getInnerText(oP[nM+1]);
- if(compare(sItem,sK)<=0) nM++;
- }
- if(nM+1<len)
- {
- sItem=getInnerText(oP[nM+1]);
- if(compare(sItem.substring(0,sK.length),sK)==0) nM++;
- }
- }
-
- var oMatch=oP[nM];
- if(oMatch)
- {
- window.scrollTo(0,oMatch.offsetTop);
- var tempColl=getElementsByTag(oMatch,"A");
- if(tempColl&&tempColl.length>0){
- var nbTag=getElementsByTag(oMatch,"NOBR");
- if(nbTag&&nbTag.length>0)
- HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");
- if (gbCR)
- {
- if (gbIE4)
- tempColl(0).click();
- else
- {
- var strCommand = tempColl[0].getAttribute("onClick");
- var nstrCommand = strCommand.indexOf(";");
- strCommand = strCommand.substring(0, nstrCommand);
- strCommand = strCommand.replace("event", "_event");
- window._event.pageX = oMatch.offsetLeft ;
- window._event.pageY = oMatch.offsetTop + 20;
- window.setTimeout(strCommand, 100);
- }
- }
- }
- }
- gsCK=gsBCK;
- gbCR=gbBCR;
- if(gsBCK!=null)
- {
- gsBCK=null;
- gbBCR=false;
- findCK();
- return false;
- }
-
- }
- return true;
-}
-
-function clearHighLight()
-{
- resetHighLight(gsBgColor);
-}
-
-function IndexWriteClassStyle()
-{
- var sStyle="";
- sStyle+="<STYLE TYPE='text/css'>";
- if (gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- if(gbIE4&&gbMac&&!gbIE5)
- {
- var nMargin=parseInt(gsIdxMargin);
- nMargin-=10;
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";
- sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}\n";
- }
- else
- {
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";
- }
- sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";
- sStyle+="A:link {"+getFontStyle(goIdxFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}\n";
- sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}\n";
- sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}\n";
- sStyle+="</STYLE>";
- document.write(sStyle);
- return;
-}
-
-function window_Unload()
-{
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);
- UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);
-}
-
-function onSendMessage(oMsg)
-{
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_SEARCHINDEXKEY)
- {
- if(oMsg.oParam && oMsg.oParam.sInput)
- {
- if(gsCK==null)
- {
- gsCK=oMsg.oParam.sInput;
- gbCR = oMsg.oParam.bCR;
- findCK();
- }
- else
- {
- gsBCK=oMsg.oParam.sInput;
- gbBCR = oMsg.oParam.bCR;
- }
- }
- }
- else if(nMsgId==WH_MSG_PROJECTREADY)
- {
- loadIdx();
- }
- }
- return true;
-}
-
-if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)
-{
- RegisterListener2(this,WH_MSG_PROJECTREADY);
- RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);
- goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
- goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");
- goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
-
- window.onload=window_OnLoad;
- window.onbeforeunload=window_BUnload;
- window.onunload=window_Unload;
- gbWhIHost=true;
-}
-else
- document.location.reload();
-
+++ /dev/null
-// WebHelp 5.10.001
-var garrSortChar=new Array();
-var gaFtsStop=new Array();
-var gaFtsStem=new Array();
-var gbWhLang=false;
-
-garrSortChar[0] = 0;
-garrSortChar[1] = 1;
-garrSortChar[2] = 2;
-garrSortChar[3] = 3;
-garrSortChar[4] = 4;
-garrSortChar[5] = 5;
-garrSortChar[6] = 6;
-garrSortChar[7] = 7;
-garrSortChar[8] = 8;
-garrSortChar[9] = 40;
-garrSortChar[10] = 41;
-garrSortChar[11] = 42;
-garrSortChar[12] = 43;
-garrSortChar[13] = 44;
-garrSortChar[14] = 9;
-garrSortChar[15] = 10;
-garrSortChar[16] = 11;
-garrSortChar[17] = 12;
-garrSortChar[18] = 13;
-garrSortChar[19] = 14;
-garrSortChar[20] = 15;
-garrSortChar[21] = 16;
-garrSortChar[22] = 17;
-garrSortChar[23] = 18;
-garrSortChar[24] = 19;
-garrSortChar[25] = 20;
-garrSortChar[26] = 21;
-garrSortChar[27] = 22;
-garrSortChar[28] = 23;
-garrSortChar[29] = 24;
-garrSortChar[30] = 25;
-garrSortChar[31] = 26;
-garrSortChar[32] = 38;
-garrSortChar[33] = 45;
-garrSortChar[34] = 46;
-garrSortChar[35] = 47;
-garrSortChar[36] = 48;
-garrSortChar[37] = 49;
-garrSortChar[38] = 50;
-garrSortChar[39] = 33;
-garrSortChar[40] = 51;
-garrSortChar[41] = 52;
-garrSortChar[42] = 53;
-garrSortChar[43] = 88;
-garrSortChar[44] = 54;
-garrSortChar[45] = 34;
-garrSortChar[46] = 55;
-garrSortChar[47] = 56;
-garrSortChar[48] = 115;
-garrSortChar[49] = 119;
-garrSortChar[50] = 121;
-garrSortChar[51] = 123;
-garrSortChar[52] = 125;
-garrSortChar[53] = 126;
-garrSortChar[54] = 127;
-garrSortChar[55] = 128;
-garrSortChar[56] = 129;
-garrSortChar[57] = 130;
-garrSortChar[58] = 57;
-garrSortChar[59] = 58;
-garrSortChar[60] = 89;
-garrSortChar[61] = 90;
-garrSortChar[62] = 91;
-garrSortChar[63] = 59;
-garrSortChar[64] = 60;
-garrSortChar[65] = 131;
-garrSortChar[66] = 148;
-garrSortChar[67] = 150;
-garrSortChar[68] = 154;
-garrSortChar[69] = 158;
-garrSortChar[70] = 168;
-garrSortChar[71] = 171;
-garrSortChar[72] = 173;
-garrSortChar[73] = 175;
-garrSortChar[74] = 185;
-garrSortChar[75] = 187;
-garrSortChar[76] = 189;
-garrSortChar[77] = 191;
-garrSortChar[78] = 193;
-garrSortChar[79] = 197;
-garrSortChar[80] = 214;
-garrSortChar[81] = 216;
-garrSortChar[82] = 218;
-garrSortChar[83] = 220;
-garrSortChar[84] = 225;
-garrSortChar[85] = 230;
-garrSortChar[86] = 240;
-garrSortChar[87] = 242;
-garrSortChar[88] = 244;
-garrSortChar[89] = 246;
-garrSortChar[90] = 252;
-garrSortChar[91] = 61;
-garrSortChar[92] = 62;
-garrSortChar[93] = 63;
-garrSortChar[94] = 64;
-garrSortChar[95] = 66;
-garrSortChar[96] = 67;
-garrSortChar[97] = 131;
-garrSortChar[98] = 148;
-garrSortChar[99] = 150;
-garrSortChar[100] = 154;
-garrSortChar[101] = 158;
-garrSortChar[102] = 168;
-garrSortChar[103] = 171;
-garrSortChar[104] = 173;
-garrSortChar[105] = 175;
-garrSortChar[106] = 185;
-garrSortChar[107] = 187;
-garrSortChar[108] = 189;
-garrSortChar[109] = 191;
-garrSortChar[110] = 193;
-garrSortChar[111] = 197;
-garrSortChar[112] = 214;
-garrSortChar[113] = 216;
-garrSortChar[114] = 218;
-garrSortChar[115] = 220;
-garrSortChar[116] = 225;
-garrSortChar[117] = 230;
-garrSortChar[118] = 240;
-garrSortChar[119] = 242;
-garrSortChar[120] = 244;
-garrSortChar[121] = 246;
-garrSortChar[122] = 252;
-garrSortChar[123] = 68;
-garrSortChar[124] = 69;
-garrSortChar[125] = 70;
-garrSortChar[126] = 71;
-garrSortChar[127] = 27;
-garrSortChar[128] = 114;
-garrSortChar[129] = 28;
-garrSortChar[130] = 82;
-garrSortChar[131] = 170;
-garrSortChar[132] = 85;
-garrSortChar[133] = 112;
-garrSortChar[134] = 109;
-garrSortChar[135] = 110;
-garrSortChar[136] = 65;
-garrSortChar[137] = 113;
-garrSortChar[138] = 223;
-garrSortChar[139] = 86;
-garrSortChar[140] = 213;
-garrSortChar[141] = 29;
-garrSortChar[142] = 255;
-garrSortChar[143] = 30;
-garrSortChar[144] = 31;
-garrSortChar[145] = 80;
-garrSortChar[146] = 81;
-garrSortChar[147] = 83;
-garrSortChar[148] = 84;
-garrSortChar[149] = 111;
-garrSortChar[150] = 36;
-garrSortChar[151] = 37;
-garrSortChar[152] = 79;
-garrSortChar[153] = 229;
-garrSortChar[154] = 222;
-garrSortChar[155] = 87;
-garrSortChar[156] = 212;
-garrSortChar[157] = 32;
-garrSortChar[158] = 254;
-garrSortChar[159] = 251;
-garrSortChar[160] = 39;
-garrSortChar[161] = 72;
-garrSortChar[162] = 97;
-garrSortChar[163] = 98;
-garrSortChar[164] = 99;
-garrSortChar[165] = 100;
-garrSortChar[166] = 73;
-garrSortChar[167] = 101;
-garrSortChar[168] = 74;
-garrSortChar[169] = 102;
-garrSortChar[170] = 133;
-garrSortChar[171] = 93;
-garrSortChar[172] = 103;
-garrSortChar[173] = 35;
-garrSortChar[174] = 104;
-garrSortChar[175] = 75;
-garrSortChar[176] = 105;
-garrSortChar[177] = 92;
-garrSortChar[178] = 122;
-garrSortChar[179] = 124;
-garrSortChar[180] = 76;
-garrSortChar[181] = 106;
-garrSortChar[182] = 107;
-garrSortChar[183] = 108;
-garrSortChar[184] = 77;
-garrSortChar[185] = 120;
-garrSortChar[186] = 199;
-garrSortChar[187] = 94;
-garrSortChar[188] = 116;
-garrSortChar[189] = 117;
-garrSortChar[190] = 118;
-garrSortChar[191] = 78;
-garrSortChar[192] = 131;
-garrSortChar[193] = 131;
-garrSortChar[194] = 131;
-garrSortChar[195] = 131;
-garrSortChar[196] = 131;
-garrSortChar[197] = 131;
-garrSortChar[198] = 131;
-garrSortChar[199] = 150;
-garrSortChar[200] = 158;
-garrSortChar[201] = 158;
-garrSortChar[202] = 158;
-garrSortChar[203] = 158;
-garrSortChar[204] = 175;
-garrSortChar[205] = 175;
-garrSortChar[206] = 175;
-garrSortChar[207] = 175;
-garrSortChar[208] = 154;
-garrSortChar[209] = 193;
-garrSortChar[210] = 197;
-garrSortChar[211] = 197;
-garrSortChar[212] = 197;
-garrSortChar[213] = 197;
-garrSortChar[214] = 197;
-garrSortChar[215] = 95;
-garrSortChar[216] = 197;
-garrSortChar[217] = 230;
-garrSortChar[218] = 230;
-garrSortChar[219] = 230;
-garrSortChar[220] = 230;
-garrSortChar[221] = 246;
-garrSortChar[222] = 227;
-garrSortChar[223] = 224;
-garrSortChar[224] = 131;
-garrSortChar[225] = 131;
-garrSortChar[226] = 131;
-garrSortChar[227] = 131;
-garrSortChar[228] = 131;
-garrSortChar[229] = 131;
-garrSortChar[230] = 131;
-garrSortChar[231] = 150;
-garrSortChar[232] = 158;
-garrSortChar[233] = 158;
-garrSortChar[234] = 158;
-garrSortChar[235] = 158;
-garrSortChar[236] = 175;
-garrSortChar[237] = 175;
-garrSortChar[238] = 175;
-garrSortChar[239] = 175;
-garrSortChar[240] = 154;
-garrSortChar[241] = 193;
-garrSortChar[242] = 197;
-garrSortChar[243] = 197;
-garrSortChar[244] = 197;
-garrSortChar[245] = 197;
-garrSortChar[246] = 197;
-garrSortChar[247] = 96;
-garrSortChar[248] = 197;
-garrSortChar[249] = 230;
-garrSortChar[250] = 230;
-garrSortChar[251] = 230;
-garrSortChar[252] = 230;
-garrSortChar[253] = 246;
-garrSortChar[254] = 227;
-garrSortChar[255] = 250;
-
-gaFtsStop[0] = "a";
-gaFtsStop[1] = "about";
-gaFtsStop[2] = "after";
-gaFtsStop[3] = "against";
-gaFtsStop[4] = "all";
-gaFtsStop[5] = "also";
-gaFtsStop[6] = "among";
-gaFtsStop[7] = "an";
-gaFtsStop[8] = "and";
-gaFtsStop[9] = "are";
-gaFtsStop[10] = "as";
-gaFtsStop[11] = "at";
-gaFtsStop[12] = "be";
-gaFtsStop[13] = "became";
-gaFtsStop[14] = "because";
-gaFtsStop[15] = "been";
-gaFtsStop[16] = "between";
-gaFtsStop[17] = "but";
-gaFtsStop[18] = "by";
-gaFtsStop[19] = "can";
-gaFtsStop[20] = "come";
-gaFtsStop[21] = "do";
-gaFtsStop[22] = "during";
-gaFtsStop[23] = "each";
-gaFtsStop[24] = "early";
-gaFtsStop[25] = "for";
-gaFtsStop[26] = "form";
-gaFtsStop[27] = "found";
-gaFtsStop[28] = "from";
-gaFtsStop[29] = "had";
-gaFtsStop[30] = "has";
-gaFtsStop[31] = "have";
-gaFtsStop[32] = "he";
-gaFtsStop[33] = "her";
-gaFtsStop[34] = "his";
-gaFtsStop[35] = "however";
-gaFtsStop[36] = "in";
-gaFtsStop[37] = "include";
-gaFtsStop[38] = "into";
-gaFtsStop[39] = "is";
-gaFtsStop[40] = "it";
-gaFtsStop[41] = "its";
-gaFtsStop[42] = "late";
-gaFtsStop[43] = "later";
-gaFtsStop[44] = "made";
-gaFtsStop[45] = "many";
-gaFtsStop[46] = "may";
-gaFtsStop[47] = "me";
-gaFtsStop[48] = "med";
-gaFtsStop[49] = "more";
-gaFtsStop[50] = "most";
-gaFtsStop[51] = "near";
-gaFtsStop[52] = "no";
-gaFtsStop[53] = "non";
-gaFtsStop[54] = "not";
-gaFtsStop[55] = "of";
-gaFtsStop[56] = "on";
-gaFtsStop[57] = "only";
-gaFtsStop[58] = "or";
-gaFtsStop[59] = "other";
-gaFtsStop[60] = "over";
-gaFtsStop[61] = "several";
-gaFtsStop[62] = "she";
-gaFtsStop[63] = "some";
-gaFtsStop[64] = "such";
-gaFtsStop[65] = "than";
-gaFtsStop[66] = "that";
-gaFtsStop[67] = "the";
-gaFtsStop[68] = "their";
-gaFtsStop[69] = "then";
-gaFtsStop[70] = "there";
-gaFtsStop[71] = "these";
-gaFtsStop[72] = "they";
-gaFtsStop[73] = "this";
-gaFtsStop[74] = "through";
-gaFtsStop[75] = "to";
-gaFtsStop[76] = "under";
-gaFtsStop[77] = "until";
-gaFtsStop[78] = "use";
-gaFtsStop[79] = "was";
-gaFtsStop[80] = "we";
-gaFtsStop[81] = "were";
-gaFtsStop[82] = "when";
-gaFtsStop[83] = "where";
-gaFtsStop[84] = "which";
-gaFtsStop[85] = "who";
-gaFtsStop[86] = "with";
-gaFtsStop[87] = "you";
-
-gaFtsStem[0] = "ed";
-gaFtsStem[1] = "es";
-gaFtsStem[2] = "er";
-gaFtsStem[3] = "e";
-gaFtsStem[4] = "s";
-gaFtsStem[5] = "ingly";
-gaFtsStem[6] = "ing";
-gaFtsStem[7] = "ly";
-
-
-// as javascript 1.3 support unicode instead of ISO-Latin-1
-// need to transfer come code back to ISO-Latin-1 for compare purpose
-// Note: Different Language(Code page) maybe need different array:
-var gaUToC=new Array();
-gaUToC[8364]=128;
-gaUToC[8218]=130;
-gaUToC[402]=131;
-gaUToC[8222]=132;
-gaUToC[8230]=133;
-gaUToC[8224]=134;
-gaUToC[8225]=135;
-gaUToC[710]=136;
-gaUToC[8240]=137;
-gaUToC[352]=138;
-gaUToC[8249]=139;
-gaUToC[338]=140;
-gaUToC[381]=142;
-gaUToC[8216]=145;
-gaUToC[8217]=146;
-gaUToC[8220]=147;
-gaUToC[8221]=148;
-gaUToC[8226]=149;
-gaUToC[8211]=150;
-gaUToC[8212]=151;
-gaUToC[732]=152;
-gaUToC[8482]=153;
-gaUToC[353]=154;
-gaUToC[8250]=155;
-gaUToC[339]=156;
-gaUToC[382]=158;
-gaUToC[376]=159;
-
-var gsBiggestChar="";
-function getBiggestChar()
-{
- if(gsBiggestChar.length==0)
- {
- if(garrSortChar.length<256)
- gsBiggestChar=String.fromCharCode(255);
- else
- {
- var nBiggest=0;
- var nBigChar=0;
- for(var i=0;i<=255;i++)
- {
- if(garrSortChar[i]>nBiggest)
- {
- nBiggest=garrSortChar[i];
- nBigChar=i;
- }
- }
- gsBiggestChar=String.fromCharCode(nBigChar);
- }
-
- }
- return gsBiggestChar;
-}
-
-function getCharCode(str,i)
-{
- var code=str.charCodeAt(i)
- if(code>256)
- {
- code=gaUToC[code];
- }
- return code;
-}
-
-function compare(strText1,strText2)
-{
- if(garrSortChar.length<256)
- {
- var strt1=strText1.toLowerCase();
- var strt2=strText2.toLowerCase();
- if(strt1<strt2) return -1;
- if(strt1>strt2) return 1;
- return 0;
- }
- else
- {
- for(var i=0;i<strText1.length&&i<strText2.length;i++)
- {
- if(garrSortChar[getCharCode(strText1,i)]<garrSortChar[getCharCode(strText2,i)]) return -1;
- if(garrSortChar[getCharCode(strText1,i)]>garrSortChar[getCharCode(strText2,i)]) return 1;
- }
- if(strText1.length<strText2.length) return -1;
- if(strText1.length>strText2.length) return 1;
- return 0;
- }
-}
-gbWhLang=true;
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002
-if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){
-
-HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
-{
- switch (where){
- case 'beforeBegin':
- this.parentNode.insertBefore(parsedNode,this);
- break;
- case 'afterBegin':
- this.insertBefore(parsedNode,this.firstChild);
- break;
- case 'beforeEnd':
- this.appendChild(parsedNode);
- break;
- case 'afterEnd':
- if (this.nextSibling){
- this.parentNode.insertBefore(parsedNode,this.nextSibling);
- } else {
- this.parentNode.appendChild(parsedNode);
- }
- break;
- }
-}
-
-HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){
-
- var r = this.ownerDocument.createRange();
- r.setStartBefore(this);
- var parsedHTML = r.createContextualFragment(htmlStr);
- this.insertAdjacentElement(where,parsedHTML);
-}
-
-
-HTMLElement.prototype.insertAdjacentText = function(where,txtStr){
-
- var parsedText = document.createTextNode(txtStr);
- this.insertAdjacentElement(where,parsedText);
-}
-}
-
-function testScroll() {
- // Initialize scrollbar cache if necessary
- if (window._pageXOffset==null) {
- window._pageXOffset = window.pageXOffset;
- window._pageYOffset = window.pageYOffset;
- }
- // Expose Internet Explorer compatible object model
- document.scrollTop = window.pageYOffset;
- document.scrollLeft = window.pageXOffset;
- window.document.scrollHeight = document.height;
- window.document.scrollWidth = document.width;
- window.document.clientWidth = window.innerWidth;
- window.document.clientHeight = window.innerHeight;
-
- // If cache!=current values, call the onscroll event
- if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll))
- window.onscroll();
- // Cache new values
- window._pageXOffset = window.pageXOffset;
- window._pageYOffset = window.pageYOffset;
- }
-
-// Create compatibility layer for Netscape
-if (window.gbNav6 && !window.gbNav7) {
- setInterval("testScroll()",50)
-}
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002
-var WH_MSG_RESIZEPANE =0x0100;
-var WH_MSG_SHOWPANE =0x0101;
-var WH_MSG_HIDEPANE =0x0102;
-var WH_MSG_SYNCTOC =0x0103;
-var WH_MSG_NEXT =0x0104;
-var WH_MSG_PREV =0x0105;
-var WH_MSG_NOSEARCHINPUT =0x0106;
-var WH_MSG_NOSYNC =0x0107;
-var WH_MSG_ENABLEWEBSEARCH =0x0108;
-
-var WH_MSG_ISPANEVISIBLE =0x0109;
-var WH_MSG_PANESTATUE =0x010a;
-
-var WH_MSG_SYNCINFO =0x010b;
-var WH_MSG_PANEINFO =0x010c;
-var WH_MSG_WEBSEARCH =0x010d;
-
-var WH_MSG_SEARCHINDEXKEY =0x0201;
-
-var WH_MSG_SEARCHFTSKEY =0x020a;
-
-var WH_MSG_PROJECTREADY =0x0301;
-var WH_MSG_GETPROJINFO =0x0302;
-
-var WH_MSG_SHOWTOC =0x0401;
-var WH_MSG_SHOWIDX =0x0402;
-var WH_MSG_SHOWFTS =0x0403;
-var WH_MSG_SHOWGLO =0x0404;
-
-var WH_MSG_SHOWGLODEF =0x0500;
-
-var WH_MSG_GETTOCPATHS =0x0600;
-var WH_MSG_GETAVIAVENUES =0x0601;
-var WH_MSG_GETCURRENTAVENUE =0x0602;
-var WH_MSG_GETPANEINFO =0x0603;
-var WH_MSG_AVENUEINFO =0x0604;
-
-var WH_MSG_GETSTARTFRAME =0x0701;
-var WH_MSG_GETDEFAULTTOPIC =0x0702;
-
-var WH_MSG_SEARCHTHIS =0x0801;
-var WH_MSG_GETSEARCHS =0x0802;
-
-var WH_MSG_ISINFRAMESET =0x0900;
-
-var WH_MSG_TOOLBARORDER =0x0a00;
-var WH_MSG_MINIBARORDER =0x0a01;
-var WH_MSG_ISSYNCSSUPPORT =0x0a02;
-var WH_MSG_ISSEARCHSUPPORT =0x0a03;
-var WH_MSG_GETPANETYPE =0x0a04;
-var WH_MSG_BACKUPSEARCH =0x0a05;
-var WH_MSG_GETPANES =0x0a06;
-var WH_MSG_INITSEARCHSTRING =0x0a07;
-var WH_MSG_RELOADNS6 =0x0a08;
-var WH_MSG_ISAVENUESUPPORT =0x0a09;
-
-var WH_MSG_GETCMD =0x0b00;
-var WH_MSG_GETPANE =0x0b01;
-var WH_MSG_GETDEFPANE =0x0b02;
-
-function whMessage(nMessageId,wSender,nVersion,oParam)
-{
- this.nMessageId=nMessageId;
- this.wSender=wSender;
- this.nVersion=nVersion;
- this.oParam=oParam;
-}
-var gbWhMsg=true;
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whstub.js"></script>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whstart.js"></script>
-<script language="javascript1.2">
-<!--
-function window_Onload()
-{
- if (window.gsTopic)
- frames["bsscright"].document.location = window.gsTopic;
-}
-window.onload=window_Onload;
-//-->
-</script>
-</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>
+++ /dev/null
-// WebHelp 5.10.005
-var gaProj=new Array();
-var gnChecked=0;
-var gsProjName="";
-var gbReady=false;
-var goMan=null;
-var gbXML=false;
-var gsFirstPane="";
-var gServerEnabled=false;
-var gsPath="";
-var gbWhPHost=false;
-var goDiv = null;
-var gsHTML = "";
-
-if (navigator.currentNavPen)
- gsFirstPane = navigator.currentNavPen;
-
-
-function delayLoad()
-{
- if (goDiv&&gsHTML)
- {
- goDiv.innerHTML=gsHTML;
- goDiv=null;
- gsHTML="";
- }
-}
-
-function whCom(sName,sComFile)
-{
- this.msName=sName;
- this.msDivId=sName+"Div";
- this.msIFrameId=sName+"IFrame";
- this.msComFile=sComFile;
- this.mbloaded=false;
- this.mbShow=false;
- this.show=function(bShow)
- {
- if(this.mbShow!=bShow)
- {
- if(bShow&&!this.mbloaded)
- {
- this.load();
- }
-
- var oDiv=getElement(this.msDivId);
- if(oDiv)
- {
- if(gbIE55||(gbIE5&&gbMac))
- {
- var oIframe=getElement(this.msIFrameId);
- if(oIframe)
- {
- if(bShow)
- {
- oDiv.style.zIndex=3;
- if(oIframe!=null)
- {
- oIframe.style.zIndex=3;
- if (!gbIE55)
- oIframe.style.visibility="visible";
- }
- }
- else
- {
- oDiv.style.zIndex=2;
- if(oIframe!=null)
- {
- oIframe.style.zIndex=2;
- if (!gbIE55)
- oIframe.style.visibility="hidden";
- }
- }
- }
- }
- if (!gbIE55)
- oDiv.style.visibility=(bShow==true)?'visible':'hidden';
- this.mbShow=bShow;
- }
-
- }
- }
- this.load=function()
- {
- if(!this.mbloaded)
- {
- if(this.msComFile.length>0){
- var strFile= _getFullPath(getPath(), this.msComFile);
- var oDiv=getElement(this.msDivId);
- if(oDiv){
- if(gbIE4||gbOpera7){
- var nIFrameHeight=oDiv.style.pixelHeight;
- var nIFrameWidth=oDiv.style.pixelWidth;
- var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";
- if(gbMac){
- sHTML+=nIFrameWidth+"px;height:"+nIFrameHeight+"px;\"></IFRAME>";
- }else{
- sHTML+="100%; height:100%;\"></IFRAME>";
- }
- oDiv.innerHTML=sHTML;
- }else if(gbNav6){
- gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";
- goDiv = oDiv;
- setTimeout("delayLoad()", 100);
- }
- this.mbloaded=true;
- }
- }
- }
- }
- this.unload=function()
- {
- var oDiv=getElement(this.msDivId);
- if(oDiv)
- oDiv.innerHTML="";
- }
- this.getDivHTML=function()
- {
- var sHTML="";
- if(gbMac&&gbIE4)
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";
- else if(gbIE5)
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";
- else if(gbIE4||gbWindows)
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";
- else
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";
- sHTML+="</DIV>";
- return sHTML;
- }
-}
-
-function whComMan()
-{
- this.sName="";
- this.maCom=new Array();
- this.addCom=function(sName,sComFile)
- {
- var owhCom=new whCom(sName,sComFile);
- this.maCom[this.maCom.length]=owhCom;
- }
- this.init=function()
- {
- var sHTML="";
- for(var i=0;i<this.maCom.length;i++)
- {
- sHTML+=this.maCom[i].getDivHTML();
- }
- document.body.insertAdjacentHTML("beforeEnd",sHTML);
-
- }
- this.showById=function(nId)
- {
- for(var s=0;s<this.maCom.length;s++)
- {
- if(s!==nId)
- this.maCom[s].show(false);
- }
- this.maCom[nId].show(true);
- }
- this.show=function(sName)
- {
- navigator.currentNavPen = sName;
- var bFound=false;
- for(var i=0;i<this.maCom.length;i++)
- {
- if(sName==this.maCom[i].msName)
- {
- bFound=true;
- break;
- }
- }
- if(bFound)
- {
- this.showById(i);
- this.sName=sName;
- }
- }
- this.unload=function()
- {
- for(var i=0;i<this.maCom.length;i++)
- {
- this.maCom[i].unload();
- }
- }
- this.getCurrent=function()
- {
- return this.sName;
- }
-}
-
-function getPath()
-{
- if(gsPath=="")
- {
- gsPath=location.href;
- gsPath=_replaceSlash(gsPath);
- var nPosFile=gsPath.lastIndexOf("/");
- gsPath=gsPath.substring(0,nPosFile+1);
- }
- return gsPath;
-}
-
-goMan=new whComMan();
-function addPane(sName,sFileName)
-{
- var oParam=new Object();
- oParam.sName=sName;
- var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);
- if (SendMessage(oMsg))
- {
- if (oMsg.oParam.bEnable)
- goMan.addCom(sName,sFileName);
- }
- else
- goMan.addCom(sName,sFileName);
-}
-
-function setShowPane(sName, bForce)
-{
- if ((gsFirstPane == "") || bForce)
- {
- var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);
- if (SendMessage(oMsg))
- {
- if (oMsg.oParam)
- gsFirstPane = oMsg.oParam;
- else
- gsFirstPane=sName;
- }
- else
- gsFirstPane=sName;
- }
-}
-
-function window_OnLoad()
-{
- var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);
- var bHidePane=false;
- if (SendMessage(oMsg))
- {
- if(oMsg.oParam>0)
- {
- if(oMsg.oParam==1)
- gsFirstPane="toc";
- else if(oMsg.oParam==2)
- gsFirstPane="idx";
- else if(oMsg.oParam==3)
- gsFirstPane="fts";
- else if(oMsg.oParam==4)
- gsFirstPane="glo";
- }
- else if(oMsg.oParam==0)
- {
- bHidePane=true;
- }
- }
- goMan.init();
- if(gsProjName!="")
- loadData2(gsProjName);
- if (bHidePane)
- {
- gsFirstPane="";
- var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)
- SendMessage(oMsg1);
- }
- else
- {
- if(gsFirstPane!="")
- goMan.show(gsFirstPane);
- else
- goMan.showById(0);
- }
-}
-
-function setServerEnabled()
-{
- gServerEnabled = true;
-}
-
-function loadData2(strFile)
-{
- if(gbXML)
- loadDataXML(strFile);
- else
- loadData(strFile);
-}
-
-function addProject(bPreferXML,sXMLName,sHTMLName)
-{
- var bLoadXML=bPreferXML;
- if(!gbIE4&&!gbNav6&&!gbOpera7)
- return;
- if(gbIE4&&!gbIE5)
- bLoadXML=false;
- if (gbIE5&&!gbMac)
- bLoadXML=true;
- if(gbIE55||gbNav6)
- bLoadXML=true;
- if(gbOpera7)
- bLoadXML=false;
- if(bLoadXML)
- addProjectXML(sXMLName);
- else
- addProjectHTML(sHTMLName);
-}
-
-function addProjectHTML(sName)
-{
- gbXML=false;
- gsProjName=sName;
-}
-
-function addProjectXML(sName)
-{
- gbXML=true;
- gsProjName=sName;
-}
-
-function window_MyBunload()
-{
- goMan.unload();
- window_BUnload();
-}
-
-function putDataXML(xmlDoc,sdocPath)
-{
- if(xmlDoc!=null)
- {
- var projectNode=xmlDoc.getElementsByTagName("project")[0];
- if(projectNode)
- {
- var aRProj=new Array();
- aRProj[0]=new Object();
- aRProj[0].sPPath=_getPath(sdocPath);
- var sLangId=projectNode.getAttribute("langid");
- if(sLangId)
- {
- aRProj[0].sLangId=sLangId;
- }
- var sDPath=projectNode.getAttribute("datapath");
- if(sDPath)
- {
- if(sDPath.lastIndexOf("/")!=sDPath.length-1)
- sDPath+="/";
- aRProj[0].sDPath=sDPath;
- }
- else
- aRProj[0].sDPath="";
- aRProj[0].sToc=projectNode.getAttribute("toc");
- aRProj[0].sIdx=projectNode.getAttribute("index");
- aRProj[0].sFts=projectNode.getAttribute("fts");
- aRProj[0].sGlo=projectNode.getAttribute("glossary");
- var RmtProject=projectNode.getElementsByTagName("remote");
- var nCount=1;
- for (var i=0;i<RmtProject.length;i++)
- {
- var sURL=RmtProject[i].getAttribute("url");
- if(sURL)
- {
- if(sURL.lastIndexOf("/")!=sURL.length-1)
- sURL+="/";
- aRProj[nCount]=new Object();
- aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);
- }
- }
- putProjectInfo(aRProj);
- }
- else
- {
- // on Netscape 6.0 under some situation the xml file cannot be loaded.
- // so we use pure html instead.
- if (gnChecked == 0)
- setTimeout("redirectToList();",100);
- else
- {
- gnChecked++;
- setTimeout("checkRemoteProject();", 1);
- }
- }
- }
-}
-
-function onLoadXMLError()
-{
- gnChecked++;
- setTimeout("checkRemoteProject();", 1);
-}
-
-function redirectToList()
-{
- if(gbReDirectThis)
- document.location=gsNavReDirect;
- else
- parent.document.location=gsNavReDirect;
-}
-
-function putProjectInfo(aRProj)
-{
- if(gnChecked==0||isSamePath(gaProj[gnChecked].sPPath,aRProj[0].sPPath))
- {
- if(gnChecked!=0)
- {
- if(aRProj[0].sLangId!=gaProj[0].sLangId)
- alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");
- }
- gaProj[gnChecked]=aRProj[0];
- for(var i=1;i<aRProj.length;i++)
- {
- var bFound=false;
- for(var j=0;j<gaProj.length;j++)
- {
- if(isSamePath(gaProj[j].sPPath,aRProj[i].sPPath))
- {
- bFound=true;
- break;
- }
- }
- if(!bFound)
- {
- gaProj[gaProj.length]=aRProj[i];
- }
- }
- gnChecked++;
- setTimeout("checkRemoteProject();", 1);
- }
- else
- alert("Could not load correctly, please click Refresh.");
-}
-
-function isSamePath(sPath1,sPath2)
-{
- return (sPath1.toLowerCase()==sPath2.toLowerCase());
-}
-
-function checkRemoteProject()
-{
- if(gaProj.length!=gnChecked)
- {
- setTimeout("cancelProj("+gnChecked+");",10000);
- loadData2(gaProj[gnChecked].sPPath+gsProjName);
- }
- else{
- var oMsg=new whMessage(WH_MSG_PROJECTREADY,this,1,null);
- gbReady=true;
- SendMessage(oMsg);
- }
-}
-
-function cancelProj(i)
-{
- if(i==gnChecked)
- {
- gnChecked++;
- setTimeout("checkRemoteProject();", 1);
- }
-}
-
-function window_resize()
-{
- for(var i=0;i<goMan.maCom.length;i++)
- {
- var oFrame=getElement(goMan.maCom[i].msIFrameId);
- if(oFrame)
- {
- oFrame.style.height=document.body.clientHeight;
- oFrame.style.width=document.body.clientWidth;
- }
- }
- window_resize2();
-}
-
-function window_resize2()
-{
- if(document.body)
- {
- if(document.body.clientWidth > 1 && document.body.clientHeight>1)
- {
- var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);
- SendMessage(oMsg);
- }
- }
-}
-
-function window_unload()
-{
- UnRegisterListener2(this,WH_MSG_GETPROJINFO);
- UnRegisterListener2(this,WH_MSG_SHOWTOC);
- UnRegisterListener2(this,WH_MSG_SHOWIDX);
- UnRegisterListener2(this,WH_MSG_SHOWFTS);
- UnRegisterListener2(this,WH_MSG_SHOWGLO);
- UnRegisterListener2(this,WH_MSG_GETPANEINFO);
-}
-
-function onSendMessage(oMsg)
-{
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_GETPROJINFO)
- {
- if(gbReady)
- {
- var oProj=new Object();
- oProj.aProj=gaProj;
- oProj.bXML=gbXML;
- oMsg.oParam=oProj;
- }
- else
- return false;
- }
- else if(nMsgId==WH_MSG_SHOWTOC)
- {
- if(goMan)
- goMan.show("toc");
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if(nMsgId==WH_MSG_SHOWIDX)
- {
- if(goMan)
- goMan.show("idx");
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if(nMsgId==WH_MSG_SHOWFTS)
- {
- if(goMan)
- goMan.show("fts");
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if(nMsgId==WH_MSG_SHOWGLO)
- {
- if(goMan)
- goMan.show("glo");
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);
- SendMessage(onMsg);
- }
- else if(nMsgId==WH_MSG_GETPANEINFO)
- {
- oMsg.oParam=goMan.getCurrent();
- return false;
- }
- }
- return true;
-}
-
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
-{
- RegisterListener2(this,WH_MSG_GETPROJINFO);
- RegisterListener2(this,WH_MSG_SHOWTOC);
- RegisterListener2(this,WH_MSG_SHOWIDX);
- RegisterListener2(this,WH_MSG_SHOWFTS);
- RegisterListener2(this,WH_MSG_SHOWGLO);
- RegisterListener2(this,WH_MSG_GETPANEINFO);
-
- if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)
- {
- window.onresize=window_resize;
- }
- else if(gbIE4)
- {
- window.onresize=window_resize2;
- }
- window.onload=window_OnLoad;
- window.onbeforeunload=window_MyBunload;
- window.onunload=window_unload;
- gbWhPHost=true;
-}
-else
- document.location.reload();
-
+++ /dev/null
-<html>
-<head>
-<title>project description</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whproj.js"></script>
-<script language="javascript1.2">
-<!--
- setLangId("1033");
- setDataPath("whdata");
- addToc("whtoc.htm");
-
- addFts("whfts.htm");
- addGlo("whglo.htm");
-
-//-->
-</script>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001
-var gaProj=new Array();
-
-gaProj[0]=new project("");
-
-function setLangId(sLangId)
-{
- gaProj[0].sLangId=sLangId;
-}
-
-function setDataPath(sPath)
-{
- if(sPath.length!=0)
- {
- if(sPath.lastIndexOf("/")!=sPath.length-1)
- sPath+="/";
- gaProj[0].sDPath=sPath;
- }
- else
- gaProj[0].sDPath="";
-}
-
-function addToc(sFile)
-{
- gaProj[0].sToc=sFile;
-}
-
-function addIdx(sFile)
-{
- gaProj[0].sIdx=sFile;
-}
-
-function addFts(sFile)
-{
- gaProj[0].sFts=sFile;
-}
-
-function addGlo(sFile)
-{
- gaProj[0].sGlo=sFile;
-}
-
-function addRemoteProject(sProjRelPath)
-{
- if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1)
- sProjRelPath+="/";
- gaProj[gaProj.length]=new project(sProjRelPath);
-}
-
-function project(sPPath)
-{
- this.sPPath=sPPath;
- this.sLangId="";
- this.sDPath="";
- this.sToc="";
- this.sIdx="";
- this.sFts="";
- this.sGlo="";
-}
-
-window.onload=window_OnLoad;
-
-function window_OnLoad()
-{
- gsName=document.location.href;
- gsName=_replaceSlash(gsName);
- var nPos=gsName.lastIndexOf("/");
- if(nPos!=-1)
- gaProj[0].sPPath=gsName.substring(0,nPos+1);
- else
- alert("Error in Loading navigation component. Please regenerate WebHelp.");
- patchPath(gaProj);
- if(parent&&parent!=this&& typeof(parent.putProjectInfo)=="function")
- {
- parent.putProjectInfo(gaProj);
- }
-}
-
-function patchPath(aProj)
-{
- for(var i=1;i<aProj.length;i++)
- {
- aProj[i].sPPath=_getFullPath(gaProj[0].sPPath,aProj[i].sPPath);
- }
-}
\ No newline at end of file
+++ /dev/null
-<?xml version='1.0' encoding='windows-1252' ?>
-<project langid="1033" datapath="whxdata" toc="whtoc.xml" fts="whfts.xml" glossary="whglo.xml" >
-</project>
+++ /dev/null
-// WebHelp 5.10.001
-var gbInited=false;
-var gWndStubPage=null;
-function getStubPage()
-{
- if(!gbInited)
- {
- gWndStubPage=getStubPage_inter(window);
- gbInited=true;
- }
- return gWndStubPage;
-}
-
-function getStubPage_inter(wCurrent)
-{
- if(null==wCurrent.parent||wCurrent.parent==wCurrent)
- return null;
-
- if(typeof(wCurrent.parent.whname)=="string"&&"wh_stub"==wCurrent.parent.whname)
- return wCurrent.parent;
- else
- if(wCurrent.parent.frames.length!=0&&wCurrent.parent!=wCurrent)
- return getStubPage_inter(wCurrent.parent);
- else
- return null;
-}
-
-function RegisterListener(framename,nMessageId)
-{
- var wSP=getStubPage();
- if(wSP&&wSP!=this)
- return wSP.RegisterListener(framename,nMessageId);
- else
- return false;
-}
-
-function RegisterListener2(oframe,nMessageId)
-{
- var wSP=getStubPage();
- if(wSP&&wSP!=this)
- return wSP.RegisterListener2(oframe,nMessageId);
- else
- return false;
-}
-
-function UnRegisterListener2(oframe,nMessageId)
-{
- var wSP=getStubPage();
- if(wSP&&wSP!=this&&wSP.UnRegisterListener2)
- return wSP.UnRegisterListener2(oframe,nMessageId);
- else
- return false;
-}
-
-function SendMessage(oMessage)
-{
- var wSP=getStubPage();
- if(wSP&&wSP!=this&&wSP.SendMessage)
- return wSP.SendMessage(oMessage);
- else
- return false;
-}
-
-var gbWhProxy=true;
-
-var gbPreview=false;
-gbPreview=false;
-if (gbPreview)
- document.oncontextmenu=contextMenu;
-
-function contextMenu()
-{
- return false;
-}
+++ /dev/null
-<?xml version='1.0' encoding='windows-1252' ?>
-<resource>
-<item name="Prev" value="<<" />
-<item name="Hide" value="Hide" />
-<item name="SyncTocTooltip" value="Sync TOC" />
-<item name="InTopicSearchBtnText" value="Go" />
-<item name="FtsInputPrompt" value="Type in the word(s) to search for:" />
-<item name="Done" value="Done" />
-<item name="Logo/Author" value="Powered By" />
-<item name="MergeError1" value="The merged Help system" />
-<item name="JS_alert_cantLoadProject" value="Can't load project:" />
-<item name="Next" value=">>" />
-<item name="SyncToc" value="SyncToc" />
-<item name="MergeError2" value="is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system." />
-<item name="nls_body_instruction" value="Enter your question in the text box above, then click GO." />
-<item name="ToolBarSearchBtnText" value="Go" />
-<item name="SuggestViewNoFrameMessage" value="To view the Help system without frames click on this" />
-<item name="Hide_Navigation_Component" value="Hide Navigation Component" />
-<item name="FtsBtnText" value="Go" />
-<item name="TopicsFound" value="Topics Found" />
-<item name="LoadingContentsData" value="Loading, click here to cancel..." />
-<item name="Definition" value="Definition:" />
-<item name="CompletingContents" value="Completing Contents..." />
-<item name="Seperate" value="|" />
-<item name="GeneratedBy" value="Generated by" />
-<item name="PoweredBy" value="Powered by" />
-<item name="IndexAlphabetBookmarks" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" />
-<item name="Contents" value="Contents" />
-<item name="IndexSelectTopicLabel" value="Select a topic, then click Display" />
-<item name="Disabled Prev" value="<<" />
-<item name="Glossary" value="Glossary" />
-<item name="Search" value="Search" />
-<item name="CantSearch" value="Cannot search for that phrase." />
-<item name="LoadingIndex" value="Loading Index..." />
-<item name="LoadingData" value="Loading data, please wait..." />
-<item name="Show_Navigation_Component" value="Show Navigation Component" />
-<item name="Book" value="Book" />
-<item name="Disabled Next" value=">>" />
-<item name="nls_body_empty" value="Sorry, we were unable to find a good answer for your question." />
-<item name="nls_button_go_hint" value="Go Search" />
-<item name="Find" value="Find" />
-<item name="CantOpenURLorFile" value="Can't open URL or file" />
-<item name="Print" value="Print" />
-<item name="About" value="About" />
-<item name="Author" value="Author" />
-<item name="IndexSelectTopicTitle" value="Select a Topic" />
-<item name="Blank_topic_text" value="This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink." />
-<item name="BrowserLimitedMessage" value="Your browser does not support frames. We recommend that you update your browser to a version that supports frames." />
-<item name="LoadingTOCItem" value="Loading Table of Contents:" />
-<item name="Display" value="Display" />
-<item name="Cancel" value="Cancel" />
-<item name="IndexSelectTopicError" value="Please select a topic." />
-<item name="nls_edit_label" value="Type in your question:" />
-<item name="SearchLabel" value="Search" />
-<item name="RelateTopicListPrompt" value="Click a topic, then click Display." />
-<item name="NextTooltip" value="Next Topic" />
-<item name="JS_alert_colorlimitation" value="WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors." />
-<item name="TopicsNotFound" value="No Topics Found." />
-<item name="Show" value="Show" />
-<item name="PreTooltip" value="Previous Topic" />
-<item name="SearchPrompt" value="- Search -" />
-<item name="IndexBtnText" value="Go" />
-<item name="JS_alert_ProjectLoadingFail" value="Could not load correctly, please click Refresh." />
-<item name="LoadingContents" value="Loading contents, please wait..." />
-<item name="Term" value="Term:" />
-<item name="WebSearchButton" value="WebSearch" />
-<item name="Remote_Page" value="Remote Page" />
-<item name="WebSearch" value="WebSearch" />
-<item name="LoadingFTS" value="Reading Search Data..." />
-<item name="Index" value="Index" />
-<item name="JS_alert_ErrorInLoading" value="Error in Loading navigation component. Please regenerate WebHelp." />
-<item name="JS_alert_appletNotLoad" value="Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited." />
-<item name="IndexInputPrompt" value="Type in the keyword to find:" />
-<item name="Page" value="Page" />
-<item name="SuggestViewNoFrameMsg2" value="hyperlink." />
-<item name="nls_button_go_text" value="Go" />
-<item name="Searching" value="Searching..." />
-
- <item name="English" value="" />
- <item name="langorder" value="0,1,2,3,4,5,6,7,8,40,41,42,43,44,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,38,45,46,47,48,49,50,33,51,52,53,88,54,34,55,56,115,119,121,123,125,126,127,128,129,130,57,58,89,90,91,59,60,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,61,62,63,64,66,67,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,68,69,70,71,27,114,28,82,170,85,112,109,110,65,113,223,86,213,29,255,30,31,80,81,83,84,111,36,37,79,229,222,87,212,32,254,251,39,72,97,98,99,100,73,101,74,102,133,93,103,35,104,75,105,92,122,124,76,106,107,108,77,120,199,94,116,117,118,78,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,95,197,230,230,230,230,246,227,224,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,96,197,230,230,230,230,246,227,250," />
-
- <panes show="0">
- <toc />
- <fts />
- <glossary />
- </panes>
-
- <stopwords>
- <word name="a" />
- <word name="about" />
- <word name="after" />
- <word name="against" />
- <word name="all" />
- <word name="also" />
- <word name="among" />
- <word name="an" />
- <word name="and" />
- <word name="are" />
- <word name="as" />
- <word name="at" />
- <word name="be" />
- <word name="became" />
- <word name="because" />
- <word name="been" />
- <word name="between" />
- <word name="but" />
- <word name="by" />
- <word name="can" />
- <word name="come" />
- <word name="do" />
- <word name="during" />
- <word name="each" />
- <word name="early" />
- <word name="for" />
- <word name="form" />
- <word name="found" />
- <word name="from" />
- <word name="had" />
- <word name="has" />
- <word name="have" />
- <word name="he" />
- <word name="her" />
- <word name="his" />
- <word name="however" />
- <word name="in" />
- <word name="include" />
- <word name="into" />
- <word name="is" />
- <word name="it" />
- <word name="its" />
- <word name="late" />
- <word name="later" />
- <word name="made" />
- <word name="many" />
- <word name="may" />
- <word name="me" />
- <word name="med" />
- <word name="more" />
- <word name="most" />
- <word name="near" />
- <word name="no" />
- <word name="non" />
- <word name="not" />
- <word name="of" />
- <word name="on" />
- <word name="only" />
- <word name="or" />
- <word name="other" />
- <word name="over" />
- <word name="several" />
- <word name="she" />
- <word name="some" />
- <word name="such" />
- <word name="than" />
- <word name="that" />
- <word name="the" />
- <word name="their" />
- <word name="then" />
- <word name="there" />
- <word name="these" />
- <word name="they" />
- <word name="this" />
- <word name="through" />
- <word name="to" />
- <word name="under" />
- <word name="until" />
- <word name="use" />
- <word name="was" />
- <word name="we" />
- <word name="were" />
- <word name="when" />
- <word name="where" />
- <word name="which" />
- <word name="who" />
- <word name="with" />
- <word name="you" />
- </stopwords>
-
- <stems>
- <stem name="ed" />
- <stem name="es" />
- <stem name="er" />
- <stem name="e" />
- <stem name="s" />
- <stem name="ingly" />
- <stem name="ing" />
- <stem name="ly" />
- </stems>
-
- <paneskin>
- <background color="" img="" />
- <font name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- <toc>
- <background color="" img="" />
- <icons>
- <book open="whd_toc2.gif" close="whd_toc1.gif" />
- <item local="whd_toc3.gif" remote="whd_toc4.gif" />
- <newbook open="whd_toc2.gif" close="whd_toc1.gif" />
- <newitem local="whd_toc3.gif" remote="whd_toc4.gif" />
- </icons>
- <fonts>
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />
- </fonts>
- <activebackgroundcolor attr="#cccccc" />
- <margin attr="0pt" />
- <indent attr="9pt" />
- </toc>
- <index>
- <form>
- <fonts>
- <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- </fonts>
- <button normal="" hover="" />
- <editwith value="28" />
- </form>
- <background color="" img="" />
- <fonts>
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />
- <empty name="Arial" size="9pt" color="#666666" style="normal" weight="normal" decoration="none" />
- </fonts>
- <activebackgroundcolor attr="#cccccc" />
- <margin attr="0pt" />
- <indent attr="9pt" />
- </index>
- <fts>
- <form>
- <fonts>
- <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- </fonts>
- <button normal="" hover="" />
- <editwith value="28" />
- </form>
- <background color="" img="" />
- <fonts>
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />
- <error name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- </fonts>
- <activebackgroundcolor attr="#cccccc" />
- <margin attr="0pt" />
- <indent attr="9pt" />
- </fts>
- <glossary>
- <background color="" img="" />
- <fonts>
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />
- </fonts>
- <activebackgroundcolor attr="#cccccc" />
- <margin attr="0pt" />
- <indent attr="9pt" />
- </glossary>
- </paneskin>
-</resource>
+++ /dev/null
-<html>
-<head>
-<title>Blank Page</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<body>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Mesh Module Reference Manual</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-</head>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>
-<script language="javascript">
-<!--
-var strDefaultTopic = "about:blank";
-var nWebhelpNavPaneMode = 1; //1: DHTML 2:Applet 3:PureHTML 4:Noframeset
-var bNoApplet = false;
-var strPaneDHTML = "whd_nvp10.htm"; //whd_nvp10.htm if tab enabled, whnframe.htm if tab disabled.
-var strPaneApplet = "whd_nvp20.htm";
-var strPaneList = "whgdata/whnvp30.htm";
-
-var strHTML = "";
-var strPane = "";
-var nViewFrameType = -1;
-
-function CMRServer()
-{
- this.m_cAgents = new Array;
-}
-var cMRServer = new CMRServer;
-
-//figure out which mode is the best
-if (!window.gAgent)
-{
- // low end browser, we don't even try to determine it.
- document.location = "whnjs.htm";
-}
-else
-{
- if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)
- document.location = "whnjs.htm";
- else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))
- document.location = "whnjs.htm";
- else if (gbMac && gbIE4 && !gbIE5)
- document.location = "whnjs.htm";
- //figure out which mode is the best
- else
- {
- nViewFrameType=nWebhelpNavPaneMode;
- if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)
- {
- var gbDHTML=(nWebhelpNavPaneMode==1);
- if (gbNav4) nViewFrameType = 2;
- if (gbNav4&&(gnVerMinor < 4.1)) nViewFrameType = 3;
- if (gbNav4&&(gnVerMinor == 4.6)) nViewFrameType = 3;
- if (gbIE4&&gbDHTML) nViewFrameType = 1;
- if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2) nViewFrameType = 3;
- if (gbNav6&&gbDHTML) nViewFrameType = 1;
- if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2) nViewFrameType = 3;
- if (gbMac) nViewFrameType = 3;
- if (gbOpera7&&nViewFrameType == 2) nViewFrameType = 3;
- if ((bNoApplet)&&(nViewFrameType == 2)) nViewFrameType = 3;
- }
- }
-}
-
-if (nViewFrameType!=-1)
-{
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));
- //The colordepth of the 16 color on Windows is 1.
- if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))
- {
- alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");
- nViewFrameType = 3;
- }
-
- //figure out which one is navpane
- if (nViewFrameType == 1)
- strPane = strPaneDHTML;
- else if (nViewFrameType == 2)
- strPane = strPaneApplet;
- else
- strPane = strPaneList;
-
- var oParam = new Object();
- oParam.sTopic = "";
- var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);
- if (SendMessage(oMsg) && oParam.sTopic != "")
- strDefaultTopic = oParam.sTopic;
-
-
- if (nViewFrameType == 1)
- {
- //DHTML (iframe or xml based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";
- }
- else if (nViewFrameType == 2)
- {
- //applet (xml based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";
- }
- else if (nViewFrameType == 3)
- {
- //generic html (pure html based)
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\">";
- strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\" scrolling=\"no\"></frame>";
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";
- strHTML += "</frameset>";
- }
- else if (nViewFrameType == 4)
- {
- //no navipane at all
- strHTML += "<frameset id=\"whPfset\" border=\"0\" cols=\"100%,*\">";
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";
- strHTML += "</frameset>";
- }
-
- document.write(strHTML);
-
- RegisterListener2(window, WH_MSG_SHOWPANE);
- RegisterListener2(window, WH_MSG_HIDEPANE);
- RegisterListener2(window, WH_MSG_ISPANEVISIBLE);
- window.onunload = window_unload;
-}
-
-function window_unload()
-{
- UnRegisterListener2(window, WH_MSG_SHOWPANE);
- UnRegisterListener2(window, WH_MSG_HIDEPANE);
- UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);
-}
-
-
-function onSendMessage(oMsg)
-{
- var nMsgId = oMsg.nMessageId;
- if (nMsgId == WH_MSG_SHOWPANE)
- {
- getElement("whPfset").cols = "260,*";
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");
- if (SendMessage(onMsg))
- {
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);
- SendMessage(onMsg);
- }
- return false;
- }
- else if (nMsgId == WH_MSG_HIDEPANE)
- {
- getElement("whPfset").cols = "0,*";
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");
- SendMessage(onMsg);
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");
- SendMessage(onMsg);
- return false;
- }
- else if (nMsgId == WH_MSG_ISPANEVISIBLE)
- {
- var n = parseInt(getElement("whPfset").cols);
- if (n > 0)
- {
- oMsg.oParam.bVisible = true;
- }
- return false;
- }
- return true;
-}
-//-->
-</script>
-<body>
-<noscript>
- <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>
-</noscript>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>WebHelp 5.50 </title>
-<meta name="description" content="output from robohelp">
-<meta name="keywords" content="robohelp,webhelp,webhelp enterprise,roboinfo">
-</head>
-<body>
-<h1> WebHelp 5.50 System Info </h1>
-<table>
-<tr><td> Start Page </td><td>index.htm</td></tr>
-<tr><td> Skin Name </td><td></td></tr>
-<tr><td> Generating Time </td><td>12:45 05/22/2006</td></tr>
-<tr><td> Language ID </td><td>1033</td></tr>
-<tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>
-<tr><td> Compile Build Version </td><td>13.10.606</td></tr>
-<tr><td> Product Name </td><td>WebHelp 5.50</td></tr>
-<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>
-<table>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Select a Topic </title>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript">
-<!--
-var gsBgColor = "#c0c0c0";
-var gsBgImage = "";
-var gsListBgColor = "white";
-var gsListBgImage = "";
-var gsMargin="0pt";
-var gsIndent="0pt";
-var gSelectedItem = -1;
-
-
-var goFont=null;
-var goHoverFont=null;
-var goTableFont=null;
-var gsABgColor="#cccccc";
-
-function setListBackground(sBgImage)
-{
- if (sBgImage != null && sBgImage.length > 0)
- gsListBgImage = sBgImage;
-}
-
-function setListBackgroundcolor(sBgColor)
-{
- if (sBgColor != null && sBgColor.length > 0)
- gsListBgColor = sBgColor;
-}
-
-function setBackground(sBgImage)
-{
- if (sBgImage != null && sBgImage.length > 0)
- gsBgImage = sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- if (sBgColor != null && sBgColor.length > 0)
- gsBgColor = sBgColor;
-}
-
-function setActiveBgColor(sBgColor)
-{
- gsABgColor=sBgColor;
-}
-
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if (sType == "Normal")
- goFont=vFont;
- if (sType == "Hover")
- goHoverFont=vFont;
- else if (sType == "Table")
- goTableFont=vFont;
-}
-
-function fnOnload()
-{
- if( window.dialogArguments != null )
- fnLoadOptions( window.dialogArguments );
- var items = getElementsByTag(document, "a");
- if (items.length > 0)
- items[0].focus();
-}
-
-var gaOpts = new Array();
-
-function selectOption(index)
-{
- gSelectedItem = index;
-}
-
-function displayOption(index)
-{
- if (index < gaOpts.length)
- {
- returnValue = new Object();
- returnValue.m_url = gaOpts[index];
- }
- else
- returnValue = null;
-
- window.close();
-}
-
-function fnLoadOptions( cList )
-{
- var sHTML = "<dl>";
- for( var i=0;i <cList.length; i++)
- {
- sHTML += "<dt><nobr><a href=\"javascript:void(0);\" onclick=\"return false;\" onfocus=\"selectOption(";
- sHTML += gaOpts.length + ");return false;\" ondblclick=\"displayOption(" + gaOpts.length;
- sHTML += ");return false;\">"+ _textToHtml(cList[i].m_sName) + "</a></nobr></dt>";
- gaOpts[gaOpts.length] = cList[i].m_sURL;
- }
- sHTML += "</dl>";
- var oDivCon=getElement("divlist");
- if(oDivCon)
- oDivCon.innerHTML=sHTML;
- return true;
-}
-
-function fnOK()
-{
- displayOption(gSelectedItem);
-}
-
-function fnCancel()
-{
- returnValue = null; window.close();
-}
-
-function fnOnKeypress()
-{
- switch( event.keyCode )
- {
- case 13: // enter key
- fnOK();
- break;
- case 27: // escape key
- fnCancel();
- break;
- }
-}
-
-function writeStyle(bMiniBar)
-{
- var sStyle="";
- sStyle+="<style type='text/css'>\n";
- sStyle+="<!--\n";
- sStyle+="body.clsbody\n";
- sStyle+="{\n";
- sStyle+="margin: 4px;\n";
- sStyle+=getFontStyle(goTableFont);
- sStyle+="background-attachment: fixed;\n";
- sStyle+="};\n";
- sStyle+="P.clsNDXTD\n";
- sStyle+="{\n";
- sStyle+="margin:0;\n";
- sStyle+=getFontStyle(goTableFont);
- sStyle+="};\n";
- sStyle+="div.clslist\n";
- sStyle+="{\n";
- if (gsListBgImage)
- sStyle+="background-image:url("+gsListBgImage+");\n";
- else if (gsListBgColor)
- sStyle+="background-color:"+gsListBgColor+";\n";
- sStyle+=getFontStyle(goFont);
- sStyle+="};\n";
- sStyle+="BUTTON.clsNDXButton\n";
- sStyle+="{\n";
- sStyle+=getFontStyle(goTableFont);
- sStyle+="background-color: transparent;\n";
- sStyle+="};\n";
- sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";
- sStyle+="</style>\n";
- document.write(sStyle);
-}
-
-function window_OnLoad()
-{
- if(document.body)
- {
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- }
- fnOnload();
- window_onResize();
-}
-
-function window_onResize()
-{
- var oDiv = getElement("divlist");
- var oTitle = getElement("p_title");
- var oButton = getElement("tb_button");
- if (oDiv && oTitle && oButton)
- {
- oDiv.style.height = document.body.offsetHeight - oTitle.offsetHeight - oButton.offsetHeight - 8;
- }
-}
-goTableFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
-goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
-goHoverFont=new whFont("Verdana","8pt","#666666","normal","normal","none");
-
-
-
-
-setFont("Table", "Arial","9pt","#000000","normal","normal","none");
-
-
-setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
-setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");
-setActiveBgColor("#cccccc");
-
-window.onload=window_OnLoad;
-window.onresize = window_onResize;
-writeStyle();
-//-->
-</script>
-</head>
-
-<body class="clsbody" scroll="no" onkeypress="fnOnKeypress()">
-<p id="p_title" class="clsNDXTD"><nobr>Select a topic, then click Display</nobr></p>
-<div id="divlist" class="clslist" style="margin:2px;position: relative;overflow:auto;width:100%;border-style:inset;border-width:2">
-</div>
-<table id="tb_button" width="100%">
- <tr>
- <td width="100%" align="center"><button class="clsNDXButton" name="btnOK" onclick="fnOK()">Display</button>   <button class="clsNDXButton" name="btnCancel" onclick="fnCancel()">Cancel</button></td>
- </tr>
-</table>
-
-</body>
-
-</html>
+++ /dev/null
-<html>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2">
-<!--
-var gsTopic="";
-
-if (location.hash.length > 1)
-{
- var nPos = location.hash.indexOf(">>");
- if (nPos>1)
- {
- gsTopic = location.hash.substring(1, nPos);
- parseParam(location.hash.substring(nPos+2));
- }
- else
- gsTopic = location.hash.substring(1);
-}
-
-
- var strHtml="";
- strHtml+="<frameset rows=\'100%,*\'>";
- strHtml+="<frame name=\'topicwindow\' src=\'" + gsTopic +"\'></frame>";
- strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";
- strHtml+="</frameset>";
- document.write(strHtml);
-
-function parseParam(sParam)
-{
- if (sParam)
- {
- var nBPos=0;
- do
- {
- var nPos=sParam.indexOf(">>", nBPos);
- if (nPos!=-1)
- {
- if (nPos>0)
- {
- var sPart=sParam.substring(nBPos, nPos);
- parsePart(sPart);
- }
- nBPos = nPos + 2;
- }
- else
- {
- var sPart=sParam.substring(nBPos);
- parsePart(sPart);
- break;
- }
- } while(nBPos < sParam.length);
- }
-}
-
-function parsePart(sPart)
-{
- if(sPart.toLowerCase().indexOf("cap=")==0)
- {
- document.title=_browserStringToText(sPart.substring(4));
- }
-}
-//-->
-</script>
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.003
-RegisterListener2(this, WH_MSG_GETSTARTFRAME);
-RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC);
-RegisterListener2(this, WH_MSG_MINIBARORDER);
-RegisterListener2(this, WH_MSG_TOOLBARORDER);
-RegisterListener2(this, WH_MSG_ISSEARCHSUPPORT);
-RegisterListener2(this, WH_MSG_ISSYNCSSUPPORT);
-RegisterListener2(this, WH_MSG_ISAVENUESUPPORT);
-RegisterListener2(this, WH_MSG_GETPANETYPE);
-RegisterListener2(this, WH_MSG_GETPANES);
-RegisterListener2(this, WH_MSG_RELOADNS6);
-RegisterListener2(this, WH_MSG_GETCMD);
-RegisterListener2(this, WH_MSG_GETPANE);
-RegisterListener2(this, WH_MSG_GETDEFPANE);
-
-if (gbNav6)
-{
- var gnReload=0;
- setTimeout("delayReload();",5000);
-}
-
-function delayReload()
-{
- if (!(this.cMRServer && cMRServer.m_strVersion))
- {
- if(gnReload!=2)
- {
- if(nViewFrameType&&nViewFrameType==1)
- document.location=document.location;
- }
- }
-}
-
-var gsToolbarOrder = "";
-var gsMinibarOrder = "";
-
-var gsTopic = "mesh.htm";
-var PANE_OPT_SEARCH = 1;
-var PANE_OPT_BROWSESEQ = 2;
-var gnOpts=-1;
-var gnCmd=-1;
-var gnPans=2;
-var gsBtns="invalid";
-var gsDefaultBtn="invalid";
-var gbHasTitle=false;
-
-if (location.hash.length > 1)
-{
- var sParam = location.hash;
- if (sParam.indexOf("#<") == 0)
- {
- document.location = "whcsh_home.htm#" + sParam.substring(2);
- }
- else if (sParam.indexOf("#>>") == 0)
- {
- parseParam(sParam.substring(3));
- sParam = "#" + gsTopic + sParam.substring(1);
- }
- else
- {
- var nPos = sParam.indexOf(">>");
- if (nPos>1)
- {
- gsTopic = sParam.substring(1, nPos);
- parseParam(sParam.substring(nPos+2));
- }
- else
- gsTopic = sParam.substring(1);
- }
- if (gnPans == 1 && gsTopic)
- {
- var strURL=location.href;
- if (location.hash)
- {
- var nPos=location.href.indexOf(location.hash);
- strURL=strURL.substring(0, nPos);
- }
- if (gbHasTitle)
- document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam;
- else
- document.location=_getPath(strURL)+ gsTopic;
- }
-}
-
-function parseParam(sParam)
-{
- if (sParam)
- {
- var nBPos=0;
- do
- {
- var nPos=sParam.indexOf(">>", nBPos);
- if (nPos!=-1)
- {
- if (nPos>0)
- {
- var sPart=sParam.substring(nBPos, nPos);
- parsePart(sPart);
- }
- nBPos = nPos + 2;
- }
- else
- {
- var sPart=sParam.substring(nBPos);
- parsePart(sPart);
- break;
- }
- } while(nBPos < sParam.length);
- }
-}
-
-function parsePart(sPart)
-{
- if(sPart.toLowerCase().indexOf("cmd=")==0)
- {
- gnCmd=parseInt(sPart.substring(4));
- }
- else if(sPart.toLowerCase().indexOf("cap=")==0)
- {
- document.title=_browserStringToText(sPart.substring(4));
- gbHasTitle=true;
- }
- else if(sPart.toLowerCase().indexOf("pan=")==0)
- {
- gnPans=parseInt(sPart.substring(4));
- }
- else if(sPart.toLowerCase().indexOf("pot=")==0)
- {
- gnOpts=parseInt(sPart.substring(4));
- }
- else if(sPart.toLowerCase().indexOf("pbs=")==0)
- {
- var sRawBtns = sPart.substring(4);
- var aBtns = sRawBtns.split("|");
- for (var i=0;i<aBtns.length;i++)
- {
- aBtns[i] = transferAgentNameToPaneName(aBtns[i]);
- }
- gsRawBtns = aBtns.join("|");
- }
- else if(sPart.toLowerCase().indexOf("pdb=")==0)
- {
- gsDefaultBtn=transferAgentNameToPaneName(sPart.substring(4));
- }
-}
-
-function setToolbarOrder(sOrder)
-{
- gsToolbarOrder = sOrder;
-}
-
-function setMinibarOrder(sOrder)
-{
- gsMinibarOrder = sOrder;
-}
-
-function onSendMessageX(oMsg)
-{
- var nMsgId = oMsg.nMessageId;
- if (nMsgId == WH_MSG_GETSTARTFRAME)
- {
- oMsg.oParam.oFrame = this;
- return false;
- }
- else if (nMsgId == WH_MSG_GETDEFAULTTOPIC)
- {
- if (this.cMRServer && cMRServer.m_strVersion)
- {
- if (cMRServer.m_strURLTopic);
- {
- oMsg.oParam.sTopic = cMRServer.m_strURLTopic;
- return false;
- }
-
- }
- oMsg.oParam.sTopic = gsTopic;
- return false;
- }
- else if (nMsgId == WH_MSG_TOOLBARORDER)
- {
- var oMsg1 = new whMessage(WH_MSG_GETPANES, this, 1, null);
- if (SendMessage(oMsg1))
- {
- if (oMsg1.oParam)
- {
- if (this.cMRServer && cMRServer.m_strVersion)
- {
- var aToolbarOrder=cMRServer.m_strAgentList.split(";");
- var i=0;
- for (i=0;i<aToolbarOrder.length;i++)
- aToolbarOrder[i]=transferANToPN2(aToolbarOrder[i]);
- aToolbarOrder[aToolbarOrder.length] = "blankblock";
- if (cMRServer.m_bShowSearchInput)
- {
- aToolbarOrder[aToolbarOrder.length] = "searchform";
- }
- aToolbarOrder[aToolbarOrder.length] = "banner";
- var aToolbarOrderNew = new Array();
- for (i=0;i<aToolbarOrder.length;i++)
- {
- if (isAPane(aToolbarOrder[i]))
- {
- if (oMsg1.oParam.aPanes && oMsg1.oParam.aPanes.length)
- {
- for (var j=0;j<oMsg1.oParam.aPanes.length;j++)
- {
- if (aToolbarOrder[i] == oMsg1.oParam.aPanes[j].sPaneName)
- {
- aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];
- break;
- }
- }
- }
- }
- else
- aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];
- }
- oMsg.oParam = aToolbarOrderNew.join("|");
- return false;
- }
- }
- }
- var sParam="";
- if (gsBtns!="invalid")
- sParam=gsBtns+"|blankblock|banner";
- else
- sParam = gsToolbarOrder;
-
- if (gnOpts!=-1)
- {
- var nPosForm=sParam.indexOf("|searchform|");
- if (gnOpts&PANE_OPT_SEARCH)
- {
- if (nPosForm == -1 && sParam.indexOf("|fts|") != -1)
- {
- var nPos=sParam.indexOf("banner");
- if (nPos!=-1)
- {
- sParam=sParam.substring(0, nPos) + "searchform|" + sParam.substring(nPos);
- }
- }
- }
- else
- {
- if (nPosForm!=-1)
- {
- sParam=sParam.substring(0,nPosForm) + sParam.substring(nPosForm+11);
- }
- }
- }
- oMsg.oParam=sParam;
- return false;
- }
- else if (nMsgId == WH_MSG_MINIBARORDER)
- {
- var sMinParam=gsMinibarOrder;
- if (gnOpts!=-1)
- {
- var nPosBro=gsMinibarOrder.indexOf("avprev|avnext");
- if (gnOpts&PANE_OPT_BROWSESEQ)
- {
- if (nPosBro==-1)
- {
- sMinParam ="avprev|avnext|" + gsMinibarOrder;
- }
- }
- else
- {
- if (nPosBro!=-1)
- {
- if (nPosBro!=0)
- sMinParam=gsMinibarOrder.substring(0, nPosBro) + gsMinibarOrder.substring(nPosBro+14);
- else
- sMinParam=gsMinibarOrder.substring(14);
- }
- }
- }
- oMsg.oParam = sMinParam;
- return false;
- }
- else if (nMsgId == WH_MSG_ISSYNCSSUPPORT)
- {
- if (this.cMRServer && cMRServer.m_strVersion)
- {
- if (cMRServer.m_bShowSync)
- oMsg.oParam=true;
- else
- oMsg.oParam=false;
- return false;
- }
- else
- {
- if(typeof(nViewFrameType)!="undefined")
- {
- oMsg.oParam= (nViewFrameType < 3);
- return false;
- }
- }
- }
- else if (nMsgId == WH_MSG_ISAVENUESUPPORT)
- {
- if (this.cMRServer && cMRServer.m_strVersion)
- {
- if (cMRServer.m_bShowBrowseSequences)
- oMsg.oParam=true;
- else
- oMsg.oParam=false;
- }
- else
- {
- oMsg.oParam=true;
- }
- return false;
- }
- else if (nMsgId == WH_MSG_ISSEARCHSUPPORT)
- {
- if(typeof(nViewFrameType)!="undefined")
- {
- oMsg.oParam= (nViewFrameType < 3);
- return false;
- }
- }
- else if (nMsgId == WH_MSG_GETPANETYPE)
- {
- if(typeof(nViewFrameType)!="undefined")
- {
- var oPaneInfo = new Object();
- oPaneInfo.nType = nViewFrameType;
- oPaneInfo.sPaneURL = strPane;
- oMsg.oParam = oPaneInfo;
- return false;
- }
- }
- else if (nMsgId == WH_MSG_GETPANES)
- {
- if (this.cMRServer && cMRServer.m_strVersion)
- {
- var oPanes = new Object();
- var aAgentNames = null;
- if (cMRServer.m_strDefAgent)
- oPanes.sDefault = transferAgentNameToPaneName(cMRServer.m_strDefAgent);
-
- aPanes = new Array();
- for(var i=0; i< cMRServer.m_cAgents.length; i++)
- {
- var nCur = aPanes.length;
- aPanes[nCur] = new Object();
- aPanes[nCur].sPaneName = transferAgentNameToPaneName(cMRServer.m_cAgents[i].m_strID);
- aPanes[nCur].sPaneURL = cMRServer.m_cAgents[i].m_strURL;
- }
- oPanes.aPanes = aPanes;
- oMsg.oParam = oPanes;
- return false;
- }
- else
- {
- oMsg.oParam = null;
- return false;
- }
- }
- else if(nMsgId==WH_MSG_RELOADNS6)
- {
- if(gbNav6)
- gnReload++;
- return false;
- }
- else if(nMsgId==WH_MSG_GETCMD)
- {
- oMsg.oParam=gnCmd;
- return false;
- }
- else if(nMsgId==WH_MSG_GETPANE)
- {
- if (gsBtns!="invalid" && oMsg.oParam.sName)
- {
- if(gsBtns.indexOf(oMsg.oParam.sName) != -1)
- oMsg.oParam.bEnable=true;
- else
- oMsg.oParam.bEnable=false;
- }
- else
- oMsg.oParam.bEnable=true;
- return false;
- }
- else if(nMsgId==WH_MSG_GETDEFPANE)
- {
- if (gsDefaultBtn!="invalid")
- {
- oMsg.oParam=gsDefaultBtn;
- }
- return false;
- }
- return true;
-}
-
-function transferANToPN2(sAN)
-{
- if (sAN =="toc")
- return "toc";
- else if (sAN =="ndx")
- return "idx";
- else if (sAN =="nls")
- return "fts";
- else if (sAN =="gls")
- return "glo";
- else if (sAN =="WebSearch")
- return "websearch";
- else if (sAN.indexOf("custom_")==0);
- return "custom" + sAN.substring(7);
- return sAN;
-}
-
-function transferAgentNameToPaneName(sAgentName)
-{
- if (sAgentName =="toc")
- return "toc";
- else if (sAgentName =="ndx")
- return "idx";
- else if (sAgentName =="nls")
- return "fts";
- else if (sAgentName =="gls")
- return "glo";
- return "";
-}
-
-function isAPane(sPaneName)
-{
- if (sPaneName == "toc" || sPaneName == "idx" || sPaneName == "fts" || sPaneName == "glo")
- return true;
- else
- return false;
-}
+++ /dev/null
-// WebHelp 5.10.002
-window.whname="wh_stub";
-function getframehandle(frames,framename)
-{
- var frame=null;
- if(null==frames) return null;
- for(var i=0;i<frames.length;i++)
- {
- if(typeof(frames[i].name)!="unknown")
- {
- if(frames[i].name==framename)
- return frames[i];
- }
- if(frames[i].frames.length>0)
- {
- frame=getframehandle(frames[i].frames,framename);
- if(null!=frame)
- return frame;
- }
- }
- return frame;
-}
-
-function AddToArray(arr,obj)
-{
- var bFound=false;
- for(var i=0;i<arr.length;i++){
- if(arr[i]==obj){
- bFound=true;
- break;
- }
- else if(arr[i]==null){
- break;
- }
- }
- if(!bFound) arr[i]=obj;
-}
-
-var gArrayRegistedMessage=new Array();
-var gArrayCompoentsArray=new Array();
-
-function GetComponentsArray(nMessageId)
-{
- var len=gArrayRegistedMessage.length;
- for(var i=0;i<len;i++)
- {
- if(gArrayRegistedMessage[i]==nMessageId){
- if(gArrayCompoentsArray.length>i)
- return gArrayCompoentsArray[i];
- else
- return null;
- }
- }
- return null;
-}
-
-function CreateComponentsArray(nMessageId)
-{
- var len=gArrayRegistedMessage.length;
- gArrayRegistedMessage[len]=nMessageId;
- gArrayCompoentsArray[len]=new Array();
- return gArrayCompoentsArray[len];
-}
-
-function listener(sName,oWindow)
-{
- this.sName=sName;
- this.oWindow=oWindow;
-}
-
-function RegisterListener(windowName,nMessageId)
-{
- var arrayComponents=GetComponentsArray(nMessageId);
- if(arrayComponents==null)
- arrayComponents=CreateComponentsArray(nMessageId);
-
- if(arrayComponents!=null)
- {
- for (var i=0;i<arrayComponents.length;i++)
- {
- if (arrayComponents[i].sName == windowName)
- return false;
- }
- var oListener=new listener(windowName,null);
- AddToArray(arrayComponents,oListener);
- return true;
- }
- else
- return false;
-}
-
-function RegisterListener2(oWindow,nMessageId)
-{
- var arrayComponents=GetComponentsArray(nMessageId);
- if(arrayComponents==null)
- arrayComponents=CreateComponentsArray(nMessageId);
-
- if(arrayComponents!=null)
- {
- var oListener=new listener("",oWindow);
- AddToArray(arrayComponents,oListener);
- return true;
- }
- else
- return false;
-}
-
-function UnRegisterListener2(oWindow,nMessageId)
-{
- var arrayComponents=GetComponentsArray(nMessageId);
- if(arrayComponents!=null)
- {
- for(var i=0;i<arrayComponents.length;i++)
- {
- if(arrayComponents[i].oWindow==oWindow)
- {
- removeItemFromArray(arrayComponents,i);
- return true;
- }
- }
- }
- else
- return false;
-}
-
-function SendMessage(oMessage)
-{
- var bDelivered=false;
- var arrayComponents=GetComponentsArray(oMessage.nMessageId);
- if(arrayComponents!=null&&arrayComponents.length>0){
- for(var i=0;i<arrayComponents.length;i++)
- {
- if(null!=arrayComponents[i])
- {
- var pFrame;
- if(arrayComponents[i].oWindow==null)
- pFrame=getframehandle(frames,arrayComponents[i].sName);
- else
- pFrame=arrayComponents[i].oWindow;
- if(null!=pFrame)
- {
- if(pFrame.onSendMessageX)
- {
- bDelivered=true;
- if(!pFrame.onSendMessageX(oMessage))
- break;
- }
- if(pFrame.onSendMessage)
- {
- bDelivered=true;
- if(!pFrame.onSendMessage(oMessage))
- break;
- }
- }
- }
- }
- }
- return bDelivered;
-}
\ No newline at end of file
+++ /dev/null
-<html>
-<head>
-<title>Table of contents</title>
-
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
-<meta name="description" content="WebHelp 5.50">
-<base target="bsscright">
-</head>
-<script language="javascript" src="whver.js"></script>
-<script language="javascript1.2" src="whmozemu.js"></script>
-<script language="javascript1.2" src="whutils.js"></script>
-<script language="javascript1.2" src="whmsg.js"></script>
-<script language="javascript1.2" src="whproxy.js"></script>
-<script language="javascript1.2" src="whthost.js"></script>
-<script LANGUAGE="javascript1.2">
-<!--
-if (window.gbWhTHost)
-{
-
-
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");
- setActiveBgColor("#cccccc");
- setMargin("0pt");
- setIndent("9pt");
- setIcon("BookOpen","whd_toc2.gif");
- setIcon("BookClose","whd_toc1.gif");
- setIcon("Item","whd_toc3.gif");
- setIcon("RemoteItem","whd_toc4.gif");
- setIcon("NewBookOpen","whd_toc2.gif");
- setIcon("NewBookClose","whd_toc1.gif");
- setIcon("NewItem","whd_toc3.gif");
- setIcon("NewRemoteItem","whd_toc4.gif");
- TocWriteClassStyle();
- TocWriteFixedWidth(true,400);
-}
-else
- document.location.reload();
-//-->
-</script>
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white" scroll="auto">
-<script LANGUAGE="javascript1.2">
-<!--
-TocWriteFixedWidth(false,400);
-TocInitPage();
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-// WebHelp 5.10.007
-var gaHSLoad=new Array();
-var gnMinIdx=0;
-var gnInsIdx=-1;
-var gsLoadingDivID="LoadingDiv";
-var gsLoadingMsg="Loading, click here to cancel...";
-var gaProj=null;
-var gaTocs=new Array();
-var goChunk=null;
-var gbReady=false;
-var gbToc=false;
-var gbXML=false;
-var gaRoot=new Array();
-var gnCC=-1;
-var gsTP="";
-var gaBTPs="";
-var gsCTPath="";
-var gnLT=-1;
-var gsPathSplit="\n";
-var gsBgColor="#ffffff";
-var gsBgImage="";
-var goFont=null;
-var goHFont=null;
-
-var gsMargin="0pt";
-var gsIndent="15pt";
-var gsABgColor="#cccccc";
-
-var giBookClose="";
-var giBookOpen="";
-var giBookItem="";
-var giURLItem="";
-var giNewBookClose="";
-var giNewBookOpen="";
-var giNewBookItem="";
-var giNewURLItem="";
-var gnImages=0;
-var gnLoadedImages=0;
-var gaImgs=new Array();
-var gbLoadData=false;
-var gobj=null;
-var gaTocsNs61Fix=null;
-var gbWhTHost=false;
-var gBookItems=new Array();
-var gInSync=false;
-var gbLData=false;
-var gbNeedFillStub=false;
-var gbLoadToc=false;
-
-function chunkInfoQueue()
-{
- this.aContent=new Array();
- this.inQueue=function(cInfo)
- {
- this.aContent[this.aContent.length]=cInfo;
- }
- this.deQueue=function()
- {
- var cInfo=null;
- if(this.aContent.length>0)
- {
- cInfo=this.aContent[0];
- for(var i=1;i<this.aContent.length;i++)
- this.aContent[i-1]=this.aContent[i];
- this.aContent.length--;
- }
- return cInfo;
- }
- this.length=function()
- {
- return this.aContent.length;
- }
-}
-
-var gchunkRequestQueue=new chunkInfoQueue();
-
-function chunkInfo(nIdx, bLocal)
-{
- this.nIdx=nIdx;
- this.bLocal=bLocal;
-}
-
-function setBackground(sBgImage)
-{
- gsBgImage=sBgImage;
-}
-
-function setBackgroundcolor(sBgColor)
-{
- gsBgColor=sBgColor;
-}
-
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- if(sType=="Normal") goFont=vFont;
- else if(sType=="Hover") goHFont=vFont;
-}
-
-function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}
-
-function setMargin(sMargin){gsMargin=sMargin;}
-
-function setIndent(sIndent){gsIndent=sIndent;}
-
-function setIcon(sType,sURL)
-{
- if(sType=="BookOpen")
- giBookOpen=sURL;
- else if(sType=="BookClose")
- giBookClose=sURL;
- else if(sType=="Item")
- giBookItem=sURL;
- else if(sType=="RemoteItem")
- giURLItem=sURL;
- else if(sType=="NewBookClose")
- giNewBookClose=sURL;
- else if(sType=="NewBookOpen")
- giNewBookOpen=sURL;
- else if(sType=="NewItem")
- giNewBookItem=sURL;
- else if(sType=="NewRemoteItem")
- giNewURLItem=sURL;
-}
-
-function bookItem(sTarget,sURL)
-{
- if(sTarget)
- this.sTarget=sTarget;
- else
- this.sTarget="bsscright";
- this.sURL=sURL;
-}
-
-function addBookItem(sBookId,sTarget,sURL)
-{
- gBookItems[sBookId]=new bookItem(sTarget,sURL);
-}
-
-function tocChunk(sPPath,sDPath)
-{
- this.sPPath=sPPath;
- this.sDPath=sDPath;
- this.nMI=-1;
- this.aTocs=null;
-}
-
-function addTocChunk(sPPath,sDPath)
-{
- var oChunk=new tocChunk(sPPath,sDPath);
- gaTocs[gaTocs.length]=oChunk;
- return oChunk;
-}
-
-function isHSLoad(nIdx)
-{
- for(var i=0;i<gaHSLoad.length;i++)
- if(gaHSLoad[i]==nIdx)
- return true;
- return false;
-}
-
-function setHSLoad(nIdx)
-{
- if(!isHSLoad(nIdx))
- {
- var len=gaHSLoad.length;
- for(var i=0;i<len;i++)
- if(gaHSLoad[i]==-1)
- {
- gaHSLoad[i]=nIdx;
- return;
- }
- gaHSLoad[len]=nIdx;
- }
-}
-
-function setHSUnLoad(nIdx)
-{
- if(isHSLoad(nIdx))
- {
- for(var i=0;i<gaHSLoad.length;i++)
- if(gaHSLoad[i]==nIdx)
- {
- gaHSLoad[i]=-1;
- return;
- }
- }
-}
-
-function removeLoadingDiv()
-{
- var eLoadingDiv=getElement(gsLoadingDivID);
- if(eLoadingDiv)
- removeThis(eLoadingDiv);
-}
-
-function checkBookItem(nIdx)
-{
- if(!gInSync)
- {
- var sBookId=getBookId(nIdx);
- if(gBookItems[sBookId])
- {
- window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);
- }
- }
-}
-
-function insertBookItems(nIdx,num)
-{
- checkBookItem(nIdx);
- var sChildBookId=getCBId(nIdx);
- var eChildDiv=getElement(sChildBookId);
- if(eChildDiv){
- if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||
- (eChildDiv.all&&eChildDiv.all.length==0)){
- var sHTML=writeBookItems(nIdx,num);
- eChildDiv.innerHTML=sHTML;
- setTimeout("syncInit()",1);
- }
- }
- ExpandIt(nIdx);
-}
-
-function isBookEmpty(nIdx)
-{
- var num=getItemContentsNum(nIdx);
- if (num>0)
- {
- var nCIdx=0;
- do {
- nCIdx++;
- var i=nIdx+nCIdx;
- var nItemType=getItemType(i);
- if(nItemType==1){
- if (!isBookEmpty(i))
- return false;
- }
- else if(nItemType==4){
- var sSrc=getRefURL(i);
- var nProj=getProject(sSrc);
- if(nProj!=-1){
- sSrc=gaRoot[nProj].sToc;
- if(sSrc)
- return false;
- }
- }
- else if(nItemType==2||nItemType==16||nItemType==8)
- return false;
- } while(nCIdx<num);
- }
- return true;
-}
-
-function writeBook(nIdx)
-{
- var sIcon=getBookImage(nIdx,true);
- var sName=_textToHtml(getItemName(nIdx));
- sIcon=_textToHtml_nonbsp(sIcon);
-
- var nType=getItemType(nIdx);
- var bLocal=(nType==1);
- var bLocalProject=(nType!=4);
-
- var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";
- if(bLocal)
- {
- if (!isBookEmpty(nIdx))
- {
- sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";
- sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);
- sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";
- sHTML+=" "+sName+"</a></nobr></p></div>";
- var sURL=_textToHtml_nonbsp(getItemURL(nIdx));
- if(sURL!="")
- addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);
- sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";
- }
- else
- sHTML="";
- }
- else
- {
- sHTML+="stub></div>";
- gbNeedFillStub=true;
- setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);
- }
- return sHTML;
-}
-
-function checkFillStub()
-{
- if(!gbLData)
- {
- if(gchunkRequestQueue.length()>0)
- {
- var cInfo=gchunkRequestQueue.deQueue();
- if(cInfo)
- {
- fillStub(cInfo.nIdx,cInfo.bLocal);
- return;
- }
- }
- }
- if(gbNeedFillStub)
- {
- gbNeedFillStub=false;
- setTimeout("syncInit()",1);
- }
-}
-
-function fillStub(nIdx,bLocalProject)
-{
- if(!gbLData)
- {
- gbLData=true;
- var sObj=getElement(getPBId(nIdx));
- if(sObj!=null)
- {
- tocExpandHelpSet(nIdx,bLocalProject);
- gbNeedFillStub=false;
- setTimeout("syncInit()",1);
- }
- else
- setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);
- }
- else
- gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));
-}
-
-function getBookId(nIdx){return "B_"+nIdx;}
-
-function getItemId(nIdx){return "I_"+nIdx;}
-
-function markBook(nIdx)
-{
- var obj=getElement(getItemId(nIdx));
- if(obj==null)
- obj=getElement(getBookId(nIdx));
- if(gbNav6)
- {
- gobj=obj;
- setTimeout("delayMarkObj();",1);
- }
- else
- markObj(obj);
-}
-
-function delayMarkObj()
-{
- if(gobj)
- {
- markObj(gobj);
- gobj=null;
- }
-}
-
-function markObj(obj)
-{
- if(obj!=null)
- {
- HighLightElement(obj,gsABgColor,"transparent");
- var sPath=calTocPath(obj);
- if(gsCTPath!=sPath)
- gsCTPath=sPath;
- }
-}
-
-function markItem(nIdx)
-{
- var obj=getElement(getItemId(nIdx));
- if(gbNav6)
- {
- gobj=obj;
- setTimeout("delayMarkObj();",1);
- }
- else
- markObj(getElement(getItemId(nIdx)));
-}
-
-function calTocPath(obj)
-{
- var sPath=getInnerText2(obj);
- var pObj=getParentNode(obj);
- do
- {
- while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);
- if(pObj!=null)
- {
- var nId=getIdByCBId(pObj.id);
- var sObj=getElement(getPBId(nId));
- if(sObj!=null)
- {
- var objs=getItemsByBook(sObj);
- for(var i=0;i<objs.length;i++)
- {
- var sText=getInnerText2(objs[i]);
- if(sText.length!=0)
- {
- sPath=sText+gsPathSplit+sPath;
- break;
- }
- }
- }
- pObj=getParentNode(pObj);
- }
- }while(pObj!=null);
- return sPath;
-}
-
-function writeAnItem(nIdx)
-{
- var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));
- var sIcon=getItemIcon(nIdx,0);
- if(sIcon=="")
- {
- var nItemType=getItemType(nIdx);
- if(nItemType&2)
- sIcon=getItemImage(nIdx,false);
- else
- sIcon=getItemImage(nIdx,true);
- }
- sIcon=_textToHtml_nonbsp(sIcon);
- var sName=_textToHtml(getItemName(nIdx));
- var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""
- var sAltString="";
- if(nItemType&2)
- sAltString="Page";
- else
- sAltString="Remote Page";
- if(sTarget!="")
- sHTML+="target=\""+sTarget+"\" ";
- sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\"> "+sName+"</a></nobr></p>";
- return sHTML;
-}
-
-function writeBookItems(nIdx,num)
-{
- var sHTML="";
- if(num>0){
- var nCIdx=0;
- do{
- nCIdx++;
- var i=nIdx+nCIdx;
- var nItemType=getItemType(i);
- if(nItemType==1||nItemType==4||nItemType==8){
- sHTML+=writeBook(i);
- nCIdx+=getItemContentsNum(i);
- }
- else if(nItemType==2||nItemType==16){
- sHTML+=writeAnItem(i);
- }
- }
- while(nCIdx<num);
- }
- return sHTML;
-}
-
-function tocExpandHelpSet(nIdx,bLocal)
-{
- checkBookItem(nIdx);
- removeLoadingDiv();
- if(!isHSLoad(nIdx))
- {
- setHSLoad(nIdx);
- var sSrc="";
- if(bLocal){
- var oChunk=getChunk(nIdx);
- if(oChunk)
- {
- goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);
- sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;
- }
- }
- else{
- sSrc=getRefURL(nIdx);
- var nProj=getProject(sSrc);
- if(nProj!=-1)
- {
- sSrc=gaRoot[nProj].sToc;
- if(sSrc)
- goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);
- else
- goChunk=null;
- }
- else
- goChunk=null;
- }
- if(goChunk)
- {
- PrepareLoading(nIdx);
- gbToc=false;
- loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);
- }
- else
- {
- gbLData=false;
- checkFillStub();
- }
- }
-}
-
-function getProject(sSrc)
-{
- for(var i=0;i<gaProj.length;i++)
- if(isSamePath(getPath(sSrc),gaProj[i].sPPath))
- return i;
- return -1;
-}
-
-function getPath(sPath)
-{
- if(sPath!="")
- {
- sPath=_replaceSlash(sPath);
- var nPosFile=sPath.lastIndexOf("/");
- sPath=sPath.substring(0,nPosFile+1);
- }
- return sPath;
-}
-
-function isSamePath(sPath1,sPath2)
-{
- return (sPath1.toLowerCase()==sPath2.toLowerCase());
-}
-
-function PrepareLoading(nIdx)
-{
- gnInsIdx=nIdx;
- if(!gsTP)
- {
- var oObj=getElement(getPBId(gnInsIdx));
- if(oObj)
- oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));
- }
-}
-
-function writeLoadingDiv(nIdx)
-{
- return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";
-}
-
-function getItemName(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;
- else
- return null;
-}
-
-function getItemContentsNum(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- return oChunk.aTocs[nIdx-oChunk.nMI].nContents;
- else
- return null;
-}
-
-function getItemType(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- return oChunk.aTocs[nIdx-oChunk.nMI].nType;
- else
- return 0;
-}
-
-function getItemURL(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- {
- var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;
- if(!(sPath==null||sPath==""))
- {
- return _getFullPath(oChunk.sPPath,sPath);
- }
- }
- return "";
-}
-
-function getRefURL(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- {
- var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;
- if(!(sPath==null||sPath==""))
- {
- return _getFullPath(oChunk.sPPath,sPath)
- }
- }
- return "";
-}
-
-function getTopicTarget(nIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- {
- if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")
- return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;
- }
- return "";
-}
-
-function getItemIcon(nIdx,nIconIdx)
-{
- var oChunk=getChunk(nIdx);
- if(oChunk)
- {
- if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")
- {
- var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;
- var nIndex=sIconRef.indexOf(";");
- while(nIconIdx-->0&&nIndex!=-1)
- {
- sIconRef=sIconRef.substring(nIndex+1);
- nIndex=sIconRef.indexOf(";");
- }
- if(nIconIdx<0)
- {
- if(nIndex!=-1)
- sIconRef=sIconRef.substring(0,nIndex);
- return _getFullPath(oChunk.sPPath,sIconRef)
- }
- }
- }
- return "";
-}
-
-function TocWriteClassStyle()
-{
- var sStyle="<STYLE TYPE='text/css'>\n";
- if(gsBgImage)
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
- else
- sStyle+="body {border-top:black 1px solid;}\n";
- sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";
- sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";
- sStyle+=".parent {margin-left:0pt;}\n";
- sStyle+=".stub {margin-left:0pt;display:none}\n";
- sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";
- sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";
- sStyle+="</STYLE>";
- document.write(sStyle);
-}
-
-function TocWriteFixedWidth(bBegin,nWidth)
-{
- if((gbIE4)&&(gbMac)&&(!gbIE5)){
- if(bBegin)
- document.write("<table width="+nWidth+" border=0><tr><td>");
- else
- document.write("</td></tr></table>");
- }
-}
-
-function TocInitPage()
-{
- var tempColl=getItemsByBook(document.body);
- if(tempColl.length>0)
- tempColl[0].focus();
-}
-
-function getItemsFromObj(obj)
-{
- var aAnchor=new Array();
- var tempColl=getChildrenByTag(obj,"P");
- if(tempColl&&tempColl.length>0)
- {
- var anobr=new Array();
- for(var i=0;i<tempColl.length;i++)
- {
- var tempNobr=getChildrenByTag(tempColl[i],"NOBR");
- if(tempNobr&&tempNobr.length>0)
- for(var j=0;j<tempNobr.length;j++)
- anobr[anobr.length]=tempNobr[j];
- }
- for(var s=0;s<anobr.length;s++)
- {
- var tempAnchor=getChildrenByTag(anobr[s],"A");
- if(tempAnchor&&tempAnchor.length>0)
- for(var u=0;u<tempAnchor.length;u++)
- aAnchor[aAnchor.length]=tempAnchor[u];
- }
- }
- return aAnchor;
-}
-
-function getItemsByBook(obj)
-{
- var aAnchor=new Array();
- var aTAnchor=getItemsFromObj(obj);
- for(var i=0;i<aTAnchor.length;i++)
- aAnchor[aAnchor.length]=aTAnchor[i];
- var tempBook=getChildrenByTag(obj,"DIV");
- if(tempBook&&tempBook.length>0)
- for(var j=0;j<tempBook.length;j++)
- {
- var aTAnchorDiv=getItemsFromObj(tempBook[j]);
- for(var s=0;s<aTAnchorDiv.length;s++)
- aAnchor[aAnchor.length]=aTAnchorDiv[s];
- }
- return aAnchor;
-}
-
-function ExpandIt(nId)
-{
- if(!gsTP)
- ExpandIt2(nId,false);
-}
-
-function ExpandIt2(nId,bForceOpen)
-{
- var oC=TocExpand(nId,true,bForceOpen);
- var nNewScroll=document.body.scrollTop;
- if(oC.style.display=="block"){
- var nTop=oC.offsetTop;
- var nBottom=nTop+oC.offsetHeight;
- if(document.body.scrollTop+document.body.clientHeight<nBottom){
- nNewScroll=nBottom-document.body.clientHeight;
- }
- if(nBottom-nTop>document.body.clientHeight){
- nNewScroll=nTop-20;
- }
- }
- document.body.scrollTop=nNewScroll;
-}
-
-function TocExpand(nId,bChangeImg,bForceOpen)
-{
- var oDiv=getElement(getCBId(nId));
- if(oDiv==null) return null;
-
- var whichIm=document.images[getBId(nId)];
- if((oDiv.style.display!="block")||bForceOpen){
- oDiv.style.display="block";
- if(bChangeImg){
- var sPath=getPath(whichIm.src);
- sPath=_getFullPath(sPath,getBookImage(nId,false));
- whichIm.src=sPath;
- }
- }else{
- oDiv.style.display="none";
- if(bChangeImg){
- var sPath=getPath(whichIm.src);
- sPath=_getFullPath(sPath,getBookImage(nId,true));
- whichIm.src=sPath;
- }
- if(gbMac&&gbIE5){
- this.parent.document.getElementById("tocIFrame").style.width="101%";
- this.parent.document.getElementById("tocIFrame").style.width="100%";
- }
- }
- return oDiv;
-}
-
-function getChunkId(n)
-{
- var nCan=-1;
- for(var i=0;i<gaTocs.length;i++)
- if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)
- {
- if(nCan==-1)
- nCan=i;
- else
- if(gaTocs[i].nMI>=gaTocs[nCan].nMI)
- nCan=i;
- }
- if(nCan!=-1)
- return nCan;
- else
- return -1;
-}
-
-function getChunk(n)
-{
- if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||
- gaTocs[gnCC+1].nMI>n))
- {
- return gaTocs[gnCC];
- }
- else{
- gnCC=getChunkId(n);
- if(gnCC!=-1)
- return gaTocs[gnCC];
- else
- return null;
- }
-}
-
-function getBookImage(nIdx,bClosed)
-{
- var nIdx=bClosed?0:1;
- var sIcon=getItemIcon(nIdx,nIdx);
- if(sIcon=="")
- if(bClosed)
- sIcon=giBookClose;
- else
- sIcon=giBookOpen;
- return _getFullPath(gaProj[0].sPPath,sIcon);
-}
-
-function getItemImage(nIdx,bRemote)
-{
- var sIcon=getItemIcon(nIdx,0);
- if(sIcon=="")
- if(bRemote)
- sIcon=giURLItem;
- else
- sIcon=giBookItem;
- return _getFullPath(gaProj[0].sPPath,sIcon);
-}
-
-function getInnerText2(obj)
-{
- var sText=getInnerText(obj);
- if(sText.length>0&&!gbOpera7)
- sText=sText.substring(1);
- return sText;
-}
-
-function expandToc(oObj,sRest,aIdList)
-{
- var len=aIdList.length;
- var nPos=sRest.indexOf(gsPathSplit);
- if(nPos!=-1)
- {
- sPart=sRest.substring(0,nPos);
- sRest=sRest.substring(nPos+1);
- }
- else
- {
- sPart=sRest;
- var aTagAs=getItemsByBook(oObj);
- for(var s=0;s<aTagAs.length;s++)
- {
- var sText=getInnerText2(aTagAs[s]);
- if(sText==sPart)
- {
- aIdList[len]=aTagAs[s];
- return 1;
- }
- }
- return 0;
- }
-
- var aChildren=getChildrenByTag(oObj,"DIV");
- for(var i=0;i<aChildren.length;i++)
- {
- var sPId=aChildren[i].id;
- if(!isPBId(sPId))
- continue;
- var sText=getInnerText2(aChildren[i]);
- if(sText!=sPart)
- continue;
- aIdList[len]=getIdByPBId(sPId);
- var sCId=getCBId(aIdList[len]);
- var oCObj=getElement(sCId);
- if(oCObj)
- {
- if(oCObj.innerHTML=="")
- {
- var obj=getItemsByBook(aChildren[i]);
- if(obj.length>0)
- {
- if(gbNav6)
- {
- var sCommand=obj[0].getAttribute("onClick");
- var nCommand=sCommand.indexOf(";");
- sCommand=sCommand.substring(0,nCommand);
- setTimeout(sCommand,1);
- }
- else
- obj[0].click();
- }
- return -1;
- }
- var nRet=expandToc(oCObj,sRest,aIdList);
- if(nRet)
- return nRet;
- }
- }
- aIdList.length=len;
- return 0;
-}
-
-function getIdByPBId(sPId)
-{
- return parseInt(sPId.substring(2,sPId.length-1));
-}
-
-function getIdByCBId(sCId)
-{
- return parseInt(sCId.substring(2,sCId.length-1));
-}
-
-function isPBId(sId)
-{
- return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);
-}
-
-function isCBId(sId)
-{
- return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);
-}
-
-function getBId(nIdx)
-{
- return "B_"+nIdx;
-}
-
-function getPBId(nIdx)
-{
- return getBId(nIdx)+"P";
-}
-
-function getCBId(nIdx)
-{
- return getBId(nIdx)+"C";
-}
-
-function getClosestTocPath(aPaths)
-{
- var nMaxSimilarity=0;
- var nThatIndex=-1;
- var sPath=null;
- if(aPaths.length==0) return sPath;
- for(var i=0;i<aPaths.length;i++)
- {
- var nSimilarity=comparePath(gsCTPath,aPaths[i]);
- if(nSimilarity>nMaxSimilarity)
- {
- nMaxSimilarity=nSimilarity;
- nThatIndex=i;
- }
- }
- if(nThatIndex!=-1)
- sPath=aPaths[nThatIndex];
- else
- sPath=aPaths[0];
- return sPath;
-}
-
-function comparePath(sPath1,sPath2)
-{
- var nMaxSimilarity=0;
- var nStartPos1=0;
- var nPos1=-1;
- var nStartPos2=0;
- var nPos2=-1;
- do{
- var sCheck1=null;
- var sCheck2=null;
- nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);
- if(nPos1!=-1)
- {
- sCheck1=sPath1.substring(nStartPos1,nPos1);
- nStartPos1=nPos1+1;
- }
- else
- {
- sCheck1=sPath1.substring(nStartPos1);
- nStartPos1=-1;
- }
- nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);
- if(nPos1!=-1)
- {
- sCheck2=sPath2.substring(nStartPos2,nPos2);
- nStartPos2=nPos2+1;
- }
- else
- {
- sCheck2=sPath2.substring(nStartPos2);
- nStartPos2=-1;
- }
- if(sCheck1==sCheck2)
- nMaxSimilarity++;
- else
- break;
- }while(nStartPos1!=-1&&nStartPos2!=-1);
- return nMaxSimilarity;
-}
-
-function getTocPaths(oTopicParam)
-{
- var aRelTocPaths=oTopicParam.aPaths;
- var aPaths=new Array();
- for(var i=0;i<gaProj.length;i++)
- if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))
- {
- for(var j=0;j<aRelTocPaths.length;j++)
- for (var k=0;k<gaRoot[i].aRPath.length;k++)
- {
- var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];
- aPaths[aPaths.length]=sPath.substring(1);
- }
- break;
- }
- return aPaths;
-}
-
-function syncInit()
-{
- if(gsTP&&!gbNeedFillStub)
- {
- gInSync=true;
- var obj=document.body;
- var aIdList=new Array();
- var nRet=expandToc(obj,gsTP,aIdList);
- if(nRet!=-1)
- {
- if(nRet==1)
- {
- if(aIdList.length)
- for(var i=0;i<aIdList.length-1;i++)
- ExpandIt2(aIdList[i],true);
- gsCTPath=gsTP;
- if(!gbIE55)
- aIdList[aIdList.length-1].focus();
- else
- HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");
- }
- var aPaths=gaBTPs;
- gsTP=null;
- gaBTPs=null;
- if(aPaths!=null)
- {
- var sPath=getClosestTocPath(aPaths);
- if(sPath!=null)
- {
- gsTP=sPath;
- setTimeout("syncInit()",1);
- }
- }
- }
- gInSync=false;
- }
-}
-
-function loadToc()
-{
- if(!gbLoadToc)
- {
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);
- if(SendMessage(oResMsg)&&oResMsg.oParam)
- {
- gbLoadToc=true;
- var oProj=oResMsg.oParam;
- gaProj=oProj.aProj;
- gbXML=oProj.bXML;
- load1B1();
- }
- }
-}
-
-function load1B1()
-{
- if(gnLT+1<gaProj.length)
- for(var i=gnLT+1;i<gaProj.length;i++)
- if(gaProj[i].sToc)
- {
- gbToc=true;
- gnLT=i;
- setTimeout("loadTocInfo()",1);
- return true;
- }
- return false;
-}
-
-function loadTocInfo()
-{
- loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);
-}
-
-function loadData2(sFile)
-{
- if(gbXML)
- loadDataXML(sFile);
- else
- loadData(sFile);
-}
-
-function projReady(sRoot,aProj)
-{
- if(gaRoot.length<=gnLT||!gaRoot[gnLT])
- gaRoot[gnLT]=new Object();
- gaRoot[gnLT].sToc=sRoot;
-
- if(gnLT==0)
- {
- gaRoot[gnLT].aRPath=new Array();
- gaRoot[gnLT].aRPath[0]=gsPathSplit;
- }
-
- updatePTPath(gnLT,aProj);
-
- if(!((gnLT+1<gaProj.length)&&load1B1()))
- {
- gbReady=true;
- if(gbIE4)
- setTimeout("loadImages();",1);
- else
- setTimeout("loadTData();",1);
- }
-}
-
-function loadTData()
-{
- if(gaProj[0].sToc!="")
- {
- gbLData=true;
- goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);
- gbToc=false;
- loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);
- }
-}
-
-function updatePTPath(n,aProj)
-{
- if(aProj)
- for(var i=0;i<aProj.length;i++)
- {
- var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);
- for(var j=0;j<gaProj.length;j++)
- if(isSamePath(sFullPath,gaProj[j].sPPath))
- {
- if(gaRoot.length<=j||!gaRoot[j])
- gaRoot[j]=new Object();
- if(!gaRoot[j].aRPath)
- gaRoot[j].aRPath=new Array();
-
- if(gaRoot[n].aRPath)
- for(var k=0;k<gaRoot[n].aRPath.length;k++)
- {
- var bDup=false;
- var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;
- for(var l=0;l<gaRoot[j].aRPath.length;l++)
- if(gaRoot[j].aRPath[l]==sTFPath)
- {
- bDup=true;
- break;
- }
- if(!bDup)
- gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;
- }
- else
- gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;
- break;
- }
- }
-}
-
-function onLoadXMLError()
-{
- if(gbToc)
- {
- var sRoot="";
- var aRProj=new Array();
- projReady(sRoot,aRProj);
- }
- else
- {
- var aToc=new Array();
- putData(aToc)
- }
-}
-
-function putDataXML(xmlDoc,sDocPath)
-{
- if(gbToc)
- {
- var tocNode=xmlDoc.getElementsByTagName("toc")[0];
- if(tocNode)
- {
- var sRoot=tocNode.getAttribute("root");
- var rmtProject=tocNode.getElementsByTagName("project");
- var aRProj=new Array();
- if(rmtProject.length>0)
- {
- for(var i=0;i<rmtProject.length;i++)
- {
- aRProj[i]=new Object();
- var sURL=rmtProject[i].getAttribute("url");
- if(sURL)
- {
- if(sURL.lastIndexOf("/")!=sURL.length-1)
- sURL+="/";
- }
- aRProj[i].sPPath=sURL;
- aRProj[i].sRPath = "";
- var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];
- if (oSubPath)
- {
- while (oSubPath)
- {
- aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";
- oSubPath = oSubPath.getElementsByTagName("subpath")[0];
- }
- }
- else
- aRProj[i].sRPath=rmtProject[i].getAttribute("path");
- }
- }
- projReady(sRoot,aRProj);
- }
- }
- else
- {
- var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];
- if(chunkNode)
- {
- var aToc=new Array();
- processBook(chunkNode,aToc);
- putData(aToc);
- }
- }
-}
-
-function processBook(node,aToc)
-{
- var i=0;
- var entry=null;
- var prevEntry=null;
- var oChild=node.firstChild;
- do{
- if(oChild)
- {
- if(oChild.nodeName.indexOf("#")!=0)
- {
- var sName=oChild.getAttribute("name");
- var sURL=oChild.getAttribute("url");
- var sRef=oChild.getAttribute("ref");
- var sTarget=oChild.getAttribute("target");
- var sIcons=oChild.getAttribute("images");
- var item=new Object();
- item.sItemName=sName;
- if(sTarget)
- item.sTarget=sTarget;
- if(sIcons)
- item.sIconRef=sIcons;
- if(sURL==null) sURL="";
-
- item.sItemURL=sURL;
-
- if(oChild.nodeName=="book")
- {
- item.nType=1;
- aToc[aToc.length]=item;
- var nCurrPos=aToc.length;
- processBook(oChild,aToc);
- item.nContents=aToc.length-nCurrPos;
- }
- else if(oChild.nodeName=="item")
- {
- item.nType=2;
- item.nContents=0;
- aToc[aToc.length]=item;
- }
- else if(oChild.nodeName=="remoteitem")
- {
- item.nType=16;
- item.nContents=0;
- aToc[aToc.length]=item;
- }
- else if(oChild.nodeName=="project")
- {
- if(sRef)
- {
- if(sRef.lastIndexOf("/")!=sRef.length-1)
- sRef+="/";
- }
- item.nType=4;
- item.sRefURL=sRef;
- item.nContents=0;
- aToc[aToc.length]=item;
- }
- else if(oChild.nodeName=="chunk")
- {
- item.nType=8;
- item.sRefURL=sRef;
- item.nContents=0;
- aToc[aToc.length]=item;
- }
- }
- }
- else
- break;
- oChild=oChild.nextSibling;
- }while(true);
-}
-
-function putData(aTocs)
-{
- gaTocsNs61Fix=aTocs;
- setTimeout("realPutData();",1);
-}
-
-function realPutData()
-{
- removeLoadingDiv();
- var aTocs=gaTocsNs61Fix;
- if(!aTocs) return;
- if(goChunk)
- {
- var n=gnMinIdx;
- goChunk.nMI=gnMinIdx;
- goChunk.aTocs=aTocs;
- gnMinIdx+=aTocs.length;
- if(gnInsIdx!=-1)
- {
- var oObj=getElement(getPBId(gnInsIdx));
- if(oObj)
- {
- oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));
- setTimeout("syncInit()",1);
- }
- }
- else{
- document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));
- var oParam=new Object();
- oParam.oTocInfo=null;
- var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);
- if(SendMessage(oMsg))
- {
- if(oMsg.oParam.oTocInfo)
- syncWithPaths(oMsg.oParam.oTocInfo);
- }
- }
- }
- gbLData=false;
- checkFillStub();
-}
-
-function syncWithPaths(oTopicParam)
-{
- var aPaths=getTocPaths(oTopicParam);
- if(gsTP)
- gaBTPs=aPaths;
- else{
- var sPath=getClosestTocPath(aPaths);
- if(sPath!=null)
- {
- gsTP=sPath;
- setTimeout("syncInit()",1);
- }
- }
-}
-
-function window_OnLoad()
-{
- if(gsBgImage&&gsBgImage.length>0)
- {
- document.body.background=gsBgImage;
- }
- if(gsBgColor&&gsBgColor.length>0)
- {
- document.body.bgColor=gsBgColor;
- }
- loadToc();
- var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)
- SendMessage(oMsg);
-}
-
-function loadImages()
-{
- if(giBookClose)
- {
- gaImgs[gnImages]=giBookClose;
- gnImages++;
- }
- if(giBookOpen)
- {
- gaImgs[gnImages]=giBookOpen;
- gnImages++;
- }
- if(giBookItem)
- {
- gaImgs[gnImages]=giBookItem;
- gnImages++;
- }
- if(giURLItem)
- {
- gaImgs[gnImages]=giURLItem;
- gnImages++;
- }
- if(giNewBookClose)
- {
- gaImgs[gnImages]=giNewBookClose;
- gnImages++;
- }
- if(giNewBookOpen)
- {
- gaImgs[gnImages]=giNewBookOpen;
- gnImages++;
- }
- if(giNewBookItem)
- {
- gaImgs[gnImages]=giNewBookItem;
- gnImages++;
- }
- if(giNewURLItem)
- {
- gaImgs[gnImages]=giNewURLItem;
- gnImages++;
- }
- if(gnImages>0)
- {
- setTimeout("loadDataAfter();",1000);
- loadImage(gaImgs[0]);
- }
- else
- loadDataAfter();
-}
-
-function loadImage(sURL)
-{
- var oImg=new Image();
- oImg.onload=checkImageLoading;
- oImg.onerror=errorImageLoading;
- oImg.src=_getFullPath(gaProj[0].sPPath,sURL);
-}
-
-function loadDataAfter()
-{
- if(!gbLoadData)
- {
- gbLoadData=true;
- loadTData();
- }
-}
-
-function errorImageLoading()
-{
- gnLoadedImages++;
- if(gnImages==gnLoadedImages)
- loadDataAfter();
- else
- loadImage(gaImgs[gnLoadedImages]);
-}
-
-function checkImageLoading()
-{
- gnLoadedImages++;
- if(gnImages==gnLoadedImages)
- loadDataAfter();
- else
- loadImage(gaImgs[gnLoadedImages]);
-}
-
-function window_unload()
-{
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);
- UnRegisterListener2(this,WH_MSG_SYNCTOC);
- UnRegisterListener2(this,WH_MSG_SHOWTOC);
-}
-
-function onSendMessage(oMsg)
-{
- if(oMsg)
- {
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_PROJECTREADY)
- {
- loadToc();
- }
- else if(nMsgId==WH_MSG_SYNCTOC)
- {
- if(gbReady)
- {
- syncWithPaths(oMsg.oParam);
- }
- }
- else if(nMsgId==WH_MSG_SHOWTOC)
- {
- if(!gbNav6)
- document.body.focus();
- }
- }
- return true;
-}
-
-if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)
-{
- RegisterListener2(this,WH_MSG_PROJECTREADY);
- RegisterListener2(this,WH_MSG_SYNCTOC);
- RegisterListener2(this,WH_MSG_SHOWTOC);
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
- goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
-
- window.onload=window_OnLoad;
- window.onbeforeunload=window_BUnload;
- window.onunload=window_unload;
- gbWhTHost=true;
-}
-else
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.005
-var gsPPath="";
-var gaPaths=new Array();
-var gaAvenues=new Array();
-
-var goFrame=null;
-var gsStartPage="";
-var gsRelCurPagePath="";
-var gsSearchFormHref="";
-var gnTopicOnly=-1;
-var gnOutmostTopic=-1;
-
-var BTN_TEXT=1;
-var BTN_IMG=2;
-
-var goSync=null;
-
-var goShow=null;
-var goHide=null;
-
-var goPrev=null;
-var goNext=null;
-var gnForm=0;
-var goShowNav=null;
-var goHideNav=null;
-
-var goWebSearch=null;
-
-var gsBtnStyle="";
-var gaButtons=new Array();
-var gaTypes=new Array();
-var whtopic_foldUnload=null;
-var gbWhTopic=false;
-var gbCheckSync=false;
-var gbSyncEnabled=false;
-
-function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)
-{
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);
- gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}";
-}
-
-function writeBtnStyle()
-{
- if(gaButtons.length>0)
- {
- if(gsBtnStyle.length>0)
- {
- var sStyle="<style type='text/css'>";
- sStyle+=gsBtnStyle+"</style>";
- document.write(sStyle);
- }
- }
-}
-
-function button(sText,nWidth,nHeight)
-{
- this.sText=sText;
- this.nWidth=nWidth;
- this.nHeight=nHeight;
-
- this.aImgs=new Array();
- var i=0;
- while(button.arguments.length>i+3)
- {
- this.aImgs[i]=button.arguments[3+i];
- i++;
- }
-}
-
-//project info
-function setRelStartPage(sPath)
-{
- if(gsPPath.length==0)
- {
- gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath));
- gsStartPage=_getFullPath(_getPath(document.location.href),sPath);
- gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href);
- }
-}
-
-function getImage(oImage,sType)
-{
- var sImg="";
- if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0))
- {
- sImg+="<img alt=\""+sType+"\" src=\""+oImage.aImgs[0]+"\"";
- if(oImage.nWidth>0)
- sImg+=" width="+oImage.nWidth;
- if(oImage.nHeight>0)
- sImg+=" height="+oImage.nHeight;
- sImg+=" border=0>";
- }
- return sImg;
-}
-
-function addTocInfo(sTocPath)
-{
- gaPaths[gaPaths.length]=sTocPath;
-}
-
-function addAvenueInfo(sName,sPrev,sNext)
-{
- gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext);
-}
-
-function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3)
-{
- var sButton="";
- var nBtn=gaButtons.length;
- if(sType=="prev")
- {
- if(canGo(false))
- {
- var sTitle="Previous Topic";
- goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goPrev.sText;
- else
- sButton+=getImage(goPrev,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="next")
- {
- if(canGo(true))
- {
- var sTitle="Next Topic";
- goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goNext.sText;
- else
- sButton+=getImage(goNext,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="show")
- {
- if(isTopicOnly()&&(!gbOpera6||gbOpera7))
- {
- var sTitle="Show Navigation Component";
- goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goShow.sText;
- else
- sButton+=getImage(goShow,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="hide")
- {
- if(!isTopicOnly()&&!gbOpera6)
- {
- var sTitle="Hide Navigation Component";
- goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goHide.sText;
- else
- sButton+=getImage(goHide,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="shownav")
- {
- if(isShowHideEnable())
- {
- var sTitle="Show Navigation Component";
- goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goShowNav.sText;
- else
- sButton+=getImage(goShowNav,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="hidenav")
- {
- if(isShowHideEnable())
- {
- var sTitle="Hide Navigation Component";
- goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goHideNav.sText;
- else
- sButton+=getImage(goHideNav,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="synctoc")
- {
- if(gaPaths.length>0)
- {
- var sTitle="Sync TOC";
- goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";
- if(nStyle==BTN_TEXT)
- sButton+=goSync.sText;
- else
- sButton+=getImage(goSync,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="websearch")
- {
- if(gsSearchFormHref.length>0)
- {
- var sTitle="WebSearch";
- goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnwebsearch\" href=\""+gsSearchFormHref+"\">";
- if(nStyle==BTN_TEXT)
- sButton+=goWebSearch.sText;
- else
- sButton+=getImage(goWebSearch,sTitle);
- sButton+="</a>";
- }
- }
- else if(sType=="searchform")
- {
- gaButtons[nBtn]="NeedSearchForm";
- gaTypes[nBtn]=sType;
- }
- if(sButton.length!=0)
- {
- if(nStyle==BTN_TEXT)
- sButton+=" ";
- gaButtons[nBtn]="<td>"+sButton+"</td>";
- gaTypes[nBtn]=sType;
- }
-}
-
-function isSyncEnabled()
-{
- if(!gbCheckSync)
- {
- var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);
- if(SendMessage(oMsg))
- {
- gbSyncEnabled=oMsg.oParam;
- }
- gbCheckSync=true;
- }
- return gbSyncEnabled;
-}
-
-function isInPopup()
-{
- return (window.name.indexOf("BSSCPopup")!=-1);
-}
-
-function getIntopicBar(sAlign)
-{
- var sHTML="";
- if(gaButtons.length>0)
- {
- sHTML+="<div align="+sAlign+">";
-
- sHTML+="<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";
- for(var i=0;i<gaButtons.length;i++)
- {
- if(gaTypes[i]!="synctoc"||isSyncEnabled())
- {
- if(gaButtons[i]=="NeedSearchForm")
- sHTML+=getSearchFormHTML();
- else
- sHTML+=gaButtons[i];
- }
- }
- sHTML+="</tr></table>";
-
- sHTML+="</div>";
- }
- return sHTML;
-}
-
-
-function writeIntopicBar(nAligns)
-{
- if(isInPopup()) return;
- if(gaButtons.length>0)
- {
- var sHTML="";
- if(nAligns!=0)
- {
- sHTML+="<table width=100%><tr>"
- if(nAligns&1)
- sHTML+="<td width=33%>"+getIntopicBar("left")+"</td>";
- if(nAligns&2)
- sHTML+="<td width=34%>"+getIntopicBar("center")+"</td>";
- if(nAligns&4)
- sHTML+="<td width=33%>"+getIntopicBar("right")+"</td>";
- sHTML+="</tr></table>";
- document.write(sHTML);
- }
- }
-}
-
-function sendAveInfoOut()
-{
- if(!isInPopup())
- setTimeout("sendAveInfo();",100);
-}
-
-function sendAveInfo()
-{
- var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues);
- SendMessage(oMsg);
-}
-
-
-function onNext()
-{
- var oMsg=new whMessage(WH_MSG_NEXT,this,1,null);
- SendMessage(oMsg);
-}
-
-function onPrev()
-{
- var oMsg=new whMessage(WH_MSG_PREV,this,1,null);
- SendMessage(oMsg);
-}
-
-function createSyncInfo()
-{
- var oParam=new Object();
- if(gsPPath.length==0)
- gsPPath=_getPath(document.location.href);
- oParam.sPPath=gsPPath;
- oParam.sTPath=document.location.href;
- oParam.aPaths=gaPaths;
- return oParam;
-}
-
-function syncWithShow()
-{
- if(isTopicOnly())
- show();
- else
- {
- sync();
- showTocPane();
- }
-}
-
-function showTocPane()
-{
- var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null);
- SendMessage(oMsg);
-}
-
-function sendSyncInfo()
-{
- if(!isInPopup())
- {
- var oParam=null;
- if(gaPaths.length>0)
- {
- oParam=createSyncInfo();
- }
- var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam);
- SendMessage(oMsg);
- }
-}
-
-function sendInvalidSyncInfo()
-{
- if(!isInPopup())
- {
- var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null);
- SendMessage(oMsg);
- }
-}
-
-function enableWebSearch(bEnable)
-{
- if(!isInPopup())
- {
- var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable);
- SendMessage(oMsg);
- }
-}
-
-function autoSync(nSync)
-{
- if(nSync==0) return;
- if(isInPopup()) return;
- if(isOutMostTopic())
- sync();
-}
-
-function isOutMostTopic()
-{
- if(gnOutmostTopic==-1)
- {
- var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null);
- if(SendMessage(oMessage))
- gnOutmostTopic=0;
- else
- gnOutmostTopic=1;
- }
- return (gnOutmostTopic==1);
-}
-
-function sync()
-{
- if(gaPaths.length>0)
- {
- var oParam=createSyncInfo();
- var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);
- SendMessage(oMessage);
- }
-}
-
-
-function avenueInfo(sName,sPrev,sNext)
-{
- this.sName=sName;
- this.sPrev=sPrev;
- this.sNext=sNext;
-}
-
-function getCurrentAvenue()
-{
- var oParam=new Object();
- oParam.sAvenue=null;
- var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam);
- SendMessage(oMessage);
- return oParam.sAvenue;
-}
-
-function unRegisterListener()
-{
- sendInvalidSyncInfo();
- enableWebSearch(false);
- if(whtopic_foldUnload)
- whtopic_foldUnload();
-}
-
-function onSendMessage(oMsg)
-{
- var nMsgId=oMsg.nMessageId;
- if(nMsgId==WH_MSG_GETAVIAVENUES)
- {
- oMsg.oParam.aAvenues=gaAvenues;
- return false;
- }
- else if(nMsgId==WH_MSG_GETTOCPATHS)
- {
- if(isOutMostTopic())
- {
- oMsg.oParam.oTocInfo=createSyncInfo();
- return false;
- }
- else
- return true;
- }
- else if(nMsgId==WH_MSG_NEXT)
- {
- goAvenue(true);
- }
- else if(nMsgId==WH_MSG_PREV)
- {
- goAvenue(false);
- }
- else if(nMsgId==WH_MSG_WEBSEARCH)
- {
- websearch();
- }
- return true;
-}
-
-function goAvenue(bNext)
-{
- var sTopic=null;
- var sAvenue=getCurrentAvenue();
- var nAvenue=-1;
- if(sAvenue!=null&&sAvenue!="")
- {
- for(var i=0;i<gaAvenues.length;i++)
- {
- if(gaAvenues[i].sName==sAvenue)
- {
- nAvenue=i;
- break;
- }
- }
- if(nAvenue!=-1)
- {
- if(bNext)
- sTopic=gaAvenues[nAvenue].sNext;
- else
- sTopic=gaAvenues[nAvenue].sPrev;
- }
- }
- else
- {
- for(var i=0;i<gaAvenues.length;i++)
- {
- if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)
- {
- sTopic=gaAvenues[i].sNext;
- break;
- }
- else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)
- {
- sTopic=gaAvenues[i].sPrev;
- break;
- }
- }
- }
-
- if(sTopic!=null&&sTopic!="")
- {
- if(gsPPath!=null&&gsPPath!="")
- {
- sFullTopicPath=_getFullPath(gsPPath,sTopic);
- document.location=sFullTopicPath;
- }
- }
-}
-
-function canGo(bNext)
-{
- for(var i=0;i<gaAvenues.length;i++)
- {
- if((gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)||
- (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext))
- return true;
- }
- return false;
-}
-
-function show()
-{
- if(gsStartPage!="")
- window.location=gsStartPage+"#"+gsRelCurPagePath;
-}
-
-function hide()
-{
- if(goFrame!=null)
- {
- goFrame.location=window.location;
- }
-}
-
-function isTopicOnly()
-{
- if(gnTopicOnly==-1)
- {
- var oParam=new Object();
- oParam.oFrame=null;
- var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam);
- if(SendMessage(oMsg))
- {
- goFrame=oParam.oFrame;
- gnTopicOnly=0;
- }
- else
- gnTopicOnly=1;
- }
- if(gnTopicOnly==1)
- return true;
- else
- return false;
-}
-
-function websearch()
-{
- if(gbNav4)
- {
- if(document.ehelpform)
- document.ehelpform.submit();
- }
- else
- {
- if(window.ehelpform)
- window.ehelpform.submit();
- }
-}
-
-function addSearchFormHref(sHref)
-{
- gsSearchFormHref=sHref;
- enableWebSearch(true);
-}
-
-function searchB(nForm)
-{
- var sValue=eval("document.searchForm"+nForm+".searchString.value");
- var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue);
- SendMessage(oMsg);
-}
-
-function getSearchFormHTML()
-{
- var sHTML="";
- gnForm++;
- var sFormName="searchForm"+gnForm;
- var sButton="<form name=\""+sFormName+"\" method=\"POST\" action=\"javascript:searchB("+gnForm+")\">"
- sButton+="<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";
- if(""=="text")
- {
- sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\"></a>";
- }
- else if(""=="image")
- {
- sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\">"
- sButton+="<img src=\"\" border=0></a>";
- }
- sButton+="</form>";
- sHTML="<td align=\"center\">"+sButton+"</td>";
- return sHTML;
-}
-
-function showHidePane(bShow)
-{
- var oMsg=null;
- if(bShow)
- oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);
- else
- oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);
- SendMessage(oMsg);
-}
-
-function isShowHideEnable()
-{
- if(gbIE4)
- return true;
- else
- return false;
-}
-
-
-function PickupDialog_Invoke()
-{
- if(!gbIE4||gbMac)
- {
- if(typeof(_PopupMenu_Invoke)=="function")
- return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);
- }
- else
- {
- if(PickupDialog_Invoke.arguments.length>2)
- {
- var sPickup="whskin_pickup.htm";
- var sPickupPath=gsPPath+sPickup;
- if(gbIE4)
- {
- var sFrame=PickupDialog_Invoke.arguments[1];
- var aTopics=new Array();
- for(var i=2;i<PickupDialog_Invoke.arguments.length;i+=2)
- {
- var j=aTopics.length;
- aTopics[j]=new Object();
- aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];
- aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];
- }
-
- if(aTopics.length>1)
- {
- var nWidth=300;
- var nHeight=180;
- var nScreenWidth=screen.width;
- var nScreenHeight=screen.height;
- var nLeft=(nScreenWidth-nWidth)/2;
- var nTop=(nScreenHeight-nHeight)/2;
- if(gbIE4)
- {
- var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");
- if(vRet)
- {
- var sURL=vRet.m_url;
- if(sFrame)
- window.open(sURL,sFrame);
- else
- window.open(sURL,"_self");
- }
- }
- }
- else if(aTopics.length==1)
- {
- var sURL=aTopics[0].m_sURL
- if(sFrame)
- window.open(sURL,sFrame);
- else
- window.open(sURL,"_self");
- }
- }
- }
- }
-}
-
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
-{
- RegisterListener("bsscright",WH_MSG_GETAVIAVENUES);
- RegisterListener("bsscright",WH_MSG_GETTOCPATHS);
- RegisterListener("bsscright",WH_MSG_NEXT);
- RegisterListener("bsscright",WH_MSG_PREV);
- RegisterListener("bsscright",WH_MSG_WEBSEARCH);
- if(gbMac&&gbIE4)
- {
- if(typeof(window.onunload)!="unknown")
- if(window.onunload.toString!=unRegisterListener.toString)
- whtopic_foldUnload=window.onunload;
- }
- else
- {
- if(window.onunload)
- if(window.onunload.toString!=unRegisterListener.toString)
- whtopic_foldUnload=window.onunload;
- }
- window.onunload=unRegisterListener;
- setButtonFont("show","","","","","","");
-setButtonFont("hide","","","","","","");
-
- gbWhTopic=true;
-}
-else
- document.location.reload();
+++ /dev/null
-// WebHelp 5.10.004
-var gsFileName="";
-var gsDivName="";
-var xmlDoc=null;
-var sdocPath=null;
-var gsInsertBeforeEndHTML="";
-var sReplaceStringsSrc=new Array();
-var gsDivName="dataDiv";
-var gnLoadDivNum=0;
-sReplaceStringsSrc[0]="&";
-sReplaceStringsSrc[1]=">";
-sReplaceStringsSrc[2]="<";
-sReplaceStringsSrc[3]=""";
-sReplaceStringsSrc[4]=String.fromCharCode(8364);
-sReplaceStringsSrc[5]=" ";
-
-var sReplaceStringsDst=new Array();
-sReplaceStringsDst[0]="&";
-sReplaceStringsDst[1]=">";
-sReplaceStringsDst[2]="<";
-sReplaceStringsDst[3]="\"";
-sReplaceStringsDst[4]=String.fromCharCode(128);
-sReplaceStringsDst[5]=" ";
-var goHighLighted=null;
-
-function _getRelativePath(strParentPath,strCurrentPath)
-{
- if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath);
- strParentPath=_replaceSlash(strParentPath);
- strParentPath=_getPath(strParentPath);
- strCurrentPath=_replaceSlash(strCurrentPath);
- strCurrentPath=_getPath(strCurrentPath);
- for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)
- {
- if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))
- break;
- }
-
- strParentPath=strParentPath.substring(i);
- strCurrentPath=strCurrentPath.substring(i);
-
- var nPathPos=0;
- while(nPathPos!=-1)
- {
- nPathPos=strParentPath.indexOf("/");
- if(nPathPos!=-1)
- {
- strParentPath=strParentPath.substring(nPathPos+1);
- strCurrentPath="../"+strCurrentPath;
- }
- }
- return strCurrentPath;
-}
-
-function _getRelativeFileName(strParentPath,strCurrentPath)
-{
- strParentPath=_replaceSlash(strParentPath);
- strParentPath=_getPath(strParentPath);
- strCurrentPath=_replaceSlash(strCurrentPath);
- for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)
- {
- if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))
- break;
- }
-
- strParentPath=strParentPath.substring(i);
- strCurrentPath=strCurrentPath.substring(i);
-
- var nPathPos=0;
- while(nPathPos!=-1)
- {
- nPathPos=strParentPath.indexOf("/");
- if(nPathPos!=-1)
- {
- strParentPath=strParentPath.substring(nPathPos+1);
- strCurrentPath="../"+strCurrentPath;
- }
- }
- return strCurrentPath;
-}
-
-function _isAbsPathToHost(sPath)
-{
- return (sPath.indexOf("/")==0);
-}
-
-function _getHost(sPath)
-{
- var nPos=sPath.indexOf("//");
- if(nPos>0)
- {
- var nPosx=sPath.indexOf("/",nPos+2);
- if(nPosx>0)
- return sPath.substring(0,nPosx);
- else
- return sPath;
- }
- return sPath;
-}
-
-function _getFullPath(sPath,sRelPath)
-{
- if(_isAbsPath(sRelPath))
- return sRelPath;
- else if(_isAbsPathToHost(sRelPath))
- return _getHost(sPath)+sRelPath;
- else
- {
- var sFullPath=sPath;
- var nPathPos=0;
- while(nPathPos!=-1)
- {
- var nPathPos=sRelPath.indexOf("../");
- if(nPathPos!=-1)
- {
- sRelPath=sRelPath.substring(nPathPos+3);
- sFullPath=sFullPath.substring(0,sFullPath.length-1);
- var nPos2=sFullPath.lastIndexOf("/");
- if(nPos2!=-1)
- sFullPath=sFullPath.substring(0,nPos2+1);
- else
- break;
- }
- }
- sFullPath+=sRelPath;
- return sFullPath;
- }
-}
-
-function _isAbsPath(strPath)
-{
- var strUpper=strPath.toUpperCase();
- return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);
-}
-
-function _replaceSlash(strURL)
-{
- var re=new RegExp("\\\\","g");
- var strReplacedURL=strURL.replace(re,"/");
- return strReplacedURL;
-}
-
-function _getPath(strURL)
-{
- pathpos=strURL.lastIndexOf("/");
- if(pathpos>0)
- return strURL.substring(0,pathpos+1);
- else
- return "";
-}
-
-function removeItemFromArray(oArray,i)
-{
- if(oArray.length&&i>=0&&i<oArray.length)
- {
- var len=oArray.length;
- for(var s=i;s<len-1;s++)
- oArray[s]=oArray[s+1];
- oArray.length=len-1;
- }
-}
-
-function insertItemIntoArray(oArray,i,obj)
-{
- if(oArray.length&&i>=0&&i<=oArray.length)
- {
- var len=oArray.length;
- for(var s=len;s>i;s--)
- oArray[s]=oArray[s-1];
- oArray[i]=obj;
- }
-}
-
-function loadData(sFileName)
-{
- var i=gnLoadDivNum;
- var sName=gsDivName+gnLoadDivNum++;
- loadData_2(sFileName,sName);
-}
-
-function loadData_2(sFileName,sDivName)
-{
- if(!getElement(sDivName))
- {
- if(!insertDataDiv(sDivName))
- {
- gsFileName=sFileName;
- gsDivName=sDivName;
- return;
- }
- }
- var sHTML="";
- if(gbMac)
- sHTML+="<iframe src=\""+sFileName+"\"></iframe>";
- else
- sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";
-
- var oDivCon=getElement(sDivName);
- if(oDivCon)
- {
- if(gbNav6)
- {
- if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0)
- {
- oDivCon.getElementsByTagName("iFrame")[0].src=sFileName;
- }
- else
- oDivCon.innerHTML=sHTML;
- }
- else
- oDivCon.innerHTML=sHTML;
- }
-}
-
-function loadDataXML(sFileName)
-{
- var sCurrentDocPath=_getPath(document.location.href);
- sdocPath=_getFullPath(sCurrentDocPath,sFileName);
- if(gbIE5)
- {
- xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
- xmlDoc.async=true;
- xmlDoc.onreadystatechange=checkState;
- if(document.body!=null)
- xmlDoc.load(sdocPath);
- }
- else if(gbNav6)
- {
- xmlDoc=document.implementation.createDocument("","",null);
- xmlDoc.addEventListener("load",initializeData,false);
- xmlDoc.load(sdocPath,"text/xml");
- }
-}
-
-function initializeData()
-{
- if(xmlDoc!=null)
- putDataXML(xmlDoc,sdocPath);
-}
-
-function checkState()
-{
- if(xmlDoc!=null)
- {
- var state=xmlDoc.readyState;
- if(state==4)
- {
- var err=xmlDoc.parseError;
- if(err.errorCode==0)
- putDataXML(xmlDoc,sdocPath);
- else
- onLoadXMLError();
- }
- }
-}
-
-function insertDataDiv(sName)
-{
- var sHTML="";
- if(gbMac)
- sHTML+="<div id="+sName+" style=\"display:none;\"></div>";
- else
- sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";
- if((gbIE5||gbNav6)&&document.body)
- document.body.insertAdjacentHTML("beforeEnd",sHTML);
- else
- {
- gsInsertBeforeEndHTML=sHTML;
- setTimeout("insertWhenBodyReady();",100);
- return false;
- }
- return true;
-}
-
-function insertWhenBodyReady()
-{
- if(gsInsertBeforeEndHTML=="") return;
- if(document.body)
- {
- document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);
- gsInsertBeforeEndHTML="";
- loadData_2(gsFileName,gsDivName);
- }
- else
- {
- setTimeout("insertWhenBodyReady();",100);
- }
-}
-
-function window_BUnload()
-{
- for(var i=0;i<gnLoadDivNum;i++)
- {
- var oDivCon=getElement(gsDivName+i);
- if(oDivCon)
- oDivCon.innerHTML="";
- }
-}
-
-function removeThis(obj)
-{
- if(obj.parentNode)
- obj.parentNode.removeChild(obj);
- else
- obj.outerHTML="";
-}
-
-function getParentNode(obj)
-{
- if(obj.parentNode)
- return obj.parentNode;
- else if(obj.parentElement)
- return obj.parentElement;
- return null;
-}
-
-function getElement(sID)
-{
- if(document.getElementById)
- return document.getElementById(sID);
- else if(document.all)
- return document.all(sID);
- return null;
-}
-
-function getChildrenByTag(obj,sTagName)
-{
- if(obj.getElementsByTagName)
- {
- var aChildren=new Array();
- var aElements=getElementsByTag(obj,sTagName);
- if(aElements!=null)
- {
- for(var i=0;i<aElements.length;i++)
- {
- if(aElements[i].parentNode==obj)
- aChildren[aChildren.length]=aElements[i];
- }
- return aChildren;
- }
- else
- return new Array();
- }
- else if(obj.children)
- return obj.children.tags(sTagName);
-}
-
-function getElementsByTag(obj,sTagName)
-{
- if(obj.getElementsByTagName)
- return obj.getElementsByTagName(sTagName);
- else if(obj.all)
- return obj.all.tags(sTagName);
- return null;
-}
-
-function _htmlToText(sHTML)
-{
- if(sHTML==null) return null;
- var sText=sHTML;
- for(var i=0;i<sReplaceStringsSrc.length;i++)
- {
- var re=new RegExp(sReplaceStringsSrc[i],"g");
- sText=sText.replace(re,sReplaceStringsDst[i]);
- }
- return sText;
-}
-
-function _textToHtml_nonbsp(sText)
-{
- if(sText==null) return null;
- var sHTML=sText;
- for(var i=0;i<sReplaceStringsSrc.length-1;i++)
- {
- var re=new RegExp(sReplaceStringsDst[i],"g");
- sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);
- }
- return sHTML;
-}
-
-function _textToHtml(sText)
-{
- if(sText==null) return null;
- var sHTML=sText;
- for(var i=0;i<sReplaceStringsSrc.length;i++)
- {
- var re=new RegExp(sReplaceStringsDst[i],"g");
- sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);
- }
- return sHTML;
-}
-
-
-function getInnerText(obj)
-{
- var renbsp2sp=new RegExp("\xa0","g");
- if(obj.innerText)
- {
- var sText=obj.innerText;
- sText=sText.replace(renbsp2sp," ");
- return sText;
- }
- else
- {
- if(obj.nodeValue)
- {
- var sValue=obj.nodeValue;
- sValue=sValue.replace(renbsp2sp," ");
- return sValue;
- }
- else
- {
- var sText="";
- var oChild=obj.firstChild;
- while(oChild!=null)
- {
- sText+=getInnerText(oChild);
- oChild=oChild.nextSibling;
- }
- return sText;
- }
- }
-
-}
-
-function HighLightElement(obj,sHighLightColor,sNormalColor)
-{
- if(obj!=null)
- {
- resetHighLight(sNormalColor);
- if (obj.style)
- obj.style.backgroundColor=sHighLightColor;
- goHighLighted=obj;
- }
-}
-
-function resetHighLight(sNormalColor)
-{
- if(goHighLighted!=null)
- {
- if (goHighLighted.style)
- goHighLighted.style.backgroundColor=sNormalColor;
- goHighLighted=null;
- }
-}
-
-function whFont(sName,sSize,sColor,sStyle,sWeight,sDecoration)
-{
- this.sName=sName;
- this.sSize=sSize;
- this.sColor=sColor;
- this.sStyle=sStyle;
- this.sWeight=sWeight;
- this.sDecoration=sDecoration;
-}
-
-function getFontStyle(oFont)
-{
- var sStyle="";
- if(oFont)
- {
- sStyle+="font-family:"+oFont.sName+";";
- if(gbMac)
- {
- var nSize=parseInt(oFont.sSize);
- if(gbIE5)
- nSize+=2;
- else
- nSize+=4;
- sStyle+="font-size:"+nSize+"pt;";
- }
- else
- sStyle+="font-size:"+oFont.sSize+";";
-
- sStyle+="font-style:"+oFont.sStyle+";";
- sStyle+="font-weight:"+oFont.sWeight+";";
- sStyle+="text-decoration:"+oFont.sDecoration+";";
- sStyle+="color:"+oFont.sColor+";";
- }
- return sStyle;
-}
-
-function _browserStringToText(sBStr)
-{
- var sText="";
- // change %xxx back to the real char.
- var nPos=sBStr.indexOf('%');
- while(nPos!=-1)
- {
- sText+=sBStr.substring(0,nPos);
- sBStr=sBStr.substring(nPos+1);
- var sNum="";
- var i=0;
- while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')
- {
- sNum+=sBStr.charAt(i++);
- }
- if(sNum!=""){
- var nNum=parseInt(sNum,16);
- sText+=String.fromCharCode(nNum);
- sBStr=sBStr.substring(i);
- }
- nPos=sBStr.indexOf('%');
- }
- sText+=sBStr;
- return sText;
-}
-
-function excapeSingleQuotandSlash(str)
-{
- if(str==null) return null;
- var nPos=0;
- var sRes="";
- var nPosNew=str.indexOf("\\",nPos);
- while(nPosNew!=-1){
- sRes+=str.substring(nPos,nPosNew+1)+"\\";
- nPos=nPosNew+1;
- nPosNew=str.indexOf("\\",nPos);
- }
- if(nPos<str.length)
- sRes+=str.substring(nPos);
- var re=new RegExp("'","g");
- sRes=sRes.replace(re,"\\'");
- return sRes;
-}
-
-var gbWhUtil=true;
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.006
-var gbNav=false;
-var gbNav6=false;
-var gbNav61=false;
-var gbNav7=false;
-var gbNav4=false;
-var gbIE4=false;
-var gbIE=false;
-var gbIE5=false;
-var gbIE55=false;
-var gbOpera6=false;
-var gbOpera7=false;
-var gbKonqueror3=false;
-
-var gAgent=navigator.userAgent.toLowerCase();
-var gbMac=(gAgent.indexOf("mac")!=-1);
-var gbSunOS=(gAgent.indexOf("sunos")!=-1);
-var gbOpera=(gAgent.indexOf("opera")!=-1);
-var gbKonqueror=(gAgent.indexOf("konqueror")!= -1);
-var gbSafari=(gAgent.indexOf("safari")!= -1);
-var gbWindows=((gAgent.indexOf('win')!= -1)||(gAgent.indexOf('16bit')!= -1));
-var gbMozilla=((gAgent.indexOf('gecko')!=-1) && (gAgent.indexOf('netscape')==-1));
-
-
-var gVersion=navigator.appVersion.toLowerCase();
-
-var gnVerMajor=parseInt(gVersion);
-var gnVerMinor=parseFloat(gVersion);
-
-if(!gbOpera&&!gbKonqueror&&!gbSafari) // opera can mimic IE or Netscape by settings.
-{
- gbIE=(navigator.appName.indexOf("Microsoft")!=-1);
- gbNav=(gAgent.indexOf('mozilla')!=-1) && ((gAgent.indexOf('spoofer')==-1) && (gAgent.indexOf('compatible')==-1));
- if(gnVerMajor>=4)
- {
- if(navigator.appName=="Netscape")
- {
- gbNav4=true;
- if(gnVerMajor>=5)
- gbNav6=true;
- }
- gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);
- }
- if(gbNav6)
- {
- var nPos=gAgent.indexOf("gecko");
- if(nPos!=-1)
- {
- var nPos2=gAgent.indexOf("/", nPos);
- if(nPos2!=-1)
- {
- var nVersion=parseFloat(gAgent.substring(nPos2+1));
- if(nVersion>=20010726)
- {
- gbNav61=true;
- if (nVersion>=20020823)
- gbNav7=true;
- }
- }
- }
- }else if(gbIE4)
- {
- var nPos=gAgent.indexOf("msie");
- if(nPos!=-1)
- {
- var nVersion=parseFloat(gAgent.substring(nPos+5));
- if(nVersion>=5)
- {
- gbIE5=true;
- if(nVersion>=5.5)
- gbIE55=true;
- }
- }
- }
-}
-else if (gbOpera)
-{
- var nPos = gAgent.indexOf("opera");
- if(nPos!=-1)
- {
- var nVersion=parseFloat(gAgent.substring(nPos+6));
- if(nVersion>=6)
- {
- gbOpera6=true;
- if(nVersion>=7)
- gbOpera7=true;
- }
- }
-}
-else if (gbKonqueror)
-{
- var nPos = gAgent.indexOf("konqueror");
- if(nPos!=-1)
- {
- var nVersion = parseFloat(gAgent.substring(nPos+10));
- if (nVersion >= 3)
- {
- gbKonqueror3=true;
- }
- }
-}
-
-var gbWhVer=true;
\ No newline at end of file
cp -fr $(srcdir)/SMESH ./INPUT; \
cp -f ./SMESH/doxyfile ./INPUT; \
cd INPUT; \
- sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
+ sed 's|../../../share/salome|$(top_srcdir)|' ./doxyfile > ./doxyfile1; \
sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
echo "DOXYGEN SUPPORT PYTHON - @DOXYGEN_WITH_PYTHON@"; \
if( test "x@DOXYGEN_WITH_PYTHON@" = "xyes"); then \
sed 's|python_extension_must_be_here|*.py|' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
- $(doxygen) -u ./doxyfile1; \
+ $(DOXYGEN) -u ./doxyfile1; \
else \
sed 's|python_extension_must_be_here||' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
fi; \
mv -f doxyfile1 doxyfile; \
echo "Running doxygen in directory:"`pwd`; \
- $(doxygen) ./doxyfile; \
+ $(DOXYGEN) ./doxyfile; \
cd ../; \
cp -fr $(srcdir)/SMESH/sources/ SMESH ; \
rm -fr INPUT
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../../../share/salome/src \
- ../../../share/salome/idl \
- ../../../build/salome/bin
+ ../../../share/salome/idl
FILE_PATTERNS = *.hxx *.cxx *.h *.c *.hh *.cc *.idl python_extension_must_be_here
RECURSIVE = YES
EXCLUDE =
/*!
* Sets <length> parameter value
*/
- void SetLength(in double length)
+ void SetLength(in double length)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Sets <precision> parameter value
+ *
+ * Precision parameter is used to allow rounding a number of segments,
+ * calculated from the edge length and average length of segment,
+ * to the lower integer, if this value outstands from it in bounds of the precision.
+ * Otherwise, the number of segments is rounded to the higher integer.
+ * Use value 0.5 to provide rounding to the nearest integer,
+ * 1.0 for the lower integer, 0.0 for the higher integer.
+ * Default value is 1e-07. In old studies, restored from file,
+ * this value will be set to zero, what corresponds to the old behaviour.
+ */
+ void SetPrecision(in double precision)
raises (SALOME::SALOME_Exception);
/*!
* Returns <length> parameter value
*/
double GetLength();
+
+ /*!
+ * Returns <precision> parameter value
+ */
+ double GetPrecision();
};
/*!
/*!
* Sets <number of segments> parameter value
*/
- void SetNumberOfSegments(in long segmentsNumber)
+ void SetNumberOfSegments(in long segmentsNumber)
raises (SALOME::SALOME_Exception);
/*!
{
};
+ /*!
+ * StdMeshers_UseExisting_2D: interface of "UseExisting 2D" algorithm
+ * doing nothing to allow mesh generation by mesh edition functions in TUI mode
+ */
+ interface StdMeshers_UseExisting_2D : SMESH::SMESH_2D_Algo
+ {
+ };
+
+ /*!
+ * StdMeshers_UseExisting_1D: interface of "UseExisting 1D" algorithm
+ * doing nothing to allow mesh generation by mesh edition functions in TUI mode
+ */
+ interface StdMeshers_UseExisting_1D : SMESH::SMESH_1D_Algo
+ {
+ };
+
};
#endif
// 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
//
//
//
interface FilterManager;
interface SMESH_Pattern;
+ /*!
+ * Tags definition
+ */
+ // Top level
+ const long Tag_HypothesisRoot = 1; // hypotheses root
+ const long Tag_AlgorithmsRoot = 2; // algorithms root
+ const long Tag_FirstMeshRoot = 3; // first mesh root
+ // Mesh/Submesh
+ const long Tag_RefOnShape = 1; // references to shape
+ const long Tag_RefOnAppliedHypothesis = 2; // applied hypotheses root
+ const long Tag_RefOnAppliedAlgorithms = 3; // applied algorithms root
+ // Mesh only: sub-meshes roots by type
+ const long Tag_FirstSubMesh = 4;
+ const long Tag_SubMeshOnVertex = 4;
+ const long Tag_SubMeshOnEdge = 5;
+ const long Tag_SubMeshOnWire = 6;
+ const long Tag_SubMeshOnFace = 7;
+ const long Tag_SubMeshOnShell = 8;
+ const long Tag_SubMeshOnSolid = 9;
+ const long Tag_SubMeshOnCompound = 10;
+ const long Tag_LastSubMesh = 10;
+ // Mesh only: group roots by type
+ const long Tag_FirstGroup = 11;
+ const long Tag_NodeGroups = 11;
+ const long Tag_EdgeGroups = 12;
+ const long Tag_FaceGroups = 13;
+ const long Tag_VolumeGroups = 14;
+ const long Tag_LastGroup = 14;
+
/*!
* Hypothesis definintion error
*/
interface SMESH_Gen : Engines::Component, SALOMEDS::Driver
{
+ //GEOM::GEOM_Gen SetGeomEngine( in string containerLoc );
+ void SetGeomEngine( in GEOM::GEOM_Gen geomcompo );
FilterManager CreateFilterManager();
in double theMergeTolerance)
raises ( SALOME::SALOME_Exception );
+ /*!
+ * \brief Return id of object, registered in current study context
+ *
+ * Can be used to check if the object was created in the same container, as this engine.
+ */
+ long GetObjectId(in Object theObject);
};
};
#include "SALOME_Exception.idl"
#include "SALOME_GenericObj.idl"
+#include "SALOMEDS_Attributes.idl"
#include "SMESH_Mesh.idl"
*/
SMESH_Mesh GetMesh();
+ /*!
+ * Sets group color
+ */
+ void SetColor(in SALOMEDS::Color theColor);
+
+ /*!
+ * Returns group color
+ */
+ SALOMEDS::Color GetColor();
+
/*!
* Sets group color number
+ * (corresponds to the "hue" parameter of the color - must be in range [0, 360])
*/
void SetColorNumber( in long color );
/*!
- * Returns group color number
+ * Returns group color number (obsolete - use GetColor instead)
+ * (corresponds to the "hue" parameter of the color - must be in range [0, 360])
*/
long GetColorNumber();
};
double vy;
double vz; } ;
+ /*!
+ * Node location on a shape
+ */
+ struct NodePosition {
+ long shapeID;
+ GEOM::shape_type shapeType;
+ double_array params; // [U] on EDGE, [U,V] on FACE, [] on the rest shapes
+ };
/*!
* Enumeration for element type, like in SMDS
ListOfGroups GetGroups()
raises (SALOME::SALOME_Exception);
+ /*!
+ * Get number of groups existing in the mesh
+ */
+ long NbGroups()
+ raises (SALOME::SALOME_Exception);
+
/*!
* Union of two groups
* New group is created. All mesh elements that are
void ClearLog()
raises (SALOME::SALOME_Exception);
+ /*!
+ * Toggle auto color mode on the object.
+ * @params
+ * - theAutoColor : flag which toggles auto color mode.
+ */
+ void SetAutoColor(in boolean theAutoColor)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ * Get flag of object's auto color mode.
+ */
+ boolean GetAutoColor()
+ raises (SALOME::SALOME_Exception);
+
/*!
* Get the internal Id
*/
void ExportMED( in string file, in boolean auto_groups )
raises (SALOME::SALOME_Exception);
+ /*!
+ * Return string representation of a MED file version comprising nbDigits
+ */
+ string GetVersionString(in MED_VERSION version, in short nbDigits);
+
/*!
* Export Mesh to DAT, UNV and STL Formats
* (UNV supported version is I-DEAS 10)
*/
long_array GetNodeInverseElements(in long id);
+ /*!
+ * \brief Return position of a node on shape
+ */
+ NodePosition GetNodePosition(in long NodeID);
+
/*!
* If given element is node returns IDs of shape from position
* If there is not node for given ID - returns -1
*/
long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces);
+ /*!
+ * \brief Bind a node to a vertex
+ * \param NodeID - node ID
+ * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetNodeOnVertex(in long NodeID, in long VertexID)
+ raises (SALOME::SALOME_Exception);
+ /*!
+ * \brief Store node position on an edge
+ * \param NodeID - node ID
+ * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param paramOnEdge - parameter on edge where the node is located
+ */
+ void SetNodeOnEdge(in long NodeID, in long EdgeID, in double paramOnEdge)
+ raises (SALOME::SALOME_Exception);
+ /*!
+ * \brief Store node position on a face
+ * \param NodeID - node ID
+ * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param u - U parameter on face where the node is located
+ * \param v - V parameter on face where the node is located
+ */
+ void SetNodeOnFace(in long NodeID, in long FaceID, in double u, in double v)
+ raises (SALOME::SALOME_Exception);
+ /*!
+ * \brief Bind a node to a solid
+ * \param NodeID - node ID
+ * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetNodeInVolume(in long NodeID, in long SolidID)
+ raises (SALOME::SALOME_Exception);
+ /*!
+ * \brief Bind an element to a shape
+ * \param ElementID - element ID
+ * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetMeshElementOnShape(in long ElementID, in long ShapeID)
+ raises (SALOME::SALOME_Exception);
+
+
boolean MoveNode(in long NodeID, in double x, in double y, in double z);
boolean InverseDiag(in long NodeID1, in long NodeID2);
void RenumberElements();
+ /*!
+ * \brief Genarate dim+1 elements by rotation of given elements around axis
+ * \param IDsOfElements - elements to ratate
+ * \param Axix - rotation axis
+ * \param AngleInRadians - rotation angle
+ * \param NbOfSteps - number of elements to generate from one element
+ */
void RotationSweep(in long_array IDsOfElements,
in AxisStruct Axix,
in double AngleInRadians,
in long NbOfSteps,
in double Tolerance);
-
+ /*!
+ * \brief Same as previous but additionally create groups of elements
+ * generated from elements belonging to preexisting groups
+ */
+ ListOfGroups RotationSweepMakeGroups(in long_array IDsOfElements,
+ in AxisStruct Axix,
+ in double AngleInRadians,
+ in long NbOfSteps,
+ in double Tolerance);
+ /*!
+ * \brief Genarate dim+1 elements by rotation of the object around axis
+ * \param theObject - object containing elements to ratate
+ * \param Axix - rotation axis
+ * \param AngleInRadians - rotation angle
+ * \param NbOfSteps - number of elements to generate from one element
+ */
void RotationSweepObject(in SMESH_IDSource theObject,
in AxisStruct Axix,
in double AngleInRadians,
in long NbOfSteps,
in double Tolerance);
-
+ /*!
+ * \brief Same as previous but additionally create groups of elements
+ * generated from elements belonging to preexisting groups
+ */
+ ListOfGroups RotationSweepObjectMakeGroups(in SMESH_IDSource theObject,
+ in AxisStruct Axix,
+ in double AngleInRadians,
+ in long NbOfSteps,
+ in double Tolerance);
+ /*!
+ * \brief Genarate dim+1 elements by extrusion of elements along vector
+ * \param IDsOfElements - elements to sweep
+ * \param StepVector - vector giving direction and distance of an extrusion step
+ * \param NbOfSteps - number of elements to generate from one element
+ */
void ExtrusionSweep(in long_array IDsOfElements,
in DirStruct StepVector,
in long NbOfSteps);
-
+ /*!
+ * \brief Same as previous but additionally create groups of elements
+ * generated from elements belonging to preexisting groups
+ */
+ ListOfGroups ExtrusionSweepMakeGroups(in long_array IDsOfElements,
+ in DirStruct StepVector,
+ in long NbOfSteps);
/*!
* Generate new elements by extrusion of theElements
* by StepVector by NbOfSteps
in long NbOfSteps,
in long ExtrFlags,
in double SewTolerance);
+ /*!
+ * \brief Same as previous but additionally create groups of elements
+ * generated from elements belonging to preexisting groups
+ */
+ ListOfGroups AdvancedExtrusionMakeGroups(in long_array IDsOfElements,
+ in DirStruct StepVector,
+ in long NbOfSteps,
+ in long ExtrFlags,
+ in double SewTolerance);
void ExtrusionSweepObject(in SMESH_IDSource theObject,
in DirStruct StepVector,
in long NbOfSteps);
+ ListOfGroups ExtrusionSweepObjectMakeGroups(in SMESH_IDSource theObject,
+ in DirStruct StepVector,
+ in long NbOfSteps);
void ExtrusionSweepObject1D(in SMESH_IDSource theObject,
in DirStruct StepVector,
in long NbOfSteps);
+ ListOfGroups ExtrusionSweepObject1DMakeGroups(in SMESH_IDSource theObject,
+ in DirStruct StepVector,
+ in long NbOfSteps);
void ExtrusionSweepObject2D(in SMESH_IDSource theObject,
in DirStruct StepVector,
in long NbOfSteps);
+ ListOfGroups ExtrusionSweepObject2DMakeGroups(in SMESH_IDSource theObject,
+ in DirStruct StepVector,
+ in long NbOfSteps);
enum Extrusion_Error {
EXTR_OK,
in double_array Angles,
in boolean HasRefPoint,
in PointStruct RefPoint);
+ ListOfGroups ExtrusionAlongPathMakeGroups(in long_array IDsOfElements,
+ in SMESH_Mesh PathMesh,
+ in GEOM::GEOM_Object PathShape,
+ in long NodeStart,
+ in boolean HasAngles,
+ in double_array Angles,
+ in boolean HasRefPoint,
+ in PointStruct RefPoint,
+ out Extrusion_Error Error);
Extrusion_Error ExtrusionAlongPathObject(in SMESH_IDSource theObject,
in SMESH_Mesh PathMesh,
in double_array Angles,
in boolean HasRefPoint,
in PointStruct RefPoint);
+ ListOfGroups ExtrusionAlongPathObjectMakeGroups(in SMESH_IDSource theObject,
+ in SMESH_Mesh PathMesh,
+ in GEOM::GEOM_Object PathShape,
+ in long NodeStart,
+ in boolean HasAngles,
+ in double_array Angles,
+ in boolean HasRefPoint,
+ in PointStruct RefPoint,
+ out Extrusion_Error Error);
/*!
* Compute rotation angles for ExtrusionAlongPath as linear variation
enum MirrorType { POINT, AXIS, PLANE };
- void Mirror (in long_array IDsOfElements,
- in AxisStruct Mirror,
- in MirrorType theMirrorType,
- in boolean Copy);
-
- void MirrorObject (in SMESH_IDSource theObject,
- in AxisStruct Mirror,
- in MirrorType theMirrorType,
- in boolean Copy);
-
- void Translate (in long_array IDsOfElements,
- in DirStruct Vector,
- in boolean Copy);
-
- void TranslateObject (in SMESH_IDSource theObject,
- in DirStruct Vector,
- in boolean Copy);
-
- void Rotate (in long_array IDsOfElements,
- in AxisStruct Axis,
- in double AngleInRadians,
- in boolean Copy);
-
- void RotateObject (in SMESH_IDSource theObject,
- in AxisStruct Axis,
- in double AngleInRadians,
- in boolean Copy);
+ void Mirror (in long_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean Copy);
+ ListOfGroups MirrorMakeGroups (in long_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type);
+ SMESH_Mesh MirrorMakeMesh (in long_array IDsOfElements,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean CopyGroups,
+ in string MeshName);
+
+ void MirrorObject (in SMESH_IDSource theObject,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean Copy);
+ ListOfGroups MirrorObjectMakeGroups (in SMESH_IDSource theObject,
+ in AxisStruct Mirror,
+ in MirrorType Type);
+ SMESH_Mesh MirrorObjectMakeMesh (in SMESH_IDSource theObject,
+ in AxisStruct Mirror,
+ in MirrorType Type,
+ in boolean CopyGroups,
+ in string MeshName);
+
+ void Translate (in long_array IDsOfElements,
+ in DirStruct Vector,
+ in boolean Copy);
+ ListOfGroups TranslateMakeGroups (in long_array IDsOfElements,
+ in DirStruct Vector);
+ SMESH_Mesh TranslateMakeMesh (in long_array IDsOfElements,
+ in DirStruct Vector,
+ in boolean CopyGroups,
+ in string MeshName);
+
+ void TranslateObject (in SMESH_IDSource theObject,
+ in DirStruct Vector,
+ in boolean Copy);
+ ListOfGroups TranslateObjectMakeGroups (in SMESH_IDSource theObject,
+ in DirStruct Vector);
+ SMESH_Mesh TranslateObjectMakeMesh (in SMESH_IDSource theObject,
+ in DirStruct Vector,
+ in boolean CopyGroups,
+ in string MeshName);
+
+ void Rotate (in long_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean Copy);
+ ListOfGroups RotateMakeGroups (in long_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians);
+ SMESH_Mesh RotateMakeMesh (in long_array IDsOfElements,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean CopyGroups,
+ in string MeshName);
+
+ void RotateObject (in SMESH_IDSource theObject,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean Copy);
+ ListOfGroups RotateObjectMakeGroups (in SMESH_IDSource theObject,
+ in AxisStruct Axis,
+ in double AngleInRadians);
+ SMESH_Mesh RotateObjectMakeMesh (in SMESH_IDSource theObject,
+ in AxisStruct Axis,
+ in double AngleInRadians,
+ in boolean CopyGroups,
+ in string MeshName);
void FindCoincidentNodes (in double Tolerance,
out array_of_long_array GroupsOfNodes);
mesh_info.png \
advanced_mesh_info.png \
standard_mesh_info.png \
+ mesh_whatis.png \
mesh_init.png \
mesh_length.png \
mesh_length_2d.png \
<path-prefix-list>
</path-prefix-list>
+<type-list>
+ <objref name="SMESH_Mesh" id="IDL:Mesh/SMESH_Mesh:1.0"/>
+ <objref name="SMESH_Hypothesis" id="IDL:SMESH/SMESH_Hypothesis:1.0"/>
+</type-list>
+
<!-- Component list -->
<component-list>
<component>
<separator pos-id=""/>
<popup-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
</menu-item>
<!-- ************************** Control (menubar) ************************************ -->
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<separator pos-id=""/>
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<separator pos-id=""/>
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<submenu label-id="Numbering" item-id="114" pos-id="">
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="SubMesh">
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<submenu label-id="Numbering" item-id="114" pos-id="">
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separator pos-id=""/>
<submenu label-id="Numbering" item-id="114" pos-id="">
<popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<separatorTB/>
<toolbutton-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="Advanced Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
<toolbutton-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="Standard Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
+ <toolbutton-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="Mesh Element Info" accel-id="" toggle-id="" execute-action=""/>
</toolbar>
<toolbar label-id="Hypotheses Toolbar">
<parameter name="selection_object_color" value="255, 255, 255"/>
<parameter name="selection_precision_element" value="0.005"/>
<parameter name="selection_precision_node" value="0.005"/>
+ <parameter name="selection_precision_object" value="0.005"/>
<parameter name="selection_width" value="5"/>
<parameter name="highlight_width" value="5"/>
<parameter name="controls_precision" value="0"/>
<!-- 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"/>
+ <parameter name="BLSURFPlugin" value="${BLSURFPlugin_ROOT_DIR}/share/salome/resources"/>
+ <parameter name="HexoticPLUGIN" value="${HexoticPlugin_ROOT_DIR}/share/salome/resources"/>
</section>
</document>
<hypothesis type="QuadranglePreference"
label-id="Quadrangle Preference"
icon-id="mesh_algo_quad.png"
+ auxiliary="true"
dim="2"/>
<hypothesis type="QuadraticMesh"
<hypothesis type="MaxElementVolume"
label-id="Max. Element Volume"
icon-id="mesh_hypo_volume.png"
+ need-geom = "false"
dim="3"/>
<hypothesis type="ProjectionSource3D"
input="QUAD,TRIA"
dim="3"/>
+ <algorithm type="UseExisting_1D"
+ label-id="Use existing edges"
+ icon-id="mesh_algo_regular.png"
+ input="VERTEX"
+ output="EDGE"
+ dim="1"/>
+
+ <algorithm type="UseExisting_2D"
+ label-id="Use existing faces"
+ icon-id="mesh_algo_quad.png"
+ input="EDGE"
+ output="QUAD,TRIA"
+ dim="2"/>
+
</algorithms>
</meshers-group>
myGroupNames.clear();
myGroupNames.insert(string(theGroup->GetStoreName()));
- myGroupAttributVal = 0;
-
- if (theGroup->GetColorGroup()!=0)
- {
- myGroupAttributVal = theGroup->GetColorGroup();
- }
-
+ Quantity_Color aColor = theGroup->GetColor();
+ myGroupAttributVal = aColor.Hue();
}
//=============================================================================
for(; aGeom2SizeIter != aGeom2Size.end(); aGeom2SizeIter++){
const EGeometrieElement& aGeom = aGeom2SizeIter->first;
- switch(aGeom){
- case ePOINT1:
- break;
+ switch(aGeom) {
+// case ePOINT1: ## PAL16410
+// break;
case ePOLYGONE: {
PPolygoneInfo aPolygoneInfo = aMed->GetPPolygoneInfo(aMeshInfo,anEntity,aGeom);
EBooleen anIsElemNum = takeNumbers ? aPolygoneInfo->IsElemNum() : eFAUX;
case ePENTA15: aNbNodes = 15; break;
case eHEXA8: aNbNodes = 8; break;
case eHEXA20: aNbNodes = 20; break;
+ case ePOINT1: aNbNodes = 1; break;
default:;
}
vector<TInt> aNodeIds(aNbNodes);
continue;
bool isRenum = false;
- SMDS_MeshElement* anElement = NULL;
+ const SMDS_MeshElement* anElement = NULL;
TInt aFamNum = aCellInfo->GetFamNum(iElem);
#ifndef _DEXCEPT_
try{
#endif
//MESSAGE("Try to create element # " << iElem << " with id = "
// << aCellInfo->GetElemNum(iElem));
- switch(aGeom){
+ switch(aGeom) {
case eSEG2:
if(anIsElemNum)
anElement = myMesh->AddEdgeWithID(aNodeIds[0],
isRenum = anIsElemNum;
}
break;
+
+ case ePOINT1:
+ anElement = FindNode(myMesh,aNodeIds[0]);
+ break;
}
#ifndef _DEXCEPT_
}catch(const std::exception& exc){
theGroup->SMDSGroup().Add(element);
}
if ( element )
- theGroup->SetType( element->GetType() );
+ theGroup->SetType( theGroup->SMDSGroup().GetType() );
}
}
}
return SetFile(theFileName,MED::eV2_2);
}
+string DriverMED_W_SMESHDS_Mesh::GetVersionString(const MED::EVersion theVersion, int theNbDigits)
+{
+ TInt majeur, mineur, release;
+ majeur = mineur = release = 0;
+ if ( theVersion == eV2_1 )
+ MED::GetVersionRelease<eV2_1>(majeur, mineur, release);
+ else
+ MED::GetVersionRelease<eV2_2>(majeur, mineur, release);
+ ostringstream name;
+ if ( theNbDigits > 0 )
+ name << majeur;
+ if ( theNbDigits > 1 )
+ name << "." << mineur;
+ if ( theNbDigits > 2 )
+ name << "." << release;
+ return name.str();
+}
+
void DriverMED_W_SMESHDS_Mesh::SetMeshName(const std::string& theMeshName)
{
myMeshName = theMeshName;
aMeshDimension = anIsXDimension + anIsYDimension + anIsZDimension;
if(!aMeshDimension)
aMeshDimension = 3;
+ // PAL16857(SMESH not conform to the MED convention):
+ if ( aMeshDimension == 2 && anIsZDimension ) // 2D only if mesh is in XOY plane
+ aMeshDimension = 3;
+ // PAL18941(a saved study with a mesh belong Z is opened and the mesh is belong X)
+ if ( aMeshDimension == 1 && !anIsXDimension ) // 1D only if mesh is along OX
+ if ( anIsYDimension ) {
+ aMeshDimension = 2;
+ anIsXDimension = true;
+ } else {
+ aMeshDimension = 3;
+ }
}
SMDS_NodeIteratorPtr aNodesIter = myMesh->nodesIterator();
virtual void SetFile(const std::string& theFileName);
void SetFile(const std::string& theFileName, MED::EVersion theId);
+ static std::string GetVersionString(const MED::EVersion theVersion, int theNbDigits=2);
/*! sets file name; only for usage with Add(), not Write()
*/
libMeshDriverUNV_la_CPPFLAGS = \
$(KERNEL_CXXFLAGS) \
$(CAS_CPPFLAGS) \
+ $(CORBA_CXXFLAGS) \
+ $(CORBA_INCLUDES) \
$(BOOST_CPPFLAGS) \
-I$(srcdir)/../Driver \
-I$(srcdir)/../SMDS \
#endif
-static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435", "2452", "2467"};
-#define NBGROUP 7
+static string _group_labels[] = {"2417", "2429", "2430", "2432",
+ "2435", "2452", "2467", "2477"};
+#define NBGROUP 8
static string _label_dataset = "2467";
for(int j=0; j < n_nodes; j++){
in_stream>>aElType;
in_stream>>aElId;
- if ((myGroupLabel.compare("2435") == 0) || (myGroupLabel.compare("2452") == 0) || (myGroupLabel.compare("2467") == 0)) {
+ if ((myGroupLabel.compare("2435") == 0) ||
+ (myGroupLabel.compare("2452") == 0) ||
+ (myGroupLabel.compare("2467") == 0) ||
+ (myGroupLabel.compare("2477") == 0)) {
in_stream>>aTmp;
in_stream>>aTmp;
}
if( ierr != 0 ) goto ERREUR;
//qualites de la triangulation actuelle
- qualitetrte_( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
+ qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
nbt, quamoy, quamin );
// boucle sur les aretes internes (non sur une ligne de la frontiere)
<< d << " secondes");
//qualites de la triangulation actuelle
- qualitetrte_( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
+ qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
nbt, quamoy, quamin );
// detection des aretes frontalieres initiales perdues
if( ierr != 0 ) goto ERREUR;
//qualites de la triangulation actuelle
- qualitetrte_( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
+ qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
nbt, quamoy, quamin );
// fin de la triangulation avec respect des aretes initiales frontalieres
if( ierr != 0 ) goto ERREUR;
//qualites de la triangulation actuelle
- qualitetrte_( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
+ qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
nbt, quamoy, quamin );
// amelioration de la qualite de la triangulation par
cout << "aptrte: MC saturee mnarcf3=" << mnarcf3 << endl;
goto ERREUR;
}
- teamqt_( nutysu, aretmx, airemx,
+ teamqt( nutysu, aretmx, airemx,
mnarst, mosoar, mxsoar, n1soar, mnsoar,
moartr, mxartr, n1artr, mnartr,
mxarcf, mnarcf2, mnarcf3,
if( ierr != 0 ) goto ERREUR;
//qualites de la triangulation finale
- qualitetrte_( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
+ qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
nbt, quamoy, quamin );
// renumerotation des sommets internes: mnarst(i)=numero final du sommet
goto NETTOYAGE;
}
}
-
-
-void qualitetrte_( R3 *mnpxyd,
+void
+#ifdef WIN32
+ __stdcall
+#endif
+ qualitetrte( R3 *mnpxyd,
Z & mosoar, Z & mxsoar, Z *mnsoar,
Z & moartr, Z & mxartr, Z *mnartr,
Z & nbtria, R & quamoy, R & quamin )
if( quamin<0.3 )
{
//le numero des 3 sommets du triangle ntqmin de qualite minimale
- nusotr_( ntqmin, mosoar, mnsoar, moartr, mnartr, nosotr );
+ nusotr(ntqmin, mosoar, mnsoar, moartr, mnartr, nosotr );
MESSAGE("Triangle de qualite minimale "<<quamin<<" de sommets:"
<<nosotr[0]<<" "<<nosotr[1]<<" "<<nosotr[2]<<" ");
for (int i=0;i<3;i++)
#define MEFISTO2D_EXPORT
#endif
-extern "C" {
-void qualitetrte_( R3 *mnpxyd,
- Z & mosoar, Z & mxsoar, Z *mnsoar,
- Z & moartr, Z & mxartr, Z *mnartr,
- Z & nbtria, R & quamoy, R & quamin ); }
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but : calculer la qualite moyenne et minimale de la triangulation
-// ----- actuelle definie par les tableaux nosoar et noartr
-// entrees:
-// --------
-// mnpxyd : tableau des coordonnees 2d des points
-// par point : x y distance_souhaitee
-// mosoar : nombre maximal d'entiers par arete et
-// indice dans nosoar de l'arete suivante dans le hachage
-// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-// attention: mxsoar>3*mxsomm obligatoire!
-// nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-// chainage des aretes frontalieres, chainage du hachage des aretes
-// hachage des aretes = nosoar(1)+nosoar(2)*2
-// avec mxsoar>=3*mxsomm
-// une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-// nosoar(2,arete vide)=l'arete vide qui precede
-// nosoar(3,arete vide)=l'arete vide qui suit
-// moartr : nombre maximal d'entiers par arete du tableau noartr
-// mxartr : nombre maximal de triangles declarables
-// noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-// arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-// sorties:
-// --------
-// nbtria : nombre de triangles internes au domaine
-// quamoy : qualite moyenne des triangles actuels
-// quamin : qualite minimale des triangles actuels
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
MEFISTO2D_EXPORT
void aptrte( Z nutysu, R aretmx,
#define nusotr NUSOTR
#define qutr2d QUTR2D
#define surtd2 SURTD2
+ #define qualitetrte QUALITETRTE
#define areteideale ARETEIDEALE
#define nusotr nusotr_
#define qutr2d qutr2d_
#define surtd2 surtd2_
+ #define qualitetrte qualitetrte_
#define areteideale areteideale_
#endif
+extern "C" { void
+#ifdef WIN32
+ __stdcall
+#endif
+ qualitetrte( R3 *mnpxyd,
+ Z & mosoar, Z & mxsoar, Z *mnsoar,
+ Z & moartr, Z & mxartr, Z *mnartr,
+ Z & nbtria, R & quamoy, R & quamin ); }
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// but : calculer la qualite moyenne et minimale de la triangulation
+// ----- actuelle definie par les tableaux nosoar et noartr
+// entrees:
+// --------
+// mnpxyd : tableau des coordonnees 2d des points
+// par point : x y distance_souhaitee
+// mosoar : nombre maximal d'entiers par arete et
+// indice dans nosoar de l'arete suivante dans le hachage
+// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
+// attention: mxsoar>3*mxsomm obligatoire!
+// nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
+// chainage des aretes frontalieres, chainage du hachage des aretes
+// hachage des aretes = nosoar(1)+nosoar(2)*2
+// avec mxsoar>=3*mxsomm
+// une arete i de nosoar est vide <=> nosoar(1,i)=0 et
+// nosoar(2,arete vide)=l'arete vide qui precede
+// nosoar(3,arete vide)=l'arete vide qui suit
+// moartr : nombre maximal d'entiers par arete du tableau noartr
+// mxartr : nombre maximal de triangles declarables
+// noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
+// arete1 = 0 si triangle vide => arete2 = triangle vide suivant
+// sorties:
+// --------
+// nbtria : nombre de triangles internes au domaine
+// quamoy : qualite moyenne des triangles actuels
+// quamin : qualite minimale des triangles actuels
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
extern "C" { void
#ifdef WIN32
__stdcall
SMESH \
SMESH_I \
SMESHClient \
- OBJECT \
- SMESHFiltersSelection \
- SMESHGUI \
SMESH_SWIG \
MEFISTO2 \
StdMeshers \
- StdMeshers_I \
+ StdMeshers_I
+
+if SMESH_ENABLE_GUI
+ SUBDIRS += \
+ OBJECT \
+ SMESHFiltersSelection \
+ SMESHGUI \
+ SMESH_SWIG_WITHIHM \
StdMeshersGUI
+endif
if(myIsCellsLabeled)
myCellsLabels->VisibilityOn();
}
-
+ UpdateHighlight();
Modified();
}
myHighlitableActor->SetRepresentation(SMESH_DeviceActor::eWireframe);
}else if(myRepresentation == ePoint || GetPointRepresentation()){
myHighlitableActor->SetHighlited(anIsVisible);
- myHighlitableActor->SetVisibility(anIsVisible);
myHighlitableActor->GetExtractUnstructuredGrid()->
SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints);
+ myHighlitableActor->SetVisibility(anIsVisible);
myHighlitableActor->SetRepresentation(SMESH_DeviceActor::ePoint);
}
}
//=================================================================================
void SMESH_VisualObjDef::buildPrs()
{
- try
+ try
{
mySMDS2VTKNodes.clear();
myVTK2SMDSNodes.clear();
else
buildElemPrs();
}
- catch( const std::exception& exc )
- {
- INFOS("Follow exception was cought:\n\t"<<exc.what());
- }
catch(...)
{
- INFOS("Unknown exception was cought !!!");
+ mySMDS2VTKNodes.clear();
+ myVTK2SMDSNodes.clear();
+ mySMDS2VTKElems.clear();
+ myVTK2SMDSElems.clear();
+
+ myGrid->SetPoints( 0 );
+ myGrid->SetCells( 0, 0, 0 );
+ throw;
}
if( MYDEBUG ) MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() );
//=================================================================================
void SMESH_VisualObjDef::buildNodePrs()
{
+ // PAL16631: without swap, bad_alloc is not thrown but hung up and crash instead,
+ // so check remaining memory size for safety
+ SMDS_Mesh::CheckMemory(); // PAL16631
vtkPoints* aPoints = vtkPoints::New();
createPoints( aPoints );
+ SMDS_Mesh::CheckMemory();
myGrid->SetPoints( aPoints );
aPoints->Delete();
for ( int i = 0; i <= 2; i++ )
nbEnts[ aTypes[ i ] ] = GetEntities( aTypes[ i ], anEnts[ aTypes[ i ] ] );
+ // PAL16631: without swap, bad_alloc is not thrown but hung up and crash instead,
+ // so check remaining memory size for safety
+ SMDS_Mesh::CheckMemory(); // PAL16631
+
vtkIdType aCellsSize = 3 * nbEnts[ SMDSAbs_Edge ];
for ( int i = 1; i <= 2; i++ ) // iterate through faces and volumes
vtkCellArray* aConnectivity = vtkCellArray::New();
aConnectivity->Allocate( aCellsSize, 0 );
+ SMDS_Mesh::CheckMemory(); // PAL16631
+
vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
aCellTypesArray->SetNumberOfComponents( 1 );
aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
+ SMDS_Mesh::CheckMemory(); // PAL16631
+
vtkIdList *anIdList = vtkIdList::New();
vtkIdType iElem = 0;
TConnect aConnect;
aConnect.reserve(VTK_CELL_SIZE);
+ SMDS_Mesh::CheckMemory(); // PAL16631
+
for ( int i = 0; i <= 2; i++ ) // iterate through edges, faces and volumes
{
if( nbEnts[ aTypes[ i ] ] > 0 )
iElem++;
}
}
+ SMDS_Mesh::CheckMemory(); // PAL16631
}
// Insert cells in grid
aCellLocationsArray->SetNumberOfComponents( 1 );
aCellLocationsArray->SetNumberOfTuples( aNbCells );
+ SMDS_Mesh::CheckMemory(); // PAL16631
+
aConnectivity->InitTraversal();
for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
aCellTypesArray->Delete();
aConnectivity->Delete();
anIdList->Delete();
+
+ SMDS_Mesh::CheckMemory(); // PAL16631
}
//=================================================================================
// function : Update
// purpose : Update mesh and fill grid with new values if necessary
//=================================================================================
-void SMESH_MeshObj::Update( int theIsClear )
+bool SMESH_MeshObj::Update( int theIsClear )
{
// Update SMDS_Mesh on client part
- if ( myClient.Update(theIsClear) )
+ if ( myClient.Update(theIsClear) || GetUnstructuredGrid()->GetNumberOfPoints()==0) {
buildPrs(); // Fill unstructured grid
+ return true;
+ }
+ return false;
}
//=================================================================================
// function : Update
// purpose : Update mesh object and fill grid with new values
//=================================================================================
-void SMESH_SubMeshObj::Update( int theIsClear )
+bool SMESH_SubMeshObj::Update( int theIsClear )
{
- myMeshObj->Update( theIsClear );
+ bool changed = myMeshObj->Update( theIsClear );
buildPrs();
+ return changed;
}
class SMESHOBJECT_EXPORT SMESH_VisualObj
{
public:
- virtual void Update( int theIsClear = true ) = 0;
+ virtual bool Update( int theIsClear = true ) = 0;
virtual void UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor ) = 0;
virtual int GetElemDimension( const int theObjId ) = 0;
SMESH_VisualObjDef();
virtual ~SMESH_VisualObjDef();
- virtual void Update( int theIsClear = true ) = 0;
+ virtual bool Update( int theIsClear = true ) = 0;
virtual void UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor ) = 0;
virtual int GetElemDimension( const int theObjId ) = 0;
SMESH_MeshObj( SMESH::SMESH_Mesh_ptr );
virtual ~SMESH_MeshObj();
- virtual void Update( int theIsClear = true );
+ virtual bool Update( int theIsClear = true );
virtual int GetNbEntities( const SMDSAbs_ElementType) const;
virtual int GetEntities( const SMDSAbs_ElementType, TEntityList& ) const;
SMESH_SubMeshObj(SMESH_MeshObj* theMeshObj);
virtual ~SMESH_SubMeshObj();
- virtual void Update( int theIsClear = true );
+ virtual bool Update( int theIsClear = true );
virtual void UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor );
virtual int GetElemDimension( const int theObjId );
SMDS_QuadraticFaceOfNodes.hxx \
SMDS_QuadraticVolumeOfNodes.hxx \
SMDS_SetIterator.hxx \
- SMESH_SMDS.hxx
+ SMESH_SMDS.hxx \
+ SMDS_MeshInfo.hxx
# Libraries targets
libSMDS_la_LDFLAGS = \
$(KERNEL_LDFLAGS) -lSALOMELocalTrace \
$(CAS_KERNEL)
+
+# Executables targets
+bin_PROGRAMS = SMDS_MemoryLimit
+dist_SMDS_MemoryLimit_SOURCES = \
+ SMDS_MemoryLimit.cxx
+
+SMDS_MemoryLimit_LDADD = \
+ $(KERNEL_LDFLAGS) -lSALOMELocalTrace
SMDSAbs_Node,
SMDSAbs_Edge,
SMDSAbs_Face,
- SMDSAbs_Volume
+ SMDSAbs_Volume,
+ SMDSAbs_NbElementTypes
+};
+
+enum SMDSAbs_ElementOrder {
+ ORDER_ANY, /*! entities of any order */
+ ORDER_LINEAR, /*! entities of 1st order */
+ ORDER_QUADRATIC /*! entities of 2nd order */
};
#endif
///Abstract class for iterators
///@author Jerome Robert
///////////////////////////////////////////////////////////////////////////////
-template<typename VALUE> class SMDS_EXPORT SMDS_Iterator
+template<typename VALUE> class SMDS_Iterator
{
public:
/// Return true if and only if there are other object in this iterator
- virtual bool more()=0;
+ virtual bool more()=0;
/// Return the current object and step to the next one
- virtual VALUE next()=0;
+ virtual VALUE next()=0;
/// Delete the current element and step to the next one
virtual void remove(){}
--- /dev/null
+// File : SMDS_MemoryLimit.cxx
+// Created : Fri Sep 21 17:16:42 2007
+// Author : Edward AGAPOV (eap)
+
+// Executable to find out a lower RAM limit (MB), i.e. at what size of freeRAM
+// reported by sysinfo, no more memory can be allocated.
+// This is not done inside a function of SALOME because allocated memory is not returned
+// to the system
+
+#ifndef WIN32
+#include <sys/sysinfo.h>
+#endif
+
+#ifdef _DEBUG_
+#include <iostream>
+#endif
+
+int main (int argc, char ** argv) {
+#ifndef WIN32
+ struct sysinfo si;
+ int err = sysinfo( &si );
+ if ( err )
+ return -1;
+ unsigned long freeRamKb = ( si.freeram * si.mem_unit ) / 1024;
+
+ const unsigned long stepKb = 8; // less nb leads to hung up on Mandriva2006 without swap
+ // (other platforms not tested w/o swap)
+
+ unsigned long nbSteps = freeRamKb / stepKb * 2;
+ try {
+ while ( nbSteps-- ) {
+ new char[stepKb*1024];
+ err = sysinfo( &si );
+ if ( !err )
+ freeRamKb = ( si.freeram * si.mem_unit ) / 1024;
+ }
+ } catch (...) {}
+
+// #ifdef _DEBUG_
+// std::cout << freeRamKb / 1024 << std::endl;
+// #endif
+ return freeRamKb / 1024;
+
+#endif
+
+ return -1;
+}
#include <map>
using namespace std;
+#ifndef WIN32
+#include <sys/sysinfo.h>
+#endif
+
+//================================================================================
+/*!
+ * \brief Raise an exception if free memory (ram+swap) too low
+ * \param doNotRaise - if true, suppres exception, just return free memory size
+ * \retval int - amount of available memory in MB or negative number in failure case
+ */
+//================================================================================
+
+int SMDS_Mesh::CheckMemory(const bool doNotRaise) throw (std::bad_alloc)
+{
+#ifndef WIN32
+ struct sysinfo si;
+ int err = sysinfo( &si );
+ if ( err )
+ return -1;
+
+ static int limit = -1;
+ if ( limit < 0 ) {
+ int status = system("SMDS_MemoryLimit"); // it returns lower limit of free RAM
+ if (status >= 0 ) {
+ limit = WEXITSTATUS(status);
+ }
+ if ( limit < 20 )
+ limit = 20;
+ else
+ limit = int( limit * 1.5 );
+#ifdef _DEBUG_
+ cout << "SMDS_Mesh::CheckMemory() memory limit = " << limit << " MB" << endl;
+#endif
+ }
+
+ const unsigned long Mbyte = 1024 * 1024;
+ // compute separately to avoid overflow
+ int freeMb =
+ ( si.freeram * si.mem_unit ) / Mbyte +
+ ( si.freeswap * si.mem_unit ) / Mbyte;
+
+ if ( freeMb > limit )
+ return freeMb - limit;
+
+ if ( doNotRaise )
+ return 0;
+#ifdef _DEBUG_
+ cout<<"SMDS_Mesh::CheckMemory() throws as free memory too low: " << freeMb <<" MB" << endl;
+#endif
+ throw std::bad_alloc();
+#else
+ return -1;
+#endif
+}
+
///////////////////////////////////////////////////////////////////////////////
/// Create a new mesh object
///////////////////////////////////////////////////////////////////////////////
// find the MeshNode corresponding to ID
const SMDS_MeshElement *node = myNodeIDFactory->MeshElement(ID);
if(!node){
+ CheckMemory();
SMDS_MeshNode * node=new SMDS_MeshNode(x, y, z);
myNodes.Add(node);
myNodeIDFactory->BindID(ID,node);
+ myInfo.myNbNodes++;
return node;
}else
return NULL;
{
if ( !n1 || !n2 ) return 0;
+ CheckMemory();
SMDS_MeshEdge * edge=new SMDS_MeshEdge(n1,n2);
if(myElementIDFactory->BindID(ID, edge)) {
SMDS_MeshNode *node1,*node2;
node1->AddInverseElement(edge);
node2->AddInverseElement(edge);
myEdges.Add(edge);
+ myInfo.myNbEdges++;
return edge;
}
else {
return NULL;
if ( !e1 || !e2 || !e3 ) return 0;
+ CheckMemory();
SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3);
myFaces.Add(face);
+ myInfo.myNbTriangles++;
if (!registerElement(ID, face)) {
RemoveElement(face, false);
if (!hasConstructionEdges())
return NULL;
if ( !e1 || !e2 || !e3 || !e4 ) return 0;
+ CheckMemory();
SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3,e4);
myFaces.Add(face);
+ myInfo.myNbQuadrangles++;
if (!registerElement(ID, face))
{
{
SMDS_MeshVolume* volume = 0;
if ( !n1 || !n2 || !n3 || !n4) return volume;
+ CheckMemory();
if(hasConstructionFaces()) {
SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3);
SMDS_MeshFace * f2=FindFaceOrCreate(n1,n2,n4);
SMDS_MeshFace * f4=FindFaceOrCreate(n2,n3,n4);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume);
+ myInfo.myNbTetras++;
}
else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented");
else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4);
myVolumes.Add(volume);
+ myInfo.myNbTetras++;
}
if (!registerElement(ID, volume)) {
{
SMDS_MeshVolume* volume = 0;
if ( !n1 || !n2 || !n3 || !n4 || !n5) return volume;
+ CheckMemory();
if(hasConstructionFaces()) {
SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3,n4);
SMDS_MeshFace * f2=FindFaceOrCreate(n1,n2,n5);
SMDS_MeshFace * f4=FindFaceOrCreate(n3,n4,n5);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume);
+ myInfo.myNbPyramids++;
}
else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented");
else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5);
myVolumes.Add(volume);
+ myInfo.myNbPyramids++;
}
if (!registerElement(ID, volume)) {
{
SMDS_MeshVolume* volume = 0;
if ( !n1 || !n2 || !n3 || !n4 || !n5 || !n6) return volume;
+ CheckMemory();
if(hasConstructionFaces()) {
SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3);
SMDS_MeshFace * f2=FindFaceOrCreate(n4,n5,n6);
SMDS_MeshFace * f5=FindFaceOrCreate(n3,n6,n4,n1);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
myVolumes.Add(volume);
+ myInfo.myNbPrisms++;
}
else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented");
else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6);
myVolumes.Add(volume);
+ myInfo.myNbPrisms++;
}
if (!registerElement(ID, volume)) {
{
SMDS_MeshVolume* volume = 0;
if ( !n1 || !n2 || !n3 || !n4 || !n5 || !n6 || !n7 || !n8) return volume;
+ CheckMemory();
if(hasConstructionFaces()) {
SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3,n4);
SMDS_MeshFace * f2=FindFaceOrCreate(n5,n6,n7,n8);
SMDS_MeshFace * f6=FindFaceOrCreate(n3,n4,n8,n7);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
myVolumes.Add(volume);
+ myInfo.myNbHexas++;
}
else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented");
// volume=new SMDS_HexahedronOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
myVolumes.Add(volume);
+ myInfo.myNbHexas++;
}
if (!registerElement(ID, volume)) {
if (!hasConstructionFaces())
return NULL;
if ( !f1 || !f2 || !f3 || !f4) return 0;
+ CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume);
+ myInfo.myNbTetras++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
if (!hasConstructionFaces())
return NULL;
if ( !f1 || !f2 || !f3 || !f4 || !f5) return 0;
+ CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
myVolumes.Add(volume);
+ myInfo.myNbPyramids++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
if (!hasConstructionFaces())
return NULL;
if ( !f1 || !f2 || !f3 || !f4 || !f5 || !f6) return 0;
+ CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
myVolumes.Add(volume);
+ myInfo.myNbPrisms++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
{
SMDS_MeshFace * face;
+ CheckMemory();
if (hasConstructionEdges())
{
MESSAGE("Error : Not implemented");
if ( !nodes[ i ] ) return 0;
face = new SMDS_PolygonalFaceOfNodes(nodes);
myFaces.Add(face);
+ myInfo.myNbPolygons++;
}
if (!registerElement(ID, face)) {
const int ID)
{
SMDS_MeshVolume* volume;
+ CheckMemory();
if (hasConstructionFaces()) {
MESSAGE("Error : Not implemented");
return NULL;
if ( !nodes[ i ] ) return 0;
volume = new SMDS_PolyhedralVolumeOfNodes(nodes, quantities);
myVolumes.Add(volume);
+ myInfo.myNbPolyhedrons++;
}
if (!registerElement(ID, volume)) {
const SMDS_MeshNode * node3)
{
if ( !node1 || !node2 || !node3) return 0;
- if(hasConstructionEdges())
- {
- SMDS_MeshEdge *edge1, *edge2, *edge3;
- edge1=FindEdgeOrCreate(node1,node2);
- edge2=FindEdgeOrCreate(node2,node3);
- edge3=FindEdgeOrCreate(node3,node1);
-
- SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3);
- myFaces.Add(face);
- return face;
- }
- else
- {
- SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3);
- myFaces.Add(face);
- return face;
- }
+ CheckMemory();
+ if(hasConstructionEdges())
+ {
+ SMDS_MeshEdge *edge1, *edge2, *edge3;
+ edge1=FindEdgeOrCreate(node1,node2);
+ edge2=FindEdgeOrCreate(node2,node3);
+ edge3=FindEdgeOrCreate(node3,node1);
+
+ SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3);
+ myFaces.Add(face);
+ myInfo.myNbTriangles++;
+ return face;
+ }
+ else
+ {
+ SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3);
+ myFaces.Add(face);
+ myInfo.myNbTriangles++;
+ return face;
+ }
}
///////////////////////////////////////////////////////////////////////////////
const SMDS_MeshNode * node4)
{
if ( !node1 || !node2 || !node3 || !node4 ) return 0;
- if(hasConstructionEdges())
- {
- SMDS_MeshEdge *edge1, *edge2, *edge3, *edge4;
- edge1=FindEdgeOrCreate(node1,node2);
- edge2=FindEdgeOrCreate(node2,node3);
- edge3=FindEdgeOrCreate(node3,node4);
- edge4=FindEdgeOrCreate(node4,node1);
-
- SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3,edge4);
- myFaces.Add(face);
- return face;
- }
- else
- {
- SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3,node4);
- myFaces.Add(face);
- return face;
- }
+ CheckMemory();
+ if(hasConstructionEdges())
+ {
+ SMDS_MeshEdge *edge1, *edge2, *edge3, *edge4;
+ edge1=FindEdgeOrCreate(node1,node2);
+ edge2=FindEdgeOrCreate(node2,node3);
+ edge3=FindEdgeOrCreate(node3,node4);
+ edge4=FindEdgeOrCreate(node4,node1);
+
+ SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3,edge4);
+ myFaces.Add(face);
+ myInfo.myNbQuadrangles++;
+ return face;
+ }
+ else
+ {
+ SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3,node4);
+ myFaces.Add(face);
+ myInfo.myNbQuadrangles++;
+ return face;
+ }
}
///////////////////////////////////////////////////////////////////////////////
//purpose :
//=======================================================================
-bool SMDS_Mesh::ChangeElementNodes(const SMDS_MeshElement * elem,
+bool SMDS_Mesh::ChangeElementNodes(const SMDS_MeshElement * element,
const SMDS_MeshNode * nodes[],
const int nbnodes)
{
// keep current nodes of elem
set<const SMDS_MeshElement*> oldNodes;
- SMDS_ElemIteratorPtr itn = elem->nodesIterator();
+ SMDS_ElemIteratorPtr itn = element->nodesIterator();
while(itn->more())
oldNodes.insert( itn->next() );
+ if ( !element->IsPoly() )
+ myInfo.remove( element ); // element may change type
+
// change nodes
bool Ok = false;
+ SMDS_MeshElement* elem = const_cast<SMDS_MeshElement*>(element);
switch ( elem->GetType() )
{
case SMDSAbs_Edge: {
if ( nbnodes == 2 ) {
- const SMDS_MeshEdge* edge = dynamic_cast<const SMDS_MeshEdge*>( elem );
- if ( edge )
- Ok = const_cast<SMDS_MeshEdge*>( edge )->ChangeNodes( nodes[0], nodes[1] );
+ if ( SMDS_MeshEdge* edge = dynamic_cast<SMDS_MeshEdge*>( elem ))
+ Ok = edge->ChangeNodes( nodes[0], nodes[1] );
}
else if ( nbnodes == 3 ) {
- const SMDS_QuadraticEdge* edge = dynamic_cast<const SMDS_QuadraticEdge*>( elem );
- if ( edge )
- Ok = const_cast<SMDS_QuadraticEdge*>( edge )->ChangeNodes( nodes[0], nodes[1], nodes[2] );
+ if ( SMDS_QuadraticEdge* edge = dynamic_cast<SMDS_QuadraticEdge*>( elem ))
+ Ok = edge->ChangeNodes( nodes[0], nodes[1], nodes[2] );
}
break;
}
case SMDSAbs_Face: {
- const SMDS_FaceOfNodes* face = dynamic_cast<const SMDS_FaceOfNodes*>( elem );
- if ( face ) {
- Ok = const_cast<SMDS_FaceOfNodes*>( face )->ChangeNodes( nodes, nbnodes );
- }
- else {
- const SMDS_QuadraticFaceOfNodes* QF =
- dynamic_cast<const SMDS_QuadraticFaceOfNodes*>( elem );
- if ( QF ) {
- Ok = const_cast<SMDS_QuadraticFaceOfNodes*>( QF )->ChangeNodes( nodes, nbnodes );
- }
- else {
- /// ??? begin
- const SMDS_PolygonalFaceOfNodes* face = dynamic_cast<const SMDS_PolygonalFaceOfNodes*>(elem);
- if (face) {
- Ok = const_cast<SMDS_PolygonalFaceOfNodes*>(face)->ChangeNodes(nodes, nbnodes);
- }
- /// ??? end
- }
- }
+ if ( SMDS_FaceOfNodes* face = dynamic_cast<SMDS_FaceOfNodes*>( elem ))
+ Ok = face->ChangeNodes( nodes, nbnodes );
+ else
+ if ( SMDS_QuadraticFaceOfNodes* QF = dynamic_cast<SMDS_QuadraticFaceOfNodes*>( elem ))
+ Ok = QF->ChangeNodes( nodes, nbnodes );
+ else
+ if (SMDS_PolygonalFaceOfNodes* face = dynamic_cast<SMDS_PolygonalFaceOfNodes*>(elem))
+ Ok = face->ChangeNodes(nodes, nbnodes);
break;
}
- //case SMDSAbs_PolygonalFace: {
- // const SMDS_PolygonalFaceOfNodes* face = dynamic_cast<const SMDS_PolygonalFaceOfNodes*>(elem);
- // if (face) {
- // Ok = const_cast<SMDS_PolygonalFaceOfNodes*>(face)->ChangeNodes(nodes, nbnodes);
- // }
- // break;
- //}
case SMDSAbs_Volume: {
- const SMDS_VolumeOfNodes* vol = dynamic_cast<const SMDS_VolumeOfNodes*>( elem );
- if ( vol ) {
- Ok = const_cast<SMDS_VolumeOfNodes*>( vol )->ChangeNodes( nodes, nbnodes );
- }
- else {
- const SMDS_QuadraticVolumeOfNodes* QV = dynamic_cast<const SMDS_QuadraticVolumeOfNodes*>( elem );
- if ( QV ) {
- Ok = const_cast<SMDS_QuadraticVolumeOfNodes*>( QV )->ChangeNodes( nodes, nbnodes );
- }
- }
+ if ( SMDS_VolumeOfNodes* vol = dynamic_cast<SMDS_VolumeOfNodes*>( elem ))
+ Ok = vol->ChangeNodes( nodes, nbnodes );
+ else
+ if ( SMDS_QuadraticVolumeOfNodes* QV = dynamic_cast<SMDS_QuadraticVolumeOfNodes*>( elem ))
+ Ok = QV->ChangeNodes( nodes, nbnodes );
break;
}
default:
if ( Ok ) { // update InverseElements
+ set<const SMDS_MeshElement*>::iterator it;
+
// AddInverseElement to new nodes
- for ( int i = 0; i < nbnodes; i++ )
- if ( oldNodes.find( nodes[i] ) == oldNodes.end() )
+ for ( int i = 0; i < nbnodes; i++ ) {
+ it = oldNodes.find( nodes[i] );
+ if ( it == oldNodes.end() )
// new node
const_cast<SMDS_MeshNode*>( nodes[i] )->AddInverseElement( elem );
else
// remove from oldNodes a node that remains in elem
- oldNodes.erase( nodes[i] );
-
-
+ oldNodes.erase( it );
+ }
// RemoveInverseElement from the nodes removed from elem
- set<const SMDS_MeshElement*>::iterator it;
for ( it = oldNodes.begin(); it != oldNodes.end(); it++ )
{
SMDS_MeshNode * n = static_cast<SMDS_MeshNode *>
}
}
- //MESSAGE ( "::ChangeNodes() Ok = " << Ok);
+ if ( !element->IsPoly() )
+ myInfo.add( element ); // element may change type
return Ok;
}
//function : ChangePolyhedronNodes
//purpose : to change nodes of polyhedral volume
//=======================================================================
-bool SMDS_Mesh::ChangePolyhedronNodes (const SMDS_MeshElement * elem,
- std::vector<const SMDS_MeshNode*> nodes,
- std::vector<int> quantities)
+bool SMDS_Mesh::ChangePolyhedronNodes (const SMDS_MeshElement * elem,
+ const vector<const SMDS_MeshNode*>& nodes,
+ const vector<int> & quantities)
{
if (elem->GetType() != SMDSAbs_Volume) {
MESSAGE("WRONG ELEM TYPE");
// AddInverseElement to new nodes
int nbnodes = nodes.size();
+ set<const SMDS_MeshElement*>::iterator it;
for (int i = 0; i < nbnodes; i++) {
- if (oldNodes.find(nodes[i]) == oldNodes.end()) {
+ it = oldNodes.find(nodes[i]);
+ if (it == oldNodes.end()) {
// new node
const_cast<SMDS_MeshNode*>(nodes[i])->AddInverseElement(elem);
} else {
// remove from oldNodes a node that remains in elem
- oldNodes.erase(nodes[i]);
+ oldNodes.erase(it);
}
}
// RemoveInverseElement from the nodes removed from elem
- set<const SMDS_MeshElement*>::iterator it;
for (it = oldNodes.begin(); it != oldNodes.end(); it++) {
SMDS_MeshNode * n = static_cast<SMDS_MeshNode *>
(const_cast<SMDS_MeshElement *>( *it ));
SMDS_MeshEdge * toReturn=NULL;
toReturn=const_cast<SMDS_MeshEdge*>(FindEdge(node1,node2));
if(toReturn==NULL) {
+ CheckMemory();
toReturn=new SMDS_MeshEdge(node1,node2);
myEdges.Add(toReturn);
- }
+ myInfo.myNbEdges++;
+ }
return toReturn;
}
case SMDSAbs_Edge:
myEdges.Remove(static_cast<SMDS_MeshEdge*>
(const_cast<SMDS_MeshElement*>(*it)));
+ myInfo.RemoveEdge(*it);
break;
case SMDSAbs_Face:
myFaces.Remove(static_cast<SMDS_MeshFace*>
(const_cast<SMDS_MeshElement*>(*it)));
+ myInfo.RemoveFace(*it);
break;
case SMDSAbs_Volume:
myVolumes.Remove(static_cast<SMDS_MeshVolume*>
(const_cast<SMDS_MeshElement*>(*it)));
+ myInfo.RemoveVolume(*it);
break;
}
//MESSAGE( "SMDS: RM elem " << (*it)->GetID() );
//MESSAGE( "SMDS: RM node " << (*it)->GetID() );
myNodes.Remove(static_cast<SMDS_MeshNode*>
(const_cast<SMDS_MeshElement*>(*it)));
+ myInfo.myNbNodes--;
myNodeIDFactory->ReleaseID((*it)->GetID());
removedNodes.push_back( (*it) );
delete *it;
SMDS_ElemIteratorPtr itFe = n->GetInverseElementIterator();
if (!itFe->more()) { // free node
myNodes.Remove(const_cast<SMDS_MeshNode*>(n));
+ myInfo.myNbNodes--;
myNodeIDFactory->ReleaseID(elem->GetID());
delete elem;
}
case SMDSAbs_Edge:
myEdges.Remove(static_cast<SMDS_MeshEdge*>
(const_cast<SMDS_MeshElement*>(elem)));
+ myInfo.RemoveEdge(elem);
break;
case SMDSAbs_Face:
myFaces.Remove(static_cast<SMDS_MeshFace*>
(const_cast<SMDS_MeshElement*>(elem)));
+ myInfo.RemoveFace(elem);
break;
case SMDSAbs_Volume:
myVolumes.Remove(static_cast<SMDS_MeshVolume*>
(const_cast<SMDS_MeshElement*>(elem)));
+ myInfo.RemoveVolume(elem);
break;
default:
break;
node2->AddInverseElement(edge);
node12->AddInverseElement(edge);
myEdges.Add(edge);
+ myInfo.myNbQuadEdges++;
return edge;
}
else {
SMDS_QuadraticFaceOfNodes* face =
new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n12,n23,n31);
myFaces.Add(face);
+ myInfo.myNbQuadTriangles++;
if (!registerElement(ID, face)) {
RemoveElement(face, false);
SMDS_QuadraticFaceOfNodes* face =
new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n4,n12,n23,n34,n41);
myFaces.Add(face);
+ myInfo.myNbQuadQuadrangles++;
if (!registerElement(ID, face)) {
RemoveElement(face, false);
SMDS_QuadraticVolumeOfNodes * volume =
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n12,n23,n31,n14,n24,n34);
myVolumes.Add(volume);
+ myInfo.myNbQuadTetras++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n12,n23,
n34,n41,n15,n25,n35,n45);
myVolumes.Add(volume);
+ myInfo.myNbQuadPyramids++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n12,n23,n31,
n45,n56,n64,n14,n25,n36);
myVolumes.Add(volume);
+ myInfo.myNbQuadPrisms++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8,n12,n23,n34,n41,
n56,n67,n78,n85,n15,n26,n37,n48);
myVolumes.Add(volume);
+ myInfo.myNbQuadHexas++;
if (!registerElement(ID, volume)) {
RemoveElement(volume, false);
}
return volume;
}
-
#include "SMDS_MeshFace.hxx"
#include "SMDS_MeshVolume.hxx"
#include "SMDS_MeshElementIDFactory.hxx"
+#include "SMDS_MeshInfo.hxx"
#include "SMDS_ElemIterator.hxx"
#include <NCollection_Map.hxx>
virtual bool RemoveFromParent();
virtual bool RemoveSubMesh(const SMDS_Mesh * aMesh);
- static bool ChangeElementNodes(const SMDS_MeshElement * elem,
- const SMDS_MeshNode * nodes[],
- const int nbnodes);
- static bool ChangePolyhedronNodes(const SMDS_MeshElement * elem,
- std::vector<const SMDS_MeshNode*> nodes,
- std::vector<int> quantities);
+ bool ChangeElementNodes(const SMDS_MeshElement * elem,
+ const SMDS_MeshNode * nodes[],
+ const int nbnodes);
+ bool ChangePolyhedronNodes(const SMDS_MeshElement * elem,
+ const std::vector<const SMDS_MeshNode*>& nodes,
+ const std::vector<int> & quantities);
virtual void Renumber (const bool isNodes, const int startID = 1, const int deltaID = 1);
// Renumber all nodes or elements.
const SMDS_MeshFace *FindFace(std::vector<int> nodes_ids) const;
static const SMDS_MeshFace* FindFace(std::vector<const SMDS_MeshNode *> nodes);
+ /*!
+ * \brief Raise an exception if free memory (ram+swap) too low
+ * \param doNotRaise - if true, suppres exception, just return free memory size
+ * \retval int - amount of available memory in MB or negative number in failure case
+ */
+ static int CheckMemory(const bool doNotRaise=false) throw (std::bad_alloc);
+
int MaxNodeID() const;
int MinNodeID() const;
int MaxElementID() const;
int MinElementID() const;
+ const SMDS_MeshInfo& GetMeshInfo() const { return myInfo; }
int NbNodes() const;
int NbEdges() const;
// Fields PRIVATE
- SetOfNodes myNodes;
- SetOfEdges myEdges;
- SetOfFaces myFaces;
- SetOfVolumes myVolumes;
- SMDS_Mesh *myParent;
+ SetOfNodes myNodes;
+ SetOfEdges myEdges;
+ SetOfFaces myFaces;
+ SetOfVolumes myVolumes;
+ SMDS_Mesh * myParent;
std::list<SMDS_Mesh *> myChildren;
SMDS_MeshElementIDFactory *myNodeIDFactory;
SMDS_MeshElementIDFactory *myElementIDFactory;
-
+ SMDS_MeshInfo myInfo;
+
bool myHasConstructionEdges;
bool myHasConstructionFaces;
bool myHasInverseElements;
{
// the type of the group is determined by the first element added
if (myElements.empty()) myType = theElem->GetType();
- else if (theElem->GetType() != myType)
+ else if (theElem->GetType() != myType) {
MESSAGE("SMDS_MeshGroup::Add : Type Mismatch "<<theElem->GetType()<<"!="<<myType);
+ return;
+ }
myElements.insert(theElem);
}
--- /dev/null
+// File : SMDS_MeshInfo.hxx
+// Created : Mon Sep 24 18:32:41 2007
+// Author : Edward AGAPOV (eap)
+
+
+#ifndef SMDS_MeshInfo_HeaderFile
+#define SMDS_MeshInfo_HeaderFile
+
+#include "SMESH_SMDS.hxx"
+
+#include "SMDS_MeshElement.hxx"
+
+class SMDS_EXPORT SMDS_MeshInfo
+{
+public:
+
+ inline SMDS_MeshInfo();
+
+ int NbNodes() const { return myNbNodes; }
+
+ inline int NbEdges (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbFaces (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbTriangles (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ int NbPolygons() const { return myNbPolygons; }
+
+ inline int NbVolumes (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbTetras (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbHexas (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbPyramids(SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ inline int NbPrisms (SMDSAbs_ElementOrder order = ORDER_ANY) const;
+ int NbPolyhedrons() const { return myNbPolyhedrons; }
+
+private:
+ friend class SMDS_Mesh;
+
+ // methods to count NOT POLY elements
+ inline void remove(const SMDS_MeshElement* el);
+ inline void add (const SMDS_MeshElement* el);
+ inline int index(SMDSAbs_ElementType type, int nbNodes);
+ // methods to remove elements of ANY kind
+ inline void RemoveEdge(const SMDS_MeshElement* el);
+ inline void RemoveFace(const SMDS_MeshElement* el);
+ inline void RemoveVolume(const SMDS_MeshElement* el);
+
+ int myNbNodes;
+
+ int myNbEdges , myNbQuadEdges ;
+ int myNbTriangles , myNbQuadTriangles ;
+ int myNbQuadrangles, myNbQuadQuadrangles;
+ int myNbPolygons;
+
+ int myNbTetras , myNbQuadTetras ;
+ int myNbHexas , myNbQuadHexas ;
+ int myNbPyramids, myNbQuadPyramids;
+ int myNbPrisms , myNbQuadPrisms ;
+ int myNbPolyhedrons;
+
+ vector<int*> myNb; // pointers to myNb... fields
+ vector<int> myShift; // shift to get an index in myNb by elem->NbNodes()
+};
+
+inline SMDS_MeshInfo::SMDS_MeshInfo():
+ myNbNodes(0),
+ myNbEdges (0), myNbQuadEdges (0),
+ myNbTriangles (0), myNbQuadTriangles (0),
+ myNbQuadrangles(0), myNbQuadQuadrangles(0),
+ myNbPolygons(0),
+ myNbTetras (0), myNbQuadTetras (0),
+ myNbHexas (0), myNbQuadHexas (0),
+ myNbPyramids(0), myNbQuadPyramids(0),
+ myNbPrisms (0), myNbQuadPrisms (0),
+ myNbPolyhedrons(0)
+{
+ // Number of nodes in standard element types
+ // n v f e
+ // o o a d
+ // d l c g
+ // e e e
+ // -----------
+ // 1
+ // 2 *
+ // 3 *
+ // 4 * * *
+ // 5 *
+ // 6 * *
+ // 7
+ // 8 * *
+ // 9
+ // 10 *
+ // 11
+ // 12
+ // 13 *
+ // 14
+ // 15 *
+ // 16
+ // 17
+ // 18
+ // 19
+ // 20 *
+ //
+ // So to have a unique index for each type basing on nb of nodes, we use a shift:
+ myShift.resize(SMDSAbs_Volume + 1, 0);
+ myShift[ SMDSAbs_Face ] = +8; // 3->11, 4->12, 6->14, 8->16
+ myShift[ SMDSAbs_Edge ] = -2; // 2->0, 4->2
+
+ myNb.resize( index( SMDSAbs_Volume,20 ) + 1, NULL);
+ myNb[ index( SMDSAbs_Node,1 )] = & myNbNodes;
+
+ myNb[ index( SMDSAbs_Edge,2 )] = & myNbEdges;
+ myNb[ index( SMDSAbs_Edge,4 )] = & myNbQuadEdges;
+
+ myNb[ index( SMDSAbs_Face,3 )] = & myNbTriangles;
+ myNb[ index( SMDSAbs_Face,4 )] = & myNbQuadrangles;
+ myNb[ index( SMDSAbs_Face,6 )] = & myNbQuadTriangles;
+ myNb[ index( SMDSAbs_Face,8 )] = & myNbQuadQuadrangles;
+
+ myNb[ index( SMDSAbs_Volume, 4)] = & myNbTetras;
+ myNb[ index( SMDSAbs_Volume, 5)] = & myNbPyramids;
+ myNb[ index( SMDSAbs_Volume, 6)] = & myNbPrisms;
+ myNb[ index( SMDSAbs_Volume, 8)] = & myNbHexas;
+ myNb[ index( SMDSAbs_Volume, 10)] = & myNbQuadTetras;
+ myNb[ index( SMDSAbs_Volume, 13)] = & myNbQuadPyramids;
+ myNb[ index( SMDSAbs_Volume, 15)] = & myNbQuadPrisms;
+ myNb[ index( SMDSAbs_Volume, 20)] = & myNbQuadHexas;
+}
+
+inline int // index
+SMDS_MeshInfo::index(SMDSAbs_ElementType type, int nbNodes)
+{ return nbNodes + myShift[ type ]; }
+
+inline void // remove
+SMDS_MeshInfo::remove(const SMDS_MeshElement* el)
+{ --(*myNb[ index(el->GetType(), el->NbNodes()) ]); }
+
+inline void // add
+SMDS_MeshInfo::add(const SMDS_MeshElement* el)
+{ ++(*myNb[ index(el->GetType(), el->NbNodes()) ]); }
+
+inline void // RemoveEdge
+SMDS_MeshInfo::RemoveEdge(const SMDS_MeshElement* el)
+{ if ( el->IsQuadratic() ) --myNbQuadEdges; else --myNbEdges; }
+
+inline void // RemoveFace
+SMDS_MeshInfo::RemoveFace(const SMDS_MeshElement* el)
+{ if ( el->IsPoly() ) --myNbPolygons; else remove( el ); }
+
+inline void // RemoveVolume
+SMDS_MeshInfo::RemoveVolume(const SMDS_MeshElement* el)
+{ if ( el->IsPoly() ) --myNbPolyhedrons; else remove( el ); }
+
+inline int // NbEdges
+SMDS_MeshInfo::NbEdges (SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbEdges+myNbQuadEdges : order == ORDER_LINEAR ? myNbEdges : myNbQuadEdges; }
+
+inline int // NbFaces
+SMDS_MeshInfo::NbFaces (SMDSAbs_ElementOrder order) const
+{ return NbTriangles(order)+NbQuadrangles(order)+(order == ORDER_QUADRATIC ? 0 : myNbPolygons); }
+
+inline int // NbTriangles
+SMDS_MeshInfo::NbTriangles (SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbTriangles+myNbQuadTriangles : order == ORDER_LINEAR ? myNbTriangles : myNbQuadTriangles; }
+
+inline int // NbQuadrangles
+SMDS_MeshInfo::NbQuadrangles(SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbQuadrangles+myNbQuadQuadrangles : order == ORDER_LINEAR ? myNbQuadrangles : myNbQuadQuadrangles; }
+
+inline int // NbVolumes
+SMDS_MeshInfo::NbVolumes (SMDSAbs_ElementOrder order) const
+{ return NbTetras(order) + NbHexas(order) + NbPyramids(order) + NbPrisms(order) + (order == ORDER_QUADRATIC ? 0 : myNbPolyhedrons); }
+
+inline int // NbTetras
+SMDS_MeshInfo::NbTetras (SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbTetras+myNbQuadTetras : order == ORDER_LINEAR ? myNbTetras : myNbQuadTetras; }
+
+inline int // NbHexas
+SMDS_MeshInfo::NbHexas (SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbHexas+myNbQuadHexas : order == ORDER_LINEAR ? myNbHexas : myNbQuadHexas; }
+
+inline int // NbPyramids
+SMDS_MeshInfo::NbPyramids(SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbPyramids+myNbQuadPyramids : order == ORDER_LINEAR ? myNbPyramids : myNbQuadPyramids; }
+
+inline int // NbPrisms
+SMDS_MeshInfo::NbPrisms (SMDSAbs_ElementOrder order) const
+{ return order == ORDER_ANY ? myNbPrisms+myNbQuadPrisms : order == ORDER_LINEAR ? myNbPrisms : myNbQuadPrisms; }
+
+#endif
if ( IsFaceExternal( faceIndex ))
intNormal = XYZ( -intNormal.x, -intNormal.y, -intNormal.z );
XYZ p0 ( nodes[0] ), baryCenter;
- for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end();vNbIt++ ) {
+ for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); vNbIt++ ) {
int nbShared = (*vNbIt).second;
if ( nbShared >= 3 ) {
SMDS_VolumeTool volume( (*vNbIt).first );
return 0;
}
+//=======================================================================
+//function : Get
+//purpose : return element
+//=======================================================================
+
+const SMDS_MeshVolume* SMDS_VolumeTool::Get() const
+{
+ return static_cast<const SMDS_MeshVolume*>( myVolume );
+}
+
+//=======================================================================
+//function : ID
+//purpose : return element ID
+//=======================================================================
+
+int SMDS_VolumeTool::ID() const
+{
+ return myVolume ? myVolume->GetID() : 0;
+}
class SMDS_MeshElement;
class SMDS_MeshNode;
class SMDS_PolyhedralVolumeOfNodes;
+class SMDS_MeshVolume;
#include <vector>
#include <set>
// Set volume.
// Return false if theVolume is not of type SMDSAbs_Volume
+ const SMDS_MeshVolume* Get() const;
+ // return element
+
+ int ID() const;
+ // return element ID
+
// -----------------------
// general info
// -----------------------
#define SMDS_EXPORT
#endif
-#endif
\ No newline at end of file
+#endif
#ifndef _SMESH_0D_ALGO_HXX_
#define _SMESH_0D_ALGO_HXX_
+#include "SMESH_SMESH.hxx"
+
#include "SMESH_Algo.hxx"
-class SMESH_0D_Algo: public SMESH_Algo
+class SMESH_EXPORT SMESH_0D_Algo: public SMESH_Algo
{
public:
SMESH_0D_Algo(int hypId, int studyId, SMESH_Gen* gen);
// Module : SMESH
// $Header$
+using namespace std;
#include "SMESH_2D_Algo.hxx"
#include "SMESH_Gen.hxx"
-#include <TopExp.hxx>
#include "utilities.h"
-using namespace std;
+#include <TopExp_Explorer.hxx>
+#include <TopExp.hxx>
+#include <TopoDS.hxx>
//=============================================================================
/*!
*/
//=============================================================================
-SMESH_Algo::SMESH_Algo(int hypId, int studyId,
- SMESH_Gen * gen):SMESH_Hypothesis(hypId, studyId, gen)
+SMESH_Algo::SMESH_Algo (int hypId, int studyId, SMESH_Gen * gen)
+ : SMESH_Hypothesis(hypId, studyId, gen)
{
gen->_mapAlgo[hypId] = this;
const vector < string > &SMESH_Algo::GetCompatibleHypothesis()
{
- return _compatibleHypothesis;
+ return _compatibleHypothesis;
}
//=============================================================================
{
aMesh.GetHypotheses( aShape, filter, _usedHypList, true );
if ( ignoreAuxiliary && _usedHypList.size() > 1 )
- _usedHypList.clear(); //only one compatible hypothesis allowed
+ _usedHypList.clear(); //only one compatible hypothesis allowed
}
return _usedHypList;
}
* \param E2 - the 2nd edge
* \retval GeomAbs_Shape - regularity at the junction between E1 and E2
*/
- static GeomAbs_Shape Continuity(const TopoDS_Edge & E1,
- const TopoDS_Edge & E2);
+ static GeomAbs_Shape Continuity(const TopoDS_Edge & E1, const TopoDS_Edge & E2);
+
+ /*!
+ * \brief Return true if an edge can be considered as a continuation of another
+ */
+ static bool IsContinuous(const TopoDS_Edge & E1, const TopoDS_Edge & E2) {
+ return ( Continuity( E1, E2 ) >= GeomAbs_G1 );
+ }
/*!
* \brief Return the node built on a vertex
*/
bool error(int error, const SMESH_Comment& comment = "");
/*!
- * \brief To be used as error in previous method
+ * \brief store COMPERR_ALGO_FAILED error and comment and then return false
*/
- SMESH_ComputeErrorName dfltErr() const { return COMPERR_ALGO_FAILED; }
+ bool error(const SMESH_Comment& comment = "")
+ { return error(COMPERR_ALGO_FAILED, comment); }
/*!
* \brief store error and return error->IsOK()
*/
#include <BRepTools_WireExplorer.hxx>
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
+#include <Bnd_Box.hxx>
#include <Extrema_ExtPC.hxx>
#include <Extrema_POnCurv.hxx>
#include <Geom2d_Curve.hxx>
#include <gp_Trsf.hxx>
#include <gp_Vec.hxx>
#include <math_FunctionSetRoot.hxx>
+#include <math_Matrix.hxx>
+#include <math_Vector.hxx>
#include "SMDS_MeshNode.hxx"
#include "SMDS_MeshVolume.hxx"
using namespace std;
-#define SQRT_FUNC 0
+//#define DEBUG_PARAM_COMPUTE
//================================================================================
/*!
const vector<gp_XYZ>& p = thePointOnShape;
thePoint =
- x1 * p[ID_F0yz] + x * p[ID_F1yz]
- + y1 * p[ID_Fx0z] + y * p[ID_Fx1z]
- + z1 * p[ID_Fxy0] + z * p[ID_Fxy1]
- + x1 * (y1 * (z1 * p[ID_V000] + z * p[ID_V001])
- + y * (z1 * p[ID_V010] + z * p[ID_V011]))
- + x * (y1 * (z1 * p[ID_V100] + z * p[ID_V101])
- + y * (z1 * p[ID_V110] + z * p[ID_V111]));
+ x1 * p[ID_F0yz] + x * p[ID_F1yz] +
+ y1 * p[ID_Fx0z] + y * p[ID_Fx1z] +
+ z1 * p[ID_Fxy0] + z * p[ID_Fxy1] +
+ x1 * (y1 * (z1 * p[ID_V000] + z * p[ID_V001]) +
+ y * (z1 * p[ID_V010] + z * p[ID_V011])) +
+ x * (y1 * (z1 * p[ID_V100] + z * p[ID_V101]) +
+ y * (z1 * p[ID_V110] + z * p[ID_V111]));
thePoint -=
- x1 * (y1 * p[ID_E00z] + y * p[ID_E01z])
- + x * (y1 * p[ID_E10z] + y * p[ID_E11z])
- + y1 * (z1 * p[ID_Ex00] + z * p[ID_Ex01])
- + y * (z1 * p[ID_Ex10] + z * p[ID_Ex11])
- + z1 * (x1 * p[ID_E0y0] + x * p[ID_E1y0])
- + z * (x1 * p[ID_E0y1] + x * p[ID_E1y1]);
+ x1 * (y1 * p[ID_E00z] + y * p[ID_E01z]) +
+ x * (y1 * p[ID_E10z] + y * p[ID_E11z]) +
+ y1 * (z1 * p[ID_Ex00] + z * p[ID_Ex01]) +
+ y * (z1 * p[ID_Ex10] + z * p[ID_Ex11]) +
+ z1 * (x1 * p[ID_E0y0] + x * p[ID_E1y0]) +
+ z * (x1 * p[ID_E0y1] + x * p[ID_E1y1]);
return true;
}
+//=======================================================================
+//function : Constructor
+//purpose :
+//=======================================================================
+
+SMESH_Block::SMESH_Block():
+ myNbIterations(0),
+ mySumDist(0.),
+ myTolerance(-1.) // to be re-initialized
+{
+}
+
+
//=======================================================================
//function : NbVariables
//purpose :
{
gp_XYZ P, params( theXYZ(1), theXYZ(2), theXYZ(3) );
if ( params.IsEqual( myParam, DBL_MIN )) { // same param
- theFxyz( 1 ) = myValues[ 0 ];
+ theFxyz( 1 ) = funcValue( myValues[ SQUARE_DIST ]);
}
else {
ShellPoint( params, P );
gp_Vec dP( P - myPoint );
- theFxyz(1) = SQRT_FUNC ? dP.SquareMagnitude() : dP.Magnitude();
+ theFxyz(1) = funcValue( dP.SquareMagnitude() );
}
return true;
}
Standard_Boolean SMESH_Block::Derivatives(const math_Vector& XYZ,math_Matrix& Df)
{
- MESSAGE( "SMESH_Block::Derivatives()");
math_Vector F(1,3);
return Values(XYZ,F,Df);
}
//=======================================================================
-//function : Values
+//function : GetStateNumber
//purpose :
//=======================================================================
-//#define DEBUG_PARAM_COMPUTE
+Standard_Integer SMESH_Block::GetStateNumber ()
+{
+ return 0; //myValues[0] < 1e-1;
+}
+
+//=======================================================================
+//function : Values
+//purpose :
+//=======================================================================
Standard_Boolean SMESH_Block::Values(const math_Vector& theXYZ,
math_Vector& theFxyz,
math_Matrix& theDf)
{
-// MESSAGE( endl<<"SMESH_Block::Values( "<<theXYZ(1)<<", "<<theXYZ(2)<<", "<<theXYZ(3)<<")");
-
gp_XYZ P, params( theXYZ(1), theXYZ(2), theXYZ(3) );
if ( params.IsEqual( myParam, DBL_MIN )) { // same param
- theFxyz( 1 ) = myValues[ 0 ];
- theDf( 1,1 ) = myValues[ 1 ];
- theDf( 1,2 ) = myValues[ 2 ];
- theDf( 1,3 ) = myValues[ 3 ];
+ theFxyz( 1 ) = funcValue( myValues[ SQUARE_DIST ] );
+ theDf( 1, DRV_1 ) = myValues[ DRV_1 ];
+ theDf( 1, DRV_2 ) = myValues[ DRV_2 ];
+ theDf( 1, DRV_3 ) = myValues[ DRV_3 ];
return true;
}
#ifdef DEBUG_PARAM_COMPUTE
cout << "PARAM GUESS: " << params.X() << " "<< params.Y() << " "<< params.X() << endl;
+ myNbIterations++; // how many times call ShellPoint()
#endif
ShellPoint( params, P );
- //myNbIterations++; // how many time call ShellPoint()
gp_Vec dP( myPoint, P );
- theFxyz(1) = SQRT_FUNC ? dP.SquareMagnitude() : dP.Magnitude();
- if ( theFxyz(1) < 1e-6 ) {
- myParam = params;
- myValues[ 0 ]= 0;
- theDf( 1,1 ) = 0;
- theDf( 1,2 ) = 0;
- theDf( 1,3 ) = 0;
+ double sqDist = dP.SquareMagnitude();
+ theFxyz(1) = funcValue( sqDist );
+
+ if ( sqDist < myTolerance * myTolerance ) { // a solution found
+ myParam = params;
+ myValues[ SQUARE_DIST ] = sqDist;
+ theFxyz(1) = theDf( 1,1 ) = theDf( 1,2 ) = theDf( 1,3 ) = 0;
return true;
}
- if ( theFxyz(1) < myValues[0] ) // a better guess
+ if ( sqDist < myValues[ SQUARE_DIST ] ) // a better guess
{
// 3 partial derivatives
gp_Vec drv[ 3 ]; // where we move with a small step in each direction
for ( int iP = 1; iP <= 3; iP++ ) {
- if ( iP - 1 == myFaceIndex ) {
+ if ( iP == myFaceIndex ) {
drv[ iP - 1 ] = gp_Vec(0,0,0);
continue;
}
drv[ iP - 1 ] = dPi;
}
for ( int iP = 0; iP < 3; iP++ ) {
+#if 1
theDf( 1, iP + 1 ) = dP * drv[iP];
- // Distance from P to plane passing through myPoint and defined
- // by the 2 other derivative directions:
- // like IntAna_IntConicQuad::Perform (const gp_Lin& L, const gp_Pln& P)
- // where L is (P -> myPoint), P is defined by the 2 other derivative direction
-// int iPrev = ( iP ? iP - 1 : 2 );
-// int iNext = ( iP == 2 ? 0 : iP + 1 );
-// gp_Vec plnNorm = drv[ iPrev ].Crossed( drv [ iNext ] );
-// double Direc = plnNorm * drv[ iP ];
-// if ( Abs(Direc) <= DBL_MIN )
-// theDf( 1, iP + 1 ) = dP * drv[ iP ];
-// else {
-// double Dis = plnNorm * P - plnNorm * myPoint;
-// theDf( 1, iP + 1 ) = Dis/Direc;
-// }
+#else
+ // Distance from P to plane passing through myPoint and defined
+ // by the 2 other derivative directions:
+ // like IntAna_IntConicQuad::Perform (const gp_Lin& L, const gp_Pln& P)
+ // where L is (P -> myPoint), P is defined by the 2 other derivative direction
+ int iPrev = ( iP ? iP - 1 : 2 );
+ int iNext = ( iP == 2 ? 0 : iP + 1 );
+ gp_Vec plnNorm = drv[ iPrev ].Crossed( drv [ iNext ] );
+ double Direc = plnNorm * drv[ iP ];
+ if ( Abs(Direc) <= DBL_MIN )
+ theDf( 1, iP + 1 ) = dP * drv[ iP ];
+ else {
+ double Dis = plnNorm * P - plnNorm * myPoint;
+ theDf( 1, iP + 1 ) = Dis/Direc;
+ }
+#endif
}
#ifdef DEBUG_PARAM_COMPUTE
cout << "F = " << theFxyz(1) <<
" DRV: " << theDf(1,1) << " " << theDf(1,2) << " " << theDf(1,3) << endl;
+ myNbIterations +=3; // how many times call ShellPoint()
#endif
- //myNbIterations +=3; // how many time call ShellPoint()
// store better values
- myParam = params;
- myValues[0]= theFxyz(1);
- myValues[1]= theDf(1,1);
- myValues[2]= theDf(1,2);
- myValues[3]= theDf(1,3);
-
-// SCRUTE( theFxyz(1) );
-// SCRUTE( theDf( 1,1 ));
-// SCRUTE( theDf( 1,2 ));
-// SCRUTE( theDf( 1,3 ));
+ myParam = params;
+ myValues[SQUARE_DIST]= sqDist;
+ myValues[DRV_1] = theDf(1,DRV_1);
+ myValues[DRV_2] = theDf(1,DRV_2);
+ myValues[DRV_3] = theDf(1,DRV_3);
}
return true;
}
+//============================================================================
+//function : computeParameters
+//purpose : compute point parameters in the block using math_FunctionSetRoot
+//============================================================================
+
+bool SMESH_Block::computeParameters(const gp_Pnt& thePoint,
+ gp_XYZ& theParams,
+ const gp_XYZ& theParamsHint)
+{
+ myPoint = thePoint.XYZ();
+
+ myParam.SetCoord( -1,-1,-1 );
+ myValues[ SQUARE_DIST ] = 1e100;
+
+ math_Vector low ( 1, 3, 0.0 );
+ math_Vector up ( 1, 3, 1.0 );
+ math_Vector tol ( 1, 3, 1e-4 );
+ math_Vector start( 1, 3, 0.0 );
+ start( 1 ) = theParamsHint.X();
+ start( 2 ) = theParamsHint.Y();
+ start( 3 ) = theParamsHint.Z();
+
+ math_FunctionSetRoot paramSearch( *this, tol );
+
+ mySquareFunc = 0; // large approaching steps
+ //if ( hasHint ) mySquareFunc = 1; // small approaching steps
+
+ double loopTol = 10 * myTolerance;
+ int nbLoops = 0;
+ while ( distance() > loopTol && nbLoops <= 3 )
+ {
+ paramSearch.Perform ( *static_cast<math_FunctionSetWithDerivatives*>(this),
+ start, low, up );
+ start( 1 ) = myParam.X();
+ start( 2 ) = myParam.Y();
+ start( 3 ) = myParam.Z();
+ mySquareFunc = !mySquareFunc;
+ nbLoops++;
+ }
+#ifdef DEBUG_PARAM_COMPUTE
+ mySumDist += distance();
+ cout << " ------ SOLUTION: ( "<< myParam.X() <<" "<< myParam.Y() <<" "<< myParam.Z() <<" )"<<endl
+ << " ------ DIST : " << distance() << "\t Tol=" << myTolerance << "\t Nb LOOPS=" << nbLoops << endl
+ << " ------ NB IT: " << myNbIterations << ", SUM DIST: " << mySumDist << endl;
+#endif
+
+ theParams = myParam;
+
+ if ( myFaceIndex > 0 )
+ theParams.SetCoord( myFaceIndex, myFaceParam );
+
+ return true;
+}
+
//=======================================================================
//function : ComputeParameters
//purpose : compute point parameters in the block
bool SMESH_Block::ComputeParameters(const gp_Pnt& thePoint,
gp_XYZ& theParams,
- const int theShapeID)
+ const int theShapeID,
+ const gp_XYZ& theParamsHint)
{
if ( VertexParameters( theShapeID, theParams ))
return true;
return false;
}
-// MESSAGE( endl<<"SMESH_Block::ComputeParameters( "
-// <<thePoint.X()<<", "<<thePoint.Y()<<", "<<thePoint.Z()<<")");
- myPoint = thePoint.XYZ();
-
- myParam.SetCoord( -1,-1,-1 );
- myValues[0] = 1e100;
-
const bool isOnFace = IsFaceID( theShapeID );
double * coef = GetShapeCoef( theShapeID );
- // the first guess
- math_Vector start( 1, 3, 0.0 );
- if ( !myGridComputed )
+ // Find the first guess paremeters
+
+ gp_XYZ start(0, 0, 0);
+
+ bool hasHint = ( 0 <= theParamsHint.X() && theParamsHint.X() <= 1 &&
+ 0 <= theParamsHint.Y() && theParamsHint.Y() <= 1 &&
+ 0 <= theParamsHint.Y() && theParamsHint.Y() <= 1 );
+ if ( !hasHint && !myGridComputed )
{
// define the first guess by thePoint projection on lines
// connecting vertices
iEdge += 4;
continue;
}
+ double sumParam = 0;
for ( int iE = 0; iE < 4; iE++, iEdge++ ) { // loop on 4 parallel edges
gp_Pnt p0 = myEdge[ iEdge ].Point( par000 );
gp_Pnt p1 = myEdge[ iEdge ].Point( par111 );
break;
}
}
- start( iParam ) += par;
+ sumParam += par;
}
- start( iParam ) /= 4.;
+ start.SetCoord( iParam, sumParam / 4.);
}
if ( needGrid ) {
// compute nodes of 3 x 3 x 3 grid
int iNode = 0;
+ Bnd_Box box;
for ( double x = 0.25; x < 0.9; x += 0.25 )
for ( double y = 0.25; y < 0.9; y += 0.25 )
for ( double z = 0.25; z < 0.9; z += 0.25 ) {
TxyzPair & prmPtn = my3x3x3GridNodes[ iNode++ ];
prmPtn.first.SetCoord( x, y, z );
ShellPoint( prmPtn.first, prmPtn.second );
+ box.Add( gp_Pnt( prmPtn.second ));
}
myGridComputed = true;
+ myTolerance = sqrt( box.SquareExtent() ) * 1e-5;
}
}
- if ( myGridComputed ) {
+
+ if ( hasHint )
+ {
+ start = theParamsHint;
+ }
+ else if ( myGridComputed )
+ {
double minDist = DBL_MAX;
gp_XYZ* bestParam = 0;
for ( int iNode = 0; iNode < 27; iNode++ ) {
bestParam = & prmPtn.first;
}
}
- start( 1 ) = bestParam->X();
- start( 2 ) = bestParam->Y();
- start( 3 ) = bestParam->Z();
+ start = *bestParam;
}
myFaceIndex = -1;
+ myFaceParam = 0.;
if ( isOnFace ) {
// put a point on the face
for ( int iCoord = 0; iCoord < 3; iCoord++ )
if ( coef[ iCoord ] ) {
- myFaceIndex = iCoord;
- myFaceParam = ( coef[ myFaceIndex ] < 0.5 ) ? 0.0 : 1.0;
- start( iCoord + 1 ) = myFaceParam;
+ myFaceIndex = iCoord + 1;
+ myFaceParam = ( coef[ iCoord ] < 0.5 ) ? 0.0 : 1.0;
+ start.SetCoord( myFaceIndex, myFaceParam );
}
}
- math_Vector low ( 1, 3, 0.0 );
- math_Vector up ( 1, 3, 1.0 );
- math_Vector tol ( 1, 3, 1e-4 );
- math_FunctionSetRoot paramSearch( *this, tol );
#ifdef DEBUG_PARAM_COMPUTE
cout << " #### POINT " <<thePoint.X()<<" "<<thePoint.Y()<<" "<<thePoint.Z()<<" ####"<< endl;
- cout << " ** START ** " << start(1) << " " << start(2) << " " << start(3) << " " << endl;
#endif
- int nbLoops = 0;
- while ( myValues[0] > 1e-1 && nbLoops++ < 10 ) {
- paramSearch.Perform ( *static_cast<math_FunctionSetWithDerivatives*>(this),
- start, low, up );
- if ( !paramSearch.IsDone() ) {
- //MESSAGE( " !paramSearch.IsDone() " );
+
+ if ( myTolerance < 0 ) myTolerance = 1e-6;
+
+ const double parDelta = 1e-4;
+ const double sqTolerance = myTolerance * myTolerance;
+
+ gp_XYZ solution = start, params = start;
+ double sqDistance = 1e100;
+ int nbLoops = 0, nbGetWorst = 0;
+
+ while ( nbLoops <= 100 )
+ {
+ gp_XYZ P, Pi;
+ ShellPoint( params, P );
+
+ gp_Vec dP( thePoint, P );
+ double sqDist = dP.SquareMagnitude();
+
+ if ( sqDist > sqDistance ) { // solution get worse
+ if ( ++nbGetWorst > 2 )
+ return computeParameters( thePoint, theParams, solution );
}
- else {
- //MESSAGE( " NB ITERATIONS: " << paramSearch.NbIterations() );
+#ifdef DEBUG_PARAM_COMPUTE
+ cout << "PARAMS: ( " << params.X() <<" "<< params.Y() <<" "<< params.Z() <<" )"<< endl;
+ cout << "DIST: " << sqrt( sqDist ) << endl;
+#endif
+
+ if ( sqDist < sqDistance ) { // get better
+ sqDistance = sqDist;
+ solution = params;
+ nbGetWorst = 0;
+ if ( sqDistance < sqTolerance ) // a solution found
+ break;
}
- start( 1 ) = myParam.X();
- start( 2 ) = myParam.Y();
- start( 3 ) = myParam.Z();
- //MESSAGE( "Distance: " << ( SQRT_FUNC ? sqrt(myValues[0]) : myValues[0] ));
+
+ // look for a next better solution
+ for ( int iP = 1; iP <= 3; iP++ ) {
+ if ( iP == myFaceIndex )
+ continue;
+ // see where we move with a small (=parDelta) step in this direction
+ gp_XYZ nearParams = params;
+ bool onEdge = ( params.Coord( iP ) + parDelta > 1. );
+ if ( onEdge )
+ nearParams.SetCoord( iP, params.Coord( iP ) - parDelta );
+ else
+ nearParams.SetCoord( iP, params.Coord( iP ) + parDelta );
+ ShellPoint( nearParams, Pi );
+ gp_Vec dPi ( P, Pi );
+ if ( onEdge ) dPi *= -1.;
+ // modify a parameter
+ double mag = dPi.Magnitude();
+ if ( mag < DBL_MIN )
+ continue;
+ gp_Vec dir = dPi / mag; // dir we move modifying the parameter
+ double dist = dir * dP; // where we should get to
+ double dPar = dist / mag * parDelta; // predict parameter change
+ double curPar = params.Coord( iP );
+ double par = curPar - dPar; // new parameter value
+ while ( par > 1 || par < 0 ) {
+ dPar /= 2.;
+ par = curPar - dPar;
+ }
+ params.SetCoord( iP, par );
+ }
+
+ nbLoops++;
}
#ifdef DEBUG_PARAM_COMPUTE
- cout << "-------SOLUTION-------: " << endl
- << myParam.X() << " " << myParam.Y() << " " << myParam.Z() << endl
- << " ------ DIST :" << myValues[0] << endl;
+ myNbIterations += nbLoops*4; // how many times ShellPoint called
+ mySumDist += sqrt( sqDistance );
+ cout << " ------ SOLUTION: ( "<<solution.X()<<" "<<solution.Y()<<" "<<solution.Z()<<" )"<<endl
+ << " ------ DIST : " << sqrt( sqDistance ) << "\t Tol=" << myTolerance << "\t Nb LOOPS=" << nbLoops << endl
+ << " ------ NB IT: " << myNbIterations << ", SUM DIST: " << mySumDist << endl;
#endif
-// MESSAGE( endl << myParam.X() << " " << myParam.Y() << " " << myParam.Z() << endl);
-// mySumDist += myValues[0];
-// MESSAGE( " TOTAL NB ITERATIONS: " << myNbIterations <<
-// " DIST: " << ( SQRT_FUNC ? sqrt(mySumDist) : mySumDist ));
- if ( myFaceIndex >= 0 )
- myParam.SetCoord( myFaceIndex + 1, myFaceParam );
+ theParams = solution;
- theParams = myParam;
+ if ( myFaceIndex > 0 )
+ theParams.SetCoord( myFaceIndex, myFaceParam );
return true;
}
return false;
}
-//=======================================================================
-//function : GetStateNumber
-//purpose :
-//=======================================================================
-
-Standard_Integer SMESH_Block::GetStateNumber ()
-{
-// MESSAGE( endl<<"SMESH_Block::GetStateNumber( "<<myParam.X()<<", "<<
-// myParam.Y()<<", "<<myParam.Z()<<") DISTANCE: " << myValues[0]);
- return myValues[0] < 1e-1;
-}
-
//=======================================================================
//function : DumpShapeID
//purpose : debug an id of a block sub-shape
TFace& tFace = myFace[ iF - ID_FirstF ];
vector< int > edgeIdVec(4, -1);
GetFaceEdgesIDs( iF, edgeIdVec );
- tFace.Set( iF, myEdge[ edgeIdVec [ 0 ]], myEdge[ edgeIdVec [ 1 ]]);
+ tFace.Set( iF, myEdge[ edgeIdVec [ 0 ] - ID_Ex00], myEdge[ edgeIdVec [ 1 ] - ID_Ex00]);
}
return true;
MESSAGE(" GetEdgeVertexIDs(), wrong edge ID: " << edgeID );
}
}
-
#include "SMESH_SMESH.hxx"
-#include <Geom2d_Curve.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom_Surface.hxx>
+//#include <Geom2d_Curve.hxx>
+//#include <Geom_Curve.hxx>
+//#include <Geom_Surface.hxx>
+
#include <TopExp.hxx>
#include <TopTools_IndexedMapOfOrientedShape.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Shell.hxx>
#include <TopoDS_Vertex.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Trsf.hxx>
#include <gp_XY.hxx>
#include <gp_XYZ.hxx>
#include <math_FunctionSetWithDerivatives.hxx>
-#include <math_Matrix.hxx>
-#include <math_Vector.hxx>
#include <ostream>
#include <vector>
class Adaptor3d_Surface;
class Adaptor2d_Curve2d;
class Adaptor3d_Curve;
+class gp_Pnt;
// =========================================================
// class calculating coordinates of 3D points by normalized
// Initialization
// ---------------
- SMESH_Block (): myNbIterations(0), mySumDist(0.) {}
+ SMESH_Block();
bool LoadBlockShapes(const TopoDS_Shell& theShell,
const TopoDS_Vertex& theVertex000,
bool ComputeParameters (const gp_Pnt& thePoint,
gp_XYZ& theParams,
- const int theShapeID = ID_Shell);
+ const int theShapeID = ID_Shell,
+ const gp_XYZ& theParamsHint = gp_XYZ(-1,-1,-1));
// compute point parameters in the block.
// Note: for edges, it is better to use EdgeParameters()
// for param computation
+ enum { SQUARE_DIST = 0, DRV_1, DRV_2, DRV_3 };
+ double distance () const { return sqrt( myValues[ SQUARE_DIST ]); }
+ double funcValue(double sqDist) const { return mySquareFunc ? sqDist : sqrt(sqDist); }
+ bool computeParameters(const gp_Pnt& thePoint, gp_XYZ& theParams, const gp_XYZ& theParamsHint);
+
int myFaceIndex;
double myFaceParam;
int myNbIterations;
double mySumDist;
+ double myTolerance;
+ bool mySquareFunc;
gp_XYZ myPoint; // the given point
gp_XYZ myParam; // the best parameters guess
- double myValues[ 4 ]; // values computed at myParam: function value and 3 derivatives
+ double myValues[ 4 ]; // values computed at myParam: square distance and 3 derivatives
typedef pair<gp_XYZ,gp_XYZ> TxyzPair;
TxyzPair my3x3x3GridNodes[ 27 ]; // to compute the first param guess
#include "SMESH_Gen.hxx"
#include "SMESH_subMesh.hxx"
#include "SMESH_HypoFilter.hxx"
+#include "SMESHDS_Document.hxx"
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE)
ret = false;;
}
+ if ((algo && !aMesh.HasShapeToMesh()))
+ {
+ if (smToCompute->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+ smToCompute->ComputeStateEngine( SMESH_subMesh::COMPUTE );
+
+ if (smToCompute->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE)
+ ret = false;;
+ }
}
// -----------------------------------------------
int shapeDim = SMESH_Gen::GetShapeDim( aSubMesh->GetSubShape() );
if (aTopAlgoDim > shapeDim)
{
- INFOS( "ERROR: " << shapeDim << "D algorithm is missing" );
+ MESSAGE( "ERROR: " << shapeDim << "D algorithm is missing" );
ret = false;
theErrors.push_back( SMESH_Gen::TAlgoStateError() );
theErrors.back().Set( SMESH_Hypothesis::HYP_MISSING, shapeDim, true );
SMESH_Hypothesis::Hypothesis_Status status;
algo->CheckHypothesis( aMesh, aSubMesh->GetSubShape(), status );
if ( status == SMESH_Hypothesis::HYP_BAD_PARAMETER ) {
- INFOS( "ERROR: hypothesis of " << (IsGlobalHypothesis ? "Global " : "Local ")
- << "<" << algo->GetName() << "> has a bad parameter value");
- errName = SMESH_Hypothesis::HYP_BAD_PARAMETER;
+ MESSAGE( "ERROR: hypothesis of " << (IsGlobalHypothesis ? "Global " : "Local ")
+ << "<" << algo->GetName() << "> has a bad parameter value");
+ errName = status;
+ } else if ( status == SMESH_Hypothesis::HYP_BAD_GEOMETRY ) {
+ MESSAGE( "ERROR: " << (IsGlobalHypothesis ? "Global " : "Local ")
+ << "<" << algo->GetName() << "> assigned to mismatching geometry");
+ errName = status;
} else {
- INFOS( "ERROR: " << (IsGlobalHypothesis ? "Global " : "Local ")
- << "<" << algo->GetName() << "> misses some hypothesis");
+ MESSAGE( "ERROR: " << (IsGlobalHypothesis ? "Global " : "Local ")
+ << "<" << algo->GetName() << "> misses some hypothesis");
}
if (IsGlobalHypothesis)
globalChecked[ algo->GetDim() ] = true;
#include "SMESH_3D_Algo.hxx"
#include "SMESH_Mesh.hxx"
-#include "SMESHDS_Document.hxx"
-
#include <TopoDS_Shape.hxx>
#include <map>
+class SMESHDS_Document;
+
typedef SMESH_Hypothesis::Hypothesis_Status TAlgoStateErrorName;
typedef struct studyContextStruct
#include "SMESH_SMESH.hxx"
-#include <SMDSAbs_ElementType.hxx>
+#include "SMDSAbs_ElementType.hxx"
+
#include <string>
#include <TopoDS_Shape.hxx>
-
class SMESHDS_GroupBase;
class SMESH_Mesh;
SMESHDS_GroupBase * GetGroupDS () { return myGroupDS; }
- void SetColorNumber (int theColorNumber) { myColorNumber = theColorNumber; }
- int GetColorNumber() const { return myColorNumber; }
-
private:
SMESH_Group (const SMESH_Group& theOther);
// prohibited copy constructor
SMESHDS_GroupBase * myGroupDS;
std::string myName;
- int myColorNumber;
};
#endif
static SMESH_HypoPredicate* HasDim(const int theDim);
static SMESH_HypoPredicate* HasType(const int theHypType);
+ /*!
+ * \brief check aHyp or/and aShape it is assigned to
+ */
bool IsOk (const SMESH_Hypothesis* aHyp,
const TopoDS_Shape& aShape) const;
- // check aHyp or/and aShape it is assigned to
+ /*!
+ * \brief return true if contains no predicates
+ */
+ bool IsAny() const { return myPredicates.empty(); }
~SMESH_HypoFilter();
#include "SMESHDS_Group.hxx"
#include "SMESHDS_Script.hxx"
#include "SMESHDS_GroupOnGeom.hxx"
+#include "SMESHDS_Document.hxx"
#include "SMDS_MeshVolume.hxx"
+#include "SMDS_SetIterator.hxx"
#include "utilities.h"
#include "DriverUNV_R_SMDS_Mesh.h"
#include "DriverSTL_R_SMDS_Mesh.h"
-#include <BRepTools_WireExplorer.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
-#include <BRep_Builder.hxx>
-#include <gp_Pnt.hxx>
-
-#include <TCollection_AsciiString.hxx>
#include <TopExp.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_Array1OfShape.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
-
-#include <memory>
+#include <TopoDS_Iterator.hxx>
#include "Utils_ExceptHandlers.hxx"
_idDoc = theDocument->NewMesh(theIsEmbeddedMode);
_myMeshDS = theDocument->GetMesh(_idDoc);
_isShapeToMesh = false;
+ _isAutoColor = false;
_myMeshDS->ShapeToMesh( PseudoShape() );
}
i_gr++;
}
_mapAncestors.Clear();
- _mapPropagationChains.Clear();
// clear SMESHDS
TopoDS_Shape aNullShape;
if(MYDEBUG) MESSAGE("UNVToMesh - theFileName = "<<theFileName);
if(_isShapeToMesh)
throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
- _isShapeToMesh = true;
+ _isShapeToMesh = false;
DriverUNV_R_SMDS_Mesh myReader;
myReader.SetMesh(_myMeshDS);
myReader.SetFile(theFileName);
if(MYDEBUG) MESSAGE("MEDToMesh - theFileName = "<<theFileName<<", mesh name = "<<theMeshName);
if(_isShapeToMesh)
throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
- _isShapeToMesh = true;
+ _isShapeToMesh = false;
DriverMED_R_SMESHDS_Mesh myReader;
myReader.SetMesh(_myMeshDS);
myReader.SetMeshId(-1);
if(MYDEBUG) MESSAGE("STLToMesh - theFileName = "<<theFileName);
if(_isShapeToMesh)
throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
- _isShapeToMesh = true;
+ _isShapeToMesh = false;
DriverSTL_R_SMDS_Mesh myReader;
myReader.SetMesh(_myMeshDS);
myReader.SetFile(theFileName);
if ( ret < aBestRet )
aBestRet = ret;
}
+ // bind hypotheses to a group just to know
+ SMESH_Hypothesis *anHyp = _gen->GetStudyContext(_studyId)->mapHypothesis[anHypId];
+ GetMeshDS()->AddHypothesis( aSubShape, anHyp );
+
if ( SMESH_Hypothesis::IsStatusFatal( aBestRet ))
return aBestRet;
return aWorstNotFatal;
if ( ret < aBestRet )
aBestRet = ret;
}
+ SMESH_Hypothesis *anHyp = _gen->GetStudyContext(_studyId)->mapHypothesis[anHypId];
+ GetMeshDS()->RemoveHypothesis( aSubShape, anHyp );
+
if ( SMESH_Hypothesis::IsStatusFatal( aBestRet ))
return aBestRet;
return aWorstNotFatal;
*/
//=============================================================================
-SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const TopoDS_Shape & aSubShape)
+SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const TopoDS_Shape & aSubShape) const
throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
int index = _myMeshDS->ShapeToIndex(aSubShape);
- map <int, SMESH_subMesh *>::iterator i_sm = _mapSubMesh.find(index);
+ map <int, SMESH_subMesh *>::const_iterator i_sm = _mapSubMesh.find(index);
if ( i_sm != _mapSubMesh.end())
aSubMesh = i_sm->second;
return aSubMesh;
}
-
//=============================================================================
/*!
* Get the SMESH_subMesh object implementation. Dont create it, return null
*/
//=============================================================================
-SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const int aShapeID)
+SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const int aShapeID) const
throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- map <int, SMESH_subMesh *>::iterator i_sm = _mapSubMesh.find(aShapeID);
+ map <int, SMESH_subMesh *>::const_iterator i_sm = _mapSubMesh.find(aShapeID);
if (i_sm == _mapSubMesh.end())
return NULL;
return i_sm->second;
}
+//================================================================================
+/*!
+ * \brief Return submeshes of groups containing the given subshape
+ */
+//================================================================================
+list<SMESH_subMesh*>
+SMESH_Mesh::GetGroupSubMeshesContaining(const TopoDS_Shape & aSubShape) const
+ throw(SALOME_Exception)
+{
+ Unexpect aCatch(SalomeException);
+ list<SMESH_subMesh*> found;
+
+ SMESH_subMesh * subMesh = GetSubMeshContaining(aSubShape);
+ if ( !subMesh )
+ return found;
+
+ // submeshes of groups have max IDs, so search from the map end
+ map<int, SMESH_subMesh *>::const_reverse_iterator i_sm;
+ for ( i_sm = _mapSubMesh.rbegin(); i_sm != _mapSubMesh.rend(); ++i_sm) {
+ SMESHDS_SubMesh * ds = i_sm->second->GetSubMeshDS();
+ if ( ds && ds->IsComplexSubmesh() ) {
+ TopExp_Explorer exp( i_sm->second->GetSubShape(), aSubShape.ShapeType() );
+ for ( ; exp.More(); exp.Next() ) {
+ if ( aSubShape.IsSame( exp.Current() )) {
+ found.push_back( i_sm->second );
+ break;
+ }
+ }
+ } else {
+ break;
+ }
+ }
+ return found;
+}
//=======================================================================
//function : IsUsedHypothesis
//purpose : Return True if anHyp is used to mesh aSubShape
{
aSubMesh->AlgoStateEngine(SMESH_subMesh::MODIF_HYP,
const_cast< SMESH_Hypothesis*>( hyp ));
-
- if ( algo->GetDim() == 1 && IsPropagationHypothesis( aSubShape ))
- CleanMeshOnPropagationChain( aSubShape );
}
}
}
}
}
+//=============================================================================
+/*!
+ * Auto color functionality
+ */
+//=============================================================================
+void SMESH_Mesh::SetAutoColor(bool theAutoColor) throw(SALOME_Exception)
+{
+ Unexpect aCatch(SalomeException);
+ _isAutoColor = theAutoColor;
+}
+
+bool SMESH_Mesh::GetAutoColor() throw(SALOME_Exception)
+{
+ Unexpect aCatch(SalomeException);
+ return _isAutoColor;
+}
+
//=============================================================================
/*! Export* methods.
* To store mesh contents on disk in different formats.
myWriter.Perform();
}
-//=============================================================================
+//================================================================================
/*!
- *
+ * \brief Return number of nodes in the mesh
*/
-//=============================================================================
+//================================================================================
+
int SMESH_Mesh::NbNodes() throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
return _myMeshDS->NbNodes();
}
-//=============================================================================
+//================================================================================
/*!
- *
+ * \brief Return number of edges of given order in the mesh
*/
-//=============================================================================
-int SMESH_Mesh::NbEdges(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+
+int SMESH_Mesh::NbEdges(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- if (order == ORDER_ANY)
- return _myMeshDS->NbEdges();
-
- int Nb = 0;
- SMDS_EdgeIteratorPtr it = _myMeshDS->edgesIterator();
- while (it->more()) {
- const SMDS_MeshEdge* cur = it->next();
- if ( order == ORDER_LINEAR && !cur->IsQuadratic() ||
- order == ORDER_QUADRATIC && cur->IsQuadratic() )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbEdges(order);
}
-//=============================================================================
+//================================================================================
/*!
- *
+ * \brief Return number of faces of given order in the mesh
*/
-//=============================================================================
-int SMESH_Mesh::NbFaces(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+
+int SMESH_Mesh::NbFaces(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- if (order == ORDER_ANY)
- return _myMeshDS->NbFaces();
-
- int Nb = 0;
- SMDS_FaceIteratorPtr it = _myMeshDS->facesIterator();
- while (it->more()) {
- const SMDS_MeshFace* cur = it->next();
- if ( order == ORDER_LINEAR && !cur->IsQuadratic() ||
- order == ORDER_QUADRATIC && cur->IsQuadratic() )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbFaces(order);
}
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of 3 nodes faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
-int SMESH_Mesh::NbTriangles(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return the number of faces in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbTriangles(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
-
- SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
- while (itFaces->more()) {
- const SMDS_MeshFace* curFace = itFaces->next();
- int nbnod = curFace->NbNodes();
- if ( !curFace->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==3 || nbnod==6) ||
- order == ORDER_LINEAR && nbnod==3 ||
- order == ORDER_QUADRATIC && nbnod==6 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbTriangles(order);
}
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of 4 nodes faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
-int SMESH_Mesh::NbQuadrangles(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return the number nodes faces in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbQuadrangles(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
-
- SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
- while (itFaces->more()) {
- const SMDS_MeshFace* curFace = itFaces->next();
- int nbnod = curFace->NbNodes();
- if ( !curFace->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==4 || nbnod==8) ||
- order == ORDER_LINEAR && nbnod==4 ||
- order == ORDER_QUADRATIC && nbnod==8 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbQuadrangles(order);
}
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of polygonal faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
+//================================================================================
+/*!
+ * \brief Return the number of polygonal faces in the mesh
+ */
+//================================================================================
+
int SMESH_Mesh::NbPolygons() throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_FaceIteratorPtr itFaces = _myMeshDS->facesIterator();
- while (itFaces->more())
- if (itFaces->next()->IsPoly()) Nb++;
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbPolygons();
}
-//=============================================================================
+//================================================================================
/*!
- *
+ * \brief Return number of volumes of given order in the mesh
*/
-//=============================================================================
-int SMESH_Mesh::NbVolumes(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+
+int SMESH_Mesh::NbVolumes(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- if (order == ORDER_ANY)
- return _myMeshDS->NbVolumes();
-
- int Nb = 0;
- SMDS_VolumeIteratorPtr it = _myMeshDS->volumesIterator();
- while (it->more()) {
- const SMDS_MeshVolume* cur = it->next();
- if ( order == ORDER_LINEAR && !cur->IsQuadratic() ||
- order == ORDER_QUADRATIC && cur->IsQuadratic() )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbVolumes(order);
}
-int SMESH_Mesh::NbTetras(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return number of tetrahedrons of given order in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbTetras(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
- while (itVolumes->more()) {
- const SMDS_MeshVolume* curVolume = itVolumes->next();
- int nbnod = curVolume->NbNodes();
- if ( !curVolume->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==4 || nbnod==10) ||
- order == ORDER_LINEAR && nbnod==4 ||
- order == ORDER_QUADRATIC && nbnod==10 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbTetras(order);
}
-int SMESH_Mesh::NbHexas(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return number of hexahedrons of given order in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbHexas(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
- while (itVolumes->more()) {
- const SMDS_MeshVolume* curVolume = itVolumes->next();
- int nbnod = curVolume->NbNodes();
- if ( !curVolume->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==8 || nbnod==20) ||
- order == ORDER_LINEAR && nbnod==8 ||
- order == ORDER_QUADRATIC && nbnod==20 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbHexas(order);
}
-int SMESH_Mesh::NbPyramids(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return number of pyramids of given order in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbPyramids(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
- while (itVolumes->more()) {
- const SMDS_MeshVolume* curVolume = itVolumes->next();
- int nbnod = curVolume->NbNodes();
- if ( !curVolume->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==5 || nbnod==13) ||
- order == ORDER_LINEAR && nbnod==5 ||
- order == ORDER_QUADRATIC && nbnod==13 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbPyramids(order);
}
-int SMESH_Mesh::NbPrisms(ElementOrder order) throw(SALOME_Exception)
+//================================================================================
+/*!
+ * \brief Return number of prisms (penthahedrons) of given order in the mesh
+ */
+//================================================================================
+
+int SMESH_Mesh::NbPrisms(SMDSAbs_ElementOrder order) throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
- while (itVolumes->more()) {
- const SMDS_MeshVolume* curVolume = itVolumes->next();
- int nbnod = curVolume->NbNodes();
- if ( !curVolume->IsPoly() &&
- ( order == ORDER_ANY && (nbnod==6 || nbnod==15) ||
- order == ORDER_LINEAR && nbnod==6 ||
- order == ORDER_QUADRATIC && nbnod==15 ) )
- Nb++;
- }
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbPrisms(order);
}
+//================================================================================
+/*!
+ * \brief Return number of polyhedrons in the mesh
+ */
+//================================================================================
+
int SMESH_Mesh::NbPolyhedrons() throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
- int Nb = 0;
- SMDS_VolumeIteratorPtr itVolumes = _myMeshDS->volumesIterator();
- while (itVolumes->more())
- if (itVolumes->next()->IsPoly()) Nb++;
- return Nb;
+ return _myMeshDS->GetMeshInfo().NbPolyhedrons();
}
-//=============================================================================
+//================================================================================
/*!
- *
+ * \brief Return number of submeshes in the mesh
*/
-//=============================================================================
+//================================================================================
+
int SMESH_Mesh::NbSubMesh() throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
{
if(MYDEBUG) MESSAGE("SMESH_Mesh::IsNotConformAllowed");
- SMESH_HypoFilter filter( SMESH_HypoFilter::HasName( "NotConformAllowed" ));
+ static SMESH_HypoFilter filter( SMESH_HypoFilter::HasName( "NotConformAllowed" ));
return GetHypothesis( _myMeshDS->ShapeToMesh(), filter, false );
}
return aGroup;
}
+//================================================================================
+/*!
+ * \brief Return iterator on all existing groups
+ */
+//================================================================================
+
+SMESH_Mesh::GroupIteratorPtr SMESH_Mesh::GetGroups() const
+{
+ typedef map <int, SMESH_Group *> TMap;
+ return GroupIteratorPtr( new SMDS_mapIterator<TMap>( _mapGroup ));
+}
+
//=============================================================================
/*!
- *
+ * \brief Return a group by ID
*/
//=============================================================================
//=============================================================================
/*!
- *
+ * \brief Return IDs of all groups
*/
//=============================================================================
-list<int> SMESH_Mesh::GetGroupIds()
+list<int> SMESH_Mesh::GetGroupIds() const
{
list<int> anIds;
for ( map<int, SMESH_Group*>::const_iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ )
_mapGroup.erase (theGroupID);
}
-//=============================================================================
-/*!
- * IsLocal1DHypothesis
- * Returns a local 1D hypothesis used for theEdge
- */
-//=============================================================================
-const SMESH_Hypothesis* SMESH_Mesh::IsLocal1DHypothesis (const TopoDS_Shape& theEdge)
-{
- SMESH_HypoFilter hypo ( SMESH_HypoFilter::HasDim( 1 ));
- hypo.AndNot( hypo.IsAlgo() ).AndNot( hypo.IsAssignedTo( GetMeshDS()->ShapeToMesh() ));
-
- return GetHypothesis( theEdge, hypo, true );
-}
-
-//=============================================================================
-/*!
- * IsPropagationHypothesis
- */
-//=============================================================================
-bool SMESH_Mesh::IsPropagationHypothesis (const TopoDS_Shape& theEdge)
-{
- return _mapPropagationChains.Contains(theEdge);
-}
-
-//=============================================================================
-/*!
- * IsPropagatedHypothesis
- */
-//=============================================================================
-bool SMESH_Mesh::IsPropagatedHypothesis (const TopoDS_Shape& theEdge,
- TopoDS_Shape& theMainEdge)
-{
- int nbChains = _mapPropagationChains.Extent();
- for (int i = 1; i <= nbChains; i++) {
- //const TopTools_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromIndex(i);
- const SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromIndex(i);
- if (aChain.Contains(theEdge)) {
- theMainEdge = _mapPropagationChains.FindKey(i);
- return true;
- }
- }
-
- return false;
-}
-//=============================================================================
-/*!
- * IsReversedInChain
- */
-//=============================================================================
-
-bool SMESH_Mesh::IsReversedInChain (const TopoDS_Shape& theEdge,
- const TopoDS_Shape& theMainEdge)
-{
- if ( !theMainEdge.IsNull() && !theEdge.IsNull() &&
- _mapPropagationChains.Contains( theMainEdge ))
- {
- const SMESH_IndexedMapOfShape& aChain =
- _mapPropagationChains.FindFromKey( theMainEdge );
- int index = aChain.FindIndex( theEdge );
- if ( index )
- return aChain(index).Orientation() == TopAbs_REVERSED;
- }
- return false;
-}
-
-//=============================================================================
-/*!
- * CleanMeshOnPropagationChain
- */
-//=============================================================================
-void SMESH_Mesh::CleanMeshOnPropagationChain (const TopoDS_Shape& theMainEdge)
-{
- const SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromKey(theMainEdge);
- int i, nbEdges = aChain.Extent();
- for (i = 1; i <= nbEdges; i++) {
- TopoDS_Shape anEdge = aChain.FindKey(i);
- SMESH_subMesh *subMesh = GetSubMesh(anEdge);
- SMESHDS_SubMesh *subMeshDS = subMesh->GetSubMeshDS();
- if (subMeshDS && subMeshDS->NbElements() > 0) {
- subMesh->ComputeStateEngine(SMESH_subMesh::CLEAN);
- }
- }
-}
-
-//=============================================================================
-/*!
- * RebuildPropagationChains
- * Rebuild all existing propagation chains.
- * Have to be used, if 1D hypothesis have been assigned/removed to/from any edge
- */
-//=============================================================================
-bool SMESH_Mesh::RebuildPropagationChains()
-{
- bool ret = true;
-
- // Clean all chains, because they can be not up-to-date
- int i, nbChains = _mapPropagationChains.Extent();
- for (i = 1; i <= nbChains; i++) {
- TopoDS_Shape aMainEdge = _mapPropagationChains.FindKey(i);
- CleanMeshOnPropagationChain(aMainEdge);
- _mapPropagationChains.ChangeFromIndex(i).Clear();
- }
-
- // Build all chains
- for (i = 1; i <= nbChains; i++) {
- TopoDS_Shape aMainEdge = _mapPropagationChains.FindKey(i);
- if (!BuildPropagationChain(aMainEdge))
- ret = false;
- CleanMeshOnPropagationChain(aMainEdge);
- }
-
- return ret;
-}
-
-//=============================================================================
-/*!
- * RemovePropagationChain
- * Have to be used, if Propagation hypothesis is removed from <theMainEdge>
- */
-//=============================================================================
-bool SMESH_Mesh::RemovePropagationChain (const TopoDS_Shape& theMainEdge)
-{
- if (!_mapPropagationChains.Contains(theMainEdge))
- return false;
-
- // Clean mesh elements and nodes, built on the chain
- CleanMeshOnPropagationChain(theMainEdge);
-
- // Clean the chain
- _mapPropagationChains.ChangeFromKey(theMainEdge).Clear();
-
- // Remove the chain from the map
- int i = _mapPropagationChains.FindIndex(theMainEdge);
- if ( i == _mapPropagationChains.Extent() )
- _mapPropagationChains.RemoveLast();
- else {
- TopoDS_Vertex anEmptyShape;
- BRep_Builder BB;
- BB.MakeVertex(anEmptyShape, gp_Pnt(0,0,0), 0.1);
- SMESH_IndexedMapOfShape anEmptyMap;
- _mapPropagationChains.Substitute(i, anEmptyShape, anEmptyMap);
- }
-
- return true;
-}
-
-//=============================================================================
-/*!
- * BuildPropagationChain
- */
-//=============================================================================
-bool SMESH_Mesh::BuildPropagationChain (const TopoDS_Shape& theMainEdge)
-{
- if (theMainEdge.ShapeType() != TopAbs_EDGE) return true;
-
- // Add new chain, if there is no
- if (!_mapPropagationChains.Contains(theMainEdge)) {
- SMESH_IndexedMapOfShape aNewChain;
- _mapPropagationChains.Add(theMainEdge, aNewChain);
- }
-
- // Check presence of 1D hypothesis to be propagated
- const SMESH_Hypothesis* aMainHyp = IsLocal1DHypothesis(theMainEdge);
- if (!aMainHyp) {
- MESSAGE("Warning: There is no 1D hypothesis to propagate. Please, assign.");
- return true;
- }
-
- // Edges, on which the 1D hypothesis will be propagated from <theMainEdge>
- SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.ChangeFromKey(theMainEdge);
- if (aChain.Extent() > 0) {
- CleanMeshOnPropagationChain(theMainEdge);
- aChain.Clear();
- }
-
- // At first put <theMainEdge> in the chain
- aChain.Add(theMainEdge);
-
- // List of edges, added to chain on the previous cycle pass
- TopTools_ListOfShape listPrevEdges;
- listPrevEdges.Append(theMainEdge.Oriented( TopAbs_FORWARD ));
-
-// 5____4____3____4____5____6
-// | | | | | |
-// | | | | | |
-// 4____3____2____3____4____5
-// | | | | | | Number in the each knot of
-// | | | | | | grid indicates cycle pass,
-// 3____2____1____2____3____4 on which corresponding edge
-// | | | | | | (perpendicular to the plane
-// | | | | | | of view) will be found.
-// 2____1____0____1____2____3
-// | | | | | |
-// | | | | | |
-// 3____2____1____2____3____4
-
- // Collect all edges pass by pass
- while (listPrevEdges.Extent() > 0) {
- // List of edges, added to chain on this cycle pass
- TopTools_ListOfShape listCurEdges;
-
- // Find the next portion of edges
- TopTools_ListIteratorOfListOfShape itE (listPrevEdges);
- for (; itE.More(); itE.Next()) {
- TopoDS_Shape anE = itE.Value();
-
- // Iterate on faces, having edge <anE>
- TopTools_ListIteratorOfListOfShape itA (GetAncestors(anE));
- for (; itA.More(); itA.Next()) {
- TopoDS_Shape aW = itA.Value();
-
- // There are objects of different type among the ancestors of edge
- if (aW.ShapeType() == TopAbs_WIRE) {
- TopoDS_Shape anOppE;
-
- BRepTools_WireExplorer aWE (TopoDS::Wire(aW));
- Standard_Integer nb = 1, found = 0;
- TopTools_Array1OfShape anEdges (1,4);
- for (; aWE.More(); aWE.Next(), nb++) {
- if (nb > 4) {
- found = 0;
- break;
- }
- anEdges(nb) = aWE.Current();
- if (!_mapAncestors.Contains(anEdges(nb))) {
- MESSAGE("WIRE EXPLORER HAVE GIVEN AN INVALID EDGE !!!");
- break;
- }
- if (anEdges(nb).IsSame(anE)) found = nb;
- }
-
- if (nb == 5 && found > 0) {
- // Quadrangle face found, get an opposite edge
- Standard_Integer opp = found + 2;
- if (opp > 4) opp -= 4;
- anOppE = anEdges(opp);
-
- // add anOppE to aChain if ...
- if (!aChain.Contains(anOppE)) { // ... anOppE is not in aChain
- if (!IsLocal1DHypothesis(anOppE)) { // ... no other 1d hyp on anOppE
- TopoDS_Shape aMainEdgeForOppEdge; // ... no other hyp is propagated to anOppE
- if (!IsPropagatedHypothesis(anOppE, aMainEdgeForOppEdge))
- {
- // Add found edge to the chain oriented so that to
- // have it co-directed with a forward MainEdge
- TopAbs_Orientation ori = anE.Orientation();
- if ( anEdges(opp).Orientation() == anEdges(found).Orientation() )
- ori = TopAbs::Reverse( ori );
- anOppE.Orientation( ori );
- aChain.Add(anOppE);
- listCurEdges.Append(anOppE);
- }
- else {
- // Collision!
- MESSAGE("Error: Collision between propagated hypotheses");
- CleanMeshOnPropagationChain(theMainEdge);
- aChain.Clear();
- return ( aMainHyp == IsLocal1DHypothesis(aMainEdgeForOppEdge) );
- }
- }
- }
- } // if (nb == 5 && found > 0)
- } // if (aF.ShapeType() == TopAbs_WIRE)
- } // for (; itF.More(); itF.Next())
- } // for (; itE.More(); itE.Next())
-
- listPrevEdges = listCurEdges;
- } // while (listPrevEdges.Extent() > 0)
-
- CleanMeshOnPropagationChain(theMainEdge);
- return true;
-}
-
//=======================================================================
//function : GetAncestors
//purpose : return list of ancestors of theSubShape in the order
//function : Dump
//purpose : dumps contents of mesh to stream [ debug purposes ]
//=======================================================================
+
ostream& SMESH_Mesh::Dump(ostream& save)
{
int clause = 0;
for ( int isQuadratic = 0; isQuadratic < 2; ++isQuadratic )
{
string orderStr = isQuadratic ? "quadratic" : "linear";
- ElementOrder order = isQuadratic ? ORDER_QUADRATIC : ORDER_LINEAR;
+ SMDSAbs_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;
//function : GetElementType
//purpose : Returns type of mesh element with certain id
//=======================================================================
+
SMDSAbs_ElementType SMESH_Mesh::GetElementType( const int id, const bool iselem )
{
return _myMeshDS->GetElementType( id, iselem );
#include "SMESH_SMESH.hxx"
#include "SMESH_Hypothesis.hxx"
-//#include "SMESH_subMesh.hxx"
-#include "SMESHDS_Document.hxx"
#include "SMESHDS_Mesh.hxx"
#include "SMESHDS_Command.hxx"
#include "SMDSAbs_ElementType.hxx"
-//#include "NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx"
-#include "SMESH_IndexedDataMapOfShapeIndexedMapOfShape.hxx"
-
#include "Utils_SALOME_Exception.hxx"
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopoDS_Compound.hxx>
-#include <TopoDS_CompSolid.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Vertex.hxx>
#include <TopoDS_Shape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <vector>
#include <list>
#include <map>
-#include <string>
-#include <iostream>
-
class SMESH_Gen;
+class SMESHDS_Document;
class SMESH_Group;
class TopTools_ListOfShape;
class SMESH_subMesh;
class SMESH_HypoFilter;
class TopoDS_Solid;
-typedef SMESH_IndexedDataMapOfShapeIndexedMapOfShape IndexedMapOfChain;
-
class SMESH_EXPORT SMESH_Mesh
{
public:
RemoveHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
throw(SALOME_Exception);
- const list <const SMESHDS_Hypothesis * >&
+ const std::list <const SMESHDS_Hypothesis * >&
GetHypothesisList(const TopoDS_Shape & aSubShape) const
throw(SALOME_Exception);
const SMESH_HypoFilter& aFilter,
const bool andAncestors) const;
- int GetHypotheses(const TopoDS_Shape & aSubShape,
- const SMESH_HypoFilter& aFilter,
- list <const SMESHDS_Hypothesis * >& aHypList,
- const bool andAncestors) const;
+ int GetHypotheses(const TopoDS_Shape & aSubShape,
+ const SMESH_HypoFilter& aFilter,
+ std::list <const SMESHDS_Hypothesis * >& aHypList,
+ const bool andAncestors) const;
- const list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
+ const std::list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
void ClearLog() throw(SALOME_Exception);
SMESH_subMesh *GetSubMesh(const TopoDS_Shape & aSubShape)
throw(SALOME_Exception);
- SMESH_subMesh *GetSubMeshContaining(const TopoDS_Shape & aSubShape)
+ SMESH_subMesh *GetSubMeshContaining(const TopoDS_Shape & aSubShape) const
throw(SALOME_Exception);
- SMESH_subMesh *GetSubMeshContaining(const int aShapeID)
+ SMESH_subMesh *GetSubMeshContaining(const int aShapeID) const
throw(SALOME_Exception);
-
+ /*!
+ * \brief Return submeshes of groups containing the given subshape
+ */
+ std::list<SMESH_subMesh*> GetGroupSubMeshesContaining(const TopoDS_Shape & shape) const
+ throw(SALOME_Exception);
+ /*!
+ * \brief Say all submeshes that theChangedHyp has been modified
+ */
void NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* theChangedHyp);
- // Say all submeshes that theChangedHyp has been modified
- const list < SMESH_subMesh * >&
- GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp)
- throw(SALOME_Exception);
-
+ const std::list < SMESH_subMesh * >&
+ GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp) throw(SALOME_Exception);
+ /*!
+ * \brief Return True if anHyp is used to mesh aSubShape
+ */
bool IsUsedHypothesis(SMESHDS_Hypothesis * anHyp,
const SMESH_subMesh * aSubMesh);
- // Return True if anHyp is used to mesh aSubShape
-
+ /*!
+ * \brief check if a hypothesis alowing notconform mesh is present
+ */
bool IsNotConformAllowed() const;
- // check if a hypothesis alowing notconform mesh is present
bool IsMainShape(const TopoDS_Shape& theShape) const;
-
+ /*!
+ * \brief Return list of ancestors of theSubShape in the order
+ * that lower dimention shapes come first
+ */
const TopTools_ListOfShape& GetAncestors(const TopoDS_Shape& theSubShape) const;
- // return list of ancestors of theSubShape in the order
- // that lower dimention shapes come first.
- /*! Check group names for duplications.
- * Consider maximum group name length stored in MED file.
+ void SetAutoColor(bool theAutoColor) throw(SALOME_Exception);
+
+ bool GetAutoColor() throw(SALOME_Exception);
+
+ /*!
+ * \brief Return data map of descendant to ancestor shapes
+ */
+ typedef TopTools_IndexedDataMapOfShapeListOfShape TAncestorMap;
+ const TAncestorMap& GetAncestorMap() const { return _mapAncestors; }
+ /*!
+ * \brief Check group names for duplications.
+ * Consider maximum group name length stored in MED file
*/
bool HasDuplicatedGroupNamesMED();
int NbNodes() throw(SALOME_Exception);
- /*!
- * ElementOrder points out entities of what order are requested
- */
- enum ElementOrder {
- ORDER_ANY, /*! entities of any order */
- ORDER_LINEAR, /*! entities of 1st order */
- ORDER_QUADRATIC /*! entities of 2nd order */
- };
-
- int NbEdges(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbEdges(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbFaces(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbFaces(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbTriangles(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbTriangles(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbQuadrangles(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbQuadrangles(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
int NbPolygons() throw(SALOME_Exception);
- int NbVolumes(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbVolumes(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbTetras(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbTetras(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbHexas(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbHexas(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbPyramids(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbPyramids(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
- int NbPrisms(ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
+ int NbPrisms(SMDSAbs_ElementOrder order = ORDER_ANY) throw(SALOME_Exception);
int NbPolyhedrons() throw(SALOME_Exception);
int& theId,
const TopoDS_Shape& theShape=TopoDS_Shape());
- SMESH_Group* GetGroup (const int theGroupID);
+ typedef boost::shared_ptr< SMDS_Iterator<SMESH_Group*> > GroupIteratorPtr;
+ GroupIteratorPtr GetGroups() const;
- list<int> GetGroupIds();
+ std::list<int> GetGroupIds() const;
- void RemoveGroup (const int theGroupID);
-
- // Propagation hypothesis management
-
- const SMESH_Hypothesis* IsLocal1DHypothesis (const TopoDS_Shape& theEdge);
- // Returns a local 1D hypothesis used for theEdge.
-
- bool IsPropagationHypothesis (const TopoDS_Shape& theEdge);
- // Returns true, if a local Propagation hypothesis is set directly on <theEdge>
+ SMESH_Group* GetGroup (const int theGroupID);
- bool IsPropagatedHypothesis (const TopoDS_Shape& theEdge,
- TopoDS_Shape& theMainEdge);
- // Returns true, if a local 1D hypothesis is
- // propagated on <theEdge> from some other edge.
- // Returns through <theMainEdge> the edge, from
- // which the 1D hypothesis is propagated on <theEdge>
+ void RemoveGroup (const int theGroupID);
- bool IsReversedInChain (const TopoDS_Shape& theEdge,
- const TopoDS_Shape& theMainEdge);
- // Returns true if theEdge should be reversed to be
- // co-directed with theMainEdge
- bool RebuildPropagationChains();
- bool RemovePropagationChain (const TopoDS_Shape& theMainEdge);
- bool BuildPropagationChain (const TopoDS_Shape& theMainEdge);
-
SMDSAbs_ElementType GetElementType( const int id, const bool iselem );
//
ostream& Dump(ostream & save);
private:
- // Propagation hypothesis management
- void CleanMeshOnPropagationChain(const TopoDS_Shape& theMainEdge);
- //
protected:
int _id; // id given by creator (unique within the creator instance)
int _idDoc; // id given by SMESHDS_Document
int _groupId; // id generator for group objects
bool _isShapeToMesh;// set to true when a shape is given (only once)
- list <SMESH_subMesh *> _subMeshesUsingHypothesisList;
+ std::list <SMESH_subMesh*> _subMeshesUsingHypothesisList;
SMESHDS_Document * _myDocument;
SMESHDS_Mesh * _myMeshDS;
map <int, SMESH_subMesh *> _mapSubMesh;
map <int, SMESH_Group *> _mapGroup;
SMESH_Gen * _gen;
+
+ bool _isAutoColor;
TopTools_IndexedDataMapOfShapeListOfShape _mapAncestors;
- IndexedMapOfChain _mapPropagationChains; // Propagation hypothesis management
-
protected:
SMESH_Mesh() {};
SMESH_Mesh(const SMESH_Mesh&) {};
#include "SMDS_FacePosition.hxx"
#include "SMDS_SpacePosition.hxx"
#include "SMDS_QuadraticFaceOfNodes.hxx"
+#include "SMDS_MeshGroup.hxx"
#include "SMESHDS_Group.hxx"
#include "SMESHDS_Mesh.hxx"
#include "SMESH_ControlsDef.hxx"
#include "SMESH_MesherHelper.hxx"
#include "SMESH_OctreeNode.hxx"
+#include "SMESH_Group.hxx"
#include "utilities.h"
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <math.h>
-#include <gp_Dir.hxx>
-#include <gp_Vec.hxx>
-#include <gp_Ax1.hxx>
-#include <gp_Trsf.hxx>
-#include <gp_Lin.hxx>
-#include <gp_XYZ.hxx>
-#include <gp_XY.hxx>
-#include <gp.hxx>
-#include <gp_Pln.hxx>
#include <BRep_Tool.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom_Surface.hxx>
-#include <Geom2d_Curve.hxx>
+#include <ElCLib.hxx>
#include <Extrema_GenExtPS.hxx>
#include <Extrema_POnSurf.hxx>
+#include <Geom2d_Curve.hxx>
#include <GeomAdaptor_Surface.hxx>
-#include <ElCLib.hxx>
+#include <Geom_Curve.hxx>
+#include <Geom_Surface.hxx>
#include <TColStd_ListOfInteger.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopoDS.hxx>
#include <TopoDS_Face.hxx>
+#include <gp.hxx>
+#include <gp_Ax1.hxx>
+#include <gp_Dir.hxx>
+#include <gp_Lin.hxx>
+#include <gp_Pln.hxx>
+#include <gp_Trsf.hxx>
+#include <gp_Vec.hxx>
+#include <gp_XY.hxx>
+#include <gp_XYZ.hxx>
+#include <math.h>
#include <map>
#include <set>
typedef map<const SMDS_MeshElement*, list<const SMDS_MeshNode*> > TElemOfNodeListMap;
typedef map<const SMDS_MeshElement*, list<const SMDS_MeshElement*> > TElemOfElemListMap;
-typedef map<const SMDS_MeshNode*, list<const SMDS_MeshNode*> > TNodeOfNodeListMap;
-typedef TNodeOfNodeListMap::iterator TNodeOfNodeListMapItr;
//typedef map<const SMDS_MeshNode*, vector<const SMDS_MeshNode*> > TNodeOfNodeVecMap;
//typedef TNodeOfNodeVecMap::iterator TNodeOfNodeVecMapItr;
-typedef map<const SMDS_MeshElement*, vector<TNodeOfNodeListMapItr> > TElemOfVecOfNnlmiMap;
//typedef map<const SMDS_MeshElement*, vector<TNodeOfNodeVecMapItr> > TElemOfVecOfMapNodesMap;
struct TNodeXYZ : public gp_XYZ {
typedef pair< const SMDS_MeshNode*, const SMDS_MeshNode* > NLink;
+//=======================================================================
/*!
* \brief A sorted pair of nodes
*/
+//=======================================================================
+
struct TLink: public NLink
{
TLink(const SMDS_MeshNode* n1, const SMDS_MeshNode* n2 ):NLink( n1, n2 )
//purpose :
//=======================================================================
-SMESH_MeshEditor::SMESH_MeshEditor( SMESH_Mesh* theMesh ):
-myMesh( theMesh )
+SMESH_MeshEditor::SMESH_MeshEditor( SMESH_Mesh* theMesh )
+ :myMesh( theMesh ) // theMesh may be NULL
{
}
if ( !elem )
continue;
- // Find sub-meshes to notify about modification
- SMDS_ElemIteratorPtr nodeIt = elem->nodesIterator();
- while ( nodeIt->more() ) {
- const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
- const SMDS_PositionPtr& aPosition = node->GetPosition();
- if ( aPosition.get() ) {
- if ( int aShapeID = aPosition->GetShapeId() ) {
+ // Notify VERTEX sub-meshes about modification
+ if ( isNodes ) {
+ const SMDS_MeshNode* node = cast2Node( elem );
+ if ( node->GetPosition()->GetTypeOfPosition() == SMDS_TOP_VERTEX )
+ if ( int aShapeID = node->GetPosition()->GetShapeId() )
if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( aShapeID ) )
smmap.insert( sm );
- }
- }
}
+ // Find sub-meshes to notify about modification
+// SMDS_ElemIteratorPtr nodeIt = elem->nodesIterator();
+// while ( nodeIt->more() ) {
+// const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
+// const SMDS_PositionPtr& aPosition = node->GetPosition();
+// if ( aPosition.get() ) {
+// if ( int aShapeID = aPosition->GetShapeId() ) {
+// if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( aShapeID ) )
+// smmap.insert( sm );
+// }
+// }
+// }
// Do remove
if ( isNodes )
(*smIt)->ComputeStateEngine( SMESH_subMesh::MESH_ENTITY_REMOVED );
}
- // Check if the whole mesh becomes empty
- if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( 1 ) )
- sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
+// // Check if the whole mesh becomes empty
+// if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( 1 ) )
+// sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
return true;
}
set<SMESHDS_GroupBase*>::const_iterator grIt = groups.begin();
for ( ; grIt != groups.end(); grIt++ ) {
SMESHDS_Group* group = dynamic_cast<SMESHDS_Group*>( *grIt );
- if ( group && group->SMDSGroup().Contains( elemInGroups ))
+ if ( group && group->Contains( elemInGroups ))
group->SMDSGroup().Add( elemToAdd );
}
}
}
//=======================================================================
-//function : sweepElement
-//purpose :
+/*!
+ * \brief Create elements by sweeping an element
+ * \param elem - element to sweep
+ * \param newNodesItVec - nodes generated from each node of the element
+ * \param newElems - generated elements
+ * \param nbSteps - number of sweeping steps
+ * \param srcElements - to append elem for each generated element
+ */
//=======================================================================
-static void sweepElement(SMESHDS_Mesh* aMesh,
- const SMDS_MeshElement* elem,
- const vector<TNodeOfNodeListMapItr> & newNodesItVec,
- list<const SMDS_MeshElement*>& newElems,
- const int nbSteps,
- SMESH_SequenceOfElemPtr& myLastCreatedElems)
+void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement* elem,
+ const vector<TNodeOfNodeListMapItr> & newNodesItVec,
+ list<const SMDS_MeshElement*>& newElems,
+ const int nbSteps,
+ SMESH_SequenceOfElemPtr& srcElements)
{
+ SMESHDS_Mesh* aMesh = GetMeshDS();
+
// Loop on elem nodes:
// find new nodes and detect same nodes indices
int nbNodes = elem->NbNodes();
- //---PR
- //list<const SMDS_MeshNode*>::const_iterator itNN[ nbNodes ];
- vector<list<const SMDS_MeshNode*>::const_iterator> itNN( nbNodes );
- itNN.reserve(nbNodes);
- //---PR
- //const SMDS_MeshNode* prevNod[ nbNodes ], *nextNod[ nbNodes ];
+ vector < list< const SMDS_MeshNode* >::const_iterator > itNN( nbNodes );
vector<const SMDS_MeshNode*> prevNod( nbNodes );
vector<const SMDS_MeshNode*> nextNod( nbNodes );
vector<const SMDS_MeshNode*> midlNod( nbNodes );
}
// make new elements
- int iStep;//, nbSteps = newNodesItVec[ 0 ]->second.size();
- for (iStep = 0; iStep < nbSteps; iStep++ ) {
+ for (int iStep = 0; iStep < nbSteps; iStep++ ) {
// get next nodes
for ( iNode = 0; iNode < nbNodes; iNode++ ) {
if(issimple[iNode]) {
if ( aNewElem ) {
newElems.push_back( aNewElem );
myLastCreatedElems.Append(aNewElem);
+ srcElements.Append( elem );
}
// set new prev nodes
}
//=======================================================================
-//function : makeWalls
-//purpose : create 1D and 2D elements around swept elements
+/*!
+ * \brief Create 1D and 2D elements around swept elements
+ * \param mapNewNodes - source nodes and ones generated from them
+ * \param newElemsMap - source elements and ones generated from them
+ * \param elemNewNodesMap - nodes generated from each node of each element
+ * \param elemSet - all swept elements
+ * \param nbSteps - number of sweeping steps
+ * \param srcElements - to append elem for each generated element
+ */
//=======================================================================
-static void makeWalls (SMESHDS_Mesh* aMesh,
- TNodeOfNodeListMap & mapNewNodes,
- TElemOfElemListMap & newElemsMap,
- TElemOfVecOfNnlmiMap & elemNewNodesMap,
- TIDSortedElemSet& elemSet,
- const int nbSteps,
- SMESH_SequenceOfElemPtr& myLastCreatedElems)
+void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
+ TElemOfElemListMap & newElemsMap,
+ TElemOfVecOfNnlmiMap & elemNewNodesMap,
+ TIDSortedElemSet& elemSet,
+ const int nbSteps,
+ SMESH_SequenceOfElemPtr& srcElements)
{
ASSERT( newElemsMap.size() == elemNewNodesMap.size() );
+ SMESHDS_Mesh* aMesh = GetMeshDS();
// Find nodes belonging to only one initial element - sweep them to get edges.
if(!NotCreateEdge) {
vector<TNodeOfNodeListMapItr> newNodesItVec( 1, nList );
list<const SMDS_MeshElement*> newEdges;
- sweepElement( aMesh, node, newNodesItVec, newEdges, nbSteps, myLastCreatedElems );
+ sweepElement( node, newNodesItVec, newEdges, nbSteps, srcElements );
}
}
}
// create a ceiling edge
if (!elem->IsQuadratic()) {
if ( !aMesh->FindEdge( vecNewNodes[ 0 ]->second.back(),
- vecNewNodes[ 1 ]->second.back()))
+ vecNewNodes[ 1 ]->second.back())) {
myLastCreatedElems.Append(aMesh->AddEdge(vecNewNodes[ 0 ]->second.back(),
vecNewNodes[ 1 ]->second.back()));
+ srcElements.Append( myLastCreatedElems.Last() );
+ }
}
else {
if ( !aMesh->FindEdge( vecNewNodes[ 0 ]->second.back(),
vecNewNodes[ 1 ]->second.back(),
- vecNewNodes[ 2 ]->second.back()))
+ vecNewNodes[ 2 ]->second.back())) {
myLastCreatedElems.Append(aMesh->AddEdge(vecNewNodes[ 0 ]->second.back(),
vecNewNodes[ 1 ]->second.back(),
vecNewNodes[ 2 ]->second.back()));
+ srcElements.Append( myLastCreatedElems.Last() );
+ }
}
}
if ( elem->GetType() != SMDSAbs_Face )
hasFreeLinks = true;
// make an edge and a ceiling for a new edge
if ( !aMesh->FindEdge( n1, n2 )) {
- myLastCreatedElems.Append(aMesh->AddEdge( n1, n2 ));
+ myLastCreatedElems.Append(aMesh->AddEdge( n1, n2 )); // free link edge
+ srcElements.Append( myLastCreatedElems.Last() );
}
n1 = vecNewNodes[ iNode ]->second.back();
n2 = vecNewNodes[ iNext ]->second.back();
if ( !aMesh->FindEdge( n1, n2 )) {
- myLastCreatedElems.Append(aMesh->AddEdge( n1, n2 ));
+ myLastCreatedElems.Append(aMesh->AddEdge( n1, n2 )); // ceiling edge
+ srcElements.Append( myLastCreatedElems.Last() );
}
}
}
// find medium node
const SMDS_MeshNode* n3 = vecNewNodes[ iNode+nbn ]->first;
if ( !aMesh->FindEdge( n1, n2, n3 )) {
- myLastCreatedElems.Append(aMesh->AddEdge( n1, n2, n3 ));
+ myLastCreatedElems.Append(aMesh->AddEdge( n1, n2, n3 )); // free link edge
+ srcElements.Append( myLastCreatedElems.Last() );
}
n1 = vecNewNodes[ iNode ]->second.back();
n2 = vecNewNodes[ iNext ]->second.back();
n3 = vecNewNodes[ iNode+nbn ]->second.back();
if ( !aMesh->FindEdge( n1, n2, n3 )) {
- myLastCreatedElems.Append(aMesh->AddEdge( n1, n2, n3 ));
+ myLastCreatedElems.Append(aMesh->AddEdge( n1, n2, n3 )); // ceiling edge
+ srcElements.Append( myLastCreatedElems.Last() );
}
}
}
if ( hasFreeLinks ) {
list<const SMDS_MeshElement*> & newVolumes = itElem->second;
- int iStep; //, nbSteps = vecNewNodes[0]->second.size();
int iVol, volNb, nbVolumesByStep = newVolumes.size() / nbSteps;
- set<const SMDS_MeshNode*> initNodeSet, faceNodeSet;
- for ( iNode = 0; iNode < nbNodes; iNode++ )
+ set<const SMDS_MeshNode*> initNodeSet, topNodeSet, faceNodeSet;
+ for ( iNode = 0; iNode < nbNodes; iNode++ ) {
initNodeSet.insert( vecNewNodes[ iNode ]->first );
-
+ topNodeSet .insert( vecNewNodes[ iNode ]->second.back() );
+ }
for ( volNb = 0; volNb < nbVolumesByStep; volNb++ ) {
list<const SMDS_MeshElement*>::iterator v = newVolumes.begin();
iVol = 0;
while ( iVol++ < volNb ) v++;
- // find indices of free faces of a volume
- list< int > fInd;
+ // find indices of free faces of a volume and their source edges
+ list< int > freeInd;
+ list< const SMDS_MeshElement* > srcEdges; // source edges of free faces
SMDS_VolumeTool vTool( *v );
int iF, nbF = vTool.NbFaces();
for ( iF = 0; iF < nbF; iF ++ ) {
if (vTool.IsFreeFace( iF ) &&
vTool.GetFaceNodes( iF, faceNodeSet ) &&
initNodeSet != faceNodeSet) // except an initial face
- fInd.push_back( iF );
+ {
+ if ( nbSteps == 1 && faceNodeSet == topNodeSet )
+ continue;
+ freeInd.push_back( iF );
+ // find source edge of a free face iF
+ vector<const SMDS_MeshNode*> commonNodes; // shared by the initial and free faces
+ commonNodes.resize( initNodeSet.size(), NULL ); // avoid spoiling memory
+ std::set_intersection( faceNodeSet.begin(), faceNodeSet.end(),
+ initNodeSet.begin(), initNodeSet.end(),
+ commonNodes.begin());
+ if ( (*v)->IsQuadratic() )
+ srcEdges.push_back(aMesh->FindEdge (commonNodes[0],commonNodes[1],commonNodes[2]));
+ else
+ srcEdges.push_back(aMesh->FindEdge (commonNodes[0],commonNodes[1]));
+#ifdef _DEBUG_
+ if ( !srcEdges.back() )
+ {
+ cout << "SMESH_MeshEditor::makeWalls(), no source edge found for a free face #"
+ << iF << " of volume #" << vTool.ID() << endl;
+ }
+#endif
+ }
}
- if ( fInd.empty() )
+ if ( freeInd.empty() )
continue;
- // create faces for all steps
- // if such a face has been already created by sweep of edge, assure that its orientation is OK
- for ( iStep = 0; iStep < nbSteps; iStep++ ) {
+ // create faces for all steps;
+ // if such a face has been already created by sweep of edge,
+ // assure that its orientation is OK
+ for ( int iStep = 0; iStep < nbSteps; iStep++ ) {
vTool.Set( *v );
vTool.SetExternalNormal();
- list< int >::iterator ind = fInd.begin();
- for ( ; ind != fInd.end(); ind++ ) {
+ list< int >::iterator ind = freeInd.begin();
+ list< const SMDS_MeshElement* >::iterator srcEdge = srcEdges.begin();
+ for ( ; ind != freeInd.end(); ++ind, ++srcEdge ) // loop on free faces
+ {
const SMDS_MeshNode** nodes = vTool.GetFaceNodes( *ind );
int nbn = vTool.NbFaceNodes( *ind );
switch ( nbn ) {
aMesh->ChangeElementNodes( f, nodes, nbn );
}
}
- }
+ while ( srcElements.Length() < myLastCreatedElems.Length() )
+ srcElements.Append( *srcEdge );
+
+ } // loop on free faces
+
// go to the next volume
iVol = 0;
while ( iVol++ < nbVolumesByStep ) v++;
}
} // sweep free links into faces
- // make a ceiling face with a normal external to a volume
+ // Make a ceiling face with a normal external to a volume
SMDS_VolumeTool lastVol( itElem->second.back() );
myLastCreatedElems.Append(aMesh->AddPolygonalFace(polygon_nodes));
}
} // switch
+
+ while ( srcElements.Length() < myLastCreatedElems.Length() )
+ srcElements.Append( myLastCreatedElems.Last() );
}
} // loop on swept elements
}
//purpose :
//=======================================================================
-void SMESH_MeshEditor::RotationSweep(TIDSortedElemSet & theElems,
- const gp_Ax1& theAxis,
- const double theAngle,
- const int theNbSteps,
- const double theTol,
- const bool theMakeWalls)
+SMESH_MeshEditor::PGroupIDs
+SMESH_MeshEditor::RotationSweep(TIDSortedElemSet & theElems,
+ const gp_Ax1& theAxis,
+ const double theAngle,
+ const int theNbSteps,
+ const double theTol,
+ const bool theMakeGroups,
+ const bool theMakeWalls)
{
myLastCreatedElems.Clear();
myLastCreatedNodes.Clear();
+ // source elements for each generated one
+ SMESH_SequenceOfElemPtr srcElems, srcNodes;
+
MESSAGE( "RotationSweep()");
gp_Trsf aTrsf;
aTrsf.SetRotation( theAxis, theAngle );
// loop on elem nodes
SMDS_ElemIteratorPtr itN = elem->nodesIterator();
- while ( itN->more() ) {
-
+ while ( itN->more() )
+ {
// check if a node has been already sweeped
- const SMDS_MeshNode* node =
- static_cast<const SMDS_MeshNode*>( itN->next() );
+ const SMDS_MeshNode* node = cast2Node( itN->next() );
TNodeOfNodeListMapItr nIt = mapNewNodes.find( node );
if ( nIt == mapNewNodes.end() ) {
nIt = mapNewNodes.insert( make_pair( node, list<const SMDS_MeshNode*>() )).first;
//aTrsf.Transforms( coord[0], coord[1], coord[2] );
newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
aTrsf2.Transforms( coord[0], coord[1], coord[2] );
//aTrsf.Transforms( coord[0], coord[1], coord[2] );
}
newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
}
listNewNodes.push_back( newNode );
}
newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
listNewNodes.push_back( newNode );
+ srcNodes.Append( node );
aTrsf2.Transforms( coord[0], coord[1], coord[2] );
newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
}
}
newNodesItVec.push_back( nIt );
}
// make new elements
- sweepElement( aMesh, elem, newNodesItVec, newElemsMap[elem], theNbSteps, myLastCreatedElems );
+ sweepElement( elem, newNodesItVec, newElemsMap[elem], theNbSteps, srcElems );
}
if ( theMakeWalls )
- makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes,
- theElems, theNbSteps, myLastCreatedElems );
+ makeWalls( mapNewNodes, newElemsMap, mapElemNewNodes, theElems, theNbSteps, srcElems );
+
+ PGroupIDs newGroupIDs;
+ if ( theMakeGroups )
+ newGroupIDs = generateGroups( srcNodes, srcElems, "rotated");
+
+ return newGroupIDs;
}
//purpose :
//=======================================================================
-void SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet & theElems,
- const gp_Vec& theStep,
- const int theNbSteps,
- TElemOfElemListMap& newElemsMap,
- const int theFlags,
- const double theTolerance)
+SMESH_MeshEditor::PGroupIDs
+SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet & theElems,
+ const gp_Vec& theStep,
+ const int theNbSteps,
+ TElemOfElemListMap& newElemsMap,
+ const bool theMakeGroups,
+ const int theFlags,
+ const double theTolerance)
{
ExtrusParam aParams;
aParams.myDir = gp_Dir(theStep);
for(i=1; i<=theNbSteps; i++)
aParams.mySteps->Append(theStep.Magnitude());
- ExtrusionSweep(theElems,aParams,newElemsMap,theFlags,theTolerance);
-
+ return
+ ExtrusionSweep(theElems,aParams,newElemsMap,theMakeGroups,theFlags,theTolerance);
}
//purpose :
//=======================================================================
-void SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet & theElems,
- ExtrusParam& theParams,
- TElemOfElemListMap& newElemsMap,
- const int theFlags,
- const double theTolerance)
+SMESH_MeshEditor::PGroupIDs
+SMESH_MeshEditor::ExtrusionSweep (TIDSortedElemSet & theElems,
+ ExtrusParam& theParams,
+ TElemOfElemListMap& newElemsMap,
+ const bool theMakeGroups,
+ const int theFlags,
+ const double theTolerance)
{
myLastCreatedElems.Clear();
myLastCreatedNodes.Clear();
+ // source elements for each generated one
+ SMESH_SequenceOfElemPtr srcElems, srcNodes;
+
SMESHDS_Mesh* aMesh = GetMeshDS();
int nbsteps = theParams.mySteps->Length();
// loop on elem nodes
SMDS_ElemIteratorPtr itN = elem->nodesIterator();
- while ( itN->more() ) {
-
+ while ( itN->more() )
+ {
// check if a node has been already sweeped
- const SMDS_MeshNode* node =
- static_cast<const SMDS_MeshNode*>( itN->next() );
+ const SMDS_MeshNode* node = cast2Node( itN->next() );
TNodeOfNodeListMap::iterator nIt = mapNewNodes.find( node );
//TNodeOfNodeVecMap::iterator nIt = mapNewNodes.find( node );
if ( nIt == mapNewNodes.end() ) {
else {
const SMDS_MeshNode * newNode = aMesh->AddNode(x, y, z);
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
}
}
else {
const SMDS_MeshNode * newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
//vecNewNodes[i]=newNode;
}
else {
const SMDS_MeshNode * newNode = aMesh->AddNode(x, y, z);
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
}
coord[0] = coord[0] + theParams.myDir.X()*theParams.mySteps->Value(i+1);
else {
const SMDS_MeshNode * newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
}
}
newNodesItVec.push_back( nIt );
}
// make new elements
- sweepElement( aMesh, elem, newNodesItVec, newElemsMap[elem], nbsteps, myLastCreatedElems );
+ sweepElement( elem, newNodesItVec, newElemsMap[elem], nbsteps, srcElems );
}
if( theFlags & EXTRUSION_FLAG_BOUNDARY ) {
- makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes, theElems, nbsteps, myLastCreatedElems );
+ makeWalls( mapNewNodes, newElemsMap, mapElemNewNodes, theElems, nbsteps, srcElems );
}
+ PGroupIDs newGroupIDs;
+ if ( theMakeGroups )
+ newGroupIDs = generateGroups( srcNodes, srcElems, "extruded");
+
+ return newGroupIDs;
}
const bool theHasAngles,
list<double>& theAngles,
const bool theHasRefPoint,
- const gp_Pnt& theRefPoint)
+ const gp_Pnt& theRefPoint,
+ const bool theMakeGroups)
{
myLastCreatedElems.Clear();
myLastCreatedNodes.Clear();
- MESSAGE("SMESH_MeshEditor::ExtrusionAlongTrack")
+ // source elements for each generated one
+ SMESH_SequenceOfElemPtr srcElems, srcNodes;
+
int j, aNbTP, aNbE, aNb;
double aT1, aT2, aT, aAngle, aX, aY, aZ;
std::list<double> aPrms;
newNodesItVec.reserve( elem->NbNodes() );
// loop on elem nodes
+ int nodeIndex = -1;
SMDS_ElemIteratorPtr itN = elem->nodesIterator();
- while ( itN->more() ) {
-
+ while ( itN->more() )
+ {
+ ++nodeIndex;
// check if a node has been already processed
const SMDS_MeshNode* node =
static_cast<const SMDS_MeshNode*>( itN->next() );
double z = ( aPN1.Z() + aPN0.Z() )/2.;
const SMDS_MeshNode* newNode = aMesh->AddNode(x,y,z);
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
}
aX = aPN1.X();
aZ = aPN1.Z();
const SMDS_MeshNode* newNode = aMesh->AddNode( aX, aY, aZ );
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
listNewNodes.push_back( newNode );
aPN0 = aPN1;
double y = ( N->Y() + P.Y() )/2.;
double z = ( N->Z() + P.Z() )/2.;
const SMDS_MeshNode* newN = aMesh->AddNode(x,y,z);
+ srcNodes.Append( node );
myLastCreatedNodes.Append(newN);
aNodes[2*i] = newN;
aNodes[2*i+1] = N;
// make new elements
//sweepElement( aMesh, elem, newNodesItVec, newElemsMap[elem],
// newNodesItVec[0]->second.size(), myLastCreatedElems );
- sweepElement( aMesh, elem, newNodesItVec, newElemsMap[elem],
- aNbTP-1, myLastCreatedElems );
+ sweepElement( elem, newNodesItVec, newElemsMap[elem], aNbTP-1, srcElems );
}
- makeWalls( aMesh, mapNewNodes, newElemsMap, mapElemNewNodes, theElements,
- aNbTP-1, myLastCreatedElems );
+ makeWalls( mapNewNodes, newElemsMap, mapElemNewNodes, theElements, aNbTP-1, srcElems );
+
+ if ( theMakeGroups )
+ generateGroups( srcNodes, srcElems, "extruded");
return EXTR_OK;
}
//purpose :
//=======================================================================
-void SMESH_MeshEditor::Transform (TIDSortedElemSet & theElems,
- const gp_Trsf& theTrsf,
- const bool theCopy)
+SMESH_MeshEditor::PGroupIDs
+SMESH_MeshEditor::Transform (TIDSortedElemSet & theElems,
+ const gp_Trsf& theTrsf,
+ const bool theCopy,
+ const bool theMakeGroups,
+ SMESH_Mesh* theTargetMesh)
{
myLastCreatedElems.Clear();
myLastCreatedNodes.Clear();
- bool needReverse;
+ bool needReverse = false;
+ string groupPostfix;
switch ( theTrsf.Form() ) {
case gp_PntMirror:
+ case gp_Ax1Mirror:
case gp_Ax2Mirror:
needReverse = true;
+ groupPostfix = "mirrored";
+ break;
+ case gp_Rotation:
+ groupPostfix = "rotated";
+ break;
+ case gp_Translation:
+ groupPostfix = "translated";
+ break;
+ case gp_Scale:
+ groupPostfix = "scaled";
break;
default:
needReverse = false;
+ groupPostfix = "transformed";
}
- SMESHDS_Mesh* aMesh = GetMeshDS();
+ SMESH_MeshEditor targetMeshEditor( theTargetMesh );
+ SMESHDS_Mesh* aTgtMesh = theTargetMesh ? theTargetMesh->GetMeshDS() : 0;
+ SMESHDS_Mesh* aMesh = GetMeshDS();
+
// map old node to new one
TNodeNodeMap nodeMap;
// nodes mirrored but are not in theElems are to be reversed
TIDSortedElemSet inverseElemSet;
+ // source elements for each generated one
+ SMESH_SequenceOfElemPtr srcElems, srcNodes;
+
// loop on theElems
TIDSortedElemSet::iterator itElem;
for ( itElem = theElems.begin(); itElem != theElems.end(); itElem++ ) {
while ( itN->more() ) {
// check if a node has been already transformed
- const SMDS_MeshNode* node =
- static_cast<const SMDS_MeshNode*>( itN->next() );
- if (nodeMap.find( node ) != nodeMap.end() )
+ const SMDS_MeshNode* node = cast2Node( itN->next() );
+ pair<TNodeNodeMap::iterator,bool> n2n_isnew =
+ nodeMap.insert( make_pair ( node, node ));
+ if ( !n2n_isnew.second )
continue;
double coord[3];
coord[1] = node->Y();
coord[2] = node->Z();
theTrsf.Transforms( coord[0], coord[1], coord[2] );
- const SMDS_MeshNode * newNode = node;
- if ( theCopy ) {
- newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
+ if ( theTargetMesh ) {
+ const SMDS_MeshNode * newNode = aTgtMesh->AddNode( coord[0], coord[1], coord[2] );
+ n2n_isnew.first->second = newNode;
myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
+ }
+ else if ( theCopy ) {
+ const SMDS_MeshNode * newNode = aMesh->AddNode( coord[0], coord[1], coord[2] );
+ n2n_isnew.first->second = newNode;
+ myLastCreatedNodes.Append(newNode);
+ srcNodes.Append( node );
}
else {
aMesh->MoveNode( node, coord[0], coord[1], coord[2] );
const_cast< SMDS_MeshNode* > ( node )->SetPosition
( SMDS_SpacePosition::originSpacePosition() );
}
- nodeMap.insert( TNodeNodeMap::value_type( node, newNode ));
// keep inverse elements
- if ( !theCopy && needReverse ) {
+ if ( !theCopy && !theTargetMesh && needReverse ) {
SMDS_ElemIteratorPtr invElemIt = node->GetInverseElementIterator();
while ( invElemIt->more() ) {
const SMDS_MeshElement* iel = invElemIt->next();
}
}
- // either new elements are to be created
- // or a mirrored element are to be reversed
- if ( !theCopy && !needReverse)
- return;
+ // either create new elements or reverse mirrored ones
+ if ( !theCopy && !needReverse && !theTargetMesh )
+ return PGroupIDs();
- if ( !inverseElemSet.empty()) {
- TIDSortedElemSet::iterator invElemIt = inverseElemSet.begin();
- for ( ; invElemIt != inverseElemSet.end(); invElemIt++ )
- theElems.insert( *invElemIt );
- }
+ TIDSortedElemSet::iterator invElemIt = inverseElemSet.begin();
+ for ( ; invElemIt != inverseElemSet.end(); invElemIt++ )
+ theElems.insert( *invElemIt );
// replicate or reverse elements
{ 0, 1, 2, 3, 4, 5, 6, 7 } // FORWARD
};
- for ( itElem = theElems.begin(); itElem != theElems.end(); itElem++ ) {
+ for ( itElem = theElems.begin(); itElem != theElems.end(); itElem++ )
+ {
const SMDS_MeshElement* elem = *itElem;
if ( !elem || elem->GetType() == SMDSAbs_Node )
continue;
if ( iNode != nbNodes )
continue; // not all nodes transformed
- if ( theCopy ) {
+ if ( theTargetMesh ) {
+ myLastCreatedElems.Append(aTgtMesh->AddPolygonalFace(poly_nodes));
+ srcElems.Append( elem );
+ }
+ else if ( theCopy ) {
myLastCreatedElems.Append(aMesh->AddPolygonalFace(poly_nodes));
+ srcElems.Append( elem );
}
else {
aMesh->ChangePolygonNodes(elem, poly_nodes);
{
// ATTENTION: Reversing is not yet done!!!
const SMDS_PolyhedralVolumeOfNodes* aPolyedre =
- (const SMDS_PolyhedralVolumeOfNodes*) elem;
+ dynamic_cast<const SMDS_PolyhedralVolumeOfNodes*>( elem );
if (!aPolyedre) {
MESSAGE("Warning: bad volumic element");
continue;
if ( !allTransformed )
continue; // not all nodes transformed
- if ( theCopy ) {
+ if ( theTargetMesh ) {
+ myLastCreatedElems.Append(aTgtMesh->AddPolyhedralVolume(poly_nodes, quantities));
+ srcElems.Append( elem );
+ }
+ else if ( theCopy ) {
myLastCreatedElems.Append(aMesh->AddPolyhedralVolume(poly_nodes, quantities));
+ srcElems.Append( elem );
}
else {
aMesh->ChangePolyhedronNodes(elem, poly_nodes, quantities);
}
}
break;
- default:;
- }
- continue;
+ default:;
}
+ continue;
+ }
- // Regular elements
- int* i = index[ FORWARD ];
- if ( needReverse && nbNodes > 2) // reverse mirrored faces and volumes
- if ( elemType == SMDSAbs_Face )
- i = index[ REV_FACE ];
- else
- i = index[ nbNodes - 4 ];
+ // Regular elements
+ int* i = index[ FORWARD ];
+ if ( needReverse && nbNodes > 2) // reverse mirrored faces and volumes
+ if ( elemType == SMDSAbs_Face )
+ i = index[ REV_FACE ];
+ else
+ i = index[ nbNodes - 4 ];
if(elem->IsQuadratic()) {
static int anIds[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
if ( iNode != nbNodes )
continue; // not all nodes transformed
- if ( theCopy ) {
- if ( SMDS_MeshElement* copy = AddElement( nodes, elem->GetType(), elem->IsPoly() ))
+ if ( theTargetMesh ) {
+ if ( SMDS_MeshElement* copy =
+ targetMeshEditor.AddElement( nodes, elem->GetType(), elem->IsPoly() )) {
myLastCreatedElems.Append( copy );
+ srcElems.Append( elem );
+ }
}
- else
- {
+ else if ( theCopy ) {
+ if ( SMDS_MeshElement* copy = AddElement( nodes, elem->GetType(), elem->IsPoly() )) {
+ myLastCreatedElems.Append( copy );
+ srcElems.Append( elem );
+ }
+ }
+ else {
// reverse element as it was reversed by transformation
if ( nbNodes > 2 )
aMesh->ChangeElementNodes( elem, &nodes[0], nbNodes );
}
}
+
+ PGroupIDs newGroupIDs;
+
+ if ( theMakeGroups && theCopy ||
+ theMakeGroups && theTargetMesh )
+ newGroupIDs = generateGroups( srcNodes, srcElems, groupPostfix, theTargetMesh );
+
+ return newGroupIDs;
+}
+
+//=======================================================================
+/*!
+ * \brief Create groups of elements made during transformation
+ * \param nodeGens - nodes making corresponding myLastCreatedNodes
+ * \param elemGens - elements making corresponding myLastCreatedElems
+ * \param postfix - to append to names of new groups
+ */
+//=======================================================================
+
+SMESH_MeshEditor::PGroupIDs
+SMESH_MeshEditor::generateGroups(const SMESH_SequenceOfElemPtr& nodeGens,
+ const SMESH_SequenceOfElemPtr& elemGens,
+ const std::string& postfix,
+ SMESH_Mesh* targetMesh)
+{
+ PGroupIDs newGroupIDs( new list<int> );
+ SMESH_Mesh* mesh = targetMesh ? targetMesh : GetMesh();
+
+ // Sort existing groups by types and collect their names
+
+ // to store an old group and a generated new one
+ typedef pair< SMESHDS_GroupBase*, SMDS_MeshGroup* > TOldNewGroup;
+ vector< list< TOldNewGroup > > groupsByType( SMDSAbs_NbElementTypes );
+ // group names
+ set< string > groupNames;
+ //
+ SMDS_MeshGroup* nullNewGroup = (SMDS_MeshGroup*) 0;
+ SMESH_Mesh::GroupIteratorPtr groupIt = GetMesh()->GetGroups();
+ while ( groupIt->more() ) {
+ SMESH_Group * group = groupIt->next();
+ if ( !group ) continue;
+ SMESHDS_GroupBase* groupDS = group->GetGroupDS();
+ if ( !groupDS || groupDS->IsEmpty() ) continue;
+ groupNames.insert( group->GetName() );
+ groupDS->SetStoreName( group->GetName() );
+ groupsByType[ groupDS->GetType() ].push_back( make_pair( groupDS, nullNewGroup ));
+ }
+
+ // Groups creation
+
+ // loop on nodes and elements
+ for ( int isNodes = 0; isNodes < 2; ++isNodes )
+ {
+ const SMESH_SequenceOfElemPtr& gens = isNodes ? nodeGens : elemGens;
+ const SMESH_SequenceOfElemPtr& elems = isNodes ? myLastCreatedNodes : myLastCreatedElems;
+ if ( gens.Length() != elems.Length() )
+ throw SALOME_Exception(LOCALIZED("invalid args"));
+
+ // loop on created elements
+ for (int iElem = 1; iElem <= elems.Length(); ++iElem )
+ {
+ const SMDS_MeshElement* sourceElem = gens( iElem );
+ if ( !sourceElem ) {
+ MESSAGE("generateGroups(): NULL source element");
+ continue;
+ }
+ list< TOldNewGroup > & groupsOldNew = groupsByType[ sourceElem->GetType() ];
+ if ( groupsOldNew.empty() ) {
+ while ( iElem < gens.Length() && gens( iElem+1 ) == sourceElem )
+ ++iElem; // skip all elements made by sourceElem
+ continue;
+ }
+ // collect all elements made by sourceElem
+ list< const SMDS_MeshElement* > resultElems;
+ if ( const SMDS_MeshElement* resElem = elems( iElem ))
+ if ( resElem != sourceElem )
+ resultElems.push_back( resElem );
+ while ( iElem < gens.Length() && gens( iElem+1 ) == sourceElem )
+ if ( const SMDS_MeshElement* resElem = elems( ++iElem ))
+ if ( resElem != sourceElem )
+ resultElems.push_back( resElem );
+ // do not generate element groups from node ones
+ if ( sourceElem->GetType() == SMDSAbs_Node &&
+ elems( iElem )->GetType() != SMDSAbs_Node )
+ continue;
+
+ // add resultElems to groups made by ones the sourceElem belongs to
+ list< TOldNewGroup >::iterator gOldNew, gLast = groupsOldNew.end();
+ for ( gOldNew = groupsOldNew.begin(); gOldNew != gLast; ++gOldNew )
+ {
+ SMESHDS_GroupBase* oldGroup = gOldNew->first;
+ if ( oldGroup->Contains( sourceElem )) // sourceElem in oldGroup
+ {
+ SMDS_MeshGroup* & newGroup = gOldNew->second;
+ if ( !newGroup )// create a new group
+ {
+ // make a name
+ string name = oldGroup->GetStoreName();
+ if ( !targetMesh ) {
+ name += "_";
+ name += postfix;
+ int nb = 0;
+ while ( !groupNames.insert( name ).second ) // name exists
+ {
+ if ( nb == 0 ) {
+ name += "_1";
+ }
+ else {
+ TCollection_AsciiString nbStr(nb+1);
+ name.resize( name.rfind('_')+1 );
+ name += nbStr.ToCString();
+ }
+ ++nb;
+ }
+ }
+ // make a group
+ int id;
+ SMESH_Group* group = mesh->AddGroup( resultElems.back()->GetType(),
+ name.c_str(), id );
+ SMESHDS_Group* groupDS = static_cast<SMESHDS_Group*>(group->GetGroupDS());
+ newGroup = & groupDS->SMDSGroup();
+ newGroupIDs->push_back( id );
+ }
+
+ // fill in a new group
+ list< const SMDS_MeshElement* >::iterator resLast = resultElems.end(), resElemIt;
+ for ( resElemIt = resultElems.begin(); resElemIt != resLast; ++resElemIt )
+ newGroup->Add( *resElemIt );
+ }
+ }
+ } // loop on created elements
+ }// loop on nodes and elements
+
+ return newGroupIDs;
}
//=======================================================================
int aShapeId = FindShape( elem );
set<const SMDS_MeshNode*> nodeSet;
- //const SMDS_MeshNode* curNodes[ nbNodes ], *uniqueNodes[ nbNodes ];
- const SMDS_MeshNode** curNodes = new const SMDS_MeshNode*[ nbNodes ];
- const SMDS_MeshNode** uniqueNodes = new const SMDS_MeshNode*[ nbNodes ];
-
+ vector< const SMDS_MeshNode*> curNodes( nbNodes ), uniqueNodes( nbNodes );
int iUnique = 0, iCur = 0, nbRepl = 0;
vector<int> iRepl( nbNodes );
}
else {
// Change regular element or polygon
- aMesh->ChangeElementNodes( elem, uniqueNodes, nbUniqueNodes );
+ aMesh->ChangeElementNodes( elem, & uniqueNodes[0], nbUniqueNodes );
}
}
else {
rmElemIds.push_back( elem->GetID() );
}
- delete curNodes;
- delete uniqueNodes;
} // loop on elements
// Remove equal nodes and bad elements
Remove( rmNodeIds, true );
Remove( rmElemIds, false );
+
}
const SMDS_MeshElement* elem = invElemIt->next();
// prepare data for a loop on links coming to prevSideNode, of a face or a volume
int iPrevNode, iNode = 0, nbNodes = elem->NbNodes();
- //const SMDS_MeshNode* faceNodes[ nbNodes ];
- const SMDS_MeshNode** faceNodes = new const SMDS_MeshNode*[ nbNodes ];
+ vector< const SMDS_MeshNode* > faceNodes( nbNodes, (const SMDS_MeshNode*)0 );
bool isVolume = volume.Set( elem );
- const SMDS_MeshNode** nodes = isVolume ? volume.GetNodes() : faceNodes;
+ const SMDS_MeshNode** nodes = isVolume ? volume.GetNodes() : & faceNodes[0];
if ( isVolume ) // --volume
hasVolumes = true;
- //else if ( nbNodes > 2 ) { // --face
else if ( elem->GetType()==SMDSAbs_Face ) { // --face
// retrieve all face nodes and find iPrevNode - an index of the prevSideNode
if(elem->IsQuadratic()) {
else {
SMDS_ElemIteratorPtr nIt = elem->nodesIterator();
while ( nIt->more() ) {
- nodes[ iNode ] = static_cast<const SMDS_MeshNode*>( nIt->next() );
+ nodes[ iNode ] = cast2Node( nIt->next() );
if ( nodes[ iNode++ ] == prevSideNode )
iPrevNode = iNode - 1;
}
}
}
}
- delete faceNodes;
} // loop on inverse elements of prevSideNode
if ( !sideNode ) {
{
nodeGroupsToMerge.push_back( list<const SMDS_MeshNode*>() );
nodeGroupsToMerge.back().push_back( *nIt[1] ); // to keep
- nodeGroupsToMerge.back().push_back( *nIt[0] ); // tp remove
+ nodeGroupsToMerge.back().push_back( *nIt[0] ); // to remove
}
}
else {
*/
//=======================================================================
-int SMESH_MeshEditor::ConvertElemToQuadratic(SMESHDS_SubMesh * theSm,
+int SMESH_MeshEditor::convertElemToQuadratic(SMESHDS_SubMesh * theSm,
SMESH_MesherHelper& theHelper,
const bool theForce3d)
{
SMESH_subMesh* sm = smIt->next();
if ( SMESHDS_SubMesh *smDS = sm->GetSubMeshDS() ) {
aHelper.SetSubShape( sm->GetSubShape() );
- nbCheckedElems += ConvertElemToQuadratic(smDS, aHelper, theForce3d);
+ nbCheckedElems += convertElemToQuadratic(smDS, aHelper, theForce3d);
}
}
}
*/
//=======================================================================
-int SMESH_MeshEditor::RemoveQuadElem(SMESHDS_SubMesh * theSm,
+int SMESH_MeshEditor::removeQuadElem(SMESHDS_SubMesh * theSm,
SMDS_ElemIteratorPtr theItr,
const int theShapeID)
{
while ( smIt->more() ) {
SMESH_subMesh* sm = smIt->next();
if ( SMESHDS_SubMesh *smDS = sm->GetSubMeshDS() )
- nbCheckedElems += RemoveQuadElem( smDS, smDS->GetElements(), sm->GetId() );
+ nbCheckedElems += removeQuadElem( smDS, smDS->GetElements(), sm->GetId() );
}
}
}
if ( nbCheckedElems < totalNbElems ) // not all elements in submeshes
{
SMESHDS_SubMesh *aSM = 0;
- RemoveQuadElem( aSM, GetMeshDS()->elementsIterator(), 0 );
+ removeQuadElem( aSM, GetMeshDS()->elementsIterator(), 0 );
}
return true;
*/
//================================================================================
+#ifdef _DEBUG_
//#define DEBUG_MATCHING_NODES
+#endif
SMESH_MeshEditor::Sew_Error
SMESH_MeshEditor::FindMatchingNodes(set<const SMDS_MeshElement*>& theSide1,
// If the2D, smoothing is performed using UV parameters of nodes
// on geometrical faces
-
- void RotationSweep (TIDSortedElemSet & theElements,
- const gp_Ax1& theAxis,
- const double theAngle,
- const int theNbSteps,
- const double theToler,
- const bool theMakeWalls=true);
+ typedef std::auto_ptr< std::list<int> > PGroupIDs;
+
+ PGroupIDs RotationSweep (TIDSortedElemSet & theElements,
+ const gp_Ax1& theAxis,
+ const double theAngle,
+ const int theNbSteps,
+ const double theToler,
+ const bool theMakeGroups,
+ const bool theMakeWalls=true);
// Generate new elements by rotation of theElements around theAxis
// by theAngle by theNbSteps
* param theTolerance - uses for comparing locations of nodes if flag
* EXTRUSION_FLAG_SEW is set
*/
- void ExtrusionSweep
- (TIDSortedElemSet & theElems,
- const gp_Vec& theStep,
- const int theNbSteps,
- TElemOfElemListMap& newElemsMap,
- const int theFlags = EXTRUSION_FLAG_BOUNDARY,
- const double theTolerance = 1.e-6);
+ PGroupIDs ExtrusionSweep (TIDSortedElemSet & theElems,
+ const gp_Vec& theStep,
+ const int theNbSteps,
+ TElemOfElemListMap& newElemsMap,
+ const bool theMakeGroups,
+ const int theFlags = EXTRUSION_FLAG_BOUNDARY,
+ const double theTolerance = 1.e-6);
/*!
* Generate new elements by extrusion of theElements
* EXTRUSION_FLAG_SEW is set
* param theParams - special structure for manage of extrusion
*/
- void ExtrusionSweep (TIDSortedElemSet & theElems,
- ExtrusParam& theParams,
- TElemOfElemListMap& newElemsMap,
- const int theFlags,
- const double theTolerance);
+ PGroupIDs ExtrusionSweep (TIDSortedElemSet & theElems,
+ ExtrusParam& theParams,
+ TElemOfElemListMap& newElemsMap,
+ const bool theMakeGroups,
+ const int theFlags,
+ const double theTolerance);
// Generate new elements by extrusion of theElements
const bool theHasAngles,
std::list<double>& theAngles,
const bool theHasRefPoint,
- const gp_Pnt& theRefPoint);
+ const gp_Pnt& theRefPoint,
+ const bool theMakeGroups);
// Generate new elements by extrusion of theElements along path given by theTrackPattern,
// theHasAngles are the rotation angles, base point can be given by theRefPoint
- void Transform (TIDSortedElemSet & theElements,
- const gp_Trsf& theTrsf,
- const bool theCopy);
+ PGroupIDs Transform (TIDSortedElemSet & theElements,
+ const gp_Trsf& theTrsf,
+ const bool theCopy,
+ const bool theMakeGroups,
+ SMESH_Mesh* theTargetMesh=0);
// Move or copy theElements applying theTrsf to their nodes
typedef std::list< std::list< const SMDS_MeshNode* > > TListOfListOfNodes;
* \brief Convert elements contained in a submesh to quadratic
* \retval int - nb of checked elements
*/
- int ConvertElemToQuadratic(SMESHDS_SubMesh * theSm,
+ int convertElemToQuadratic(SMESHDS_SubMesh * theSm,
SMESH_MesherHelper& theHelper,
const bool theForce3d);
* \brief Convert quadratic elements to linear ones and remove quadratic nodes
* \retval int - nb of checked elements
*/
- int RemoveQuadElem( SMESHDS_SubMesh * theSm,
+ int removeQuadElem( SMESHDS_SubMesh * theSm,
SMDS_ElemIteratorPtr theItr,
const int theShapeID);
- //Auxiliary function for "ConvertFromQuadratic" is intended to
+ /*!
+ * \brief Create groups of elements made during transformation
+ * \param nodeGens - nodes making corresponding myLastCreatedNodes
+ * \param elemGens - elements making corresponding myLastCreatedElems
+ * \param postfix - to append to names of new groups
+ */
+ PGroupIDs generateGroups(const SMESH_SequenceOfElemPtr& nodeGens,
+ const SMESH_SequenceOfElemPtr& elemGens,
+ const std::string& postfix,
+ SMESH_Mesh* targetMesh=0);
+
+
+ typedef std::map<const SMDS_MeshNode*, std::list<const SMDS_MeshNode*> > TNodeOfNodeListMap;
+ typedef TNodeOfNodeListMap::iterator TNodeOfNodeListMapItr;
+ typedef std::vector<TNodeOfNodeListMapItr> TVecOfNnlmiMap;
+ typedef std::map<const SMDS_MeshElement*, TVecOfNnlmiMap > TElemOfVecOfNnlmiMap;
+ /*!
+ * \brief Create elements by sweeping an element
+ * \param elem - element to sweep
+ * \param newNodesItVec - nodes generated from each node of the element
+ * \param newElems - generated elements
+ * \param nbSteps - number of sweeping steps
+ * \param srcElements - to append elem for each generated element
+ */
+ void sweepElement(const SMDS_MeshElement* elem,
+ const std::vector<TNodeOfNodeListMapItr> & newNodesItVec,
+ std::list<const SMDS_MeshElement*>& newElems,
+ const int nbSteps,
+ SMESH_SequenceOfElemPtr& srcElements);
+
+ /*!
+ * \brief Create 1D and 2D elements around swept elements
+ * \param mapNewNodes - source nodes and ones generated from them
+ * \param newElemsMap - source elements and ones generated from them
+ * \param elemNewNodesMap - nodes generated from each node of each element
+ * \param elemSet - all swept elements
+ * \param nbSteps - number of sweeping steps
+ * \param srcElements - to append elem for each generated element
+ */
+ void makeWalls (TNodeOfNodeListMap & mapNewNodes,
+ TElemOfElemListMap & newElemsMap,
+ TElemOfVecOfNnlmiMap & elemNewNodesMap,
+ TIDSortedElemSet& elemSet,
+ const int nbSteps,
+ SMESH_SequenceOfElemPtr& srcElements);
private:
SMESH_Mesh * myMesh;
#include <Geom2d_Curve.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
+#include <ShapeAnalysis.hxx>
+#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
+#include <TopoDS.hxx>
#include <gp_Pnt2d.hxx>
-#include <ShapeAnalysis.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx>
// also we have to fill myNLinkNodeMap
myCreateQuadratic = true;
mySeamShapeIds.clear();
+ myDegenShapeIds.clear();
TopAbs_ShapeEnum subType( aSh.ShapeType()==TopAbs_FACE ? TopAbs_EDGE : TopAbs_FACE );
SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge );
myShape = aSh;
mySeamShapeIds.clear();
+ myDegenShapeIds.clear();
if ( myShape.IsNull() ) {
myShapeID = -1;
BRepAdaptor_Surface surface( face );
if ( surface.IsUPeriodic() || surface.IsVPeriodic() )
{
- // look for a seam edge
- for ( TopExp_Explorer exp( face, TopAbs_EDGE ); exp.More(); exp.Next()) {
+ for ( TopExp_Explorer exp( face, TopAbs_EDGE ); exp.More(); exp.Next())
+ {
+ // look for a seam edge
const TopoDS_Edge& edge = TopoDS::Edge( exp.Current() );
if ( BRep_Tool::IsClosed( edge, face )) {
// initialize myPar1, myPar2 and myParIndex
}
}
// store shapes indices
- mySeamShapeIds.insert( meshDS->ShapeToIndex( exp.Current() ));
- for ( TopExp_Explorer v( exp.Current(), TopAbs_VERTEX ); v.More(); v.Next() )
+ mySeamShapeIds.insert( meshDS->ShapeToIndex( edge ));
+ for ( TopExp_Explorer v( edge, TopAbs_VERTEX ); v.More(); v.Next() )
mySeamShapeIds.insert( meshDS->ShapeToIndex( v.Current() ));
}
+
+ // look for a degenerated edge
+ if ( BRep_Tool::Degenerated( edge )) {
+ myDegenShapeIds.insert( meshDS->ShapeToIndex( edge ));
+ for ( TopExp_Explorer v( edge, TopAbs_VERTEX ); v.More(); v.Next() )
+ myDegenShapeIds.insert( meshDS->ShapeToIndex( v.Current() ));
+ }
}
}
}
return true;
}
+
+/**
+ * Check mesh without geometry for: if all elements on this shape are quadratic,
+ * quadratic elements will be created.
+ * Used then generated 3D mesh without geometry.
+ */
+SMESH_MesherHelper:: MType SMESH_MesherHelper::IsQuadraticMesh()
+{
+ int NbAllEdgsAndFaces=0;
+ int NbQuadFacesAndEdgs=0;
+ int NbFacesAndEdges=0;
+ //All faces and edges
+ NbAllEdgsAndFaces = myMesh->NbEdges() + myMesh->NbFaces();
+
+ //Quadratic faces and edges
+ NbQuadFacesAndEdgs = myMesh->NbEdges(ORDER_QUADRATIC) + myMesh->NbFaces(ORDER_QUADRATIC);
+
+ //Linear faces and edges
+ NbFacesAndEdges = myMesh->NbEdges(ORDER_LINEAR) + myMesh->NbFaces(ORDER_LINEAR);
+
+ if (NbAllEdgsAndFaces == NbQuadFacesAndEdgs) {
+ //Quadratic mesh
+ return SMESH_MesherHelper::QUADRATIC;
+ }
+ else if (NbAllEdgsAndFaces == NbFacesAndEdges) {
+ //Linear mesh
+ return SMESH_MesherHelper::LINEAR;
+ }
+ else
+ //Mesh with both type of elements
+ return SMESH_MesherHelper::COMP;
+}
+
*/
bool GetNodeUVneedInFaceNode(const TopoDS_Face& F = TopoDS_Face()) const;
+ /*!
+ * \brief Check if shape is a degenerated edge or it's vertex
+ * \param subShape - edge or vertex index in SMESHDS
+ * \retval bool - true if subShape is a degenerated shape
+ *
+ * It works only if IsQuadraticSubMesh() or SetSubShape() has been called
+ */
+ bool IsDegenShape(const int subShape) const
+ { return myDegenShapeIds.find( subShape ) != myDegenShapeIds.end(); }
/*!
* \brief Check if shape is a seam edge or it's vertex
* \param subShape - edge or vertex index in SMESHDS
*/
const NLinkNodeMap& GetNLinkNodeMap() const { return myNLinkNodeMap; }
+ /**
+ * Check mesh without geometry for: if all elements on this shape are quadratic,
+ * quadratic elements will be created.
+ * Used then generated 3D mesh without geometry.
+ */
+ enum MType{ LINEAR, QUADRATIC, COMP };
+ MType IsQuadraticMesh();
+
protected:
/*!
// Forbiden copy constructor
SMESH_MesherHelper (const SMESH_MesherHelper& theOther) {};
- // special map for using during creation quadratic faces
+ // special map for using during creation of quadratic elements
NLinkNodeMap myNLinkNodeMap;
+ std::set< int > myDegenShapeIds;
std::set< int > mySeamShapeIds;
double myPar1, myPar2; // bounds of a closed periodic surface
int myParIndex; // bounds' index (1-U, 2-V)
#include <GeomAdaptor_Surface.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
-#include <IntAna2d_AnaIntersection.hxx>
+//#include <IntAna2d_AnaIntersection.hxx>
#include <TopAbs_ShapeEnum.hxx>
#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopLoc_Location.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Shell.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Wire.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <gp_Ax2.hxx>
#include <gp_Lin2d.hxx>
#include <gp_Pnt2d.hxx>
gp_XY loc1 = uv11 * ( 1 - r1 ) + uv12 * r1;
gp_XY loc2 = uv21 * ( 1 - r2 ) + uv22 * r2;
resUV = 0.5 * ( loc1 + loc2 );
- isDeformed = ( loc1 - loc2 ).SquareModulus() > 1e-8;
+ //isDeformed = ( loc1 - loc2 ).SquareModulus() > 1e-8;
+ // SKL 26.07.2007 for NPAL16567
+ double d1 = (uv11-uv12).Modulus();
+ double d2 = (uv21-uv22).Modulus();
+ // double delta = d1*d2*1e-6; PAL17233
+ double delta = min( d1, d2 ) / 10.;
+ isDeformed = ( loc1 - loc2 ).SquareModulus() > delta * delta;
+
// double len1 = ( uv11 - uv12 ).Modulus();
// double len2 = ( uv21 - uv22 ).Modulus();
// resUV = loc1 * len2 / ( len1 + len2 ) + loc2 * len1 / ( len1 + len2 );
// resUV /= 2.;
// }
+ if ( isDeformed ) {
+ MESSAGE("intersectIsolines(), d1 = " << d1 << ", d2 = " << d2 << ", delta = " << delta <<
+ ", " << (loc1 - loc2).SquareModulus() << " > " << delta * delta);
+ }
return true;
}
compUVByElasticIsolines(const list< list< TPoint* > >& theBndPoints,
const list< TPoint* >& thePntToCompute)
{
- //return false;
+ return false; // PAL17233
//cout << "============================== KEY POINTS =============================="<<endl;
// list< int >::iterator kpIt = myKeyPointIDs.begin();
// for ( ; kpIt != myKeyPointIDs.end(); kpIt++ ) {
return setErrorCode( ERR_OK );
}
+//=======================================================================
+//function : Apply
+//purpose : Compute nodes coordinates applying
+// the loaded pattern to <theFace>. The first key-point
+// will be mapped into <theNodeIndexOnKeyPoint1>-th node
+//=======================================================================
+
+bool SMESH_Pattern::Apply (SMESH_Mesh* theMesh,
+ const SMDS_MeshFace* theFace,
+ const TopoDS_Shape& theSurface,
+ const int theNodeIndexOnKeyPoint1,
+ const bool theReverse)
+{
+// MESSAGE(" ::Apply(MeshFace) " );
+ if ( theSurface.IsNull() || theSurface.ShapeType() != TopAbs_FACE ) {
+ return Apply( theFace, theNodeIndexOnKeyPoint1, theReverse);
+ }
+ const TopoDS_Face& face = TopoDS::Face( theSurface );
+ TopLoc_Location loc;
+ Handle(Geom_Surface) surface = BRep_Tool::Surface( face, loc );
+ const gp_Trsf & aTrsf = loc.Transformation();
+
+ if ( !IsLoaded() ) {
+ MESSAGE( "Pattern not loaded" );
+ return setErrorCode( ERR_APPL_NOT_LOADED );
+ }
+
+ // check nb of nodes
+ if (theFace->NbNodes() != myNbKeyPntInBoundary.front() ) {
+ MESSAGE( myKeyPointIDs.size() << " != " << theFace->NbNodes() );
+ return setErrorCode( ERR_APPL_BAD_NB_VERTICES );
+ }
+
+ // find points on edges, it fills myNbKeyPntInBoundary
+ if ( !findBoundaryPoints() )
+ return false;
+
+ // check that there are no holes in a pattern
+ if (myNbKeyPntInBoundary.size() > 1 ) {
+ return setErrorCode( ERR_APPL_BAD_NB_VERTICES );
+ }
+
+ // Define the nodes order
+
+ list< const SMDS_MeshNode* > nodes;
+ list< const SMDS_MeshNode* >::iterator n = nodes.end();
+ SMDS_ElemIteratorPtr noIt = theFace->nodesIterator();
+ int iSub = 0;
+ while ( noIt->more() ) {
+ const SMDS_MeshNode* node = smdsNode( noIt->next() );
+ nodes.push_back( node );
+ if ( iSub++ == theNodeIndexOnKeyPoint1 )
+ n = --nodes.end();
+ }
+ if ( n != nodes.end() ) {
+ if ( theReverse ) {
+ if ( n != --nodes.end() )
+ nodes.splice( nodes.begin(), nodes, ++n, nodes.end() );
+ nodes.reverse();
+ }
+ else if ( n != nodes.begin() )
+ nodes.splice( nodes.end(), nodes, nodes.begin(), n );
+ }
+
+ // find a node not on a seam edge, if necessary
+ SMESH_MesherHelper helper( *theMesh );
+ helper.SetSubShape( theSurface );
+ const SMDS_MeshNode* inFaceNode = 0;
+ if ( helper.GetNodeUVneedInFaceNode() )
+ {
+ SMESH_MeshEditor editor( theMesh );
+ for ( n = nodes.begin(); ( !inFaceNode && n != nodes.end()); ++n ) {
+ int shapeID = editor.FindShape( *n );
+ if ( !shapeID )
+ return Apply( theFace, theNodeIndexOnKeyPoint1, theReverse);
+ if ( !helper.IsSeamShape( shapeID ))
+ inFaceNode = *n;
+ }
+ }
+
+ // Set UV of key-points (i.e. of nodes of theFace )
+ vector< gp_XY > keyUV( theFace->NbNodes() );
+ myOrderedNodes.resize( theFace->NbNodes() );
+ for ( iSub = 1, n = nodes.begin(); n != nodes.end(); ++n, ++iSub )
+ {
+ TPoint* p = getShapePoints( iSub ).front();
+ p->myUV = helper.GetNodeUV( face, *n, inFaceNode );
+ p->myXYZ = gp_XYZ( (*n)->X(), (*n)->Y(), (*n)->Z() );
+
+ keyUV[ iSub-1 ] = p->myUV;
+ myOrderedNodes[ iSub-1 ] = *n;
+ }
+
+ // points on edges to be used for UV computation of in-face points
+ list< list< TPoint* > > edgesPointsList;
+ edgesPointsList.push_back( list< TPoint* >() );
+ list< TPoint* > * edgesPoints = & edgesPointsList.back();
+ list< TPoint* >::iterator pIt;
+
+ // compute UV and XYZ of points on edges
+
+ for ( int i = 0; i < myOrderedNodes.size(); ++i, ++iSub )
+ {
+ gp_XY& uv1 = keyUV[ i ];
+ gp_XY& uv2 = ( i+1 < keyUV.size() ) ? keyUV[ i+1 ] : keyUV[ 0 ];
+
+ list< TPoint* > & ePoints = getShapePoints( iSub );
+ ePoints.back()->myInitU = 1.0;
+ list< TPoint* >::const_iterator pIt = ++ePoints.begin();
+ while ( *pIt != ePoints.back() )
+ {
+ TPoint* p = *pIt++;
+ p->myUV = uv1 * ( 1 - p->myInitU ) + uv2 * p->myInitU;
+ p->myXYZ = surface->Value( p->myUV.X(), p->myUV.Y() );
+ if ( !loc.IsIdentity() )
+ aTrsf.Transforms( p->myXYZ.ChangeCoord() );
+ }
+ // collect on-edge points (excluding the last one)
+ edgesPoints->insert( edgesPoints->end(), ePoints.begin(), --ePoints.end());
+ }
+
+ // Compute UV and XYZ of in-face points
+
+ // try to use a simple algo to compute UV
+ list< TPoint* > & fPoints = getShapePoints( iSub );
+ bool isDeformed = false;
+ for ( pIt = fPoints.begin(); !isDeformed && pIt != fPoints.end(); pIt++ )
+ if ( !compUVByIsoIntersection( edgesPointsList, (*pIt)->myInitUV,
+ (*pIt)->myUV, isDeformed )) {
+ MESSAGE("cant Apply(face)");
+ return false;
+ }
+ // try to use a complex algo if it is a difficult case
+ if ( isDeformed && !compUVByElasticIsolines( edgesPointsList, fPoints ))
+ {
+ for ( ; pIt != fPoints.end(); pIt++ ) // continue with the simple algo
+ if ( !compUVByIsoIntersection( edgesPointsList, (*pIt)->myInitUV,
+ (*pIt)->myUV, isDeformed )) {
+ MESSAGE("cant Apply(face)");
+ return false;
+ }
+ }
+
+ for ( pIt = fPoints.begin(); pIt != fPoints.end(); pIt++ )
+ {
+ TPoint * point = *pIt;
+ point->myXYZ = surface->Value( point->myUV.X(), point->myUV.Y() );
+ if ( !loc.IsIdentity() )
+ aTrsf.Transforms( point->myXYZ.ChangeCoord() );
+ }
+
+ myIsComputed = true;
+
+ return setErrorCode( ERR_OK );
+}
+
//=======================================================================
//function : undefinedXYZ
//purpose :
// will be mapped into <theNodeIndexOnKeyPoint1>-th node
//=======================================================================
-bool SMESH_Pattern::Apply (std::set<const SMDS_MeshFace*>& theFaces,
+bool SMESH_Pattern::Apply (SMESH_Mesh* theMesh,
+ std::set<const SMDS_MeshFace*>& theFaces,
const int theNodeIndexOnKeyPoint1,
const bool theReverse)
{
int ind1 = 0; // lowest point index for a face
+ // meshed geometry
+ TopoDS_Shape shape;
+// int shapeID = 0;
+// SMESH_MeshEditor editor( theMesh );
+
// apply to each face in theFaces set
set<const SMDS_MeshFace*>::iterator face = theFaces.begin();
for ( ; face != theFaces.end(); ++face )
{
- if ( !Apply( *face, theNodeIndexOnKeyPoint1, theReverse )) {
+// int curShapeId = editor.FindShape( *face );
+// if ( curShapeId != shapeID ) {
+// if ( curShapeId )
+// shape = theMesh->GetMeshDS()->IndexToShape( curShapeId );
+// else
+// shape.Nullify();
+// shapeID = curShapeId;
+// }
+ bool ok;
+ if ( shape.IsNull() )
+ ok = Apply( *face, theNodeIndexOnKeyPoint1, theReverse );
+ else
+ ok = Apply( theMesh, *face, shape, theNodeIndexOnKeyPoint1, theReverse );
+ if ( !ok ) {
MESSAGE( "Failed on " << *face );
continue;
}
SMESH_subMesh * subMesh;
if ( !myShape.IsNull() ) {
- subMesh = theMesh->GetSubMeshContaining( myShape );
+ subMesh = theMesh->GetSubMesh( myShape );
if ( subMesh )
subMesh->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
}
// the loaded pattern to <theFace>. The first key-point
// will be mapped into <theNodeIndexOnKeyPoint1>-th node
- bool Apply (std::set<const SMDS_MeshFace*>& theFaces,
+ bool Apply (SMESH_Mesh* theMesh,
+ const SMDS_MeshFace* theFace,
+ const TopoDS_Shape& theSurface,
+ const int theNodeIndexOnKeyPoint1,
+ const bool theReverse);
+ // Compute nodes coordinates applying
+ // the loaded pattern to <theFace>. The first key-point
+ // will be mapped into <theNodeIndexOnKeyPoint1>-th node
+
+ bool Apply (SMESH_Mesh* theMesh,
+ std::set<const SMDS_MeshFace*>& theFaces,
const int theNodeIndexOnKeyPoint1,
const bool theReverse);
// Compute nodes coordinates applying
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <TopExp.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_MapOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Compound.hxx>
#include <gp_Pnt.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS_Iterator.hxx>
-#include <Standard_Failure.hxx>
+#include <Standard_OutOfMemory.hxx>
#include <Standard_ErrorHandler.hxx>
using namespace std;
+//=============================================================================
+/*!
+ * \brief Allocate some memory at construction and release it at destruction.
+ * Is used to be able to continue working after mesh generation breaks due to
+ * lack of memory
+ */
+//=============================================================================
+
+struct MemoryReserve
+{
+ char* myBuf;
+ MemoryReserve(): myBuf( new char[1024*1024*2] ){}
+ ~MemoryReserve() { delete [] myBuf; }
+};
+
//=============================================================================
/*!
* default constructor:
case TopAbs_SOLID:
{
//MESSAGE("solid");
- for (TopExp_Explorer exp(_subShape, TopAbs_FACE); exp.More();
- exp.Next())
- {
- InsertDependence(exp.Current());
+ if(_father->HasShapeToMesh()) {
+ for (TopExp_Explorer exp(_subShape, TopAbs_FACE); exp.More();
+ exp.Next())
+ {
+ InsertDependence(exp.Current());
+ }
}
break;
}
bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) const
{
int aHypDim = theHypothesis->GetDim();
- int aShapeDim = SMESH_Gen::GetShapeDim(_subShape);
- if ( aHypDim <= aShapeDim )
- return true;
+ if(_father->HasShapeToMesh()) {
+ int aShapeDim = SMESH_Gen::GetShapeDim(_subShape);
+ if ( aHypDim <= aShapeDim )
+ return true;
+ }
+ else
+ //Only 3D hypothesis may be assigned to the mesh w/o geometry
+ return aHypDim == 3;
// if ( aHypDim < aShapeDim )
// return ( _father->IsMainShape( _subShape ));
// check if a shape needed by algo is present
// -------------------------------------------
algo = static_cast< SMESH_Algo* >( anHyp );
- if ( !_father->HasShapeToMesh() && algo->NeedShape() )
- return SMESH_Hypothesis::HYP_BAD_GEOMETRY;
+ if(_father->GetShapeToMesh() != SMESH_Mesh::PseudoShape())
+ if ( !_father->HasShapeToMesh() && algo->NeedShape() )
+ return SMESH_Hypothesis::HYP_BAD_GEOMETRY;
// ----------------------
// check mesh conformity
// ----------------------
if ( ! CanAddHypothesis( anHyp )) // check dimension
return SMESH_Hypothesis::HYP_BAD_DIM;
+ if(anHyp->GetDim() == 3 && !_father->HasShapeToMesh()
+ && event == ADD_ALGO) {
+ //Only NETGEN_3D and GHS3D_3D can be assigned to the Mesh w/o geometryy
+ bool isNetgen3D = (strcmp( "NETGEN_3D", anHyp->GetName()) == 0);
+ bool isGhs3d = (strcmp( "GHS3D_3D", anHyp->GetName()) == 0);
+ if( !isNetgen3D && !isGhs3d)
+ return SMESH_Hypothesis::HYP_BAD_DIM;
+ }
+
+
+
if ( /*!anHyp->IsAuxiliary() &&*/ GetSimilarAttached( _subShape, anHyp ) )
return SMESH_Hypothesis::HYP_ALREADY_EXIST;
if ( !meshDS->AddHypothesis(_subShape, anHyp))
return SMESH_Hypothesis::HYP_ALREADY_EXIST;
-
- // Serve Propagation of 1D hypothesis
- // NOTE: it is possible to re-implement Propagation using EventListener
- if (event == ADD_HYP) {
- bool isPropagationOk = true;
- bool isPropagationHyp = ( strcmp( "Propagation", anHyp->GetName() ) == 0 );
-
- if ( isPropagationHyp ) {
- TopExp_Explorer exp (_subShape, TopAbs_EDGE);
- TopTools_MapOfShape aMap;
- for (; exp.More(); exp.Next()) {
- if (aMap.Add(exp.Current())) {
- if (!_father->BuildPropagationChain(exp.Current())) {
- isPropagationOk = false;
- }
- }
- }
- }
- else if (anHyp->GetDim() == 1) { // Only 1D hypothesis can be propagated
- TopExp_Explorer exp (_subShape, TopAbs_EDGE);
- TopTools_MapOfShape aMap;
- for (; exp.More(); exp.Next()) {
- if (aMap.Add(exp.Current())) {
- TopoDS_Shape aMainEdge;
- if (_father->IsPropagatedHypothesis(exp.Current(), aMainEdge)) {
- isPropagationOk = _father->RebuildPropagationChains();
- } else if (_father->IsPropagationHypothesis(exp.Current())) {
- isPropagationOk = _father->BuildPropagationChain(exp.Current());
- } else {
- }
- }
- }
- } else {
- }
-
- if ( isPropagationOk ) {
- if ( isPropagationHyp )
- return ret; // nothing more to do for "Propagation" hypothesis
- }
- else if ( ret < SMESH_Hypothesis::HYP_CONCURENT) {
- ret = SMESH_Hypothesis::HYP_CONCURENT;
- }
- } // Serve Propagation of 1D hypothesis
}
// --------------------------
if (!meshDS->RemoveHypothesis(_subShape, anHyp))
return SMESH_Hypothesis::HYP_OK; // nothing changes
- // Serve Propagation of 1D hypothesis
- // NOTE: it is possible to re-implement Propagation using EventListener
- if (event == REMOVE_HYP)
- {
- bool isPropagationOk = true;
- SMESH_HypoFilter propagFilter( SMESH_HypoFilter::HasName( "Propagation" ));
- bool isPropagationHyp = propagFilter.IsOk( anHyp, _subShape );
-
- if ( isPropagationHyp )
- {
- TopExp_Explorer exp (_subShape, TopAbs_EDGE);
- TopTools_MapOfShape aMap;
- for (; exp.More(); exp.Next()) {
- if (aMap.Add(exp.Current()) &&
- !_father->GetHypothesis( exp.Current(), propagFilter, true )) {
- // no more Propagation on the current edge
- if (!_father->RemovePropagationChain(exp.Current())) {
- return SMESH_Hypothesis::HYP_UNKNOWN_FATAL;
- }
- }
- }
- // rebuild propagation chains, because removing one
- // chain can resolve concurention, existing before
- isPropagationOk = _father->RebuildPropagationChains();
- }
- else if (anHyp->GetDim() == 1) // Only 1D hypothesis can be propagated
- {
- isPropagationOk = _father->RebuildPropagationChains();
- }
-
- if ( isPropagationOk ) {
- if ( isPropagationHyp )
- return ret; // nothing more to do for "Propagation" hypothesis
- }
- else if ( ret < SMESH_Hypothesis::HYP_CONCURENT) {
- ret = SMESH_Hypothesis::HYP_CONCURENT;
- }
- } // Serve Propagation of 1D hypothesis
- else // event == REMOVE_ALGO
+ if (event == REMOVE_ALGO)
{
algo = dynamic_cast<SMESH_Algo*> (anHyp);
if (!algo->NeedDescretBoundary())
if ( stateChange && oldAlgoState == HYP_OK ) { // hyp becomes KO
DeleteOwnListeners();
+ SetIsAlwaysComputed( false );
if (_subShape.ShapeType() == TopAbs_VERTEX ) {
// restore default states
_algoState = HYP_OK;
_computeState = FAILED_TO_COMPUTE;
if ( !algo->NeedDescretBoundary() )
_computeError =
- SMESH_ComputeError::New(COMPERR_BAD_INPUT_MESH,"Unexpected submesh",algo);
+ SMESH_ComputeError::New(COMPERR_BAD_INPUT_MESH,
+ "Unexpected computed submesh",algo);
break;
}
}
// compute
- CleanDependants();
- RemoveSubMeshElementsAndNodes();
+// CleanDependants(); for "UseExisting_*D" algos
+// RemoveSubMeshElementsAndNodes();
ret = false;
_computeState = FAILED_TO_COMPUTE;
_computeError = SMESH_ComputeError::New(COMPERR_OK,"",algo);
+ TopoDS_Shape shape = _subShape;
try {
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
#endif
algo->InitComputeError();
+ MemoryReserve aMemoryReserve;
+ SMDS_Mesh::CheckMemory();
if ( !_father->HasShapeToMesh() ) // no shape
{
SMESH_MesherHelper helper( *_father );
- helper.SetSubShape( _subShape );
+ helper.SetSubShape( shape );
helper.SetElementsOnShape( true );
ret = algo->Compute(*_father, &helper );
}
else
{
- if (!algo->NeedDescretBoundary() && !algo->OnlyUnaryInput()) {
- ret = ApplyToCollection( algo, GetCollection( gen, algo ) );
- break;
- }
- else {
- ret = algo->Compute((*_father), _subShape);
+ if (!algo->OnlyUnaryInput()) {
+ shape = GetCollection( gen, algo );
}
+ ret = algo->Compute((*_father), shape);
}
if ( !ret )
_computeError = algo->GetComputeError();
}
- catch (Standard_Failure& exc) {
+ catch ( std::bad_alloc& exc ) {
+ printf("std::bad_alloc thrown inside algo->Compute()\n");
+ if ( _computeError ) {
+ _computeError->myName = COMPERR_MEMORY_PB;
+ //_computeError->myComment = exc.what();
+ }
+ cleanSubMesh( this );
+ throw exc;
+ }
+ catch ( Standard_OutOfMemory& exc ) {
+ printf("Standard_OutOfMemory thrown inside algo->Compute()\n");
+ if ( _computeError ) {
+ _computeError->myName = COMPERR_MEMORY_PB;
+ //_computeError->myComment = exc.what();
+ }
+ cleanSubMesh( this );
+ throw std::bad_alloc();
+ }
+ catch (Standard_Failure& ex) {
if ( !_computeError ) _computeError = SMESH_ComputeError::New();
_computeError->myName = COMPERR_OCC_EXCEPTION;
- _computeError->myComment = exc.GetMessageString();
+ _computeError->myComment += ex.DynamicType()->Name();
+ if ( ex.GetMessageString() && strlen( ex.GetMessageString() )) {
+ _computeError->myComment += ": ";
+ _computeError->myComment += ex.GetMessageString();
+ }
}
catch ( SALOME_Exception& S_ex ) {
if ( !_computeError ) _computeError = SMESH_ComputeError::New();
_computeError->myName = COMPERR_SLM_EXCEPTION;
_computeError->myComment = S_ex.what();
}
- catch ( std::bad_alloc& exc ) {
- if ( _computeError ) {
- _computeError->myName = COMPERR_MEMORY_PB;
- _computeError->myComment = exc.what();
- }
- throw exc;
- }
catch ( std::exception& exc ) {
if ( !_computeError ) _computeError = SMESH_ComputeError::New();
_computeError->myName = COMPERR_STD_EXCEPTION;
else
ret = false;
}
- if ( ret && _computeError && !_computeError->IsOK() ) {
- ret = false;
- }
if (ret && !_alwaysComputed) { // check if anything was built
ret = ( GetSubMeshDS() && ( GetSubMeshDS()->NbElements() || GetSubMeshDS()->NbNodes() ));
}
- if (!ret)
+ bool isComputeErrorSet = !CheckComputeError( algo, shape );
+ if (!ret && !isComputeErrorSet)
{
// Set _computeError
if ( !_computeError )
_computeError = SMESH_ComputeError::New();
if ( _computeError->IsOK() )
_computeError->myName = COMPERR_ALGO_FAILED;
+ _computeState = FAILED_TO_COMPUTE;
}
- else
+ if (ret)
{
_computeError.reset();
- UpdateDependantsState( SUBMESH_COMPUTED ); // send event SUBMESH_COMPUTED
}
- if ( !algo->NeedDescretBoundary() )
- UpdateSubMeshState( ret ? COMPUTE_OK : FAILED_TO_COMPUTE );
- CheckComputeError( algo );
+ UpdateDependantsState( SUBMESH_COMPUTED ); // send event SUBMESH_COMPUTED
}
break;
case CLEAN:
//=======================================================================
/*!
- * \brief Update compute_state by _computeError
+ * \brief Update compute_state by _computeError and send proper events to
+ * dependent submeshes
+ * \retval bool - true if _computeError is NOT set
*/
//=======================================================================
-bool SMESH_subMesh::CheckComputeError(SMESH_Algo* theAlgo)
+bool SMESH_subMesh::CheckComputeError(SMESH_Algo* theAlgo, const TopoDS_Shape& theShape)
{
- bool noErrors = ( !_computeError || _computeError->IsOK() );
- if ( !noErrors )
+ bool noErrors = true;
+
+ if ( !theShape.IsNull() )
+ {
+ // Check state of submeshes
+ if ( !theAlgo->NeedDescretBoundary())
+ {
+ SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(false,false);
+ while ( smIt->more() )
+ if ( !smIt->next()->CheckComputeError( theAlgo ))
+ noErrors = false;
+ }
+
+ // Check state of neighbours
+ if ( !theAlgo->OnlyUnaryInput() &&
+ theShape.ShapeType() == TopAbs_COMPOUND &&
+ !theShape.IsSame( _subShape ))
+ {
+ for (TopoDS_Iterator subIt( theShape ); subIt.More(); subIt.Next()) {
+ SMESH_subMesh* sm = _father->GetSubMesh( subIt.Value() );
+ if ( sm != this ) {
+ if ( !sm->CheckComputeError( theAlgo ))
+ noErrors = false;
+ UpdateDependantsState( SUBMESH_COMPUTED ); // send event SUBMESH_COMPUTED
+ }
+ }
+ }
+ }
{
- if ( !_computeError->myAlgo )
- _computeError->myAlgo = theAlgo;
-
- // Show error
- SMESH_Comment text;
- text << theAlgo->GetName() << " failed on subshape " << _Id << " with error ";
- if (_computeError->IsCommon() )
- text << _computeError->CommonName();
+ // Check my state
+ if ( !_computeError || _computeError->IsOK() )
+ {
+ _computeState = COMPUTE_OK;
+ }
else
- text << _computeError->myName;
- if ( _computeError->myComment.size() > 0 )
- text << " \"" << _computeError->myComment << "\"";
+ {
+ if ( !_computeError->myAlgo )
+ _computeError->myAlgo = theAlgo;
+
+ // Show error
+ SMESH_Comment text;
+ text << theAlgo->GetName() << " failed on subshape #" << _Id << " with error ";
+ if (_computeError->IsCommon() )
+ text << _computeError->CommonName();
+ else
+ text << _computeError->myName;
+ if ( _computeError->myComment.size() > 0 )
+ text << " \"" << _computeError->myComment << "\"";
#ifdef _DEBUG_
- cout << text << endl;
- // Show vertices location of a failed shape
- cout << "Subshape vertices (first 10):" << endl;
- TopTools_IndexedMapOfShape vMap;
- TopExp::MapShapes( _subShape, TopAbs_VERTEX, vMap );
- for ( int iv = 1; iv <= vMap.Extent() && iv < 11; ++iv ) {
- gp_Pnt P( BRep_Tool::Pnt( TopoDS::Vertex( vMap( iv ) )));
- cout << P.X() << " " << P.Y() << " " << P.Z() << " " << endl;
- }
+ cout << text << endl;
+ // Show vertices location of a failed shape
+ TopTools_IndexedMapOfShape vMap;
+ TopExp::MapShapes( _subShape, TopAbs_VERTEX, vMap );
+ cout << "Subshape vertices " << ( vMap.Extent()>10 ? "(first 10):" : ":") << endl;
+ for ( int iv = 1; iv <= vMap.Extent() && iv < 11; ++iv ) {
+ gp_Pnt P( BRep_Tool::Pnt( TopoDS::Vertex( vMap( iv ) )));
+ cout << "#" << _father->GetMeshDS()->ShapeToIndex( vMap( iv )) << " ";
+ cout << P.X() << " " << P.Y() << " " << P.Z() << " " << endl;
+ }
#else
- INFOS( text );
+ INFOS( text );
#endif
- _computeState = FAILED_TO_COMPUTE;
- }
- else
- {
- _computeState = COMPUTE_OK;
- }
- // Check state of submeshes
- if ( !theAlgo->NeedDescretBoundary() /*&& theAlgo->OnlyUnaryInput()*/ ) {
- SMESH_subMeshIteratorPtr smIt = getDependsOnIterator(false,false);
- while ( smIt->more() )
- if ( !smIt->next()->CheckComputeError( theAlgo ))
- noErrors = false;
+ _computeState = FAILED_TO_COMPUTE;
+ noErrors = false;
+ }
}
return noErrors;
}
TopoDS_Shape SMESH_subMesh::GetCollection(SMESH_Gen * theGen, SMESH_Algo* theAlgo)
{
MESSAGE("SMESH_subMesh::GetCollection");
- ASSERT (!theAlgo->NeedDescretBoundary());
TopoDS_Shape mainShape = _father->GetMeshDS()->ShapeToMesh();
map< EventListener*, EventListenerData* >::iterator l_d =
myEventListeners.find( listener );
if ( l_d != myEventListeners.end() ) {
- if ( l_d->second && l_d->second->IsDeletable() )
- delete l_d->second;
+ EventListenerData* curData = l_d->second;
+ if ( curData && curData != data && curData->IsDeletable() )
+ delete curData;
l_d->second = data;
}
else
eventType == SMESH_subMesh::COMPUTE_EVENT)
{
ASSERT( data->mySubMeshes.front() != subMesh );
+ list<SMESH_subMesh*>::iterator smIt = data->mySubMeshes.begin();
+ list<SMESH_subMesh*>::iterator smEnd = data->mySubMeshes.end();
switch ( event ) {
case SMESH_subMesh::CLEAN:
- data->mySubMeshes.front()->ComputeStateEngine( event );
+ for ( ; smIt != smEnd; ++ smIt)
+ (*smIt)->ComputeStateEngine( event );
break;
case SMESH_subMesh::COMPUTE:
if ( subMesh->GetComputeState() == SMESH_subMesh::COMPUTE_OK )
- data->mySubMeshes.front()->ComputeStateEngine( SMESH_subMesh::SUBMESH_COMPUTED );
+ for ( ; smIt != smEnd; ++ smIt)
+ (*smIt)->ComputeStateEngine( SMESH_subMesh::SUBMESH_COMPUTED );
break;
default:;
}
* \brief Update compute_state by _computeError
* \retval bool - false if there are errors
*/
- bool CheckComputeError(SMESH_Algo* theAlgo);
+ bool CheckComputeError(SMESH_Algo* theAlgo, const TopoDS_Shape& theShape=TopoDS_Shape());
/*!
* \brief Return a hypothesis attached to theShape.
../SMESHDS/libSMESHDS.la \
../Controls/libSMESHControls.la \
$(KERNEL_LDFLAGS) -lSalomeLifeCycleCORBA \
+ $(GEOM_LDFLAGS) -lNMTDS \
+ $(MED_LDFLAGS) -lMEDWrapper_V2_2 -lMEDWrapper_V2_1 \
$(CAS_KERNEL)
SMESHClientBin_CPPFLAGS = \
{
}
+//=======================================================================
+//function : Destructor
+//purpose :
+//=======================================================================
+
+SMESHDS_Document::~SMESHDS_Document()
+{
+ InitMeshesIterator();
+ while ( MoreMesh() )
+ delete NextMesh();
+}
+
//=======================================================================
//function : NewMesh
//purpose :
return false;
}
+//=======================================================================
+//function : Contains
+//purpose :
+//=======================================================================
+
+bool SMESHDS_Group::Contains (const SMDS_MeshElement* elem)
+{
+ if (elem)
+ return myGroup.Contains(elem);
+ return false;
+}
+
//=============================================================================
/*!
*
virtual bool Contains (const int theID);
+ virtual bool Contains (const SMDS_MeshElement* elem);
+
virtual SMDS_ElemIteratorPtr GetElements();
bool Add (const int theID);
const SMESHDS_Mesh* theMesh,
const SMDSAbs_ElementType theType):
myID(theID), myMesh(theMesh), myType(theType), myStoreName(""),
- myCurIndex(0), myCurID(-1), myColorGroup(0)
+ myCurIndex(0), myCurID(-1)
{
+ myColor = Quantity_Color( 0.0, 0.0, 0.0, Quantity_TOC_RGB );
}
//=============================================================================
bool SMESHDS_GroupBase::Contains (const int theID)
{
- SMDS_ElemIteratorPtr it = GetElements();
- bool contains = false;
- if ( it )
- while ( !contains && it->more() )
- contains = ( it->next()->GetID() == theID );
- return contains;
+ if ( SMDS_ElemIteratorPtr it = GetElements() ) {
+ while ( it->more() )
+ if ( it->next()->GetID() == theID )
+ return true;
+ }
+ return false;
+}
+
+//=======================================================================
+//function : Contains
+//purpose :
+//=======================================================================
+
+bool SMESHDS_GroupBase::Contains (const SMDS_MeshElement* elem)
+{
+ if ( elem )
+ return Contains( elem->GetID() );
+ return false;
}
//=======================================================================
{
myType = theType;
}
+
+//=======================================================================
+//function : SetType
+//purpose :
+//=======================================================================
+
+void SMESHDS_GroupBase::SetColorGroup(int theColorGroup)
+{
+ if( theColorGroup < 0 || theColorGroup > 360 )
+ {
+ MESSAGE("SMESHDS_GroupBase::SetColorGroup : Value must be in range [0,360]");
+ return;
+ }
+
+ Quantity_Color aColor( (double)theColorGroup, 1.0, 1.0, Quantity_TOC_HLS );
+ SetColor( aColor );
+}
+
+//=======================================================================
+//function : SetType
+//purpose :
+//=======================================================================
+
+int SMESHDS_GroupBase::GetColorGroup() const
+{
+ Quantity_Color aColor = GetColor();
+ double aHue = aColor.Hue();
+ if( aHue < 0 )
+ return 0;
+ return (int)( aHue );
+}
+
#include <string>
#include "SMDSAbs_ElementType.hxx"
#include "SMDS_MeshElement.hxx"
+
+#include <Quantity_Color.hxx>
class SMESHDS_Mesh;
virtual bool Contains (const int theID);
+ virtual bool Contains (const SMDS_MeshElement* elem);
+
virtual SMDS_ElemIteratorPtr GetElements() = 0;
int GetID (const int theIndex);
virtual ~SMESHDS_GroupBase() {}
- void SetColorGroup (int theColorGroup)
- { myColorGroup = theColorGroup;}
+ void SetColor (const Quantity_Color& theColor)
+ { myColor = theColor;}
- int GetColorGroup() const
- { return myColorGroup;}
+ Quantity_Color GetColor() const
+ { return myColor;}
+
+ void SetColorGroup (int theColorGroup);
+
+ int GetColorGroup() const;
protected:
const SMDS_MeshElement* findInMesh (const int theID) const;
int myCurIndex;
int myCurID;
SMDS_ElemIteratorPtr myIterator;
- int myColorGroup;
+ Quantity_Color myColor;
};
#endif
{
return mySubMesh->Contains( findInMesh( theID ));
}
+
+//=======================================================================
+//function : Contains
+//purpose :
+//=======================================================================
+
+bool SMESHDS_GroupOnGeom::Contains (const SMDS_MeshElement* elem)
+{
+ return mySubMesh->Contains( elem );
+}
+
virtual bool Contains (const int theID);
+ virtual bool Contains (const SMDS_MeshElement* elem);
+
virtual SMDS_ElemIteratorPtr GetElements();
private:
#include "SMDS_VertexPosition.hxx"
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FacePosition.hxx"
+#include "SMDS_SpacePosition.hxx"
#include "SMESHDS_GroupOnGeom.hxx"
+
#include <TopExp_Explorer.hxx>
#include <TopExp.hxx>
#include <TopoDS_Iterator.hxx>
return false;
}
+namespace {
+
+ //================================================================================
+ /*!
+ * \brief Creates a node position in volume
+ */
+ //================================================================================
+
+ inline SMDS_PositionPtr volumePosition(int volId)
+ {
+ SMDS_SpacePosition* pos = new SMDS_SpacePosition();
+ pos->SetShapeId( volId );
+ return SMDS_PositionPtr(pos);
+ }
+}
+
//=======================================================================
//function : SetNodeOnVolume
//purpose :
const TopoDS_Shell & S)
{
if ( add( aNode, getSubmesh(S) ))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( myCurSubID );
+ aNode->SetPosition ( volumePosition( myCurSubID ));
}
//=======================================================================
//function : SetNodeOnVolume
const TopoDS_Solid & S)
{
if ( add( aNode, getSubmesh(S) ))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( myCurSubID );
+ aNode->SetPosition ( volumePosition( myCurSubID ));
}
//=======================================================================
void SMESHDS_Mesh::SetNodeInVolume(const SMDS_MeshNode* aNode, int Index)
{
if ( add( aNode, getSubmesh( Index )))
- const_cast<SMDS_Position*>( aNode->GetPosition().get() )->SetShapeId( Index );
+ ((SMDS_MeshNode*) aNode)->SetPosition( volumePosition( Index ));
}
//=======================================================================
add( anElement, getSubmesh( Index ));
}
+//=======================================================================
+//function : ~SMESHDS_Mesh
+//purpose :
+//=======================================================================
SMESHDS_Mesh::~SMESHDS_Mesh()
{
+ // myScript
delete myScript;
+ // submeshes
+ TShapeIndexToSubMesh::iterator i_sm = myShapeIndexToSubMesh.begin();
+ for ( ; i_sm != myShapeIndexToSubMesh.end(); ++i_sm )
+ delete i_sm->second;
}
-
//********************************************************************
//********************************************************************
//******** *********
#include "SMESHDS_SubMesh.hxx"
#include "utilities.h"
+#include "SMDS_SetIterator.hxx"
using namespace std;
{
return mySubMeshes.find( theSubMesh ) != mySubMeshes.end();
}
+
+//=======================================================================
+//function : GetSubMeshIterator
+//purpose :
+//=======================================================================
+
+SMESHDS_SubMeshIteratorPtr SMESHDS_SubMesh::GetSubMeshIterator() const
+{
+ typedef set<const SMESHDS_SubMesh*>::const_iterator TIterator;
+ return SMESHDS_SubMeshIteratorPtr
+ ( new SMDS_SetIterator< const SMESHDS_SubMesh*, TIterator >( mySubMeshes.begin(),
+ mySubMeshes.end()));
+}
#include "SMDS_Mesh.hxx"
#include <set>
+class SMESHDS_SubMesh;
+typedef SMDS_Iterator<const SMESHDS_SubMesh*> SMESHDS_SubMeshIterator;
+typedef boost::shared_ptr< SMESHDS_SubMeshIterator > SMESHDS_SubMeshIteratorPtr;
+
class SMESHDS_EXPORT SMESHDS_SubMesh
{
public:
void AddSubMesh( const SMESHDS_SubMesh* theSubMesh );
bool RemoveSubMesh( const SMESHDS_SubMesh* theSubMesh );
bool ContainsSubMesh( const SMESHDS_SubMesh* theSubMesh ) const;
+ int NbSubMeshes() const { return mySubMeshes.size(); }
+ SMESHDS_SubMeshIteratorPtr GetSubMeshIterator() const;
// for both types
int NbElements() const;
#define SMESHDS_EXPORT
#endif
-#endif
\ No newline at end of file
+#endif
# 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
#
#
#
# additionnal information to compil and link file
libSMESHFiltersSelection_la_CPPFLAGS = \
- $(KERNEL_CXXFLAGS) \
- $(GUI_CXXFLAGS) \
- $(GEOM_CXXFLAGS) \
$(CAS_CPPFLAGS) \
$(QT_INCLUDES) \
$(PYTHON_INCLUDES) \
$(VTK_INCLUDES) \
- ${BOOST_CPPFLAGS} \
+ $(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
+ $(GEOM_CXXFLAGS) \
+ $(MED_CXXFLAGS) \
+ $(BOOST_CPPFLAGS) \
$(CORBA_CXXFLAGS) \
$(CORBA_INCLUDES) \
-I$(top_builddir)/idl \
#include "SALOMEDSClient_SObject.hxx"
#include "SALOMEDS_SObject.hxx"
-#include <TopTools_MapOfShape.hxx>
#include <TopExp_Explorer.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopExp.hxx>
/*!
* Class : SMESH_NumberFilter
if (mySubShapeType == TopAbs_SHAPE);
return true;
- TopExp_Explorer anExp2 (aShape, mySubShapeType);
- TopTools_MapOfShape aMap;
- for (; anExp2.More(); anExp2.Next())
- aMap.Add(anExp2.Current());
+ TopTools_IndexedMapOfShape aMap;
+ TopExp::MapShapes(aShape, mySubShapeType, aMap);
- return myNumber == aMap.Extent();
+ if ( myNumber )
+ return myNumber == aMap.Extent(); // given number
+
+ return aMap.Extent(); // at least one?
}
//=======================================================================
* Filter geom objects by number of subshapes of the given type
* Parameters of constructor:
* * theSubShapeType - Type of subshape
- * * theNumber - Number of subshapes. Object is selected if it contains theNumber of
- * theSubShapeType sub-shapes
+ * * theNumber - Number of subshapes. Object is selected if it contains
+ * theNumber of theSubShapeType sub-shapes, or at least
+ * one theSubShapeType, provided that theNumber==0
* * theShapeType - This map specifies types of object to be selected
* * theMainObject - Sub-shapes of this object is selected only
* * theIsClosedOnly - Closed shapes is selected if this parameter is true
// 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
//
+
#include "SMESH_TypeFilter.hxx"
#include <SUIT_Session.h>
#include <SalomeApp_Study.h>
#include <LightApp_DataOwner.h>
-SMESH_TypeFilter::SMESH_TypeFilter (MeshObjectType theType)
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+
+SMESH_TypeFilter::SMESH_TypeFilter (MeshObjectType theType)
{
myType = theType;
}
-SMESH_TypeFilter::~SMESH_TypeFilter()
+SMESH_TypeFilter::~SMESH_TypeFilter()
{
}
return false;
switch (myType)
- {
+ {
case HYPOTHESIS:
{
- if ( aLevel == 2 && ( objFather->Tag() == 1 )) // hypo definition
+ if (aLevel == 2 && (objFather->Tag() == SMESH::Tag_HypothesisRoot))
+ // hypo definition
Ok = true;
- else if ( aLevel == 3 && ( objFather->Tag() == 2 )) // applied global hypo
+ else if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_RefOnAppliedHypothesis))
+ // applied global hypo
Ok = true;
- else if ( aLevel == 5 && ( objFather->Tag() == 2 )) // applied local hypo
+ else if (aLevel == 5 && (objFather->Tag() == SMESH::Tag_RefOnAppliedHypothesis))
+ // applied local hypo
Ok = true;
break;
}
case ALGORITHM:
{
- if ( aLevel == 2 && ( objFather->Tag() == 2 )) // algo definition
+ if (aLevel == 2 && (objFather->Tag() == SMESH::Tag_AlgorithmsRoot))
+ // algo definition
Ok = true;
- else if ( aLevel == 3 && ( objFather->Tag() == 3 )) // applied global algo
+ else if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_RefOnAppliedAlgorithms))
+ // applied global algo
Ok = true;
- else if ( aLevel == 5 && ( objFather->Tag() == 3 )) // applied local algo
+ else if (aLevel == 5 && (objFather->Tag() == SMESH::Tag_RefOnAppliedAlgorithms))
+ // applied local algo
Ok = true;
break;
}
case MESH:
{
- if ( aLevel == 1 && ( obj->Tag() >= 3 ))
+ if (aLevel == 1 && (obj->Tag() >= SMESH::Tag_FirstMeshRoot))
Ok = true;
break;
}
case SUBMESH:
{
// see SMESH_Gen_i.cxx for tag numbers
- if ( aLevel == 3 && ( objFather->Tag() >= 4 && objFather->Tag() <= 10 ))
+ if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstSubMesh &&
+ objFather->Tag() <= SMESH::Tag_LastSubMesh))
Ok = true;
break;
}
case MESHorSUBMESH:
{
- if ( aLevel == 1 && ( obj->Tag() >= 3 ))
+ if (aLevel == 1 && (obj->Tag() >= SMESH::Tag_FirstMeshRoot))
Ok = true; // mesh
- else if ( aLevel == 3 && ( objFather->Tag() >= 4 && objFather->Tag() <= 10 ))
+ else if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstSubMesh &&
+ objFather->Tag() <= SMESH::Tag_LastSubMesh))
Ok = true;
break;
}
- case SUBMESH_VERTEX: // Label "SubMeshes on vertexes"
+ case SUBMESH_VERTEX: // Label "SubMeshes on vertexes"
{
- if ( aLevel == 3 && ( objFather->Tag() == 4 ))
+ if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnVertex))
Ok = true;
break;
}
case SUBMESH_EDGE:
{
- if ( aLevel == 3 && ( objFather->Tag() == 5 ))
+ if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnEdge))
Ok = true;
break;
}
case SUBMESH_FACE:
{
- if ( aLevel == 3 && ( objFather->Tag() == 7 ))
+ if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnFace))
Ok = true;
break;
}
case SUBMESH_SOLID:
{
- if ( aLevel == 3 && ( objFather->Tag() == 9 ))
+ if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnSolid))
Ok = true;
break;
}
case SUBMESH_COMPOUND:
{
- if ( aLevel == 3 && ( objFather->Tag() == 10 ))
+ if (aLevel == 3 && (objFather->Tag() == SMESH::Tag_SubMeshOnCompound))
Ok = true;
break;
}
case GROUP:
{
- if ( aLevel == 3 && ( objFather->Tag() > 10 ))
+ if (aLevel == 3 && (objFather->Tag() >= SMESH::Tag_FirstGroup))
Ok = true;
break;
}
- }
+ }
}
return Ok;
}
-MeshObjectType SMESH_TypeFilter::type() const
+MeshObjectType SMESH_TypeFilter::type() const
{
return myType;
}
SMESHGUI_RemoveElementsDlg.cxx \
SMESHGUI_MeshInfosDlg.cxx \
SMESHGUI_StandardMeshInfosDlg.cxx \
+ SMESHGUI_WhatIsDlg.cxx \
SMESHGUI_Preferences_ColorDlg.cxx \
SMESHGUI_Preferences_ScalarBarDlg.cxx \
SMESHGUI_Preferences_SelectionDlg.cxx \
SMESHGUI_RemoveElementsDlg_moc.cxx \
SMESHGUI_MeshInfosDlg_moc.cxx \
SMESHGUI_StandardMeshInfosDlg_moc.cxx \
+ SMESHGUI_WhatIsDlg_moc.cxx \
SMESHGUI_Preferences_ColorDlg_moc.cxx \
SMESHGUI_Preferences_ScalarBarDlg_moc.cxx \
SMESHGUI_Preferences_SelectionDlg_moc.cxx \
#include "SMESHGUI_RemoveElementsDlg.h"
#include "SMESHGUI_MeshInfosDlg.h"
#include "SMESHGUI_StandardMeshInfosDlg.h"
+#include "SMESHGUI_WhatIsDlg.h"
#include "SMESHGUI_Preferences_ColorDlg.h"
#include "SMESHGUI_Preferences_ScalarBarDlg.h"
#include "SMESHGUI_Preferences_SelectionDlg.h"
#include "SALOMEDSClient_StudyBuilder.hxx"
#include "SALOMEDSClient_SComponent.hxx"
+#include <Standard_ErrorHandler.hxx>
+
using namespace std;
//namespace{
if (aRet)
return;
}
-
- aFilterMap.insert( QObject::tr("MED 2.1 (*.med)"), SMESH::MED_V2_1 );
- aFilterMap.insert( QObject::tr("MED 2.2 (*.med)"), SMESH::MED_V2_2 );
+ // PAL18696
+ QString v21( aMesh->GetVersionString( SMESH::MED_V2_1, 2));
+ QString v22( aMesh->GetVersionString( SMESH::MED_V2_2, 2));
+ aFilterMap.insert( QString("MED ") + v21 + " (*.med)", SMESH::MED_V2_1 );
+ aFilterMap.insert( QString("MED ") + v22 + " (*.med)", SMESH::MED_V2_2 );
}
break;
case 124:
there must be check on others mesh elements not equal triangles
*/
if (aMesh->NbTriangles() < 1) {
- int aRet = SUIT_MessageBox::warn1
+ SUIT_MessageBox::warn1
(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
QObject::tr("SMESH_EXPORT_STL1").arg(anIObject->getName()),
}
}
- void SetDisplayMode(int theCommandID){
+ void AutoColor(){
+ SALOME_ListIO selected;
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if( !app )
+ return;
+
+ LightApp_SelectionMgr* aSel = app->selectionMgr();
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if( !aSel || !appStudy )
+ return;
+
+ aSel->selectedObjects( selected );
+ if( selected.IsEmpty() )
+ return;
+
+ Handle(SALOME_InteractiveObject) anIObject = selected.First();
+
+ _PTR(Study) aStudy = appStudy->studyDS();
+ _PTR(SObject) aMainSObject( aStudy->FindObjectID( anIObject->getEntry() ) );
+ SMESH::SMESH_Mesh_var aMainObject = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
+ if( aMainObject->_is_nil() )
+ return;
+
+ aMainObject->SetAutoColor( true );
+
+ QValueList<SALOMEDS::Color> aReservedColors;
+
+ SMESH::ListOfGroups aListOfGroups = *aMainObject->GetGroups();
+ for( int i = 0, n = aListOfGroups.length(); i < n; i++ )
+ {
+ SMESH::SMESH_GroupBase_var aGroupObject = aListOfGroups[i];
+ SALOMEDS::Color aCurrentColor = aGroupObject->GetColor();
+
+ SALOMEDS::Color aColor = SMESHGUI::getUniqueColor( aReservedColors );
+ aGroupObject->SetColor( aColor );
+ aReservedColors.append( aColor );
+
+ _PTR(SObject) aGroupSObject = SMESH::FindSObject(aGroupObject);
+ if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aGroupSObject->GetID().c_str()))
+ {
+ if( aGroupObject->GetType() == SMESH::NODE )
+ anActor->SetNodeColor( aColor.R, aColor.G, aColor.B );
+ else if( aGroupObject->GetType() == SMESH::EDGE )
+ anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B );
+ else
+ anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
+ }
+ }
+
+ SMESH::RepaintCurrentView();
+ }
+
+ void DisableAutoColor(){
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
SALOME_ListIO selected;
if( aSel )
aSel->selectedObjects( selected );
+ if(selected.Extent()){
+ Handle(SALOME_InteractiveObject) anIObject = selected.First();
+ SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
+ if ( !aMesh->_is_nil() ) {
+ aMesh->SetAutoColor( false );
+ }
+ }
+ }
+
+ void SetDisplayMode(int theCommandID){
+ SALOME_ListIO selected;
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if( !app )
+ return;
+
+ LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if( !aSel || !appStudy )
+ return;
+
+ _PTR(Study) aStudy = appStudy->studyDS();
+
+ aSel->selectedObjects( selected );
+
if(selected.Extent() >= 1){
switch(theCommandID){
case 1134:{
vtkFloatingPointType (nodecolor.blue()) / 255.);
anActor->SetNodeSize(aDlg->GetIntValue(2));
+ SMESH::SMESH_GroupBase_var aGroupObject = SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IObject);
+ if( !aGroupObject->_is_nil() )
+ {
+ SALOMEDS::Color aColor;
+ aColor.R = (float)color.red() / 255.0;
+ aColor.G = (float)color.green() / 255.0;
+ aColor.B = (float)color.blue() / 255.0;
+ aGroupObject->SetColor( aColor );
+ }
+
delete aDlg;
}
break;
break;
}
+ // Auto-color
+ case 1136:
+ ::AutoColor();
+ break;
+
+ case 1137:
+ ::DisableAutoColor();
+ break;
+
case 1134: // Clipping
case 1133: // Tranparency
case 1132: // Colors / Size
case 214: // UPDATE
{
if(checkLock(aStudy)) break;
- SMESH::UpdateView();
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ SMESH::UpdateView();
+ }
+ catch (std::bad_alloc) { // PAL16774 (Crash after display of many groups)
+ SMESH::OnVisuException();
+ }
+ catch (...) { // PAL16774 (Crash after display of many groups)
+ SMESH::OnVisuException();
+ }
SALOME_ListIO l;
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
extractContainers( sel_objects, to_process );
- if (vtkwnd) {
- SALOME_ListIteratorOfListIO It( to_process );
- for (; It.More(); It.Next()) {
- Handle(SALOME_InteractiveObject) IOS = It.Value();
- if (IOS->hasEntry()) {
- SMESH::UpdateView(anAction, IOS->getEntry());
- if (anAction == SMESH::eDisplayOnly)
- anAction = SMESH::eDisplay;
- }
- }
- }
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (vtkwnd) {
+ SALOME_ListIteratorOfListIO It( to_process );
+ for (; It.More(); It.Next()) {
+ Handle(SALOME_InteractiveObject) IOS = It.Value();
+ if (IOS->hasEntry()) {
+ if (!SMESH::UpdateView(anAction, IOS->getEntry()))
+ break; // PAL16774 (Crash after display of many groups)
+ if (anAction == SMESH::eDisplayOnly)
+ anAction = SMESH::eDisplay;
+ }
+ }
+ }
- // PAL13338 + PAL15161 -->
- if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy) /*&& !automaticUpdate()*/ )
- SMESH::UpdateView();
- // PAL13338 + PAL15161 <--
+ // PAL13338 + PAL15161 -->
+ if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy))
+ SMESH::UpdateView();
+ // PAL13338 + PAL15161 <--
+ }
+ catch (...) { // PAL16774 (Crash after display of many groups)
+ SMESH::OnVisuException();
+ }
if (anAction == SMESH::eErase) {
SALOME_ListIO l1;
if (checkLock(aStudy)) break;
startOperation( 701 );
-// LightApp_SelectionMgr *Sel = selectionMgr();
-// SALOME_ListIO selected; Sel->selectedObjects( selected );
-
-// 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;
-// }
-
-// SMESH::SMESH_Mesh_var aMesh;
-// SMESH::SMESH_subMesh_var aSubMesh;
-// Handle(SALOME_InteractiveObject) IObject = selected.First();
-// if (IObject->hasEntry()) {
-// _PTR(SObject) aMeshSObj = aStudy->FindObjectID(IObject->getEntry());
-// GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh( aMeshSObj );
-// if ( aShapeObject->_is_nil() ) {
-// // imported mesh
-// break;
-// }
-// if ( aMeshSObj ) {
-// aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>(aMeshSObj);
-// aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>(aMeshSObj);
-// if ( !aSubMesh->_is_nil() )
-// aMesh = aSubMesh->GetFather();
-
-// if (!aMesh->_is_nil()) {
-// SMESH::algo_error_array_var errors = GetSMESHGen()->GetAlgoState(aMesh,aShapeObject);
-// if ( errors->length() > 0 ) {
-// SUIT_MessageBox::warn1(desktop(),
-// tr("SMESH_WRN_WARNING"),
-// SMESH::GetMessageOnAlgoStateErrors( errors.in() ),
-// tr("SMESH_BUT_OK"));
-// break;
-// }
-
-// try {
-// if (GetSMESHGen()->Compute(aMesh, aShapeObject))
-// SMESH::ModifiedMesh(aMeshSObj, true);
-// else
-// SUIT_MessageBox::warn1(desktop(),
-// tr("SMESH_WRN_WARNING"),
-// tr("SMESH_WRN_COMPUTE_FAILED"),
-// tr("SMESH_BUT_OK"));
-// }
-// catch(const SALOME::SALOME_Exception & S_ex){
-// SalomeApp_Tools::QtCatchCorbaException(S_ex);
-// }
-
-// updateObjBrowser();
-
-// if (automaticUpdate()) {
-// SVTK_ViewWindow* aVTKView = SMESH::GetViewWindow(this, /*create*/true);
-// if (aVTKView) {
-// CORBA::Long anId = aStudy->StudyId();
-// TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId, IObject->getEntry());
-// if (aVisualObj) {
-// aVisualObj->Update();
-// SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry());
-// if (!anActor) {
-// anActor = SMESH::CreateActor(aStudy, IObject->getEntry());
-// if (anActor) {
-// SMESH::DisplayActor(aVTKView, anActor); //apo
-// SMESH::FitAll();
-// }
-// }
-// SMESH::RepaintCurrentView();
-// Sel->setSelectedObjects( selected );
-// }
-// }
-// }
-// }
-// }
-// }
}
break;
break;
}
+ case 903: // WHAT IS
+ {
+ EmitSignalDeactivateDialog();
+ new SMESHGUI_WhatIsDlg( this, "", false);
+ break;
+ }
+
case 1100: // EDIT HYPOTHESIS
{
if(checkLock(aStudy)) break;
int nbSel = selected.Extent();
if (nbSel == 1) {
- SMESH::SMESH_Hypothesis_var Hyp = SMESH::IObjectToInterface<SMESH::SMESH_Hypothesis>(selected.First());
+ Handle(SALOME_InteractiveObject) anIObject = selected.First();
+ SMESH::SMESH_Hypothesis_var aHypothesis = SMESH::IObjectToInterface<SMESH::SMESH_Hypothesis>(anIObject);
/* Look for all mesh objects that have this hypothesis affected in order to flag as ModifiedMesh */
/* At end below '...->updateObjBrowser(true)' will change icon of mesh objects */
/* Warning : however by internal mechanism all subMeshes icons are changed ! */
- if ( !Hyp->_is_nil() )
+ if ( !aHypothesis->_is_nil() )
{
- char* sName = Hyp->GetName();
- SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(sName);
+ CORBA::String_var aHypType = aHypothesis->GetName();
+ SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHypType);
if (aCreator)
- aCreator->edit( Hyp.in(), desktop() );
+ aCreator->edit( aHypothesis.in(), anIObject->getName(), desktop() );
else
{
// report error
createSMESHAction( 125, "EXPORT_MED" );
createSMESHAction( 126, "EXPORT_UNV" );
createSMESHAction( 141, "EXPORT_STL" );
- createSMESHAction( 33, "DELETE", "ICON_DELETE" );
+ createSMESHAction( 33, "DELETE", "ICON_DELETE", Key_Delete );
createSMESHAction( 5105, "SEL_FILTER_LIB" );
createSMESHAction( 701, "COMPUTE", "ICON_COMPUTE" );
createSMESHAction( 702, "CREATE_MESH", "ICON_DLG_INIT_MESH" );
createSMESHAction( 813, "DEL_GROUP", "ICON_DEL_GROUP" );
createSMESHAction( 900, "ADV_INFO", "ICON_ADV_INFO" );
createSMESHAction( 902, "STD_INFO", "ICON_STD_INFO" );
+ createSMESHAction( 903, "WHAT_IS", "ICON_WHAT_IS" );
createSMESHAction( 6001, "LENGTH", "ICON_LENGTH" , 0, true );
createSMESHAction( 6002, "FREE_EDGE", "ICON_FREE_EDGE" , 0, true );
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D" , 0, true );
createSMESHAction( 219, "VOLUMES", "ICON_DLG_TETRAS", 0, true );
createSMESHAction( 220, "ALL" );
createSMESHAction( 1100, "EDIT_HYPO" );
- createSMESHAction( 1101, "RENAME" );
+ createSMESHAction( 1101, "RENAME", "", Key_F2 );
createSMESHAction( 1102, "UNASSIGN" );
createSMESHAction( 9010, "NUM_NODES", "", 0, true );
createSMESHAction( 9011, "NUM_ELEMENTS", "", 0, true );
createSMESHAction( 1133, "TRANSP" );
createSMESHAction( 1134, "CLIP" );
createSMESHAction( 1135, "DISP_ENT" );
+ createSMESHAction( 1136, "AUTO_COLOR" );
+ createSMESHAction( 1137, "DISABLE_AUTO_COLOR" );
createSMESHAction( 2000, "CTRL" );
createSMESHAction( 300, "ERASE" );
createMenu( separator(), meshId, -1 );
createMenu( 900, meshId, -1 );
createMenu( 902, meshId, -1 );
+ createMenu( 903, meshId, -1 );
createMenu( separator(), meshId, -1 );
createMenu( 6003, ctrlId, -1 );
createTool( separator(), meshTb );
createTool( 900, meshTb );
createTool( 902, meshTb );
+ createTool( 903, meshTb );
createTool( separator(), meshTb );
createTool( 6001, ctrlTb );
createPopupItem( 214, OB, mesh_group ); // UPDATE
createPopupItem( 900, OB, mesh_group ); // ADV_INFO
createPopupItem( 902, OB, mesh ); // STD_INFO
+ createPopupItem( 903, OB, mesh_group ); // WHAT_IS
popupMgr()->insert( separator(), -1, 0 );
createPopupItem( 801, OB, mesh ); // CREATE_GROUP
createPopupItem( 802, OB, subMesh ); // CONSTRUCT_GROUP
popupMgr()->insert( separator(), -1, 0 );
QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( QtxPopupMgr::Selection::defSelCountParam() );
- createPopupItem( 125, OB, mesh, only_one_non_empty ); // EXPORT_MED
- createPopupItem( 126, OB, mesh, only_one_non_empty ); // EXPORT_UNV
- createPopupItem( 141, OB, mesh, only_one_non_empty ); // EXPORT_STL
- createPopupItem( 33, OB, subMesh + " " + group ); // DELETE
+ createPopupItem( 125, OB, mesh, only_one_non_empty ); // EXPORT_MED
+ createPopupItem( 126, OB, mesh, only_one_non_empty ); // EXPORT_UNV
+ createPopupItem( 141, OB, mesh, only_one_non_empty ); // EXPORT_STL
+ //createPopupItem( 33, OB, subMesh + " " + group ); // DELETE
+ createPopupItem( 33, OB, mesh_group + " " + hyp_alg ); // DELETE
popupMgr()->insert( separator(), -1, 0 );
// popup for viewer
createPopupItem( 214, View, mesh_group ); // UPDATE
createPopupItem( 900, View, mesh_group ); // ADV_INFO
createPopupItem( 902, View, mesh ); // STD_INFO
+ createPopupItem( 903, View, mesh_group ); // WHAT_IS
+ popupMgr()->insert( separator(), -1, 0 );
+
+ createPopupItem( 1136, OB + " " + View, mesh, "&& (not isAutoColor)" ); // AUTO_COLOR
+ createPopupItem( 1137, OB + " " + View, mesh, "&& isAutoColor" ); // DISABLE_AUTO_COLOR
popupMgr()->insert( separator(), -1, 0 );
int anId;
aType = aType.arg( mesh_group );
QString aMeshInVTK = aClient + "&&" + aType;
+ aClient = "($client in {'VTKViewer' 'ObjectBrowser'})";
+ QString anActiveVTK = QString("activeView = '%1'").arg(SVTK_Viewer::Type());
+ QString aSelCount = QString( "%1 > 0" ).arg( QtxPopupMgr::Selection::defSelCountParam() );
+
//-------------------------------------------------
// Numbering
//-------------------------------------------------
//-------------------------------------------------
// Display / Erase
//-------------------------------------------------
- aClient = "($client in {'VTKViewer' 'ObjectBrowser'})";
- QString anActiveVTK = QString("activeView = '%1'").arg(SVTK_Viewer::Type());
- QString aSelCount = QString( "%1 > 0" ).arg( QtxPopupMgr::Selection::defSelCountParam() );
-
QString aRule = "$component={'SMESH'} and ( type='Component' or (" + aClient + " and " +
aType + " and " + aSelCount + " and " + anActiveVTK + " and " + isNotEmpty + " %1 ) )";
popupMgr()->insert( action( 301 ), -1, -1 ); // DISPLAY
return SalomeApp_Module::deactivateModule( study );
}
+void SMESHGUI::studyClosed( SUIT_Study* s )
+{
+ SMESH::RemoveVisuData( s->id() );
+ SalomeApp_Module::studyClosed( s );
+}
+
void SMESHGUI::OnGUIEvent()
{
const QObject* obj = sender();
int exportgroup = addPreference( tr( "PREF_GROUP_EXPORT" ), genTab );
addPreference( tr( "PREF_AUTO_GROUPS" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "auto_groups" );
- int renumber=addPreference( tr( "PREF_RENUMBER" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "renumbering" );
+ addPreference( tr( "PREF_RENUMBER" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "renumbering" );
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
addPreference( tr( "PREF_NODES" ), precSelGroup, LightApp_Preferences::Double, "SMESH", "selection_precision_node" );
addPreference( tr( "PREF_ELEMENTS" ), precSelGroup, LightApp_Preferences::Double, "SMESH", "selection_precision_element" );
+ addPreference( tr( "PREF_OBJECTS" ), precSelGroup, LightApp_Preferences::Double, "SMESH", "selection_precision_object" );
int sbarTab = addPreference( tr( "SMESH_SCALARBAR" ) );
int fontGr = addPreference( tr( "SMESH_FONT_SCALARBAR" ), sbarTab );
SUIT_ResourceMgr* aResourceMgr = SMESH::GetResourceMgr(this);
if( name=="selection_object_color" || name=="selection_element_color" ||
name=="selection_width" || name=="highlight_color" || name=="highlight_width" ||
- name=="selection_precision_node" || name=="selection_precision_element" )
+ name=="selection_precision_node" || name=="selection_precision_element" ||
+ name=="selection_precision_object")
SMESH::UpdateSelectionProp( this );
else if (name == QString("scalar_bar_vertical_x") || name == QString("scalar_bar_vertical_width")){
sbX1 = aResourceMgr->doubleValue("SMESH", "scalar_bar_vertical_x", sbX1);
return myDisplayer;
}
+SALOMEDS::Color SMESHGUI::getUniqueColor( const QValueList<SALOMEDS::Color>& theReservedColors )
+{
+ int aHue = -1;
+ int aTolerance = 64;
+ int anIterations = 0;
+ int aPeriod = 5;
+
+ while( 1 )
+ {
+ anIterations++;
+ if( anIterations % aPeriod == 0 )
+ {
+ aTolerance /= 2;
+ if( aTolerance < 1 )
+ break;
+ }
+ //cout << "Iteration N" << anIterations << " (tolerance=" << aTolerance << ")"<< endl;
+
+ aHue = (int)( 360.0 * rand() / RAND_MAX );
+ //cout << "Hue = " << aHue << endl;
+
+ //cout << "Auto colors : ";
+ bool ok = true;
+ QValueList<SALOMEDS::Color>::const_iterator it = theReservedColors.constBegin();
+ QValueList<SALOMEDS::Color>::const_iterator itEnd = theReservedColors.constEnd();
+ for( ; it != itEnd; ++it )
+ {
+ SALOMEDS::Color anAutoColor = *it;
+ QColor aQColor( (int)( anAutoColor.R * 255.0 ), (int)( anAutoColor.G * 255.0 ), (int)( anAutoColor.B * 255.0 ) );
+
+ int h, s, v;
+ aQColor.getHsv( &h, &s, &v );
+ //cout << h << " ";
+ if( abs( h - aHue ) < aTolerance )
+ {
+ ok = false;
+ //cout << "break (diff = " << abs( h - aHue ) << ")";
+ break;
+ }
+ }
+ //cout << endl;
+
+ if( ok )
+ break;
+ }
+
+ //cout << "Hue of the returned color = " << aHue << endl;
+ QColor aColor;
+ aColor.setHsv( aHue, 255, 255 );
+
+ SALOMEDS::Color aSColor;
+ aSColor.R = (double)aColor.red() / 255.0;
+ aSColor.G = (double)aColor.green() / 255.0;
+ aSColor.B = (double)aColor.blue() / 255.0;
+
+ return aSColor;
+}
virtual void update( const int );
+ static SALOMEDS::Color getUniqueColor( const QValueList<SALOMEDS::Color>& );
+
public slots:
virtual bool deactivateModule( SUIT_Study* );
virtual bool activateModule( SUIT_Study* );
+ virtual void studyClosed( SUIT_Study* );
private slots:
void OnGUIEvent();
QString elemName;
if (myNbNodes == 2) {
elemName = "EDGE";
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_edges";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_edges_anchor";
}
else if (myNbNodes == 3) {
elemName = "TRIANGLE";
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_triangles";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_triangles_anchor";
}
else if (myNbNodes == 4)
if (myElementType == SMDSAbs_Face) {
elemName = "QUADRANGLE";
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_quadrangles";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_quadrangles_anchor";
}
else {
elemName = "TETRAS";
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_tetrahedrons";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_tetrahedrons_anchor";
}
else if (myNbNodes == 8) {
elemName = "HEXAS";
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_hexahedrons";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_hexahedrons_anchor";
}
else if (myElementType == SMDSAbs_Face) {
elemName = "POLYGON";
myIsPoly = true;
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polygons";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_polygons_anchor";
}
else if (myElementType == SMDSAbs_Volume) {
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_polyhedrons_anchor";
}
QString iconName = tr(QString("ICON_DLG_%1").arg(elemName));
case QUAD_EDGE:
aNumRows = 1;
myNbCorners = 2;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_edges
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_edges
break;
case QUAD_TRIANGLE:
aNumRows = 3;
myNbCorners = 3;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_triangles
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_triangles
break;
case QUAD_QUADRANGLE:
aNumRows = 4;
myNbCorners = 4;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_quadrangles
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_quadrangles
break;
case QUAD_TETRAHEDRON:
aNumRows = 6;
myNbCorners = 4;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_tetrahedrons
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_tetrahedrons
break;
case QUAD_PYRAMID:
aNumRows = 8;
myNbCorners = 5;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_pyramids
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_pyramids
break;
case QUAD_PENTAHEDRON:
aNumRows = 9;
myNbCorners = 6;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_pentahedrons
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_pentahedrons
break;
case QUAD_HEXAHEDRON:
aNumRows = 12;
myNbCorners = 8;
- myHelpFileName = "/adding_quadratic_nodes_and_elements.htm#?"; //Adding_hexahedrons
+ myHelpFileName = "adding_quadratic_elements_page.html#?"; //Adding_hexahedrons
break;
}
GroupButtonsLayout->addWidget(buttonOk, 0, 0);
SMESHGUI_BuildCompoundDlgLayout->addWidget(GroupButtons, 3, 0);
- myHelpFileName = "building_compounds.htm";
+ myHelpFileName = "building_compounds_page.html";
Init(); // Initialisations
}
myIsSelectPlane = false;
onSelectionChanged();
- myHelpFileName = "clipping.htm";
+ myHelpFileName = "clipping_page.html";
// signals and slots connections :
connect(ComboBoxPlanes, SIGNAL(activated(int)), this, SLOT(onSelectPlane(int)));
#include "SMESHGUI_HypothesesUtils.h"
#include "SMDS_SetIterator.hxx"
+#include <SMDS_Mesh.hxx>
#include "GEOMBase.h"
#include "GEOM_Actor.h"
#include <BRepBndLib.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
+#include <Standard_ErrorHandler.hxx>
+
// QT Includes
#include <qframe.h>
#include <qlayout.h>
#include <qtable.h>
#include <qhbox.h>
#include <qhgroupbox.h>
+#include <qvgroupbox.h>
#include <vtkProperty.h>
namespace SMESH {
+ //=============================================================================
+ /*!
+ * \brief Allocate some memory at construction and release it at destruction.
+ * Is used to be able to continue working after mesh generation or visualization
+ * break due to lack of memory
+ */
+ //=============================================================================
+
+ struct MemoryReserve
+ {
+ char* myBuf;
+ MemoryReserve(): myBuf( new char[1024*1024*1] ){} // 1M
+ ~MemoryReserve() { delete [] myBuf; }
+ };
+
// =========================================================================================
/*!
* \brief Class showing shapes without publishing
CASE2TEXT( COMPERR_BAD_INPUT_MESH);
CASE2TEXT( COMPERR_STD_EXCEPTION );
CASE2TEXT( COMPERR_OCC_EXCEPTION );
- CASE2TEXT( COMPERR_SLM_EXCEPTION );
+ case SMESH::COMPERR_SLM_EXCEPTION: break; // avoid double "Salome exception"
CASE2TEXT( COMPERR_EXCEPTION );
CASE2TEXT( COMPERR_MEMORY_PB );
CASE2TEXT( COMPERR_BAD_SHAPE );
}
// -----------------------------------------------------------------------
/*!
- * \brief Return text describing a subshape
+ * \brief Return a list of selected rows
*/
bool getSelectedRows(QTable* table, list< int > & rows)
{
for ( int row = selected.topRow(); row <= selected.bottomRow(); ++row )
rows.push_back( row );
}
+ if (rows.empty() && table->currentRow() > -1 )
+ rows.push_back( table->currentRow() );
+
return !rows.empty();
}
// faces
nbTot = mesh->NbFaces(), nbLin = mesh->NbFacesOfOrder(lin);
myNbFace ->setText( QString("%1").arg( nbTot ));
- myNbLinFace ->setText( QString("%1").arg( nbLin ));
+ myNbLinFace ->setText( QString("%1").arg( nbLin ));
myNbQuadFace ->setText( QString("%1").arg( nbTot - nbLin ));
// volumes
myBriefInfo = new SMESHGUI_MeshInfosBox(false, aFrame);
myFullInfo = new SMESHGUI_MeshInfosBox(true, aFrame);
- // errors
+ // Computation errors
- myErrorGroup = new QGroupBox(tr("ERRORS"), aFrame, "errorGrBox");
- myTable = new QTable( 1, NB_COLUMNS, myErrorGroup, "myTable");
- myShowBtn = new QPushButton(tr("SHOW_SHAPE"), myErrorGroup, "myShowBtn");
- myPublishBtn = new QPushButton(tr("PUBLISH_SHAPE"), myErrorGroup, "myPublishBtn");
+ myCompErrorGroup = new QGroupBox(tr("ERRORS"), aFrame, "myCompErrorGroup");
+ myTable = new QTable( 1, NB_COLUMNS, myCompErrorGroup, "myTable");
+ myShowBtn = new QPushButton(tr("SHOW_SHAPE"), myCompErrorGroup, "myShowBtn");
+ myPublishBtn = new QPushButton(tr("PUBLISH_SHAPE"), myCompErrorGroup, "myPublishBtn");
myTable->setReadOnly( TRUE );
myTable->hideColumn( COL_PUBLISHED );
}
myTable->horizontalHeader()->setLabel( col, header );
}
-
- myErrorGroup->setColumnLayout(0, Qt::Vertical);
- myErrorGroup->layout()->setSpacing(0);
- myErrorGroup->layout()->setMargin(0);
- QGridLayout* grpLayout = new QGridLayout(myErrorGroup->layout());
+ // layouting
+ myCompErrorGroup->setColumnLayout(0, Qt::Vertical);
+ myCompErrorGroup->layout()->setSpacing(0);
+ myCompErrorGroup->layout()->setMargin(0);
+ QGridLayout* grpLayout = new QGridLayout(myCompErrorGroup->layout());
grpLayout->setAlignment(Qt::AlignTop);
grpLayout->setSpacing(SPACING);
grpLayout->setMargin(MARGIN);
grpLayout->addWidget ( myPublishBtn, 1, 1 );
grpLayout->setRowStretch( 2, 1 );
+ // Hypothesis definition errors
+
+ myHypErrorGroup = new QGroupBox(1,Qt::Vertical, tr("SMESH_WRN_MISSING_PARAMETERS"),aFrame);
+ myHypErrorLabel = new QLabel(myHypErrorGroup);
+
+ // Memory Lack Label
+
+ myMemoryLackGroup = new QVGroupBox(tr("ERRORS"), aFrame, "memlackGrBox");
+ QLabel* memLackLabel = new QLabel(tr("MEMORY_LACK"), myMemoryLackGroup);
+ QFont bold = memLackLabel->font(); bold.setBold(true);
+ memLackLabel->setFont( bold );
+ memLackLabel->setMinimumWidth(300);
+
+ // add all widgets to aFrame
QVBoxLayout* aLay = new QVBoxLayout(aFrame);
aLay->addWidget( aPixGrp );
aLay->addWidget( nameBox );
aLay->addWidget( myBriefInfo );
aLay->addWidget( myFullInfo );
- aLay->addWidget( myErrorGroup );
- aLay->setStretchFactor( myErrorGroup, 1 );
+ aLay->addWidget( myHypErrorGroup );
+ aLay->addWidget( myCompErrorGroup );
+ aLay->addWidget( myMemoryLackGroup );
+ aLay->setStretchFactor( myCompErrorGroup, 1 );
+
+ ((QPushButton*) button( OK ))->setDefault( true );
return aFrame;
}
{
myDlg = new SMESHGUI_ComputeDlg;
myTShapeDisplayer = new TShapeDisplayer();
- myHelpFileName = "/files/about_meshes.htm";
+ //myHelpFileName = "/files/about_meshes.htm"; // V3
+ myHelpFileName = "about_meshes_page.html"; // V4
// connect signals and slots
connect(myDlg->myShowBtn, SIGNAL (clicked()), SLOT(onPreviewShape()));
connect(myDlg->myPublishBtn, SIGNAL (clicked()), SLOT(onPublishShape()));
connect(table(),SIGNAL(selectionChanged()), SLOT(currentCellChanged()));
+ connect(table(),SIGNAL(currentChanged(int,int)), SLOT(currentCellChanged()));
}
//=======================================================================
{
SMESHGUI_Operation::startOperation();
- SMESH::SMESH_Mesh_var aMesh;
- SMESH::compute_error_array_var anErrors;
+ // check selection
+ SMESH::SMESH_Mesh_var aMesh;
myMainShape = GEOM::GEOM_Object::_nil();
- // COMPUTE MESH
-
- bool computeFailed = true;
- int nbNodes = 0, nbEdges = 0, nbFaces = 0, nbVolums = 0;
-
LightApp_SelectionMgr *Sel = selectionMgr();
SALOME_ListIO selected; Sel->selectedObjects( selected );
Handle(SALOME_InteractiveObject) IObject = selected.First();
aMesh = SMESH::GetMeshByIO(IObject);
- if (!aMesh->_is_nil()) {
- myMainShape = aMesh->GetShapeToMesh();
- if ( !myMainShape->_is_nil() ) {
- SMESH::SMESH_Gen_var gen = getSMESHGUI()->GetSMESHGen();
- SMESH::algo_error_array_var errors = gen->GetAlgoState(aMesh,myMainShape);
- if ( errors->length() > 0 ) {
- SUIT_MessageBox::warn1(desktop(), tr("SMESH_WRN_WARNING"),
- SMESH::GetMessageOnAlgoStateErrors( errors.in() ),
- tr("SMESH_BUT_OK"));
- onCancel();
- return;
- }
- SUIT_OverrideCursor aWaitCursor;
- try {
- if (gen->Compute(aMesh, myMainShape)) {
- computeFailed = false;
- }
- else {
- anErrors = gen->GetComputeErrors( aMesh, myMainShape );
-// if ( anErrors->length() == 0 ) {
-// SUIT_MessageBox::warn1(desktop(),
-// tr("SMESH_WRN_WARNING"),
-// tr("SMESH_WRN_COMPUTE_FAILED"),
-// tr("SMESH_BUT_OK"));
-// onCancel();
-// return;
-// }
- }
- }
- catch(const SALOME::SALOME_Exception & S_ex){
- SalomeApp_Tools::QtCatchCorbaException(S_ex);
- }
- if ( _PTR(SObject) aMeshSObj = SMESH::FindSObject(aMesh)) {
- myDlg->myMeshName->setText( aMeshSObj->GetName() );
- SMESH::ModifiedMesh(aMeshSObj, !computeFailed, aMesh->NbNodes() == 0);
- }
- update( UF_ObjBrowser | UF_Model );
-
- // SHOW MESH
-
- if ( getSMESHGUI()->automaticUpdate() ) {
- SVTK_ViewWindow* aVTKView = SMESH::GetViewWindow(getSMESHGUI(), true);
- if (aVTKView) {
- int anId = study()->id();
- TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId, IObject->getEntry());
- if (aVisualObj) {
- aVisualObj->Update();
- SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry());
- if (!anActor) {
- anActor = SMESH::CreateActor(studyDS(), IObject->getEntry());
- if (anActor) {
- SMESH::DisplayActor(aVTKView, anActor); //apo
- SMESH::FitAll();
- }
- }
- SMESH::RepaintCurrentView();
- Sel->setSelectedObjects( selected );
- }
- }
- }
- }
- }
- else {
+ if (aMesh->_is_nil()) {
SUIT_MessageBox::warn1(desktop(),
tr("SMESH_WRN_WARNING"),
tr("SMESH_WRN_NO_AVAILABLE_DATA"),
return;
}
+ // COMPUTE MESH
+
+ MemoryReserve aMemoryReserve;
+
+ SMESH::compute_error_array_var aCompErrors;
+ QString aHypErrors;
+
+ bool computeFailed = true, memoryLack = false;
+
+ _PTR(SObject) aMeshSObj = SMESH::FindSObject(aMesh);
+ myMainShape = aMesh->GetShapeToMesh();
+ bool hasShape = aMesh->HasShapeToMesh();
+ bool shapeOK = myMainShape->_is_nil() ? !hasShape : hasShape;
+ if ( shapeOK && aMeshSObj )
+ {
+ myDlg->myMeshName->setText( aMeshSObj->GetName() );
+ SMESH::SMESH_Gen_var gen = getSMESHGUI()->GetSMESHGen();
+ SMESH::algo_error_array_var errors = gen->GetAlgoState(aMesh,myMainShape);
+ if ( errors->length() > 0 ) {
+ aHypErrors = SMESH::GetMessageOnAlgoStateErrors( errors.in() );
+ }
+ SUIT_OverrideCursor aWaitCursor;
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (gen->Compute(aMesh, myMainShape))
+ computeFailed = false;
+ }
+ catch(const SALOME::SALOME_Exception & S_ex){
+ memoryLack = true;
+ }
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ aCompErrors = gen->GetComputeErrors( aMesh, myMainShape );
+ // check if there are memory problems
+ for ( int i = 0; (i < aCompErrors->length()) && !memoryLack; ++i )
+ memoryLack = ( aCompErrors[ i ].code == SMESH::COMPERR_MEMORY_PB );
+ }
+ catch(const SALOME::SALOME_Exception & S_ex){
+ memoryLack = true;
+ }
+
+ // NPAL16631: if ( !memoryLack )
+ {
+ SMESH::ModifiedMesh(aMeshSObj, !computeFailed, aMesh->NbNodes() == 0);
+ update( UF_ObjBrowser | UF_Model );
+
+ // SHOW MESH
+ // NPAL16631: if ( getSMESHGUI()->automaticUpdate() )
+ if ( !memoryLack && getSMESHGUI()->automaticUpdate() )
+ {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ SMESH::Update(IObject, true);
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception thrown during mesh visualization" << endl;
+#endif
+ if ( SMDS_Mesh::CheckMemory(true) ) { // has memory to show warning?
+ SMESH::OnVisuException();
+ }
+ else {
+ memoryLack = true;
+ }
+ }
+ }
+ Sel->setSelectedObjects( selected );
+ }
+ }
myDlg->setCaption(tr( computeFailed ? "SMESH_WRN_COMPUTE_FAILED" : "SMESH_COMPUTE_SUCCEED"));
+ myDlg->myMemoryLackGroup->hide();
// SHOW ERRORS
- bool noError = ( !anErrors.operator->() || anErrors->length() == 0 );
+ bool noCompError = ( !aCompErrors.operator->() || aCompErrors->length() == 0 );
+ bool noHypoError = ( aHypErrors.isEmpty() );
- QTable* tbl = myDlg->myTable;
-
- if ( noError )
+ if ( memoryLack )
+ {
+ myDlg->myMemoryLackGroup->show();
+ myDlg->myFullInfo->hide();
+ myDlg->myBriefInfo->hide();
+ myDlg->myHypErrorGroup->hide();
+ myDlg->myCompErrorGroup->hide();
+ }
+ else if ( noCompError && noHypoError )
{
- //tbl->setNumRows(0);
myDlg->myFullInfo->SetInfoByMesh( aMesh );
myDlg->myFullInfo->show();
myDlg->myBriefInfo->hide();
- myDlg->myErrorGroup->hide();
+ myDlg->myHypErrorGroup->hide();
+ myDlg->myCompErrorGroup->hide();
}
else
{
+ QTable* tbl = myDlg->myTable;
myDlg->myBriefInfo->SetInfoByMesh( aMesh );
myDlg->myBriefInfo->show();
myDlg->myFullInfo->hide();
- myDlg->myErrorGroup->show();
- // fill table of errors
- tbl->setNumRows( anErrors->length() );
- bool hasShape = aMesh->HasShapeToMesh();
- if ( !hasShape ) tbl->hideColumn( COL_SHAPE );
- else tbl->showColumn( COL_SHAPE );
- tbl->setColumnWidth( COL_ERROR, 200 );
+ if ( noHypoError ) {
+ myDlg->myHypErrorGroup->hide();
+ }
+ else {
+ myDlg->myHypErrorGroup->show();
+ myDlg->myHypErrorLabel->setText( aHypErrors );
+ }
+
+ if ( noCompError ) {
+ myDlg->myCompErrorGroup->hide();
+ }
+ else {
+ myDlg->myCompErrorGroup->show();
- for ( int row = 0; row < anErrors->length(); ++row )
- {
- SMESH::ComputeError & err = anErrors[ row ];
- tbl->setText( row, COL_ALGO, err.algoName.in() );
- tbl->setText( row, COL_ERROR, errorText( err.code, err.comment.in() ));
- tbl->setText( row, COL_SHAPEID, QString("%1").arg( err.subShapeID ));
+ if ( !hasShape ) {
+ myDlg->myPublishBtn->hide();
+ myDlg->myShowBtn->hide();
+ }
+ else {
+ myDlg->myPublishBtn->show();
+ myDlg->myShowBtn->show();
+ }
- QString text = hasShape ? shapeText( err.subShapeID, myMainShape ) : QString("");
- tbl->setText( row, COL_SHAPE, text );
+ // fill table of errors
+ tbl->setNumRows( aCompErrors->length() );
+ if ( !hasShape ) tbl->hideColumn( COL_SHAPE );
+ else tbl->showColumn( COL_SHAPE );
+ tbl->setColumnWidth( COL_ERROR, 200 );
- text = ( !hasShape || getSubShapeSO( err.subShapeID, myMainShape )) ? "PUBLISHED" : "";
- tbl->setText( row, COL_PUBLISHED, text ); // if text=="", "PUBLISH" button enabled
+ for ( int row = 0; row < aCompErrors->length(); ++row )
+ {
+ SMESH::ComputeError & err = aCompErrors[ row ];
+ tbl->setText( row, COL_ALGO, err.algoName.in() );
+ tbl->setText( row, COL_ERROR, errorText( err.code, err.comment.in() ));
+ tbl->setText( row, COL_SHAPEID, QString("%1").arg( err.subShapeID ));
- tbl->item( row, COL_ERROR )->setWordWrap( TRUE );
- tbl->adjustRow( row );
- }
- tbl->adjustColumn( COL_ALGO );
- tbl->adjustColumn( COL_SHAPE );
+ QString text = hasShape ? shapeText( err.subShapeID, myMainShape ) : QString("");
+ tbl->setText( row, COL_SHAPE, text );
- tbl->setCurrentCell(0,0);
- currentCellChanged(); // to update buttons
- }
+ text = ( !hasShape || getSubShapeSO( err.subShapeID, myMainShape )) ? "PUBLISHED" : "";
+ tbl->setText( row, COL_PUBLISHED, text ); // if text=="", "PUBLISH" button enabled
+
+ tbl->item( row, COL_ERROR )->setWordWrap( TRUE );
+ tbl->adjustRow( row );
+ }
+ tbl->adjustColumn( COL_ALGO );
+ tbl->adjustColumn( COL_SHAPE );
+ tbl->setCurrentCell(0,0);
+ currentCellChanged(); // to update buttons
+ }
+ }
myDlg->show();
}
QFrame* createMainFrame (QWidget*);
QLabel* myMeshName;
- QGroupBox* myErrorGroup;
+ QGroupBox* myMemoryLackGroup;
+ QGroupBox* myCompErrorGroup;
+ QGroupBox* myHypErrorGroup;
+ QLabel* myHypErrorLabel;
QTable* myTable;
QPushButton* myShowBtn;
QPushButton* myPublishBtn;
}
connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) );
- myHelpFileName = "/files/convert_to_from_quadratic.htm";
+ myHelpFileName = "convert_to_from_quadratic_mesh_page.html";
SMESHGUI_SelectionOp::startOperation();
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
mySelector = aViewWindow->GetSelector();
- myHelpFileName = "pattern_mapping.htm";
+ myHelpFileName = "pattern_mapping_page.html";
Init(theType);
}
mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ;
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_polyhedrons_anchor";
Init();
}
aDlgLay->setStretchFactor(aMainFrame, 1);
- myHelpFileName = "deleting_groups.htm";
+ myHelpFileName = "deleting_groups_page.html";
Init();
}
GroupCoincident->setTitle(tr("COINCIDENT_ELEMENTS"));
}
- myHelpFileName = "merge_elements.htm";
+ myHelpFileName = "merging_elements_page.html";
}
//=================================================================================
AnglesGrpLayout->addWidget( AngleSpin, 0, 2 );
AnglesGrpLayout->setRowStretch(1, 10);
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ MakeGroupsCheck->setChecked(true);
+
// layouting
GroupArgumentsLayout->addWidget( ElementsLab, 0, 0 );
GroupArgumentsLayout->addWidget( SelectElementsButton, 0, 1 );
GroupArgumentsLayout->addMultiCellWidget(BasePointGrp, 3, 4, 1, 2);
GroupArgumentsLayout->addWidget( AnglesCheck, 5, 0 );
GroupArgumentsLayout->addMultiCellWidget(AnglesGrp, 5, 6, 1, 2);
+ GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 7, 7, 0, 2);
GroupArgumentsLayout->setRowStretch(6, 10);
/***************************************************************/
myElementsFilter = new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
myPathMeshFilter = new SMESH_TypeFilter (MESH);
- myHelpFileName = "extrusion_along_a_path.htm";
+ myHelpFileName = "extrusion_along_path_page.html";
Init();
try {
SUIT_OverrideCursor wc;
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
- SMESH::SMESH_MeshEditor::Extrusion_Error retVal =
- aMeshEditor->ExtrusionAlongPath(anElementsId.inout(), myPathMesh, myPathShape, aNodeStart,
- AnglesCheck->isChecked(), anAngles.inout(),
- BasePointCheck->isChecked(), aBasePoint);
+ SMESH::SMESH_MeshEditor::Extrusion_Error retVal;
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->ExtrusionAlongPathMakeGroups(anElementsId.inout(), myPathMesh,
+ myPathShape, aNodeStart,
+ AnglesCheck->isChecked(), anAngles.inout(),
+ BasePointCheck->isChecked(), aBasePoint, retVal);
+ else
+ retVal = aMeshEditor->ExtrusionAlongPath(anElementsId.inout(), myPathMesh,
+ myPathShape, aNodeStart,
+ AnglesCheck->isChecked(), anAngles.inout(),
+ BasePointCheck->isChecked(), aBasePoint);
//wc.stop();
wc.suspend();
//mySelectionMgr->clearSelected();
SMESH::Update( myMeshActor->getIO(), myMeshActor->GetVisibility() );
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
//SMESH::UpdateView();
Init(false);
ConstructorsClicked(GetConstructorId());
myMesh = SMESH::GetMeshByIO(IO);
if (myMesh->_is_nil())
return;
+
+ // MakeGroups is available if there are groups
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ } else {
+ MakeGroupsCheck->setEnabled(true);
+ }
// find actor
myMeshActor = SMESH::FindActorByObject(myMesh);
if (!myMeshActor)
SMESHGUI_SpinBox* YSpin;
QLabel* ZLab;
SMESHGUI_SpinBox* ZSpin;
+ QCheckBox* MakeGroupsCheck;
QGroupBox* GroupButtons;
QPushButton* OkButton;
SpinBox_NbSteps = new QSpinBox(GroupArguments, "SpinBox_NbSteps");
GroupArgumentsLayout->addMultiCellWidget(SpinBox_NbSteps, 3, 3, 2, 7);
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ MakeGroupsCheck->setChecked(true);
+ GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 4, 4, 0, 7);
+
+
SMESHGUI_ExtrusionDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "extrusion.htm";
+ myHelpFileName = "extrusion_page.html";
Init();
myBusy = false;
LineEditElements->clear();
- myElementsId = "";
myNbOkElements = 0;
myActor = 0;
return false;
if (myNbOkElements) {
- QStringList aListElementsId = QStringList::split(" ", myElementsId, false);
-
- SMESH::long_array_var anElementsId = new SMESH::long_array;
-
- anElementsId->length(aListElementsId.count());
- for (int i = 0; i < aListElementsId.count(); i++)
- anElementsId[i] = aListElementsId[i].toInt();
SMESH::DirStruct aVector;
aVector.PS.x = SpinBox_Dx->GetValue();
try {
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
QApplication::setOverrideCursor(Qt::waitCursor);
- aMeshEditor->ExtrusionSweep(anElementsId.inout(), aVector, aNbSteps);
+
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->ExtrusionSweepMakeGroups(myElementsId.inout(), aVector, aNbSteps);
+ else
+ aMeshEditor->ExtrusionSweep(myElementsId.inout(), aVector, aNbSteps);
+
QApplication::restoreOverrideCursor();
} catch (...) {
}
SMESH::UpdateView();
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
ConstructorsClicked(GetConstructorId());
SelectionIntoArgument();
myNbOkElements = 0;
// hilight entered elements/nodes
- SMDS_Mesh* aMesh = 0;
- if (myActor)
- aMesh = myActor->GetObject()->GetMesh();
- if (aMesh) {
+ if (!myIO.IsNull()) {
QStringList aListId = QStringList::split(" ", theNewText, false);
- if (send == LineEditElements) {
- const Handle(SALOME_InteractiveObject)& anIO = myActor->getIO();
+ if (send == LineEditElements)
+ {
+ SMDS_Mesh* aMesh = myActor ? myActor->GetObject()->GetMesh() : 0;
+ SMESH::ElementType SMESHType = GetConstructorId() ? SMESH::FACE : SMESH::EDGE;
+ SMDSAbs_ElementType SMDSType = GetConstructorId() ? SMDSAbs_Face: SMDSAbs_Edge;
+
+ myElementsId = new SMESH::long_array;
+ myElementsId->length( aListId.count() );
TColStd_MapOfInteger newIndices;
for (int i = 0; i < aListId.count(); i++) {
- const SMDS_MeshElement * e = aMesh->FindElement(aListId[ i ].toInt());
- if (e)
- newIndices.Add(e->GetID());
- myNbOkElements++;
+ int id = aListId[ i ].toInt();
+ bool validId = false;
+ if ( id > 0 ) {
+ if ( aMesh ) {
+ const SMDS_MeshElement * e = aMesh->FindElement( id );
+ validId = ( e && e->GetType() == SMDSType );
+ } else {
+ validId = ( myMesh->GetElementType( id, true ) == SMESHType );
+ }
+ }
+ if ( validId && newIndices.Add( id ))
+ myElementsId[ newIndices.Extent()-1 ] = id;
}
- mySelector->AddOrRemoveIndex(anIO, newIndices, false);
+ myElementsId->length( myNbOkElements = newIndices.Extent() );
+ mySelector->AddOrRemoveIndex(myIO, newIndices, false);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
- aViewWindow->highlight( anIO, true, true );
- myElementsId = theNewText;
+ aViewWindow->highlight( myIO, true, true );
}
}
// clear
myActor = 0;
+ myIO.Nullify();
QString aString = "";
// set busy flag
myMesh = SMESH::GetMeshByIO(IO);
if (myMesh->_is_nil())
return;
-
+ myIO = IO;
myActor = SMESH::FindActorByObject(myMesh);
- if (!myActor)
- return;
if (myEditCurrentArgument == LineEditElements) {
int aNbElements = 0;
- myElementsId = "";
+
+ // MakeGroups is available if there are groups
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ } else {
+ MakeGroupsCheck->setEnabled(true);
+ }
if (CheckBoxMesh->isChecked()) {
- int aConstructorId = GetConstructorId();
+ SMESH::ElementType neededType = GetConstructorId() ? SMESH::FACE : SMESH::EDGE;
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString);
- if (!SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO)->_is_nil()) { //MESH
- // get IDs from mesh
- SMDS_Mesh* aSMDSMesh = myActor->GetObject()->GetMesh();
- if (!aSMDSMesh)
- return;
-
- if (aConstructorId == 0) {
- SMDS_EdgeIteratorPtr anIter = aSMDSMesh->edgesIterator();
-
- while (anIter->more()) {
- const SMDS_MeshEdge * edge = anIter->next();
- if (edge) {
- myElementsId += QString(" %1").arg(edge->GetID());
- aNbElements++;
- }
- }
- } else if (aConstructorId == 1) {
- SMDS_FaceIteratorPtr anIter = aSMDSMesh->facesIterator();
- while (anIter->more()) {
- const SMDS_MeshFace * face = anIter->next();
- if (face) {
- myElementsId += QString(" %1").arg(face->GetID());
- aNbElements++;
- }
+ SMESH::SMESH_Mesh_var mesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO);
+
+ if (!mesh->_is_nil()) { //MESH
+ // get elements from mesh
+ myElementsId = mesh->GetElementsByType(neededType);
+ aNbElements = myElementsId->length();
+ } else {
+ SMESH::SMESH_subMesh_var aSubMesh =
+ SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO);
+
+ if (!aSubMesh->_is_nil()) { //SUBMESH
+ // get IDs from submesh
+ myElementsId = aSubMesh->GetElementsByType(neededType);
+ aNbElements = myElementsId->length();
+ } else {
+ SMESH::SMESH_GroupBase_var aGroup =
+ SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO);
+
+ if (!aGroup->_is_nil() && aGroup->GetType() == neededType) { // GROUP
+ // get IDs from smesh group
+ myElementsId = aGroup->GetListOfID();
+ aNbElements = myElementsId->length();
}
}
- } else if (!SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO)->_is_nil()) { //SUBMESH
- // get submesh
- SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO);
-
- // get IDs from submesh
- SMESH::long_array_var anElementsIds = new SMESH::long_array;
- if (aConstructorId == 0)
- anElementsIds = aSubMesh->GetElementsByType(SMESH::EDGE);
- else if (aConstructorId == 1)
- anElementsIds = aSubMesh->GetElementsByType(SMESH::FACE);
-
- for (int i = 0; i < anElementsIds->length(); i++)
- myElementsId += QString(" %1").arg(anElementsIds[i]);
- aNbElements = anElementsIds->length();
- } else { // GROUP
- // get smesh group
- SMESH::SMESH_GroupBase_var aGroup =
- SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO);
- if (aGroup->_is_nil())
- return;
-
- if ((aConstructorId == 0 && aGroup->GetType() != SMESH::EDGE) ||
- (aConstructorId == 1 && aGroup->GetType()!= SMESH::FACE))
- return;
-
- // get IDs from smesh group
- SMESH::long_array_var anElementsIds = new SMESH::long_array;
- anElementsIds = aGroup->GetListOfID();
- for (int i = 0; i < anElementsIds->length(); i++)
- myElementsId += QString(" %1").arg(anElementsIds[i]);
- aNbElements = anElementsIds->length();
}
} else {
- aNbElements = SMESH::GetNameOfSelectedElements(mySelector, IO, aString);
- myElementsId = aString;
+ // get indices of selcted elements
+ TColStd_IndexedMapOfInteger aMapIndex;
+ mySelector->GetIndex(IO,aMapIndex);
+ aNbElements = aMapIndex.Extent();
+
+ myElementsId = new SMESH::long_array;
+ myElementsId->length( aNbElements );
+ aString = "";
+ for ( int i = 0; i < aNbElements; ++i )
+ aString += QString(" %1").arg( myElementsId[ i ] = aMapIndex( i+1 ) );
}
if (aNbElements < 1)
#include "LightApp_SelectionMgr.h"
#include "SUIT_SelectionFilter.h"
+#include "Handle_SALOME_InteractiveObject.hxx"
// QT Includes
#include <qdialog.h>
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
QLineEdit* myEditCurrentArgument; /* Current LineEdit */
- QString myElementsId;
+ //QString myElementsId;
int myNbOkElements; /* to check when elements are defined */
SVTK_Selector* mySelector;
bool myBusy;
SMESH::SMESH_Mesh_var myMesh;
+ SMESH::long_array_var myElementsId;
SMESH_Actor* myActor;
+ Handle(SALOME_InteractiveObject) myIO;
SUIT_SelectionFilter* myMeshOrSubMeshOrGroupFilter;
// widgets
SMESHGUI_SpinBox* SpinBox_Dz;
QLabel* TextLabelNbSteps;
QSpinBox* SpinBox_NbSteps;
+ QCheckBox* MakeGroupsCheck;
QGroupBox* GroupButtons;
QPushButton* buttonOk;
aDlgLay->setStretchFactor(myMainFrame, 1);
- myHelpFileName = "selection_filter_library.htm";
+ myHelpFileName = "selection_filter_library_page.html";
Init(myTypes);
}
if (!anObj->_is_nil())
{
myTable->SetThreshold(aRow, GEOMBase::GetName(anObj));
- myTable->SetID( aRow, GEOMBase::GetIORFromObject(anObj));
+ //myTable->SetID( aRow, GEOMBase::GetIORFromObject(anObj));
+ myTable->SetID(aRow, anIO->getEntry());
}
}
aDlgLay->setStretchFactor(myMainFrame, 1);
- myHelpFileName = "selection_filter_library.htm";
+ myHelpFileName = "selection_filter_library_page.html";
Init(myTypes, myMode);
}
#include "SMESH_TypeFilter.hxx"
#include "SMESH_Actor.h"
+#include "SMESH_ActorUtils.h"
#include "GEOMBase.h"
#include "GEOM_SelectionFilter.h"
#include <qpixmap.h>
#include <qmemarray.h>
#include <qwidgetstack.h>
+#include <qcolordialog.h>
#include <QtxIntSpinBox.h>
// STL includes
#include <vector>
#include <algorithm>
+#include <set>
using namespace std;
if (create) {
setCaption(tr("SMESH_CREATE_GROUP_TITLE"));
- myHelpFileName = "/files/creating_groups.htm";
+ myHelpFileName = "creating_groups_page.html";
}
else {
setCaption(tr("SMESH_EDIT_GROUP_TITLE"));
- myHelpFileName = "/files/editing_groups.htm";
+ myHelpFileName = "editing_groups_page.html";
}
setSizeGripEnabled(TRUE);
QGroupBox* aColorBox = new QGroupBox(2, Qt::Horizontal, this, "color box");
aColorBox->setTitle(tr("SMESH_SET_COLOR"));
- mySelectColorGroup = new QCheckBox(aColorBox, "color checkbox");
- mySelectColorGroup->setText(tr("SMESH_CHECK_COLOR"));
-
- myColorSpinBox = new QtxIntSpinBox( aColorBox );
- myColorSpinBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
- myColorSpinBox->setMinValue( 0 );
- myColorSpinBox->setMaxValue( 9999 );
-
- onSelectColorGroup(false);
-
+ new QLabel( tr("SMESH_CHECK_COLOR"), aColorBox, "color label" );
+ myColorBtn = new QPushButton(aColorBox, "color button");
+ myColorBtn->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+
/***************************************************************/
QFrame* aButtons = new QFrame(this, "button box");
connect(mySubMeshBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
connect(myGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
connect(myGeomGroupBtn, SIGNAL(toggled(bool)), this, SLOT(onGeomSelectionButton(bool)));
- connect(mySelectColorGroup, SIGNAL(toggled(bool)), this, SLOT(onSelectColorGroup(bool)));
- connect(myColorSpinBox, SIGNAL(valueChanged(const QString&)), this, SLOT(onNbColorsChanged(const QString&)));
+ connect(myColorBtn, SIGNAL(clicked()), this, SLOT(onSelectColor()));
connect(aOKBtn, SIGNAL(clicked()), this, SLOT(onOK()));
connect(aApplyBtn, SIGNAL(clicked()), this, SLOT(onApply()));
myTypeGroup->setButton(0);
updateButtons();
+ //myName->setText(GetDefaultName(tr("SMESH_GROUP")));
}
//=================================================================================
}
}
+//=================================================================================
+// function : GetDefaultName()
+// purpose : Get the Group Name if Create new Group
+//=================================================================================
+QString SMESHGUI_GroupDlg::GetDefaultName(const QString& theOperation)
+{
+ QString aName = "";
+
+ // collect all object names of SMESH component
+ SalomeApp_Study* appStudy =
+ dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
+ if ( !appStudy ) return aName;
+ _PTR(Study) aStudy = appStudy->studyDS();
+
+ std::set<std::string> aSet;
+ _PTR(SComponent) aMeshCompo (aStudy->FindComponent("SMESH"));
+ if (aMeshCompo) {
+ _PTR(ChildIterator) it (aStudy->NewChildIterator(aMeshCompo));
+ _PTR(SObject) obj;
+ for (it->InitEx(true); it->More(); it->Next()) {
+ obj = it->Value();
+ aSet.insert(obj->GetName());
+ }
+ }
+
+ // build a unique name
+ int aNumber = 0;
+ bool isUnique = false;
+ while (!isUnique) {
+ aName = theOperation + "_" + QString::number(++aNumber);
+ isUnique = (aSet.count(aName.latin1()) == 0);
+ }
+
+ return aName;
+}
+
//=================================================================================
// function : Init()
// purpose :
myActor = SMESH::FindActorByObject(myMesh);
SMESH::SetPickable(myActor);
+ setDefaultGroupColor();
+
SALOME_ListIO aList;
mySelectionMgr->selectedObjects( aList );
if( !aList.IsEmpty() )
myName->setText(theGroup->GetName());
myName->home(false);
+ myOldName = myName->text();
- myColorSpinBox->setValue( theGroup->GetColorNumber() );
+ SALOMEDS::Color aColor = theGroup->GetColor();
+ setGroupColor( aColor );
myMeshGroupLine->setText(theGroup->GetName());
aShapeName = aGroupShapeSO->GetName().c_str();
}
myGeomGroupLine->setText( aShapeName );
+ myName->setText("Group On " + aShapeName);
}
}
}
updateButtons();
}
-//=================================================================================
-// function : onNbColorsChanged()
-// purpose :
-//=================================================================================
-void SMESHGUI_GroupDlg::onNbColorsChanged (const QString& text)
-{
- updateButtons();
-}
-
//=================================================================================
// function : onTypeChanged()
// purpose : Group elements type radio button management
{
if (myGrpTypeId != id) {
myWGStack->raiseWidget( id );
+ if (id == 0)
+ myName->setText(myOldName);
onSelectGeomGroup(id == 1);
}
myGrpTypeId = id;
}
+//=================================================================================
+// function : onSelectColor()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupDlg::onSelectColor()
+{
+ QColor color = getGroupQColor();
+ color = QColorDialog::getColor( color );
+ setGroupQColor( color );
+
+ updateButtons();
+}
+
//=================================================================================
// function : setSelectionMode()
// purpose : Radio button management
myGroup = SMESH::AddGroup(myMesh, aType, myName->text());
myGroup->Add(anIdList.inout());
- int aColorNumber = myColorSpinBox->value();
- myGroup->SetColorNumber(aColorNumber);
+ SALOMEDS::Color aColor = getGroupColor();
+ myGroup->SetColor(aColor);
_PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroup);
- SMESH::setFileName ( aMeshGroupSO, QString::number(myColorSpinBox->value()) );
+ //SMESH::setFileName ( aMeshGroupSO, QString::number(myColorSpinBox->value()) );
SMESH::setFileType ( aMeshGroupSO, "COULEURGROUP" );
/* init for next operation */
myName->setText("");
- myColorSpinBox->setValue(0);
myElements->clear();
myGroup = SMESH::SMESH_Group::_nil();
} else { // edition
myGroup->SetName(myName->text());
- int aColorNumber = myColorSpinBox->value();
- myGroup->SetColorNumber(aColorNumber);
+ SALOMEDS::Color aColor = getGroupColor();
+ myGroup->SetColor(aColor);
+
+ _PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroup);
+ if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str()))
+ anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
QValueList<int> aAddList;
QValueList<int>::iterator anIt;
myGroupOnGeom = myMesh->CreateGroupFromGEOM(aType, myName->text(), aGroupVar);
}
- int aColorNumber = myColorSpinBox->value();
- myGroupOnGeom->SetColorNumber(aColorNumber);
+ SALOMEDS::Color aColor = getGroupColor();
+ myGroupOnGeom->SetColor(aColor);
_PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroupOnGeom);
- SMESH::setFileName ( aMeshGroupSO, QString::number(myColorSpinBox->value()) );
-
+ //SMESH::setFileName ( aMeshGroupSO, QString::number(myColorSpinBox->value()) );
SMESH::setFileType ( aMeshGroupSO,"COULEURGROUP" );
/* init for next operation */
myName->setText("");
- myColorSpinBox->setValue(0);
myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil();
}
else { // edition
myGroupOnGeom->SetName(myName->text());
- int aColorNumber = myColorSpinBox->value();
- myGroupOnGeom->SetColorNumber(aColorNumber);
+ SALOMEDS::Color aColor = getGroupColor();
+ myGroupOnGeom->SetColor(aColor);
+
+ _PTR(SObject) aMeshGroupSO = SMESH::FindSObject(myGroupOnGeom);
+ if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str()))
+ anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
}
mySMESHGUI->updateObjBrowser(true);
}
myCurrentLineEdit->setText(aString);
+ myOldName = myName->text();
+ myName->setText(aString);
myCurrentLineEdit->home(false);
updateButtons();
}
}
-//=================================================================================
-// function : (onSelectColorGroup)
-// purpose : Called when setting a color on group
-//=================================================================================
-void SMESHGUI_GroupDlg::onSelectColorGroup(bool on)
-{
- if (!on)
- myColorSpinBox->setValue(0);
-
- myColorSpinBox->setEnabled(on);
-}
//=================================================================================
// function : setCurrentSelection()
setSelectionMode(7);
}
}
+
+//=================================================================================
+// function : setGroupColor()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupDlg::setGroupColor( const SALOMEDS::Color& theColor )
+{
+ QColor aQColor( (int)( theColor.R * 255.0 ),
+ (int)( theColor.G * 255.0 ),
+ (int)( theColor.B * 255.0 ) );
+ setGroupQColor( aQColor );
+}
+
+//=================================================================================
+// function : getGroupColor()
+// purpose :
+//=================================================================================
+SALOMEDS::Color SMESHGUI_GroupDlg::getGroupColor() const
+{
+ QColor aQColor = getGroupQColor();
+
+ SALOMEDS::Color aColor;
+ aColor.R = (float)aQColor.red() / 255.0;
+ aColor.G = (float)aQColor.green() / 255.0;
+ aColor.B = (float)aQColor.blue() / 255.0;
+
+ return aColor;
+}
+
+//=================================================================================
+// function : setGroupQColor()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupDlg::setGroupQColor( const QColor& theColor )
+{
+ if( theColor.isValid() )
+ {
+ QPalette pal = myColorBtn->palette();
+ pal.setColor(QColorGroup::Button, theColor);
+ myColorBtn->setPalette(pal);
+ }
+}
+
+//=================================================================================
+// function : getGroupQColor()
+// purpose :
+//=================================================================================
+QColor SMESHGUI_GroupDlg::getGroupQColor() const
+{
+ QColor aColor = myColorBtn->palette().active().button();
+ return aColor;
+}
+
+//=================================================================================
+// function : setDefaultGroupColor()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupDlg::setDefaultGroupColor()
+{
+ if( myMesh->_is_nil() )
+ return;
+
+ bool isAutoColor = myMesh->GetAutoColor();
+
+ QColor aQColor;
+ if( !isAutoColor )
+ {
+ int r = 0, g = 0, b = 0;
+ SMESH::GetColor( "SMESH", "fill_color", r, g, b, QColor( 0, 170, 255 ) );
+ aQColor.setRgb( r, g, b );
+ }
+ else
+ {
+ SMESH::ListOfGroups aListOfGroups = *myMesh->GetGroups();
+
+ QValueList<SALOMEDS::Color> aReservedColors;
+ for( int i = 0, n = aListOfGroups.length(); i < n; i++ )
+ {
+ SMESH::SMESH_GroupBase_var aGroupObject = aListOfGroups[i];
+ SALOMEDS::Color aReservedColor = aGroupObject->GetColor();
+ aReservedColors.append( aReservedColor );
+ }
+
+ SALOMEDS::Color aColor = SMESHGUI::getUniqueColor( aReservedColors );
+ aQColor.setRgb( (int)( aColor.R * 255.0 ),
+ (int)( aColor.G * 255.0 ),
+ (int)( aColor.B * 255.0 ) );
+
+ }
+
+ setGroupQColor( aQColor );
+}
bool modal = FALSE, WFlags fl = 0 );
~SMESHGUI_GroupDlg();
+ static QString GetDefaultName(const QString& theOperation);
+
public slots:
void onAdd();
void onSelectSubMesh(bool on);
void onSelectGroup(bool on);
void onSelectGeomGroup(bool on);
- void onSelectColorGroup(bool on);
void setCurrentSelection();
void setFilters();
void onSort();
void onNameChanged(const QString& text);
- void onNbColorsChanged(const QString& text);
void onFilterAccepted();
+ void onSelectColor();
+
void onGeomPopup( int );
void onGeomSelectionButton( bool );
void updateButtons();
void updateGeomPopup();
+ void setGroupColor( const SALOMEDS::Color& );
+ SALOMEDS::Color getGroupColor() const;
+
+ void setGroupQColor( const QColor& );
+ QColor getGroupQColor() const;
+
+ void setDefaultGroupColor();
+
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
SMESH_Actor* myActor; /* Current mesh actor */
QButtonGroup* myTypeGroup;
QLineEdit* myName;
+ QString myOldName;
QButtonGroup* myGrpTypeGroup;
QPushButton* myGroupBtn;
QLineEdit* myGroupLine;
- QCheckBox* mySelectColorGroup;
- QtxIntSpinBox* myColorSpinBox;
+ QPushButton* myColorBtn;
QCheckBox* mySelectGeomGroup;
QToolButton* myGeomGroupBtn;
if (myMode == UNION) {
setCaption(tr("UNION_OF_TWO_GROUPS"));
- myHelpFileName = "/files/using_operations_on_groups.htm#Union";
+ myHelpFileName = "using_operations_on_groups_page.html#union_anchor";
}
else if (myMode == INTERSECT) {
setCaption(tr("INTERSECTION_OF_TWO_GROUPS"));
- myHelpFileName = "/files/using_operations_on_groups.htm#Intersection";
+ myHelpFileName = "using_operations_on_groups_page.html#intersection_anchor";
}
else {
setCaption(tr("CUT_OF_TWO_GROUPS"));
- myHelpFileName = "/files/using_operations_on_groups.htm#Cut";
+ myHelpFileName = "using_operations_on_groups_page.html#cut_anchor";
}
mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
#include <qapplication.h>
-SMESHGUI_GenericHypothesisCreator::SMESHGUI_GenericHypothesisCreator( const QString& aHypType )
- : myHypType( aHypType ), myIsCreate( false ), myDlg( 0 )
+SMESHGUI_GenericHypothesisCreator::SMESHGUI_GenericHypothesisCreator( const QString& theHypType )
+ : myHypType( theHypType ), myIsCreate( false ), myDlg( 0 )
{
}
}
void SMESHGUI_GenericHypothesisCreator::create( SMESH::SMESH_Hypothesis_ptr initParamsHyp,
+ const QString& theHypName,
QWidget* parent)
{
MESSAGE( "Creation of hypothesis with initial params" );
if ( !CORBA::is_nil( initParamsHyp ) && hypType() == initParamsHyp->GetName() )
myInitParamsHypo = SMESH::SMESH_Hypothesis::_duplicate( initParamsHyp );
- create( false, parent );
+ create( false, theHypName, parent );
}
-void SMESHGUI_GenericHypothesisCreator::create( const bool isAlgo, QWidget* parent )
+void SMESHGUI_GenericHypothesisCreator::create( bool isAlgo,
+ const QString& theHypName,
+ QWidget* theParent )
{
MESSAGE( "Creation of hypothesis" );
- // Get default name for hypothesis/algorithm creation
- HypothesisData* aHypData = SMESH::GetHypothesisData( hypType().latin1() );
- QString aHypName = aHypData ? aHypData->Label : hypType();
-
myIsCreate = true;
// Create hypothesis/algorithm
if (isAlgo)
- SMESH::CreateHypothesis( hypType(), aHypName, isAlgo );
-
+ SMESH::CreateHypothesis( hypType(), theHypName, isAlgo );
else
{
- SMESH::SMESH_Hypothesis_var newHypo = SMESH::SMESH_Hypothesis::_narrow
- ( SMESH::CreateHypothesis( hypType(), aHypName, false ) );
-
- if( !editHypothesis( newHypo.in(), parent ) )
+ SMESH::SMESH_Hypothesis_var aHypothesis =
+ SMESH::CreateHypothesis( hypType(), theHypName, false );
+ if( !editHypothesis( aHypothesis.in(), theHypName, theParent ) )
{ //remove just created hypothesis
- _PTR(SObject) SHyp = SMESH::FindSObject( newHypo.in() );
+ _PTR(SObject) aHypSObject = SMESH::FindSObject( aHypothesis.in() );
_PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
if( aStudy && !aStudy->GetProperties()->IsLocked() )
{
_PTR(StudyBuilder) aBuilder = aStudy->NewBuilder();
- aBuilder->RemoveObjectWithChildren( SHyp );
+ aBuilder->RemoveObjectWithChildren( aHypSObject );
}
}
}
SMESHGUI::GetSMESHGUI()->updateObjBrowser( true, 0 );
}
-void SMESHGUI_GenericHypothesisCreator::edit( SMESH::SMESH_Hypothesis_ptr h, QWidget* parent )
+void SMESHGUI_GenericHypothesisCreator::edit( SMESH::SMESH_Hypothesis_ptr theHypothesis,
+ const QString& theHypName,
+ QWidget* theParent )
{
- if( CORBA::is_nil( h ) )
+ if( CORBA::is_nil( theHypothesis ) )
return;
MESSAGE("Edition of hypothesis");
myIsCreate = false;
- if( !editHypothesis( h, parent ) )
+ if( !editHypothesis( theHypothesis, theHypName, theParent ) )
return;
- SMESH::SObjectList listSOmesh = SMESH::GetMeshesUsingAlgoOrHypothesis( h );
+ SMESH::SObjectList listSOmesh = SMESH::GetMeshesUsingAlgoOrHypothesis( theHypothesis );
if( listSOmesh.size() > 0 )
- for( int i=0; i<listSOmesh.size(); i++ )
+ for( int i = 0; i < listSOmesh.size(); i++ )
{
_PTR(SObject) submSO = listSOmesh[i];
SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( submSO );
SMESHGUI::GetSMESHGUI()->updateObjBrowser( true, 0 );
}
-bool SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ptr h, QWidget* parent )
+bool SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ptr h,
+ const QString& theHypName,
+ QWidget* theParent )
{
if( CORBA::is_nil( h ) )
return false;
bool res = true;
+ myHypName = theHypName;
myHypo = SMESH::SMESH_Hypothesis::_duplicate( h );
- SMESHGUI_HypothesisDlg* Dlg =
- new SMESHGUI_HypothesisDlg( const_cast<SMESHGUI_GenericHypothesisCreator*>( this ), parent );
+ SMESHGUI_HypothesisDlg* Dlg = new SMESHGUI_HypothesisDlg( this, theParent );
myDlg = Dlg;
QFrame* fr = buildFrame();
if( fr )
{
Dlg->setCustomFrame( fr );
Dlg->setCaption( caption() );
+ Dlg->setName( theHypName );
Dlg->setHIcon( icon() );
Dlg->setType( type() );
retrieveParams();
Dlg->show();
- //connect(myDlg, SIGNAL( closed() ), this, SLOT( onDlgClosed() ));
qApp->enter_loop(); // make myDlg not modal
-// res = myDlg->exec()==QDialog::Accepted;
res = myDlg->result();
if( res ) {
QString paramValues = storeParams();
return myHypType;
}
+QString SMESHGUI_GenericHypothesisCreator::hypName() const
+{
+ return myHypName;
+}
+
const SMESHGUI_GenericHypothesisCreator::ListOfWidgets& SMESHGUI_GenericHypothesisCreator::widgets() const
{
return myParamWidgets;
QString aHypType = creator->hypType();
if ( aHypType == "LocalLength" )
- myHelpFileName = "/files/arithmetic_1d.htm#Average_length";
+ myHelpFileName = "a1d_meshing_hypo_page.html#average_length_anchor";
else if ( aHypType == "Arithmetic1D")
- myHelpFileName = "/files/arithmetic_1d.htm#arithmetic_1D";
+ myHelpFileName = "a1d_meshing_hypo_page.html#arithmetic_1d_anchor";
else if ( aHypType == "MaxElementArea")
- myHelpFileName = "/files/max._element_area_hypothesis.htm";
+ myHelpFileName = "a2d_meshing_hypo_page.html#max_element_area_anchor";
else if ( aHypType == "MaxElementVolume")
- myHelpFileName = "/files/max._element_volume_hypothsis.htm";
+ myHelpFileName = "max_element_volume_hypo_page.html";
else if ( aHypType == "StartEndLength")
- myHelpFileName = "/files/arithmetic_1d.htm#start_and_end_length";
+ myHelpFileName = "a1d_meshing_hypo_page.html#start_and_end_length_anchor";
else if ( aHypType == "Deflection1D")
- myHelpFileName = "/files/arithmetic_1d.htm#deflection_1D";
+ myHelpFileName = "a1d_meshing_hypo_page.html#deflection_1d_anchor";
else if ( aHypType == "AutomaticLength")
- myHelpFileName = "/files/arithmetic_1d.htm#automatic_length";
+ myHelpFileName = "a1d_meshing_hypo_page.html#automatic_length_anchor";
else if ( aHypType == "NumberOfSegments")
- myHelpFileName = "/files/arithmetic_1d.htm#Number_of_elements";
+ myHelpFileName = "a1d_meshing_hypo_page.html#number_of_segments_anchor";
else
myHelpFileName = "";
Q_OBJECT
public:
- SMESHGUI_GenericHypothesisCreator( const QString& );
+ SMESHGUI_GenericHypothesisCreator( const QString& theHypType );
virtual ~SMESHGUI_GenericHypothesisCreator();
- void create( const bool isAlgo, QWidget* );
- void edit( SMESH::SMESH_Hypothesis_ptr, QWidget* );
- void create( SMESH::SMESH_Hypothesis_ptr, QWidget* );
+ void create( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*);
+ void create( bool isAlgo, const QString&, QWidget*);
+ void edit( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*);
virtual bool checkParams() const = 0;
virtual void onReject();
- QString hypType() const;
- bool isCreation() const;
+ QString hypType() const;
+ QString hypName() const;
+ bool isCreation() const;
protected:
typedef struct
virtual void onValueChanged();
private:
- bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, QWidget* );
+ bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget* );
private:
SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo;
+ QString myHypName;
QString myHypType;
ListOfWidgets myParamWidgets;
bool myIsCreate;
SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator*, QWidget* );
virtual ~SMESHGUI_HypothesisDlg();
- void setHIcon( const QPixmap& );
- void setCustomFrame( QFrame* );
- void setType( const QString& );
+ void setHIcon( const QPixmap& );
+ void setCustomFrame( QFrame* );
+ void setType( const QString& );
protected slots:
virtual void accept();
private:
SMESHGUI_GenericHypothesisCreator* myCreator;
QVBoxLayout* myLayout;
- QLabel *myIconLabel, *myTypeLabel;
+ QLabel* myIconLabel;
+ QLabel* myTypeLabel;
QString myHelpFileName;
};
const QStringList& theNeededHypos,
const QStringList& theOptionalHypos,
const QStringList& theInputTypes,
- const QStringList& theOutputTypes)
+ const QStringList& theOutputTypes,
+ const bool theIsNeedGeometry = true)
: TypeName( theTypeName ),
PluginName( thePluginName ),
ServerLibName( theServerLibName ),
Dim( theDim ),
IsAux( theIsAux ),
NeededHypos( theNeededHypos ), OptionalHypos( theOptionalHypos ),
- InputTypes( theInputTypes ), OutputTypes( theOutputTypes )
+ InputTypes( theInputTypes ), OutputTypes( theOutputTypes ),
+ IsNeedGeometry( theIsNeedGeometry )
{};
QString TypeName; //!< hypothesis type name
QString IconId; //!< icon identifier
QValueList<int> Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration)
bool IsAux; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
+ bool IsNeedGeometry; //!< TRUE if for given hypothesis need shape, FALSE otherwise
// for algorithm only: dependencies algo <-> algo and algo -> hypos
QStringList NeededHypos; //!< list of obligatory hypotheses
aMsg = QObject::tr(aMsg).arg(aHypName) +
QObject::tr(QString("SMESH_HYP_%1").arg(theHypStatus));
+ if ( theHypStatus == SMESH::HYP_HIDDEN_ALGO ) // PAL18501
+ aMsg = aMsg.arg( GetHypothesisData(theHyp->GetName())->Dim[0] );
+
SUIT_MessageBox::warn1(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
aMsg,
QStringList GetAvailableHypotheses( const bool isAlgo,
const int theDim,
- const bool isAux )
+ const bool isAux,
+ const bool isNeedGeometry)
{
QStringList aHypList;
// Init list of available hypotheses, if needed
InitAvailableHypotheses();
-
+ bool checkGeometry = !isNeedGeometry;
// fill list of hypotheses/algorithms
THypothesisDataMap* pMap = isAlgo ? &myAlgorithmsMap : &myHypothesesMap;
THypothesisDataMap::iterator anIter;
for ( anIter = pMap->begin(); anIter != pMap->end(); anIter++ )
{
HypothesisData* aData = (*anIter).second;
- if ( ( theDim < 0 || aData->Dim.contains( theDim ) ) && aData->IsAux == isAux )
- aHypList.append(((*anIter).first).c_str());
+ if ( ( theDim < 0 || aData->Dim.contains( theDim ) ) && aData->IsAux == isAux)
+ if (checkGeometry){
+ if (aData->IsNeedGeometry == isNeedGeometry)
+ aHypList.append(((*anIter).first).c_str());
+ }
+ else
+ aHypList.append(((*anIter).first).c_str());
}
return aHypList;
}
const bool isAlgo)
{
if(MYDEBUG) MESSAGE("Create " << aHypType << " with name " << aHypName);
-
- SMESH::SMESH_Hypothesis_var Hyp;
-
HypothesisData* aHypData = GetHypothesisData(aHypType);
QString aServLib = aHypData->ServerLibName;
-
try {
- Hyp = SMESHGUI::GetSMESHGen()->CreateHypothesis(aHypType, aServLib);
- if (!Hyp->_is_nil()) {
- _PTR(SObject) SHyp = SMESH::FindSObject(Hyp.in());
- if (SHyp) {
- //if (strcmp(aHypName,"") != 0)
+ SMESH::SMESH_Hypothesis_var aHypothesis;
+ aHypothesis = SMESHGUI::GetSMESHGen()->CreateHypothesis(aHypType, aServLib);
+ if (!aHypothesis->_is_nil()) {
+ _PTR(SObject) aHypSObject = SMESH::FindSObject(aHypothesis.in());
+ if (aHypSObject) {
if (strlen(aHypName) > 0)
- SMESH::SetName(SHyp, aHypName);
- //SalomeApp_Application* app =
- // dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
- //if (app)
- // app->objectBrowser()->updateTree();
- SMESHGUI::GetSMESHGUI()->updateObjBrowser();
- return Hyp._retn();
+ SMESH::SetName(aHypSObject, aHypName);
+ SMESHGUI::GetSMESHGUI()->updateObjBrowser();
+ return aHypothesis._retn();
}
}
- }
- catch (const SALOME::SALOME_Exception & S_ex) {
+ } catch (const SALOME::SALOME_Exception & S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
}
if (MorSM) {
try {
GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh(MorSM);
- if (!aShapeObject->_is_nil()) {
- SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>(MorSM);
- SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>(MorSM);
-
- if (!aSubMesh->_is_nil())
- aMesh = aSubMesh->GetFather();
-
- if (!aMesh->_is_nil()) {
- res = aMesh->RemoveHypothesis(aShapeObject, anHyp);
- if (res < SMESH::HYP_UNKNOWN_FATAL) {
+ SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>(MorSM);
+ SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>(MorSM);
+
+ if (!aSubMesh->_is_nil())
+ aMesh = aSubMesh->GetFather();
+
+ if (!aMesh->_is_nil()) {
+ if (aMesh->HasShapeToMesh() && !aShapeObject->_is_nil()) {
+ res = aMesh->RemoveHypothesis(aShapeObject, anHyp);
+ if (res < SMESH::HYP_UNKNOWN_FATAL) {
_PTR(SObject) meshSO = SMESH::FindSObject(aMesh);
if (meshSO)
SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0);
}
- if (res > SMESH::HYP_OK) {
- wc.suspend();
- processHypothesisStatus(res, anHyp, false);
- wc.resume();
- }
- }
- }
+
+ }
+ else if(!aMesh->HasShapeToMesh()){
+ res = aMesh->RemoveHypothesis(aShapeObject, anHyp);
+ if (res < SMESH::HYP_UNKNOWN_FATAL) {
+ _PTR(SObject) meshSO = SMESH::FindSObject(aMesh);
+ if (meshSO)
+ SMESH::ModifiedMesh(meshSO, false, aMesh->NbNodes()==0);
+ }
+ }
+ if (res > SMESH::HYP_OK) {
+ wc.suspend();
+ processHypothesisStatus(res, anHyp, false);
+ wc.resume();
+ }
+ }
} catch(const SALOME::SALOME_Exception& S_ex) {
wc.suspend();
SalomeApp_Tools::QtCatchCorbaException(S_ex);
#define CASE2MESSAGE(enum) case SMESH::enum: msg = QObject::tr( "STATE_" #enum ); break;
QString GetMessageOnAlgoStateErrors(const algo_error_array& errors)
{
- QString resMsg = QObject::tr("SMESH_WRN_MISSING_PARAMETERS") + ":\n";
+ QString resMsg; // PAL14861 = QObject::tr("SMESH_WRN_MISSING_PARAMETERS") + ":\n";
for ( int i = 0; i < errors.length(); ++i ) {
const SMESH::AlgoStateError & error = errors[ i ];
const bool hasAlgo = ( strlen( error.algoName ) != 0 );
CASE2MESSAGE( HYP_MISSING );
CASE2MESSAGE( HYP_NOTCONFORM );
CASE2MESSAGE( HYP_BAD_PARAMETER );
+ CASE2MESSAGE( HYP_BAD_GEOMETRY );
default: continue;
}
// apply args to message:
SMESHGUI_EXPORT
QStringList GetAvailableHypotheses( const bool isAlgo,
const int theDim = -1,
- const bool isAux = false);
+ const bool isAux = false,
+ const bool isNeedGeometry = true);
SMESHGUI_EXPORT
QStringList GetHypothesesSets();
myX = new SMESHGUI_SpinBox(aCoordGrp);
QLabel* aYLabel = new QLabel(tr("SMESH_Y"), aCoordGrp);
- aYLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //aYLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ aYLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
myY = new SMESHGUI_SpinBox(aCoordGrp);
QLabel* aZLabel = new QLabel(tr("SMESH_Z"), aCoordGrp);
- aZLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //aZLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ aZLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
myZ = new SMESHGUI_SpinBox(aCoordGrp);
- myX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
- myY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
- myZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ myX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ myY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ myZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
// Method selection
mySimulation = 0;
myDlg = new SMESHGUI_MakeNodeAtPointDlg;
myFilter = 0;
+ myHelpFileName = "mesh_through_point_page.html";
// connect signals and slots
connect(myDlg->myX, SIGNAL (valueChanged(double)), this, SLOT(redisplayPreview()));
// Init Mesh field from selection
SelectionIntoArgument();
- myHelpFileName = "/files/merging_nodes.htm";
+ myHelpFileName = "merging_nodes_page.html";
}
//=================================================================================
}
}
+
+//================================================================================
+/*!
+ * \brief Disable tab
+ * \param int - tab ID
+ */
+//================================================================================
+void SMESHGUI_MeshDlg::disableTab(const int theTabId) {
+ myTabWg->setTabEnabled( myTabs[ theTabId ], false );
+}
+
+//================================================================================
+/*!
+ * \brief Enable tabs
+ * \param int - tab ID
+ */
+//================================================================================
+void SMESHGUI_MeshDlg::enableTab(const int theTabId) {
+ myTabWg->setTabEnabled( myTabs[ theTabId ], true );
+}
+
void SMESHGUI_MeshDlg::onGeomSelectionButton(bool isBtnOn)
{
if ( myGeomPopup && isBtnOn )
void setMaxHypoDim( const int );
void setHypoSets( const QStringList& );
void setGeomPopupEnabled( const bool );
+ void disableTab(const int);
+ void enableTab(const int);
+
signals:
// init dialog with current selection
onSelectionChanged();
- myHelpFileName = "/files/viewing_mesh_info.htm#advanced_infos";
+ myHelpFileName = "mesh_infos_page.html#advanced_mesh_infos_anchor";
}
//=================================================================================
#include "SMESH_TypeFilter.hxx"
#include "SMESH_NumberFilter.hxx"
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+
#include "GEOM_SelectionFilter.h"
#include "GEOMBase.h"
#include "GeometryGUI.h"
#include <TopoDS_Shape.hxx>
#include <TopExp_Explorer.hxx>
-enum { GLOBAL_ALGO_TAG =3,
- GLOBAL_HYPO_TAG =2,
- LOCAL_ALGO_TAG =2,
- LOCAL_HYPO_TAG =1,
- SUBMESH_ON_VERTEX_TAG =4,
- SUBMESH_ON_EDGE_TAG =5,
- SUBMESH_ON_WIRE_TAG =6,
- SUBMESH_ON_FACE_TAG =7,
- SUBMESH_ON_SHELL_TAG =8,
- SUBMESH_ON_SOLID_TAG =9,
- SUBMESH_ON_COMPOUND_TAG=10 };
-
//================================================================================
/*!
* \brief Constructor
{
if ( GeometryGUI::GetGeomGen()->_is_nil() )// check that GEOM_Gen exists
GeometryGUI::InitGeomGen();
+ myIsOnGeometry = true;
}
//================================================================================
//================================================================================
bool SMESHGUI_MeshOp::onApply()
{
- if( isStudyLocked() )
+ if (isStudyLocked())
return false;
QString aMess;
//================================================================================
void SMESHGUI_MeshOp::startOperation()
{
- if( !myDlg )
+ if (!myDlg)
{
myDlg = new SMESHGUI_MeshDlg( myToCreate, myIsMesh );
for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ )
connect( myDlg, SIGNAL( geomSelectionByMesh( bool )), SLOT( onGeomSelectionByMesh( bool )));
if ( myToCreate )
- if ( myIsMesh ) myHelpFileName = "/files/constructing_meshes.htm";
- else myHelpFileName = "/files/constructing_submeshes.htm";
- else myHelpFileName = "files/reassigning_hypotheses_and_algorithms.htm";
+ if ( myIsMesh ) myHelpFileName = "constructing_meshes_page.html";
+ else myHelpFileName = "constructing_submeshes_page.html";
+ else myHelpFileName = "editing_meshes_page.html";
}
SMESHGUI_SelectionOp::startOperation();
//if (mainObj->_is_nil() ||
// string(mainObj->GetEntry()) != string(mainGeom->GetEntry())) return false;
while(1) {
- if(mainObj->_is_nil())
- return false;
- if( string(mainObj->GetEntry()) == string(mainGeom->GetEntry()) )
- return true;
- mainObj = op->GetMainShape(mainObj);
+ if (mainObj->_is_nil())
+ return false;
+ if (string(mainObj->GetEntry()) == string(mainGeom->GetEntry()))
+ return true;
+ mainObj = op->GetMainShape(mainObj);
}
}
//return true;
if ( !geom->_is_nil() ) {
int tag = -1;
switch ( geom->GetShapeType() ) {
- case GEOM::VERTEX: tag = SUBMESH_ON_VERTEX_TAG ; break;
- case GEOM::EDGE: tag = SUBMESH_ON_EDGE_TAG ; break;
- case GEOM::WIRE: tag = SUBMESH_ON_WIRE_TAG ; break;
- case GEOM::FACE: tag = SUBMESH_ON_FACE_TAG ; break;
- case GEOM::SHELL: tag = SUBMESH_ON_SHELL_TAG ; break;
- case GEOM::SOLID: tag = SUBMESH_ON_SOLID_TAG ; break;
- case GEOM::COMPOUND: tag = SUBMESH_ON_COMPOUND_TAG; break;
+ case GEOM::VERTEX: tag = SMESH::Tag_SubMeshOnVertex ; break;
+ case GEOM::EDGE: tag = SMESH::Tag_SubMeshOnEdge ; break;
+ case GEOM::WIRE: tag = SMESH::Tag_SubMeshOnWire ; break;
+ case GEOM::FACE: tag = SMESH::Tag_SubMeshOnFace ; break;
+ case GEOM::SHELL: tag = SMESH::Tag_SubMeshOnShell ; break;
+ case GEOM::SOLID: tag = SMESH::Tag_SubMeshOnSolid ; break;
+ case GEOM::COMPOUND: tag = SMESH::Tag_SubMeshOnCompound; break;
default:;
}
_PTR(GenericAttribute) anAttr;
//================================================================================
void SMESHGUI_MeshOp::selectionDone()
{
- if ( !dlg()->isShown() || !myDlg->isEnabled() )
+ if (!dlg()->isShown() || !myDlg->isEnabled())
return;
SMESHGUI_SelectionOp::selectionDone();
try
{
- // Enable tabs according to shape dimension
-
- int shapeDim = 3;
-
- QStringList aGEOMs;
- myDlg->selectedObject(SMESHGUI_MeshDlg::Geom, aGEOMs);
- GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
-
- if (aGEOMs.count() > 0) {
- // one or more GEOM shape selected
- aSeq->length(aGEOMs.count());
- QStringList::const_iterator aSubShapesIter = aGEOMs.begin();
- int iSubSh = 0;
- for (; aSubShapesIter != aGEOMs.end(); aSubShapesIter++, iSubSh++) {
- QString aSubGeomEntry = (*aSubShapesIter);
- _PTR(SObject) pSubGeom = studyDS()->FindObjectID(aSubGeomEntry.latin1());
- GEOM::GEOM_Object_var aSubGeomVar =
- GEOM::GEOM_Object::_narrow(_CAST(SObject,pSubGeom)->GetObject());
- aSeq[iSubSh] = aSubGeomVar;
- }
- } else {
- // get geometry by selected sub-mesh
- QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj );
- _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.latin1() );
- GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj );
- if (!aGeomVar->_is_nil()) {
- aSeq->length(1);
- aSeq[0] = aGeomVar;
+ myIsOnGeometry = true;
+
+ //Check geometry for mesh
+ QString anObjEntry = myDlg->selectedObject(SMESHGUI_MeshDlg::Obj);
+ _PTR(SObject) pObj = studyDS()->FindObjectID(anObjEntry.latin1());
+ if (pObj)
+ {
+ SMESH::SMESH_Mesh_var aMeshVar =
+ SMESH::SMESH_Mesh::_narrow(_CAST(SObject,pObj)->GetObject());
+ if (!aMeshVar->_is_nil()) {
+ if (!myToCreate && !aMeshVar->HasShapeToMesh())
+ myIsOnGeometry = false;
}
}
- if (aSeq->length() > 0) {
- shapeDim = 0;
- for (int iss = 0; iss < aSeq->length() && shapeDim < 3; iss++) {
- GEOM::GEOM_Object_var aGeomVar = aSeq[iss];
- switch ( aGeomVar->GetShapeType() ) {
- case GEOM::SOLID:
- case GEOM::SHELL: shapeDim = 3; break;
- case GEOM::FACE: shapeDim = (shapeDim < 2) ? 2 : shapeDim; break;
- case GEOM::WIRE:
- case GEOM::EDGE: shapeDim = (shapeDim < 1) ? 1 : shapeDim; break;
- case GEOM::VERTEX: break;
- default:
- TopoDS_Shape aShape;
- if ( GEOMBase::GetShape(aGeomVar, aShape)) {
- TopExp_Explorer exp( aShape, TopAbs_SHELL );
- if ( exp.More() )
- shapeDim = 3;
- else if ( exp.Init( aShape, TopAbs_FACE ), exp.More() )
- shapeDim = (shapeDim < 2) ? 2 : shapeDim;
- else if ( exp.Init( aShape, TopAbs_EDGE ), exp.More() )
- shapeDim = (shapeDim < 1) ? 1 : shapeDim;
- else
- ;//shapeDim = 0;
+ if (myIsOnGeometry)
+ {
+ // Enable tabs according to shape dimension
+
+ int shapeDim = 3;
+
+ QStringList aGEOMs;
+ myDlg->selectedObject(SMESHGUI_MeshDlg::Geom, aGEOMs);
+ GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO;
+
+ if (aGEOMs.count() > 0) {
+ // one or more GEOM shape selected
+ aSeq->length(aGEOMs.count());
+ QStringList::const_iterator aSubShapesIter = aGEOMs.begin();
+ int iSubSh = 0;
+ for (; aSubShapesIter != aGEOMs.end(); aSubShapesIter++, iSubSh++) {
+ QString aSubGeomEntry = (*aSubShapesIter);
+ _PTR(SObject) pSubGeom = studyDS()->FindObjectID(aSubGeomEntry.latin1());
+ GEOM::GEOM_Object_var aSubGeomVar =
+ GEOM::GEOM_Object::_narrow(_CAST(SObject,pSubGeom)->GetObject());
+ aSeq[iSubSh] = aSubGeomVar;
+ }
+ } else {
+ // get geometry by selected sub-mesh
+ QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj );
+ _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.latin1() );
+ GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj );
+ if (!aGeomVar->_is_nil()) {
+ aSeq->length(1);
+ aSeq[0] = aGeomVar;
+ }
+ }
+
+ if (aSeq->length() > 0) {
+ shapeDim = 0;
+ for (int iss = 0; iss < aSeq->length() && shapeDim < 3; iss++) {
+ GEOM::GEOM_Object_var aGeomVar = aSeq[iss];
+ switch ( aGeomVar->GetShapeType() ) {
+ case GEOM::SOLID:
+ case GEOM::SHELL: shapeDim = 3; break;
+ case GEOM::FACE: shapeDim = (shapeDim < 2) ? 2 : shapeDim; break;
+ case GEOM::WIRE:
+ case GEOM::EDGE: shapeDim = (shapeDim < 1) ? 1 : shapeDim; break;
+ case GEOM::VERTEX: break;
+ default:
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape(aGeomVar, aShape)) {
+ TopExp_Explorer exp( aShape, TopAbs_SHELL );
+ if ( exp.More() )
+ shapeDim = 3;
+ else if ( exp.Init( aShape, TopAbs_FACE ), exp.More() )
+ shapeDim = (shapeDim < 2) ? 2 : shapeDim;
+ else if ( exp.Init( aShape, TopAbs_EDGE ), exp.More() )
+ shapeDim = (shapeDim < 1) ? 1 : shapeDim;
+ else
+ ;//shapeDim = 0;
+ }
}
}
}
- }
- myDlg->setMaxHypoDim( shapeDim );
+ myDlg->setMaxHypoDim( shapeDim );
- if ( !myToCreate ) // edition: read hypotheses
- {
- QString anObjEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Obj );
- _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.latin1() );
- if ( pObj != 0 )
+ if (!myToCreate) // edition: read hypotheses
{
- SMESH::SMESH_subMesh_var aVar =
- SMESH::SMESH_subMesh::_narrow( _CAST( SObject,pObj )->GetObject() );
- myDlg->setObjectShown( SMESHGUI_MeshDlg::Mesh, !aVar->_is_nil() );
- myDlg->objectWg( SMESHGUI_MeshDlg::Mesh, SMESHGUI_MeshDlg::Btn )->hide();
- myDlg->updateGeometry();
- myDlg->adjustSize();
- readMesh();
- }
- else
- myDlg->reset();
-
- }
- else if ( !myIsMesh ) // submesh creation
- {
- // 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::SObjectToInterface<SMESH::SMESH_subMesh>( pSubmesh );
- bool editSubmesh = ( !sm->_is_nil() &&
- SUIT_MessageBox::question2( myDlg, tr( "SMESH_WARNING" ),
- tr( "EDIT_SUBMESH_QUESTION"),
- tr( "SMESH_BUT_YES" ),
- tr( "SMESH_BUT_NO" ), 1, 0, 0 ));
- if ( editSubmesh )
+ if (pObj != 0)
{
- selectionMgr()->clearFilters();
- selectObject( pSubmesh );
- SMESHGUI::GetSMESHGUI()->switchToOperation(704);
- return;
+ SMESH::SMESH_subMesh_var aVar =
+ SMESH::SMESH_subMesh::_narrow( _CAST( SObject,pObj )->GetObject() );
+ myDlg->setObjectShown( SMESHGUI_MeshDlg::Mesh, !aVar->_is_nil() );
+ myDlg->setObjectShown( SMESHGUI_MeshDlg::Geom, true );
+ myDlg->objectWg( SMESHGUI_MeshDlg::Mesh, SMESHGUI_MeshDlg::Btn )->hide();
+ myDlg->objectWg( SMESHGUI_MeshDlg::Geom, SMESHGUI_MeshDlg::Btn )->hide();
+ myDlg->updateGeometry();
+ myDlg->adjustSize();
+ readMesh();
}
else
- {
- myDlg->selectObject( "", SMESHGUI_MeshDlg::Geom, "" );
- selectObject( _PTR(SObject)() );
- selectionDone();
- }
+ myDlg->reset();
}
+ else if ( !myIsMesh ) // submesh creation
+ {
+ // 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::SObjectToInterface<SMESH::SMESH_subMesh>( pSubmesh );
+ bool editSubmesh = ( !sm->_is_nil() &&
+ SUIT_MessageBox::question2( myDlg, tr( "SMESH_WARNING" ),
+ tr( "EDIT_SUBMESH_QUESTION"),
+ tr( "SMESH_BUT_YES" ),
+ tr( "SMESH_BUT_NO" ), 1, 0, 0 ));
+ if ( editSubmesh )
+ {
+ selectionMgr()->clearFilters();
+ selectObject( pSubmesh );
+ SMESHGUI::GetSMESHGUI()->switchToOperation(704);
+ return;
+ }
+ else
+ {
+ myDlg->selectObject( "", SMESHGUI_MeshDlg::Geom, "" );
+ selectObject( _PTR(SObject)() );
+ selectionDone();
+ }
+ }
- // enable/disable popup for choice of geom selection way
- bool enable = false;
- QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh );
- if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.latin1() )) {
- SMESH::SMESH_Mesh_var mesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( pMesh );
- if ( !mesh->_is_nil() )
- enable = ( shapeDim > 1 ) && ( mesh->NbEdges() > 0 );
+ // enable/disable popup for choice of geom selection way
+ bool enable = false;
+ QString aMeshEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Mesh );
+ if ( _PTR(SObject) pMesh = studyDS()->FindObjectID( aMeshEntry.latin1() )) {
+ SMESH::SMESH_Mesh_var mesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( pMesh );
+ if ( !mesh->_is_nil() )
+ enable = ( shapeDim > 1 ) && ( mesh->NbEdges() > 0 );
+ }
+ myDlg->setGeomPopupEnabled( enable );
}
- myDlg->setGeomPopupEnabled( enable );
+ }
+ else {
+ myDlg->enableTab( SMESH::DIM_3D );
+ QStringList hypList;
+ availableHyps( SMESH::DIM_3D, Algo, hypList,
+ myAvailableHypData[SMESH::DIM_3D][Algo]);
+
+ SMESHGUI_MeshTab* aTab = myDlg->tab( SMESH::DIM_3D );
+ aTab->setAvailableHyps( Algo, hypList );
+ for (int i = SMESH::DIM_0D;i < SMESH::DIM_3D; ++i) {
+ myDlg->disableTab(i);
+ }
+ //Hide labels and fields (Mesh ang Geometry)
+ myDlg->setObjectShown( SMESHGUI_MeshDlg::Mesh, false );
+ myDlg->setObjectShown( SMESHGUI_MeshDlg::Geom, false );
+ myDlg->adjustSize();
+ readMesh();
}
}
catch ( const SALOME::SALOME_Exception& S_ex )
return false;
}
- // Imported mesh, if create sub-mesh or edit mesh
+/* // Imported mesh, if create sub-mesh or edit mesh
if ( !myToCreate || ( myToCreate && !myIsMesh ))
{
QString aMeshEntry = myDlg->selectedObject
return false;
}
}
- }
+ }*/
// Geom
if ( myToCreate )
theHyps.clear();
bool isAlgo = ( theHypType == Algo );
bool isAux = ( theHypType == AddHyp );
- QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux );
+ QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux, myIsOnGeometry );
QStringList::const_iterator anIter;
for ( anIter = aHypTypeNameList.begin(); anIter != aHypTypeNameList.end(); ++anIter )
* \param theHypType - specifies whether algorims or hypotheses or additional ones
* are retrieved (possible values are in HypType enumeration)
* \param theFather - start object for finding ( may be component, mesh, or sub-mesh )
- * \param theDataList - output list of hypotheses data
* \param theHyps - output list of names.
* \param theHypVars - output list of variables.
* \param theAlgoData - to select hypos able to be used by this algo (optional)
const int theHypType,
_PTR(SObject) theFather,
QStringList& theHyps,
- QValueList<SMESH::SMESH_Hypothesis_var>& theHypVars,
+ THypList& theHypList,
HypothesisData* theAlgoData)
{
// Clear hypoheses list
theHyps.clear();
- theHypVars.clear();
+ theHypList.clear();
if ( !theFather )
return;
bool isMesh = !_CAST( SComponent, theFather );
int aPart = -1;
if ( isMesh )
- aPart = theHypType == Algo ? GLOBAL_ALGO_TAG : GLOBAL_HYPO_TAG;
+ aPart = theHypType == Algo ? SMESH::Tag_RefOnAppliedAlgorithms : SMESH::Tag_RefOnAppliedHypothesis;
else
- aPart = theHypType == Algo ? LOCAL_ALGO_TAG : LOCAL_HYPO_TAG;
+ aPart = theHypType == Algo ? SMESH::Tag_AlgorithmsRoot : SMESH::Tag_HypothesisRoot;
if ( theFather->FindSubObject( aPart, aHypRoot ) )
{
SMESH::SMESH_Hypothesis_var aHypVar = SMESH::SMESH_Hypothesis::_narrow( aVar );
if ( !aHypVar->_is_nil() )
{
- QString aHypType( aHypVar->GetName() );
+ CORBA::String_var aHypType( aHypVar->GetName() );
HypothesisData* aData = SMESH::GetHypothesisData( aHypType );
if ( ( theDim == -1 || aData->Dim.contains( theDim ) ) &&
( isCompatible ( theAlgoData, aData, theHypType )) &&
( isAux == aData->IsAux ))
{
- //theDataList.append( aData );
- theHyps.append( aName->Value().c_str() );
- theHypVars.append( aHypVar );
+ std::string aHypName = aName->Value();
+ theHyps.append( aHypName.c_str() );
+ theHypList.append( THypItem( aHypVar, aHypName.c_str() ) );
}
}
}
* \param theTypeName - specifies hypothesis to be created
*/
//================================================================================
+namespace
+{
+ QString GetUniqueName (const QStringList& theHypNames,
+ const QString& theName,
+ size_t theIteration = 1)
+ {
+ QString aName = theName + "_" + QString::number( theIteration );
+ if ( theHypNames.contains( aName ) )
+ return GetUniqueName( theHypNames, theName, ++theIteration );
+ return aName;
+ }
+}
+
void SMESHGUI_MeshOp::createHypothesis (const int theDim,
const int theType,
const QString& theTypeName)
if (!aData)
return;
+ QStringList aHypNames;
+ TDim2Type2HypList::const_iterator aDimIter = myExistingHyps.begin();
+ for (; aDimIter != myExistingHyps.end(); aDimIter++) {
+ const TType2HypList& aType2HypList = aDimIter.data();
+ TType2HypList::const_iterator aTypeIter = aType2HypList.begin();
+ for (; aTypeIter != aType2HypList.end(); aTypeIter++) {
+ const THypList& aHypList = aTypeIter.data();
+ THypList::const_iterator anIter = aHypList.begin();
+ for (; anIter != aHypList.end(); anIter++) {
+ const THypItem& aHypItem = *anIter;
+ const QString& aHypName = aHypItem.second;
+ aHypNames.append(aHypName);
+ }
+ }
+ }
+ QString aHypName = GetUniqueName( aHypNames, aData->Label);
+
// existing hypos
int nbHyp = myExistingHyps[theDim][theType].count();
QString aClientLibName = aData->ClientLibName;
if (aClientLibName == "") {
// Call hypothesis creation server method (without GUI)
- SMESH::CreateHypothesis(theTypeName, aData->Label, false);
+ SMESH::CreateHypothesis(theTypeName, aHypName, false);
} else {
// Get hypotheses creator client (GUI)
SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(theTypeName);
SMESH::SMESH_Hypothesis_var initParamHyp =
getInitParamsHypothesis(theTypeName, aData->ServerLibName);
myDlg->setEnabled( false );
- aCreator->create(initParamHyp, myDlg);
+ aCreator->create(initParamHyp, aHypName, myDlg);
myDlg->setEnabled( true );
} else {
- SMESH::CreateHypothesis(theTypeName, aData->Label, false);
+ SMESH::CreateHypothesis(theTypeName, aHypName, false);
}
}
if (aDim == -1)
return;
- QValueList<SMESH::SMESH_Hypothesis_var> aList = myExistingHyps[ aDim ][ theHypType ];
+ const THypList& aList = myExistingHyps[ aDim ][ theHypType ];
if ( theIndex < 0 || theIndex >= aList.count() )
return;
- SMESH::SMESH_Hypothesis_var aHyp = aList[ theIndex ];
+ const THypItem& aHypItem = aList[ theIndex ];
+ SMESH::SMESH_Hypothesis_var aHyp = aHypItem.first;
if ( aHyp->_is_nil() )
return;
- char* aTypeName = aHyp->GetName();
+ CORBA::String_var aTypeName = aHyp->GetName();
SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator( aTypeName );
if ( aCreator ) {
myDlg->setEnabled( false );
- aCreator->edit( aHyp.in(), dlg() );
+ aCreator->edit( aHyp.in(), aHypItem.second, dlg() );
myDlg->setEnabled( true );
}
}
}
HypothesisData* prevAlgo = algoData;
bool noCompatible = false;
- for ( ; dim * dir <= lastDim * dir ; dim += dir )
+ for (; dim * dir <= lastDim * dir; dim += dir)
{
if ( !isAccessibleDim( dim ))
continue;
SMESH::SMESH_Hypothesis_var curHyp;
if ( hypIndex >= 0 && hypIndex < myExistingHyps[ dim ][ type ].count() )
- curHyp = myExistingHyps[ dim ][ type ][ hypIndex ];
+ curHyp = myExistingHyps[ dim ][ type ][ hypIndex ].first;
if ( !myToCreate && !curAlgo && !curHyp->_is_nil() ) { // edition, algo not selected
// try to find algo by selected hypothesis in order to keep it selected
bool algoDeselectedByUser = ( theDim < 0 && aDim == dim );
- QString curHypType = curHyp->GetName();
+ CORBA::String_var curHypType = curHyp->GetName();
if ( !algoDeselectedByUser &&
myObjHyps[ dim ][ type ].count() > 0 &&
- curHypType == myObjHyps[ dim ][ type ][ 0 ]->GetName())
+ curHypType == myObjHyps[ dim ][ type ].first().first->GetName())
{
- HypothesisData* hypData = SMESH::GetHypothesisData( curHyp->GetName() );
- for ( int i = 0 ; i < myAvailableHypData[ dim ][ Algo ].count(); ++i ) {
+ CORBA::String_var aName = curHyp->GetName();
+ HypothesisData* hypData = SMESH::GetHypothesisData( aName );
+ for (int i = 0; i < myAvailableHypData[ dim ][ Algo ].count(); ++i) {
curAlgo = myAvailableHypData[ dim ][ Algo ][ i ];
- if ( curAlgo && hypData && isCompatible( curAlgo, hypData, type ))
+ if (curAlgo && hypData && isCompatible(curAlgo, hypData, type))
break;
else
curAlgo = 0;
{
// check if a selected hyp is compatible with the curAlgo
if ( !curHyp->_is_nil() ) {
- HypothesisData* hypData = SMESH::GetHypothesisData( curHyp->GetName() );
+ CORBA::String_var aName = curHyp->GetName();
+ HypothesisData* hypData = SMESH::GetHypothesisData( aName );
if ( !isCompatible( curAlgo, hypData, type ))
curHyp = SMESH::SMESH_Hypothesis::_nil();
}
hypIndex = -1;
if ( !isSubmesh && hypIndex < 0 && anExisting.count() == 1 ) {
// none is yet selected => select the sole existing if it is not optional
- QString hypTypeName = myExistingHyps[ dim ][ type ][ 0 ]->GetName();
+ CORBA::String_var hypTypeName = myExistingHyps[ dim ][ type ].first().first->GetName();
bool isOptional = true;
if ( algoByDim[ dim ] &&
- SMESH::IsAvailableHypothesis( algoByDim[ dim ], hypTypeName, isOptional ) &&
+ SMESH::IsAvailableHypothesis( algoByDim[ dim ], hypTypeName.in(), isOptional ) &&
!isOptional )
hypIndex = 0;
}
const QString& aHypoTypeName = (*aHypoList)[ i ];
HypothesisData* aHypData = SMESH::GetHypothesisData(aHypoTypeName);
if (!aHypData)
- continue;
+ continue;
int aDim = aHypData->Dim[0];
// create or/and set
}
else {
bool mainHyp = true;
+ QStringList anAvailable;
+ availableHyps( aDim, MainHyp, anAvailable, myAvailableHypData[aDim][MainHyp] );
+ myDlg->tab( aDim )->setAvailableHyps( MainHyp, anAvailable );
int index = myAvailableHypData[aDim][MainHyp].findIndex( aHypData );
if ( index < 0 ) {
mainHyp = false;
QStringList aList;
myDlg->selectedObject( SMESHGUI_MeshDlg::Geom, aList );
QStringList::Iterator it = aList.begin();
- for(; it!=aList.end(); it++) {
-
+ for (; it!=aList.end(); it++)
+ {
QString aGeomEntry = *it;
_PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.latin1() );
GEOM::GEOM_Object_var aGeomVar =
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 ];
+ SMESH::SMESH_Hypothesis_var aHypVar = myExistingHyps[ aDim ][ aHypType ][ aHypIndex ].first;
if ( !aHypVar->_is_nil() )
SMESH::AddHypothesisOnMesh( aMeshVar, aHypVar );
}
if ( aHypIndex >= 0 && aHypIndex < myExistingHyps[ aDim ][ aHypType ].count() )
{
SMESH::SMESH_Hypothesis_var aHypVar =
- myExistingHyps[ aDim ][ aHypType ][ aHypIndex ];
+ myExistingHyps[ aDim ][ aHypType ][ aHypIndex ].first;
if ( !aHypVar->_is_nil() )
SMESH::AddHypothesisOnSubMesh( aSubMeshVar, aHypVar );
}
existingHyps( theDim, Algo, pObj, tmp, myExistingHyps[ theDim ][ Algo ]);
// look for anexisting algo of such a type
- QValueList<SMESH::SMESH_Hypothesis_var>& aHypVarList = myExistingHyps[ theDim ][ Algo ];
- QValueList<SMESH::SMESH_Hypothesis_var>::iterator anIter;
- for ( anIter = aHypVarList.begin(); anIter != aHypVarList.end(); anIter++ )
+ THypList& aHypVarList = myExistingHyps[ theDim ][ Algo ];
+ THypList::iterator anIter = aHypVarList.begin();
+ for (; anIter != aHypVarList.end(); anIter++)
{
- SMESH::SMESH_Hypothesis_var aHypVar = *anIter;
- if ( !aHypVar->_is_nil() && aHypName == aHypVar->GetName() )
+ SMESH::SMESH_Hypothesis_var aHypVar = (*anIter).first;
+ CORBA::String_var aName = aHypVar->GetName();
+ if ( !aHypVar->_is_nil() && aHypName == aName )
{
anAlgoVar = aHypVar;
break;
// Create algorithm
if (aCreator)
- aCreator->create(true, myDlg);
+ aCreator->create(true, aHypName, myDlg);
else
SMESH::CreateHypothesis(aHypName, aHypData->Label, true);
}
existingHyps( theDim, Algo, aFather, tmpList, myExistingHyps[ theDim ][ Algo ] );
}
- QValueList<SMESH::SMESH_Hypothesis_var>& aNewHypVarList = myExistingHyps[ theDim ][ Algo ];
+ THypList& aNewHypVarList = myExistingHyps[ theDim ][ Algo ];
for ( anIter = aNewHypVarList.begin(); anIter != aNewHypVarList.end(); ++anIter )
{
- SMESH::SMESH_Hypothesis_var aHypVar = *anIter;
- if ( !aHypVar->_is_nil() && aHypName == aHypVar->GetName() )
+ SMESH::SMESH_Hypothesis_var aHypVar = (*anIter).first;
+ CORBA::String_var aName = aHypVar->GetName();
+ if ( !aHypVar->_is_nil() && aHypName == aName )
{
anAlgoVar = aHypVar;
break;
if ( !pObj )
return;
- // Get name of mesh if current object is sub-mesh
- SMESH::SMESH_subMesh_var aSubMeshVar =
+ if (myIsOnGeometry) {
+ // Get name of mesh if current object is sub-mesh
+ SMESH::SMESH_subMesh_var aSubMeshVar =
SMESH::SMESH_subMesh::_narrow( _CAST( SObject,pObj )->GetObject() );
- if ( !aSubMeshVar->_is_nil() )
- {
- SMESH::SMESH_Mesh_var aMeshVar = aSubMeshVar->GetFather();
- if ( !aMeshVar->_is_nil() )
+ if ( !aSubMeshVar->_is_nil() )
{
- _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar );
- QString aMeshName = name( aMeshSO );
- myDlg->setObjectText( SMESHGUI_MeshDlg::Mesh, aMeshName );
+ SMESH::SMESH_Mesh_var aMeshVar = aSubMeshVar->GetFather();
+ if ( !aMeshVar->_is_nil() )
+ {
+ _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar );
+ QString aMeshName = name( aMeshSO );
+ myDlg->setObjectText( SMESHGUI_MeshDlg::Mesh, aMeshName );
+ }
}
- }
- // Get name of geometry object
- GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj );
- if ( !aGeomVar->_is_nil() )
- {
- _PTR(SObject) aGeomSO = studyDS()->FindObjectID( aGeomVar->GetStudyEntry() );
- QString aShapeName = name( aGeomSO );
- myDlg->setObjectText( SMESHGUI_MeshDlg::Geom, aShapeName );
+ // Get name of geometry object
+ GEOM::GEOM_Object_var aGeomVar = SMESH::GetShapeOnMeshOrSubMesh( pObj );
+ if ( !aGeomVar->_is_nil() )
+ {
+ _PTR(SObject) aGeomSO = studyDS()->FindObjectID( aGeomVar->GetStudyEntry() );
+ QString aShapeName = name( aGeomSO );
+ myDlg->setObjectText( SMESHGUI_MeshDlg::Geom, aShapeName );
+ }
}
// Get hypotheses and algorithms assigned to the mesh/sub-mesh
QStringList anExisting;
- for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ )
+ const int aDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_3D;
+ for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ )
{
// get algorithm
existingHyps( dim, Algo, pObj, anExisting, myObjHyps[ dim ][ Algo ] );
int aHypIndex = -1;
if ( myObjHyps[ dim ][ Algo ].count() > 0 )
{
- SMESH::SMESH_Hypothesis_var aVar = myObjHyps[ dim ][ Algo ].first();
- QString aHypTypeName = aVar->GetName();
+ SMESH::SMESH_Hypothesis_var aVar = myObjHyps[ dim ][ Algo ].first().first;
+ CORBA::String_var aHypTypeName = aVar->GetName();
HypothesisData* algoData = SMESH::GetHypothesisData( aHypTypeName );
aHypIndex = myAvailableHypData[ dim ][ Algo ].findIndex ( algoData );
// if ( aHypIndex < 0 && algoData ) {
// get hypotheses
bool hypWithoutAlgo = false;
- for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ )
+ for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ )
{
for ( int hypType = MainHyp; hypType <= AddHyp; hypType++ )
{
// find index of requered hypothesis among existing ones for this dimension and type
int aHypIndex = -1;
if ( myObjHyps[ dim ][ hypType ].count() > 0 ) {
- aHypIndex = find( myObjHyps[ dim ][ hypType ].first(),
+ aHypIndex = find( myObjHyps[ dim ][ hypType ].first().first,
myExistingHyps[ dim ][ hypType ] );
if ( aHypIndex < 0 ) {
// assigned hypothesis is incompatible with the algorithm
*/
//================================================================================
int SMESHGUI_MeshOp::find( const SMESH::SMESH_Hypothesis_var& theHyp,
- const QValueList<SMESH::SMESH_Hypothesis_var>& theHypList ) const
+ const THypList& theHypList ) const
{
int aRes = -1;
if ( !theHyp->_is_nil() )
{
int i = 0;
- QValueList<SMESH::SMESH_Hypothesis_var>::const_iterator anIter;
- for ( anIter = theHypList.begin(); anIter != theHypList.end(); ++ anIter )
+ THypList::const_iterator anIter = theHypList.begin();
+ for (; anIter != theHypList.end(); ++ anIter)
{
- if ( theHyp->_is_equivalent( *anIter ) )
+ if ( theHyp->_is_equivalent( (*anIter).first ) )
{
aRes = i;
break;
SUIT_OverrideCursor aWaitCursor;
// Set new name
- SMESH::SetName( pObj, myDlg->objectText( SMESHGUI_MeshDlg::Obj ).latin1() );
+ QString aName = myDlg->objectText( SMESHGUI_MeshDlg::Obj );
+ SMESH::SetName( pObj, aName.latin1() );
+ int aDim = ( myIsOnGeometry ) ? SMESH::DIM_0D : SMESH::DIM_3D;
// First, remove old algos in order to avoid messages on algorithm hiding
- for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ )
+ for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ )
{
if ( isAccessibleDim( dim ) && myObjHyps[ dim ][ Algo ].count() > 0 )
{
- SMESH::SMESH_Hypothesis_var anOldAlgo = myObjHyps[ dim ][ Algo ].first();
+ SMESH::SMESH_Hypothesis_var anOldAlgo = myObjHyps[ dim ][ Algo ].first().first;
SMESH::SMESH_Hypothesis_var anAlgoVar = getAlgo( dim );
if ( anAlgoVar->_is_nil() || // no new algo selected or
strcmp(anOldAlgo->GetName(), anAlgoVar->GetName()) ) // algo change
{
// remove old algorithm
- SMESH::RemoveHypothesisOrAlgorithmOnMesh ( pObj, myObjHyps[ dim ][ Algo ].first() );
+ SMESH::RemoveHypothesisOrAlgorithmOnMesh ( pObj, myObjHyps[ dim ][ Algo ].first().first );
myObjHyps[ dim ][ Algo ].clear();
}
}
}
// Assign new algorithms and hypotheses
- for ( int dim = SMESH::DIM_0D; dim <= SMESH::DIM_3D; dim++ )
+ for ( int dim = aDim; dim <= SMESH::DIM_3D; dim++ )
{
if ( !isAccessibleDim( dim )) continue;
if ( !anAlgoVar->_is_nil() && // some algo selected and
myObjHyps[ dim ][ Algo ].count() == 0 ) // no algo assigned
{
- SMESH::SMESH_Mesh_var aMeshVar =
- SMESH::SMESH_Mesh::_narrow( _CAST(SObject,pObj)->GetObject() );
+ SALOMEDS_SObject* aSObject = _CAST(SObject, pObj);
+ CORBA::Object_var anObject = aSObject->GetObject();
+ SMESH::SMESH_Mesh_var aMeshVar = SMESH::SMESH_Mesh::_narrow( anObject );
bool isMesh = !aMeshVar->_is_nil();
if ( isMesh ) {
SMESH::AddHypothesisOnMesh( aMeshVar, anAlgoVar );
if ( !aVar->_is_nil() )
SMESH::AddHypothesisOnSubMesh( aVar, anAlgoVar );
}
- myObjHyps[ dim ][ Algo ].append( anAlgoVar );
+ myObjHyps[ dim ][ Algo ].append( THypItem( anAlgoVar, aName) );
}
// assign hypotheses
// remove old hypotheses
if ( myObjHyps[ dim ][ hypType ].count() > 0 )
{
- anOldHypIndex = find( myObjHyps[ dim ][ hypType ].first(),
+ anOldHypIndex = find( myObjHyps[ dim ][ hypType ].first().first ,
myExistingHyps[ dim ][ hypType ] );
if ( aNewHypIndex != anOldHypIndex || // different hyps
anOldHypIndex == -1 ) // hyps of different algos
{
SMESH::RemoveHypothesisOrAlgorithmOnMesh
- ( pObj, myObjHyps[ dim ][ hypType ].first() );
+ ( pObj, myObjHyps[ dim ][ hypType ].first().first );
myObjHyps[ dim ][ hypType ].clear();
}
}
if ( isMesh )
{
SMESH::AddHypothesisOnMesh
- (aMeshVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
+ (aMeshVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ].first );
}
else
{
SMESH::SMESH_subMesh::_narrow( _CAST(SObject,pObj)->GetObject() );
if ( !aVar->_is_nil() )
SMESH::AddHypothesisOnSubMesh
- ( aVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
+ ( aVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ].first );
}
}
// reread all hypotheses of mesh if necessary
#include "SMESH_SMESHGUI.hxx"
#include "SMESHGUI_SelectionOp.h"
-#include <qstringlist.h>
#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(GEOM_Gen)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include CORBA_CLIENT_HEADER(GEOM_Gen)
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+
+#include <qstringlist.h>
class SMESHGUI_MeshDlg;
class SMESHGUI_ShapeByMeshOp;
enum HypType{ Algo = 0, MainHyp, AddHyp, NbHypTypes };
+ typedef std::pair<SMESH::SMESH_Hypothesis_var, QString> THypItem;
+ typedef QValueList< THypItem > THypList;
+
+ typedef int THypType;
+ typedef QMap< THypType, THypList > TType2HypList;
+
+ typedef int THypDim;
+ typedef QMap< THypDim, TType2HypList > TDim2Type2HypList;
+
SMESHGUI_MeshOp( const bool theToCreate, const bool theIsMesh = true );
virtual ~SMESHGUI_MeshOp();
const int theHypType,
_PTR(SObject) theFather,
QStringList& theHyps,
- QValueList<SMESH::SMESH_Hypothesis_var>& theHypVars,
+ THypList& theHypList,
HypothesisData* theAlgoData = 0);
HypothesisData* hypData( const int theDim,
const int theHypType,
void readMesh();
QString name( _PTR(SObject) ) const;
int find( const SMESH::SMESH_Hypothesis_var&,
- const QValueList<SMESH::SMESH_Hypothesis_var>& ) const;
+ const THypList& theHypList) const;
SMESH::SMESH_Hypothesis_var getInitParamsHypothesis( const QString& aHypType,
const QString& aServerLib ) const;
bool isSubshapeOk() const;
void selectObject( _PTR(SObject) ) const;
private:
- typedef QMap< int, QValueList<SMESH::SMESH_Hypothesis_var> > IdToHypListMap;
- typedef QMap< int, IdToHypListMap > DimToHypMap;
-
SMESHGUI_MeshDlg* myDlg;
SMESHGUI_ShapeByMeshOp* myShapeByMeshOp;
bool myToCreate;
bool myIsMesh;
+ bool myIsOnGeometry; //!< TRUE if edited mesh accotiated with geometrical object
- DimToHypMap myExistingHyps; //!< all hypothesis of SMESH module
- DimToHypMap myObjHyps; //!< hypothesis assigned to the current
+ TDim2Type2HypList myExistingHyps; //!< all hypothesis of SMESH module
+ TDim2Type2HypList myObjHyps; //!< hypothesis assigned to the current
// edited mesh/sub-mesh
// hypdata corresponding to hypotheses present in myDlg
mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
- myHelpFileName = "pattern_mapping.htm";
+ myHelpFileName = "pattern_mapping_page.html";
Init();
}
#include "SMESHGUI_MeshUtils.h"
#include "SMESHGUI_Utils.h"
+#include "SALOMEDSClient_Study.hxx"
#include "SALOMEconfig.h"
#include CORBA_SERVER_HEADER(SMESH_Group)
return SMESH_Mesh::_nil();
}
+ QString UniqueMeshName(const char* theBaseName, const char* thePostfix)
+ {
+ QString baseName = theBaseName;
+ if ( thePostfix/* && !name.contains( postfix )*/) { // add postfix
+ baseName += "_";
+ baseName += thePostfix;
+ }
+ if(_PTR(Study) aStudy = GetActiveStudyDocument()) {
+ QString name = baseName;
+ while ( !aStudy->FindObjectByName( name.latin1(), "SMESH" ).empty() ) {
+ int nb = 0;
+ if ( name[ name.length()-1 ].isNumber() ) {
+ int nbBeg = name.findRev("_");
+ nb = name.right( name.length() - nbBeg - 1 ).toInt();
+ name = name.left( nbBeg );
+ }
+ name += QString("_%1").arg( nb+1 );
+ }
+ return name;
+ }
+ return QString("");
+ }
+
}
#include "SALOMEconfig.h"
#include CORBA_SERVER_HEADER(SMESH_Mesh)
+#include <qstring.h>
+
namespace SMESH{
SMESHGUI_EXPORT
SMESH_Mesh_var GetMeshByIO(const Handle(SALOME_InteractiveObject)& theIO);
+ QString UniqueMeshName(const char* theBaseName, const char* thePostfix);
}
mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
- myHelpFileName = "/files/displacing_nodes.htm";
+ myHelpFileName = "moving_nodes_page.html";
Init();
}
myX = new SMESHGUI_SpinBox(aCoordGrp);
QLabel* aYLabel = new QLabel(tr("SMESH_Y"), aCoordGrp);
- aYLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //aYLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ aYLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
myY = new SMESHGUI_SpinBox(aCoordGrp);
QLabel* aZLabel = new QLabel(tr("SMESH_Z"), aCoordGrp);
- aZLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //aZLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ aZLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
myZ = new SMESHGUI_SpinBox(aCoordGrp);
- 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);
+ myX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, DBL_DIGITS_DISPLAY);
+ myY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, DBL_DIGITS_DISPLAY);
+ myZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, DBL_DIGITS_DISPLAY);
QVBoxLayout* aLay = new QVBoxLayout(aFrame);
aLay->addWidget(aPixGrp);
SMESHGUI_MultiEditDlg(theModule, SMESHGUI_FaceFilter, true, theName)
{
setCaption(tr("CAPTION"));
- myHelpFileName = "/files/changing_orientation_of_elements.htm";
+ myHelpFileName = "changing_orientation_of_elements_page.html";
}
SMESHGUI_ChangeOrientationDlg::~SMESHGUI_ChangeOrientationDlg()
myCriterionGrp->show();
- myHelpFileName = "/files/uniting_a_set_of_triangles.htm";
+ myHelpFileName = "uniting_set_of_triangles_page.html";
}
SMESHGUI_UnionOfTrianglesDlg::~SMESHGUI_UnionOfTrianglesDlg()
connect(myComboBoxFunctor, SIGNAL(activated(int)) , this, SLOT(onPreviewChk()));
connect(this , SIGNAL(ListContensChanged()), this, SLOT(onPreviewChk()));
- myHelpFileName = "/files/cutting_quadrangles.htm";
+ myHelpFileName = "cutting_quadrangles_page.html";
}
SMESHGUI_CuttingOfQuadsDlg::~SMESHGUI_CuttingOfQuadsDlg()
GroupCoordinatesLayout->setAlignment(Qt::AlignTop);
GroupCoordinatesLayout->setSpacing(6);
GroupCoordinatesLayout->setMargin(11);
+
TextLabel_X = new QLabel(GroupCoordinates, "TextLabel_X");
TextLabel_X->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
TextLabel_X->setText(tr("SMESH_X" ));
GroupCoordinatesLayout->addWidget(TextLabel_X, 0, 0);
+
TextLabel_Y = new QLabel(GroupCoordinates, "TextLabel_Y");
- TextLabel_Y->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //TextLabel_Y->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ TextLabel_Y->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
TextLabel_Y->setText(tr("SMESH_Y" ));
GroupCoordinatesLayout->addWidget(TextLabel_Y, 0, 2);
TextLabel_Z = new QLabel(GroupCoordinates, "TextLabel_Z");
- TextLabel_Z->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ //TextLabel_Z->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
+ TextLabel_Z->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
TextLabel_Z->setText(tr("SMESH_Z" ));
GroupCoordinatesLayout->addWidget(TextLabel_Z, 0, 4);
SMESHGUI_NodesDlgLayout->addWidget(GroupCoordinates, 1, 0);
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_nodes";
+ myHelpFileName = "adding_nodes_and_elements_page.html#adding_nodes_anchor";
/* Initialisation and display */
Init();
step = 25.0;
/* min, max, step and decimals for spin boxes */
- 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->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+ SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
+ SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY);
SpinBox_X->SetValue(0.0);
SpinBox_Y->SetValue(0.0);
SpinBox_Z->SetValue(0.0);
GroupC1Layout->addWidget(LineEditC1A1, 0, 2);
SMESHGUI_RemoveElementsDlgLayout->addWidget(GroupC1, 1, 0);
- myHelpFileName = "/files/removing_nodes_and_elements.htm#remove_an_element";
+ myHelpFileName = "removing_nodes_and_elements_page.html#removing_elements_anchor";
Init(); /* Initialisations */
}
GroupC1Layout->addWidget(LineEditC1A1, 0, 2);
SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupC1, 1, 0);
- myHelpFileName = "/files/removing_nodes_and_elements.htm#remove_a_node";
+ myHelpFileName = "removing_nodes_and_elements_page.html#removing_nodes_anchor";
Init(); /* Initialisations */
}
GroupConstructors = new QButtonGroup(this, "GroupConstructors");
if (unit == 0) {
GroupConstructors->setTitle(tr("SMESH_NODES" ));
- myHelpFileName = "/files/renumbering_nodes_and_elements.htm#renumber_nodes";
+ myHelpFileName = "renumbering_nodes_and_elements_page.html#renumbering_nodes_anchor";
}
else if (unit == 1) {
GroupConstructors->setTitle(tr("SMESH_ELEMENTS" ));
- myHelpFileName = "/files/renumbering_nodes_and_elements.htm#renumber_elements";
+ myHelpFileName = "renumbering_nodes_and_elements_page.html#renumbering_elements_anchor";
}
GroupConstructors->setExclusive(TRUE);
GroupConstructors->setColumnLayout(0, Qt::Vertical);
SpinBox_Tolerance = new SMESHGUI_SpinBox(GroupArguments, "SpinBox_Tolerance");
GroupArgumentsLayout->addWidget(SpinBox_Tolerance, 5, 2);
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ MakeGroupsCheck->setChecked(true);
+ GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 6, 6, 0, 3);
+
+
SMESHGUI_RevolutionDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "revolution.htm";
+ myHelpFileName = "revolution_page.html";
Init();
try {
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
QApplication::setOverrideCursor(Qt::waitCursor);
- aMeshEditor->RotationSweep(anElementsId.inout(), anAxis, anAngle, aNbSteps, aTolerance);
+
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->RotationSweepMakeGroups(anElementsId.inout(), anAxis,
+ anAngle, aNbSteps, aTolerance);
+ else
+ aMeshEditor->RotationSweep(anElementsId.inout(), anAxis, anAngle, aNbSteps, aTolerance);
+
QApplication::restoreOverrideCursor();
} catch (...) {
}
SMESH::UpdateView();
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
ConstructorsClicked(GetConstructorId());
SelectionIntoArgument();
if (myEditCurrentArgument == (QWidget*)LineEditElements) {
myElementsId = "";
+ // MakeGroups is available if there are groups
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ } else {
+ MakeGroupsCheck->setEnabled(true);
+ }
+
if (CheckBoxMesh->isChecked()) {
int aConstructorId = GetConstructorId();
QPushButton* SelectElementsButton;
QLineEdit* LineEditElements;
QCheckBox* CheckBoxMesh;
+ QCheckBox* MakeGroupsCheck;
QLabel* TextLabelPoint;
QPushButton* SelectPointButton;
#include "SVTK_Selector.h"
#include "SVTK_Selection.h"
#include "SALOME_ListIO.hxx"
+#include "SALOMEDSClient_SObject.hxx"
#include "utilities.h"
using namespace std;
+enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action type
+
//=================================================================================
// class : SMESHGUI_RotationDlg()
// purpose :
// Controls for elements selection
TextLabelElements = new QLabel(GroupArguments, "TextLabelElements");
TextLabelElements->setText(tr("SMESH_ID_ELEMENTS" ));
- TextLabelElements->setFixedWidth(74);
+ //TextLabelElements->setFixedWidth(74);
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
SelectElementsButton = new QPushButton(GroupArguments, "SelectElementsButton");
SelectElementsButton->setToggleButton(FALSE);
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
- LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
+ LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator"));
- GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
+ GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 3);
// Control for the whole mesh selection
CheckBoxMesh = new QCheckBox(GroupArguments, "CheckBoxMesh");
CheckBoxMesh->setText(tr("SMESH_SELECT_WHOLE_MESH" ));
- GroupArgumentsLayout->addMultiCellWidget(CheckBoxMesh, 1, 1, 0, 2);
+ GroupArgumentsLayout->addMultiCellWidget(CheckBoxMesh, 1, 1, 0, 3);
// Controls for axis defining
GroupAxis = new QGroupBox(GroupArguments, "GroupAxis");
SpinBox_DZ = new SMESHGUI_SpinBox(GroupAxis, "SpinBox_DZ");
GroupAxisLayout->addWidget(SpinBox_DZ, 1, 7);
- GroupArgumentsLayout->addMultiCellWidget(GroupAxis, 2, 2, 0, 2);
+ GroupArgumentsLayout->addMultiCellWidget(GroupAxis, 2, 2, 0, 3);
// Controls for angle defining
TextLabelAngle = new QLabel(GroupArguments, "TextLabelAngle");
TextLabelAngle->setText(tr("SMESH_ANGLE"));
- GroupArgumentsLayout->addMultiCellWidget(TextLabelAngle, 3, 3, 0, 1);
+ GroupArgumentsLayout->addMultiCellWidget(TextLabelAngle, 3, 3, 0, 2);
SpinBox_Angle = new SMESHGUI_SpinBox(GroupArguments, "SpinBox_Angle");
GroupArgumentsLayout->addWidget(SpinBox_Angle, 3, 2);
- // Controls for "Create a copy" option
- CheckBoxCopy = new QCheckBox(GroupArguments, "CheckBoxCopy");
- CheckBoxCopy->setText(tr("SMESH_CREATE_COPY"));
- GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 4, 4, 0, 2);
+ // action switch
+ ActionGroup = new QButtonGroup(1, Qt::Horizontal, GroupArguments, "ActionGroup");
+ ActionGroup->setExclusive(true);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_MOVE_ELEMENTS"),ActionGroup), MOVE_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_COPY_ELEMENTS"),ActionGroup), COPY_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_CREATE_MESH" ),ActionGroup), MAKE_MESH_BUTTON);
+ GroupArgumentsLayout->addMultiCellWidget(ActionGroup, 4, 6, 0, 2);
+
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ GroupArgumentsLayout->addWidget(MakeGroupsCheck, 5, 3);
+
+ // Name of a mesh to create
+ LineEditNewMesh = new QLineEdit(GroupArguments, "LineEditNewMesh");
+ GroupArgumentsLayout->addWidget(LineEditNewMesh, 6, 3);
SMESHGUI_RotationDlgLayout->addWidget(GroupArguments, 1, 0);
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "/files/rotation.htm";
+ myHelpFileName = "rotation_page.html";
Init();
connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&)));
connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool)));
+ connect(ActionGroup, SIGNAL(clicked(int)), SLOT(onActionClicked(int)));
this->show(); /* displays Dialog */
ConstructorsClicked(0);
+ //SelectionIntoArgument();
+ onActionClicked(MOVE_ELEMS_BUTTON);
resize(0,0); // ??
}
SpinBox_Angle->SetValue(45);
- CheckBoxCopy->setChecked(false);
+ ((QRadioButton*) ActionGroup->find( MOVE_ELEMS_BUTTON ))->setChecked(TRUE);
CheckBoxMesh->setChecked(false);
+// MakeGroupsCheck->setChecked(false);
+// MakeGroupsCheck->setEnabled(false);
+// onSelectMesh(false);
}
onSelectMesh(CheckBoxMesh->isChecked());
anAxis.vz = SpinBox_DZ->GetValue();
double anAngle = (SpinBox_Angle->GetValue())*PI/180;
- bool toCreateCopy = CheckBoxCopy->isChecked();
-
+ int actionButton = ActionGroup->id( ActionGroup->selected() );
+ bool makeGroups = ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() );
try {
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
QApplication::setOverrideCursor(Qt::waitCursor);
- aMeshEditor->Rotate(anElementsId.inout(), anAxis, anAngle, toCreateCopy);
+ switch ( actionButton ) {
+ case MOVE_ELEMS_BUTTON:
+ aMeshEditor->Rotate(anElementsId, anAxis, anAngle, false);
+ break;
+ case COPY_ELEMS_BUTTON:
+ if ( makeGroups )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->RotateMakeGroups(anElementsId, anAxis, anAngle);
+ else
+ aMeshEditor->Rotate(anElementsId, anAxis, anAngle, true);
+ break;
+ case MAKE_MESH_BUTTON:
+ SMESH::SMESH_Mesh_var mesh =
+ aMeshEditor->RotateMakeMesh(anElementsId, anAxis, anAngle, makeGroups,
+ LineEditNewMesh->text().latin1());
+ }
QApplication::restoreOverrideCursor();
} catch (...) {
}
SMESH::UpdateView();
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ||
+ actionButton == MAKE_MESH_BUTTON )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
+ //ConstructorsClicked(GetConstructorId());
SelectionIntoArgument();
}
}
if (myEditCurrentArgument == (QWidget*)LineEditElements) {
myElementsId = "";
+ // MakeGroups is available if there are groups and "Copy"
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ }
+ else if ( ActionGroup->id( ActionGroup->selected() ) != MOVE_ELEMS_BUTTON ) {
+ MakeGroupsCheck->setEnabled(true);
+ }
if (CheckBoxMesh->isChecked()) {
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString);
}
myBusy = true;
- if (myEditCurrentArgument == (QWidget*)LineEditElements)
+ if (myEditCurrentArgument == (QWidget*)LineEditElements) {
LineEditElements->setText(aString);
+ setNewMeshName();
+ }
myBusy = false;
// OK
}
}
+
+//=======================================================================
+//function : onActionClicked
+//purpose : slot called when an action type changed
+//=======================================================================
+
+void SMESHGUI_RotationDlg::onActionClicked(int button)
+{
+ switch ( button ) {
+ case MOVE_ELEMS_BUTTON:
+ MakeGroupsCheck->setEnabled(false);
+ LineEditNewMesh->setEnabled(false);
+ break;
+ case COPY_ELEMS_BUTTON:
+ LineEditNewMesh->setEnabled(false);
+ MakeGroupsCheck->setText( tr("SMESH_MAKE_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ case MAKE_MESH_BUTTON:
+ LineEditNewMesh->setEnabled(true);
+ MakeGroupsCheck->setText( tr("SMESH_COPY_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ }
+ setNewMeshName();
+}
+
+//=======================================================================
+//function : setNewMeshName
+//purpose : update contents of LineEditNewMesh
+//=======================================================================
+
+void SMESHGUI_RotationDlg::setNewMeshName()
+{
+ LineEditNewMesh->setText("");
+ if ( LineEditNewMesh->isEnabled() && !myMesh->_is_nil() ) {
+ QString name;
+ if ( CheckBoxMesh->isChecked() ) {
+ name = LineEditElements->text();
+ }
+ else {
+ _PTR(SObject) meshSO = SMESH::FindSObject( myMesh );
+ name = meshSO->GetName();
+ }
+ if ( !name.isEmpty() )
+ LineEditNewMesh->setText( SMESH::UniqueMeshName( name.latin1(), "rotated"));
+ }
+}
+
//=================================================================================
// function : keyPressEvent()
// purpose :
void hideEvent (QHideEvent*); /* ESC key */
void keyPressEvent(QKeyEvent*);
bool IsAxisOk();
+ void setNewMeshName();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
QLabel* TextLabelAngle;
SMESHGUI_SpinBox* SpinBox_Angle;
- QCheckBox* CheckBoxCopy;
+ //QCheckBox* CheckBoxCopy;
+ QButtonGroup* ActionGroup;
+ QCheckBox* MakeGroupsCheck;
+ QLineEdit* LineEditNewMesh;
QString myHelpFileName;
void onTextChange (const QString&);
void onSelectMesh (bool toSelectMesh);
void onVectorChanged();
+ void onActionClicked(int button);
protected:
QGridLayout* SMESHGUI_RotationDlgLayout;
#include "SVTK_RenderWindowInteractor.h"
#include "SVTK_ViewWindow.h"
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Group)
+#include CORBA_CLIENT_HEADER(SMESH_Gen)
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+#include CORBA_CLIENT_HEADER(SMESH_Group)
//=======================================================================
//function : SMESHGUI_Selection
//=======================================================================
void SMESHGUI_Selection::processOwner( const LightApp_DataOwner* ow )
{
- const LightApp_SVTKDataOwner* owner =
+ const LightApp_SVTKDataOwner* owner =
dynamic_cast<const LightApp_SVTKDataOwner*> ( ow );
if( owner )
myActors.append( dynamic_cast<SMESH_Actor*>( owner->GetActor() ) );
if ( p=="client" ) val = QtxValue( globalParam( p ) );
else if ( p=="type" ) val = QtxValue( myTypes[ind] );
else if ( p=="elemTypes" ) val = QtxValue( elemTypes( ind ) );
+ else if ( p=="isAutoColor" ) val = QtxValue( isAutoColor( ind ) );
else if ( p=="numberOfNodes" ) val = QtxValue( numberOfNodes( ind ) );
else if ( p=="labeledTypes" ) val = QtxValue( labeledTypes( ind ) );
else if ( p=="shrinkMode" ) val = QtxValue( shrinkMode( ind ) );
return "eNone";
}
+//=======================================================================
+//function : isAutoColor
+//purpose :
+//=======================================================================
+
+bool SMESHGUI_Selection::isAutoColor( int ind ) const
+{
+ if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] != "Unknown" )
+ {
+ _PTR(SObject) sobj = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).latin1() );
+ CORBA::Object_var obj = SMESH::SObjectToObject( sobj, SMESH::GetActiveStudyDocument() );
+
+ if ( ! CORBA::is_nil( obj )) {
+ SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj );
+ if ( ! mesh->_is_nil() )
+ return mesh->GetAutoColor();
+ }
+ }
+ return false;
+}
+
//=======================================================================
//function : numberOfNodes
//purpose :
/* Handle(SALOME_InteractiveObject) io =
static_cast<LightApp_DataOwner*>( myDataOwners[ ind ].get() )->IO();
if ( !io.IsNull() ) {
- SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO(io) ; // m,sm,gr->m
+ SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO(io); // m,sm,gr->m
if ( !mesh->_is_nil() ) {*/
_PTR(SObject) so = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).latin1() );
//FindSObject( mesh );
if ( so ) {
- GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so );
- return QVariant( !shape->_is_nil(), 0 );
+ CORBA::Object_var obj = SMESH::SObjectToObject(so, SMESH::GetActiveStudyDocument());
+ if(!CORBA::is_nil(obj)){
+ SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj );
+ if (!mesh->_is_nil()){
+ if(mesh->HasShapeToMesh()) {
+ GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so );
+ return QVariant( !shape->_is_nil(), 0 );
+ }
+ else
+ {
+ return QVariant(!mesh->NbFaces()==0, 0);
+ }
+ }
+ else
+ {
+ GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so );
+ return QVariant( !shape->_is_nil(), 0 );
+ }
+ }
}
// }
// }
anOTag = obj->Tag(),
res = -1;
- switch( aLevel )
+ switch (aLevel)
{
case 1:
- if( anOTag>=3 )
+ if (anOTag >= SMESH::Tag_FirstMeshRoot)
res = MESH;
break;
case 2:
- switch( aFTag )
+ switch (aFTag)
{
- case 1:
+ case SMESH::Tag_HypothesisRoot:
res = HYPOTHESIS;
break;
- case 2:
+ case SMESH::Tag_AlgorithmsRoot:
res = ALGORITHM;
break;
}
break;
case 3:
- switch( aFTag )
+ switch (aFTag)
{
- case 4:
+ case SMESH::Tag_SubMeshOnVertex:
res = SUBMESH_VERTEX;
break;
- case 5:
+ case SMESH::Tag_SubMeshOnEdge:
res = SUBMESH_EDGE;
break;
- case 7:
+ case SMESH::Tag_SubMeshOnFace:
res = SUBMESH_FACE;
break;
- case 9:
+ case SMESH::Tag_SubMeshOnSolid:
res = SUBMESH_SOLID;
break;
- case 10:
+ case SMESH::Tag_SubMeshOnCompound:
res = SUBMESH_COMPOUND;
break;
+ default:
+ if (aFTag >= SMESH::Tag_FirstGroup)
+ res = GROUP;
+ else
+ res = SUBMESH;
}
- if( aFTag>10 )
- res = GROUP;
- else
- res = SUBMESH;
-
break;
}
virtual void processOwner( const LightApp_DataOwner* );
// got from object, not from actor
+ virtual bool isAutoColor( int ind ) const;
virtual int numberOfNodes( int ind ) const;
virtual QVariant isComputable( int ind ) const;
virtual QVariant hasReference( int ind ) const;
mySMESHGUI->SetActiveDialogBox((QDialog*)this);
- myHelpFileName = "/files/sewing_meshes.htm";
+ myHelpFileName = "sewing_meshes_page.html";
Init();
: SMESHGUI_SingleEditDlg(theModule,theName)
{
setCaption(tr("CAPTION"));
- myHelpFileName = "/files/diagonal_iversion_of_elements.htm";
+ myHelpFileName = "diagonal_inversion_of_elements_page.html";
}
SMESHGUI_TrianglesInversionDlg::~SMESHGUI_TrianglesInversionDlg()
: SMESHGUI_SingleEditDlg(theModule,theName)
{
setCaption(tr("CAPTION"));
- myHelpFileName = "/files/uniting_two_triangles.htm";
+ myHelpFileName = "uniting_two_triangles_page.html";
}
SMESHGUI_UnionOfTwoTrianglesDlg::~SMESHGUI_UnionOfTwoTrianglesDlg()
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "/files/smoothing.htm";
+ myHelpFileName = "smoothing_page.html";
Init();
// like in GEOM_SRC/src/DlgRef/DlgRef_SpinBox.h
#define COORD_MIN -1e+15
#define COORD_MAX +1e+15
+#define DBL_DIGITS_DISPLAY 14
//=================================================================================
// class : SMESHGUI_SpinBox
// 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_Utils.h"
#include "SMESHGUI_MeshUtils.h"
-#include "SMESH.hxx"
#include "SMESH_TypeFilter.hxx"
#include "SALOMEDSClient_Study.hxx"
mySelectionMgr->installFilter(myMeshFilter);
onSelectionChanged();
- myHelpFileName = "/files/viewing_mesh_info.htm#standard_infos";
+ myHelpFileName = "mesh_infos_page.html#standard_mesh_infos_anchor";
}
//=================================================================================
bool hasGroup = false;
// info about groups on nodes
- aMeshSO->FindSubObject(Tag_NodeGroups, anObj);
+ aMeshSO->FindSubObject(SMESH::Tag_NodeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (it->More()) {
// info about groups on edges
anObj.reset();
- aMeshSO->FindSubObject(Tag_EdgeGroups, anObj);
+ aMeshSO->FindSubObject(SMESH::Tag_EdgeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More()) {
// info about groups on faces
anObj.reset();
- aMeshSO->FindSubObject(Tag_FaceGroups , anObj);
+ aMeshSO->FindSubObject(SMESH::Tag_FaceGroups , anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More()) {
// info about groups on volumes
anObj.reset();
- aMeshSO->FindSubObject(Tag_VolumeGroups, anObj);
+ aMeshSO->FindSubObject(SMESH::Tag_VolumeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More())
void SMESHGUI_StandardMeshInfosDlg::onHelp()
{
LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
- if (app)
+ if (app)
app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
else {
- QString platform;
+ QString platform;
#ifdef WIN32
- platform = "winapplication";
+ platform = "winapplication";
#else
- platform = "application";
+ platform = "application";
#endif
SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
// 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
//
//
//
static CORBA::ORB_var anORB;
-// Tags definition
-static long Tag_HypothesisRoot = 1;
-static long Tag_AlgorithmsRoot = 2;
-
-static long Tag_RefOnShape = 1;
-static long Tag_RefOnAppliedHypothesis = 2;
-static long Tag_RefOnAppliedAlgorithms = 3;
-
-static long Tag_SubMeshOnVertex = 4;
-static long Tag_SubMeshOnEdge = 5;
-static long Tag_SubMeshOnFace = 6;
-static long Tag_SubMeshOnSolid = 7;
-static long Tag_SubMeshOnCompound = 8;
-
namespace
{
//---------------------------------------------------------------
{
return GetDomainRoot(theSComponentMesh,
theStudyBuilder,
- Tag_HypothesisRoot,
+ SMESH::Tag_HypothesisRoot,
QObject::tr("SMESH_MEN_HYPOTHESIS"),
"ICON_SMESH_TREE_HYPO");
}
-
+
//---------------------------------------------------------------
inline
{
return GetDomainRoot(theSComponentMesh,
theStudyBuilder,
- Tag_AlgorithmsRoot,
+ SMESH::Tag_AlgorithmsRoot,
QObject::tr("SMESH_MEN_ALGORITHMS"),
"ICON_SMESH_TREE_ALGO");
}
{
SALOMEDS::SObject_var aDomain = GetDomainRoot(theSComponentMesh,
theStudyBuilder,
- Tag_AlgorithmsRoot,
+ SMESH::Tag_AlgorithmsRoot,
theDomainName,
theDomainPixmap);
// Add New Hypothesis
anAttr = theStudyBuilder->FindOrCreateAttribute(aSObject,"AttributeIOR");
SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
anIOR->SetValue(theIOR.c_str());
-
+
return aSObject;
}
return AddToDomain(theIOR,
theSComponentMesh,
theStudyBuilder,
- Tag_HypothesisRoot,
+ SMESH::Tag_HypothesisRoot,
QObject::tr("SMESH_MEN_HYPOTHESIS"),
"ICON_SMESH_TREE_HYPO");
}
return AddToDomain(theIOR,
theSComponentMesh,
theStudyBuilder,
- Tag_AlgorithmsRoot,
+ SMESH::Tag_AlgorithmsRoot,
QObject::tr("SMESH_MEN_ALGORITHMS"),
"ICON_SMESH_TREE_ALGO");
}
//---------------------------------------------------------------
void
- SetDomain(const char* theMeshOrSubMeshEntry,
+ SetDomain(const char* theMeshOrSubMeshEntry,
const char* theDomainEntry,
const SALOMEDS::Study_var& theStudy,
const SALOMEDS::StudyBuilder_var& theStudyBuilder,
SALOMEDS::SObject_var anAppliedDomainSO;
if(!aMeshOrSubMeshSO->FindSubObject(theRefOnAppliedDomainTag,anAppliedDomainSO)){
anAppliedDomainSO = theStudyBuilder->NewObjectToTag(aMeshOrSubMeshSO,theRefOnAppliedDomainTag);
- SALOMEDS::GenericAttribute_var anAttr =
+ SALOMEDS::GenericAttribute_var anAttr =
theStudyBuilder->FindOrCreateAttribute(anAppliedDomainSO,"AttributeName");
SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
aName->SetValue(theAppliedDomainMEN.latin1());
//---------------------------------------------------------------
void
- SetHypothesis(const char* theMeshOrSubMeshEntry,
+ SetHypothesis(const char* theMeshOrSubMeshEntry,
const char* theDomainEntry,
const SALOMEDS::Study_var& theStudy,
const SALOMEDS::StudyBuilder_var& theStudyBuilder)
theDomainEntry,
theStudy,
theStudyBuilder,
- Tag_RefOnAppliedHypothesis,
+ SMESH::Tag_RefOnAppliedHypothesis,
QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"),
"ICON_SMESH_TREE_HYPO");
}
//---------------------------------------------------------------
void
- SetAlgorithms(const char* theMeshOrSubMeshEntry,
+ SetAlgorithms(const char* theMeshOrSubMeshEntry,
const char* theDomainEntry,
const SALOMEDS::Study_var& theStudy,
const SALOMEDS::StudyBuilder_var& theStudyBuilder)
theDomainEntry,
theStudy,
theStudyBuilder,
- Tag_RefOnAppliedAlgorithms,
+ SMESH::Tag_RefOnAppliedAlgorithms,
QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"),
"ICON_SMESH_TREE_ALGO");
}
myStudy = aStudyMgr->GetStudyByID(myStudyID);
SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen();
- aSMESHGen->SetCurrentStudy( myStudy.in() );
+ aSMESHGen->SetCurrentStudy( myStudy.in() );
myStudyBuilder = myStudy->NewBuilder();
SALOMEDS::SComponent_var aSComponent = myStudy->FindComponent("SMESH");
if(aSComponent->_is_nil()){
bool aLocked = myStudy->GetProperties()->IsLocked();
- if (aLocked)
+ if (aLocked)
myStudy->GetProperties()->SetLocked(false);
aSComponent = myStudyBuilder->NewComponent("SMESH");
aName = SALOMEDS::AttributeName::_narrow(anAttr);
SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI(); //SRN: BugID IPAL9186, load a SMESH gui if it hasn't been loaded
- if(!aSMESHGUI){
+ if (!aSMESHGUI){
CAM_Module* aModule = anApp->module("Mesh");
- if(!aModule)
+ if(!aModule)
aModule = anApp->loadModule("Mesh");
- aSMESHGUI = dynamic_cast<SMESHGUI*>(aModule);
+ aSMESHGUI = dynamic_cast<SMESHGUI*>(aModule);
} //SRN: BugID IPAL9186: end of a fix
aName->SetValue(aSMESHGUI->moduleName());
anAttr = myStudyBuilder->FindOrCreateAttribute(aSComponent,"AttributePixMap");
aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
myStudyBuilder->DefineComponentInstance(aSComponent,aSMESHGen);
- if(aLocked)
+ if (aLocked)
myStudy->GetProperties()->SetLocked(true);
}
//===============================================================
-const char*
-SMESH_Swig::AddNewMesh(const char* theIOR)
+const char* SMESH_Swig::AddNewMesh(const char* theIOR)
{
MESSAGE("AddNewMesh");
// VSR: added temporarily - to be removed - objects are published automatically by engine
SALOMEDS::SObject_var aSObject = myStudy->FindObjectIOR(theIOR);
- if(aSObject->_is_nil()){
+ if (aSObject->_is_nil()){
//Find or Create Hypothesis root
GetHypothesisRoot(mySComponentMesh,myStudyBuilder);
GetAlgorithmsRoot(mySComponentMesh,myStudyBuilder);
-
+
// Add New Mesh
aSObject = myStudyBuilder->NewObject(mySComponentMesh);
SALOMEDS::GenericAttribute_var anAttr = myStudyBuilder->FindOrCreateAttribute(aSObject,"AttributePixMap");
//===============================================================
-const char*
-SMESH_Swig::AddNewHypothesis(const char* theIOR)
+const char* SMESH_Swig::AddNewHypothesis(const char* theIOR)
{
-
MESSAGE("AddNewHypothesis");
-
+
SALOMEDS::SObject_var aSObject = ::AddHypothesis(theIOR,
mySComponentMesh,
myStudyBuilder);
//===============================================================
-const char*
-SMESH_Swig::AddNewAlgorithms(const char* theIOR)
+const char* SMESH_Swig::AddNewAlgorithms(const char* theIOR)
{
MESSAGE("AddNewAlgorithms");
-
+
SALOMEDS::SObject_var aSObject = ::AddAlgorithms(theIOR,
mySComponentMesh,
myStudyBuilder);
//===============================================================
-void
-SMESH_Swig::SetShape(const char* theShapeEntry,
- const char* theMeshEntry)
+void SMESH_Swig::SetShape(const char* theShapeEntry,
+ const char* theMeshEntry)
{
SALOMEDS::SObject_var aMeshSO = myStudy->FindObjectID( theMeshEntry );
SALOMEDS::SObject_var aGeomShapeSO = myStudy->FindObjectID( theShapeEntry );
-
+
if(!aMeshSO->_is_nil() && !aGeomShapeSO->_is_nil()){
- SALOMEDS::SObject_var aSObject = myStudyBuilder->NewObjectToTag(aMeshSO,Tag_RefOnShape);
+ SALOMEDS::SObject_var aSObject = myStudyBuilder->NewObjectToTag(aMeshSO, SMESH::Tag_RefOnShape);
myStudyBuilder->Addreference(aSObject,aGeomShapeSO);
}
}
//===============================================================
-void
-SMESH_Swig::SetHypothesis(const char* theMeshOrSubMeshEntry,
- const char* theDomainEntry)
+void SMESH_Swig::SetHypothesis(const char* theMeshOrSubMeshEntry,
+ const char* theDomainEntry)
{
::SetHypothesis(theMeshOrSubMeshEntry,
theDomainEntry,
//===============================================================
-void
-SMESH_Swig::SetAlgorithms(const char* theMeshOrSubMeshEntry,
- const char* theDomainEntry)
+void SMESH_Swig::SetAlgorithms(const char* theMeshOrSubMeshEntry,
+ const char* theDomainEntry)
{
::SetAlgorithms(theMeshOrSubMeshEntry,
theDomainEntry,
myStudyBuilder->RemoveObject(aDomainSO);
}
-const char*
-SMESH_Swig::AddSubMesh(const char* theMeshEntry,
- const char* theSubMeshIOR,
- int theShapeType)
+const char* SMESH_Swig::AddSubMesh(const char* theMeshEntry,
+ const char* theSubMeshIOR,
+ int theShapeType)
{
SALOMEDS::SObject_var aMeshSO = myStudy->FindObjectID(theMeshEntry);
if(!aMeshSO->_is_nil()){
QString aSubMeshName;
switch(theShapeType){
case TopAbs_SOLID:
- aShapeTag = Tag_SubMeshOnSolid;
+ aShapeTag = SMESH::Tag_SubMeshOnSolid;
aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnSolid");
break;
case TopAbs_FACE:
- aShapeTag = Tag_SubMeshOnFace;
+ aShapeTag = SMESH::Tag_SubMeshOnFace;
aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnFace");
break;
case TopAbs_EDGE:
- aShapeTag = Tag_SubMeshOnEdge;
+ aShapeTag = SMESH::Tag_SubMeshOnEdge;
aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnEdge");
break;
case TopAbs_VERTEX:
- aShapeTag = Tag_SubMeshOnVertex;
+ aShapeTag = SMESH::Tag_SubMeshOnVertex;
aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnVertex");
break;
default:
- aShapeTag = Tag_SubMeshOnCompound;
- aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnCompound");
+ aShapeTag = SMESH::Tag_SubMeshOnCompound;
+ aSubMeshName = QObject::tr("SMESH_MEN_SubMeshesOnCompound");
}
-
+
SALOMEDS::SObject_var aSubMeshesRoot;
SALOMEDS::GenericAttribute_var anAttr;
if(!aMeshSO->FindSubObject(aShapeTag,aSubMeshesRoot)){
return "";
}
-const char*
-SMESH_Swig::AddSubMeshOnShape(const char* theMeshEntry,
- const char* theGeomShapeEntry,
- const char* theSubMeshIOR,
- int ShapeType)
+const char* SMESH_Swig::AddSubMeshOnShape(const char* theMeshEntry,
+ const char* theGeomShapeEntry,
+ const char* theSubMeshIOR,
+ int ShapeType)
{
SALOMEDS::SObject_var aGeomShapeSO = myStudy->FindObjectID(theGeomShapeEntry);
if(!aGeomShapeSO->_is_nil()){
aDisp->Display(_entry,1);
}
};
-
+
ProcessVoidEvent(new TEvent(Mesh_Entry));
-
}
-void
-SMESH_Swig::SetName(const char* theEntry,
- const char* theName)
+void SMESH_Swig::SetName(const char* theEntry,
+ const char* theName)
{
SALOMEDS::SObject_var aSObject = myStudy->FindObjectID(theEntry);
SALOMEDS::GenericAttribute_var anAttr;
*/
//================================================================================
-void SMESH_Swig::SetMeshIcon(const char* theMeshEntry,
+void SMESH_Swig::SetMeshIcon(const char* theMeshEntry,
const bool theIsComputed,
const bool isEmpty)
{
#include "SVTK_Selector.h"
#include "SVTK_Selection.h"
#include "SALOME_ListIO.hxx"
+#include "SALOMEDSClient_SObject.hxx"
#include "utilities.h"
using namespace std;
+enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action type
+
//=================================================================================
// class : SMESHGUI_SymmetryDlg()
// purpose :
//=================================================================================
+
SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule, const char* name,
bool modal, WFlags fl)
: QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
// Controls for elements selection
TextLabelElements = new QLabel(GroupArguments, "TextLabelElements");
TextLabelElements->setText(tr("SMESH_ID_ELEMENTS" ));
- TextLabelElements->setFixedWidth(74);
+ //TextLabelElements->setFixedWidth(74);
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
+ //GroupArgumentsLayout->addMultiCellWidget(TextLabelElements, 0, 0, 0, 1);
SelectElementsButton = new QPushButton(GroupArguments, "SelectElementsButton");
SelectElementsButton->setText(tr("" ));
SelectElementsButton->setToggleButton(FALSE);
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
- LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
+ LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator"));
- GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
+ //GroupArgumentsLayout->addWidget(LineEditElements, 0, 3);
+ GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 4);
// Control for the whole mesh selection
CheckBoxMesh = new QCheckBox(GroupArguments, "CheckBoxMesh");
CheckBoxMesh->setText(tr("SMESH_SELECT_WHOLE_MESH" ));
- GroupArgumentsLayout->addMultiCellWidget(CheckBoxMesh, 1, 1, 0, 2);
+ GroupArgumentsLayout->addMultiCellWidget(CheckBoxMesh, 1, 1, 0, 4);
// Controls for mirror selection
GroupMirror = new QGroupBox(GroupArguments, "GroupMirror");
TextLabelDX = new QLabel(GroupMirror, "TextLabelDX");
TextLabelDX->setText(tr("SMESH_DX"));
+ TextLabelDX->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
GroupMirrorLayout->addWidget(TextLabelDX, 1, 2);
SpinBox_DX = new SMESHGUI_SpinBox(GroupMirror, "SpinBox_DX");
TextLabelDY = new QLabel(GroupMirror, "TextLabelDY");
TextLabelDY->setText(tr("SMESH_DY"));
+ TextLabelDY->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
GroupMirrorLayout->addWidget(TextLabelDY, 1, 4);
SpinBox_DY = new SMESHGUI_SpinBox(GroupMirror, "SpinBox_DY");
TextLabelDZ = new QLabel(GroupMirror, "TextLabelDZ");
TextLabelDZ->setText(tr("SMESH_DZ"));
+ TextLabelDZ->setAlignment( Qt::AlignRight | Qt::AlignVCenter | Qt::ExpandTabs );
GroupMirrorLayout->addWidget(TextLabelDZ, 1, 6);
SpinBox_DZ = new SMESHGUI_SpinBox(GroupMirror, "SpinBox_DZ");
GroupMirrorLayout->addWidget(SpinBox_DZ, 1, 7);
- GroupArgumentsLayout->addMultiCellWidget(GroupMirror, 2, 2, 0, 2);
+ GroupArgumentsLayout->addMultiCellWidget(GroupMirror, 2, 2, 0, 4);
- // Controls for "Create a copy" option
- CheckBoxCopy = new QCheckBox(GroupArguments, "CheckBoxCopy");
- CheckBoxCopy->setText(tr("SMESH_CREATE_COPY"));
- GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 3, 3, 0, 2);
+ // switch of action type
+ ActionGroup = new QButtonGroup(1, Qt::Horizontal, GroupArguments, "ActionGroup");
+ ActionGroup->setExclusive(true);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_MOVE_ELEMENTS"),ActionGroup), MOVE_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_COPY_ELEMENTS"),ActionGroup), COPY_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_CREATE_MESH" ),ActionGroup), MAKE_MESH_BUTTON);
+ GroupArgumentsLayout->addMultiCellWidget(ActionGroup, 3, 5, 0, 3);
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ MakeGroupsCheck->setChecked(false);
+ GroupArgumentsLayout->addWidget(MakeGroupsCheck, 4, 4);
+
+ // Name of a mesh to create
+ LineEditNewMesh = new QLineEdit(GroupArguments, "LineEditNewMesh");
+ GroupArgumentsLayout->addWidget(LineEditNewMesh, 5, 4);
SMESHGUI_SymmetryDlgLayout->addWidget(GroupArguments, 1, 0);
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "/files/symmetry.htm";
+ myHelpFileName = "symmetry_page.html";
Init();
connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&)));
connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool)));
+ connect(ActionGroup, SIGNAL(clicked(int)), SLOT(onActionClicked(int)));
this->show(); /* displays Dialog */
ConstructorsClicked(0);
SelectionIntoArgument();
+ onActionClicked(MOVE_ELEMS_BUTTON);
resize(0,0); // ??
}
SpinBox_DY->SetValue(0.0);
SpinBox_DZ->SetValue(0.0);
- CheckBoxCopy->setChecked(false);
+ ((QRadioButton*) ActionGroup->find( MOVE_ELEMS_BUTTON ))->setChecked(TRUE);
CheckBoxMesh->setChecked(false);
+// MakeGroupsCheck->setChecked(false);
+// MakeGroupsCheck->setEnabled(false);
onSelectMesh(false);
}
}
aMirror.vz = SpinBox_DZ->GetValue();
}
- bool toCreateCopy = CheckBoxCopy->isChecked();
SMESH::SMESH_MeshEditor::MirrorType aMirrorType;
if (GetConstructorId() == 2)
aMirrorType = SMESH::SMESH_MeshEditor::PLANE;
+ int actionButton = ActionGroup->id( ActionGroup->selected() );
+ bool makeGroups = ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() );
+
try {
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
QApplication::setOverrideCursor(Qt::waitCursor);
- aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, toCreateCopy);
+ switch ( actionButton ) {
+ case MOVE_ELEMS_BUTTON:
+ aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, false );
+ break;
+ case COPY_ELEMS_BUTTON:
+ if ( makeGroups )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->MirrorMakeGroups(anElementsId, aMirror, aMirrorType);
+ else
+ aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, true);
+ break;
+ case MAKE_MESH_BUTTON:
+ SMESH::SMESH_Mesh_var mesh =
+ aMeshEditor->MirrorMakeMesh(anElementsId, aMirror, aMirrorType, makeGroups,
+ LineEditNewMesh->text().latin1());
+ }
QApplication::restoreOverrideCursor();
} catch (...) {
}
SMESH::UpdateView();
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ||
+ actionButton == MAKE_MESH_BUTTON )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
ConstructorsClicked(GetConstructorId());
SelectionIntoArgument();
if (myEditCurrentArgument == (QWidget*)LineEditElements) {
myElementsId = "";
+ // MakeGroups is available if there are groups and "Copy"
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ }
+ else if ( ActionGroup->id( ActionGroup->selected() ) != MOVE_ELEMS_BUTTON ) {
+ MakeGroupsCheck->setEnabled(true);
+ }
if (CheckBoxMesh->isChecked()) {
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString);
}
myBusy = true;
- if (myEditCurrentArgument == (QWidget*)LineEditElements)
+ if (myEditCurrentArgument == (QWidget*)LineEditElements) {
LineEditElements->setText(aString);
+ setNewMeshName();
+ }
myBusy = false;
// OK
}
}
+//=======================================================================
+//function : onActionClicked
+//purpose : slot called when an action type changed
+//=======================================================================
+
+void SMESHGUI_SymmetryDlg::onActionClicked(int button)
+{
+ switch ( button ) {
+ case MOVE_ELEMS_BUTTON:
+ MakeGroupsCheck->setEnabled(false);
+ LineEditNewMesh->setEnabled(false);
+ break;
+ case COPY_ELEMS_BUTTON:
+ LineEditNewMesh->setEnabled(false);
+ MakeGroupsCheck->setText( tr("SMESH_MAKE_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ case MAKE_MESH_BUTTON:
+ LineEditNewMesh->setEnabled(true);
+ MakeGroupsCheck->setText( tr("SMESH_COPY_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ }
+ setNewMeshName();
+}
+
+//=======================================================================
+//function : setNewMeshName
+//purpose : update contents of LineEditNewMesh
+//=======================================================================
+
+void SMESHGUI_SymmetryDlg::setNewMeshName()
+{
+ LineEditNewMesh->setText("");
+ if ( LineEditNewMesh->isEnabled() && !myMesh->_is_nil() ) {
+ QString name;
+ if ( CheckBoxMesh->isChecked() ) {
+ name = LineEditElements->text();
+ }
+ else {
+ _PTR(SObject) meshSO = SMESH::FindSObject( myMesh );
+ name = meshSO->GetName();
+ }
+ if ( !name.isEmpty() )
+ LineEditNewMesh->setText( SMESH::UniqueMeshName( name.latin1(), "mirrored"));
+ }
+}
+
//=================================================================================
// function : keyPressEvent()
// purpose :
void keyPressEvent(QKeyEvent*);
int GetConstructorId();
bool IsMirrorOk();
+ void setNewMeshName();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
QLabel* TextLabelDZ;
SMESHGUI_SpinBox* SpinBox_DZ;
- QCheckBox* CheckBoxCopy;
+ //QCheckBox* CheckBoxCopy;
+ QButtonGroup* ActionGroup;
+ QCheckBox* MakeGroupsCheck;
+ QLineEdit* LineEditNewMesh;
QString myHelpFileName;
void onTextChange(const QString&);
void onSelectMesh(bool toSelectMesh);
void onVectorChanged();
-
+ void onActionClicked(int button);
+
protected:
QGridLayout* SMESHGUI_SymmetryDlgLayout;
QGridLayout* GroupConstructorsLayout;
#include "SVTK_ViewWindow.h"
#include "SVTK_Selector.h"
#include "SALOME_ListIO.hxx"
+#include "SALOMEDSClient_SObject.hxx"
#include "utilities.h"
using namespace std;
+enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action type
+
//=================================================================================
// class : SMESHGUI_TranslationDlg()
// purpose :
SelectElementsButton->setToggleButton(FALSE);
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
- LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
+ LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator"));
GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 7);
GroupArgumentsLayout->addWidget(SpinBox2_3, 3, 7);
// Controls for "Create a copy" option
- CheckBoxCopy = new QCheckBox(GroupArguments, "CheckBoxCopy");
- CheckBoxCopy->setText(tr("SMESH_CREATE_COPY"));
- GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 4, 4, 0, 2);
-
+// CheckBoxCopy = new QCheckBox(GroupArguments, "CheckBoxCopy");
+// CheckBoxCopy->setText(tr("SMESH_CREATE_COPY"));
+// GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 4, 4, 0, 2);
+
+ // switch of action type
+ ActionGroup = new QButtonGroup(1, Qt::Horizontal, GroupArguments, "ActionGroup");
+ ActionGroup->setExclusive(true);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_MOVE_ELEMENTS"),ActionGroup), MOVE_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_COPY_ELEMENTS"),ActionGroup), COPY_ELEMS_BUTTON);
+ ActionGroup->insert(new QRadioButton(tr("SMESH_CREATE_MESH" ),ActionGroup), MAKE_MESH_BUTTON);
+ GroupArgumentsLayout->addMultiCellWidget(ActionGroup, 4, 6, 0, 3);
+
+ // CheckBox for groups generation
+ MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments);
+ MakeGroupsCheck->setChecked(false);
+ GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 5, 5, 4, 7);
+
+ // Name of a mesh to create
+ LineEditNewMesh = new QLineEdit(GroupArguments, "LineEditNewMesh");
+ GroupArgumentsLayout->addMultiCellWidget(LineEditNewMesh, 6, 6, 4, 7);
SMESHGUI_TranslationDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- 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);
+ SpinBox1_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ SpinBox1_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ SpinBox1_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ SpinBox2_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ SpinBox2_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
+ SpinBox2_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, DBL_DIGITS_DISPLAY);
GroupArguments->show();
RadioButton1->setChecked(TRUE);
myMeshOrSubMeshOrGroupFilter =
new SMESH_LogicalFilter(aListOfFilters, SMESH_LogicalFilter::LO_OR);
- myHelpFileName = "/files/translation.htm";
+ myHelpFileName = "translation_page.html";
Init();
connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&)));
connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool)));
+ connect(ActionGroup, SIGNAL(clicked(int)), SLOT(onActionClicked(int)));
this->show(); /* displays Dialog */
ConstructorsClicked(0);
SelectionIntoArgument();
+ onActionClicked(MOVE_ELEMS_BUTTON);
resize(0,0); // ??
}
SpinBox2_2->SetValue(0.0);
SpinBox2_3->SetValue(0.0);
- CheckBoxCopy->setChecked(false);
+ ((QRadioButton*) ActionGroup->find( MOVE_ELEMS_BUTTON ))->setChecked(TRUE);
CheckBoxMesh->setChecked(false);
+// MakeGroupsCheck->setChecked(false);
+// MakeGroupsCheck->setEnabled(false);
onSelectMesh(false);
}
}
aVector.PS.z = SpinBox1_3->GetValue();
}
- bool toCreateCopy = CheckBoxCopy->isChecked();
-
+ int actionButton = ActionGroup->id( ActionGroup->selected() );
+ bool makeGroups = ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() );
try {
SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
QApplication::setOverrideCursor(Qt::waitCursor);
- aMeshEditor->Translate(anElementsId.inout(), aVector, toCreateCopy);
+ switch ( actionButton ) {
+ case MOVE_ELEMS_BUTTON:
+ aMeshEditor->Translate(anElementsId, aVector, false);
+ break;
+ case COPY_ELEMS_BUTTON:
+ if ( makeGroups )
+ SMESH::ListOfGroups_var groups =
+ aMeshEditor->TranslateMakeGroups(anElementsId, aVector);
+ else
+ aMeshEditor->Translate(anElementsId, aVector, true);
+ break;
+ case MAKE_MESH_BUTTON:
+ SMESH::SMESH_Mesh_var mesh =
+ aMeshEditor->TranslateMakeMesh(anElementsId, aVector, makeGroups,
+ LineEditNewMesh->text().latin1());
+ }
QApplication::restoreOverrideCursor();
} catch (...) {
}
SMESH::UpdateView();
+ if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ||
+ actionButton == MAKE_MESH_BUTTON )
+ mySMESHGUI->updateObjBrowser(true); // new groups may appear
Init(false);
ConstructorsClicked(GetConstructorId());
SelectionIntoArgument();
if (myEditCurrentArgument == (QWidget*)LineEditElements) {
myElementsId = "";
+ // MakeGroups is available if there are groups and "Copy"
+ if ( myMesh->NbGroups() == 0 ) {
+ MakeGroupsCheck->setChecked(false);
+ MakeGroupsCheck->setEnabled(false);
+ }
+ else if ( ActionGroup->id( ActionGroup->selected() ) != MOVE_ELEMS_BUTTON ) {
+ MakeGroupsCheck->setEnabled(true);
+ }
+
if (CheckBoxMesh->isChecked()) {
SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString );
}
myBusy = true;
- if (myEditCurrentArgument == (QWidget*)LineEditElements)
+ if (myEditCurrentArgument == (QWidget*)LineEditElements) {
LineEditElements->setText(aString);
+ setNewMeshName();
+ }
myBusy = false;
// OK
SelectionIntoArgument();
}
+//=======================================================================
+//function : onActionClicked
+//purpose : slot called when an action type changed
+//=======================================================================
+
+void SMESHGUI_TranslationDlg::onActionClicked(int button)
+{
+ switch ( button ) {
+ case MOVE_ELEMS_BUTTON:
+ MakeGroupsCheck->setEnabled(false);
+ LineEditNewMesh->setEnabled(false);
+ break;
+ case COPY_ELEMS_BUTTON:
+ LineEditNewMesh->setEnabled(false);
+ MakeGroupsCheck->setText( tr("SMESH_MAKE_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ case MAKE_MESH_BUTTON:
+ LineEditNewMesh->setEnabled(true);
+ MakeGroupsCheck->setText( tr("SMESH_COPY_GROUPS"));
+ if ( myMesh->_is_nil() || myMesh->NbGroups() > 0)
+ MakeGroupsCheck->setEnabled(true);
+ else
+ MakeGroupsCheck->setEnabled(false);
+ break;
+ }
+ setNewMeshName();
+}
+
+//=======================================================================
+//function : setNewMeshName
+//purpose : update contents of LineEditNewMesh
+//=======================================================================
+
+void SMESHGUI_TranslationDlg::setNewMeshName()
+{
+ LineEditNewMesh->setText("");
+ if ( LineEditNewMesh->isEnabled() && !myMesh->_is_nil() ) {
+ QString name;
+ if ( CheckBoxMesh->isChecked() ) {
+ name = LineEditElements->text();
+ }
+ else {
+ _PTR(SObject) meshSO = SMESH::FindSObject( myMesh );
+ name = meshSO->GetName();
+ }
+ if ( !name.isEmpty() )
+ LineEditNewMesh->setText( SMESH::UniqueMeshName( name.latin1(), "translated"));
+ }
+}
+
//=================================================================================
// function : GetConstructorId()
// purpose :
void hideEvent (QHideEvent*); /* ESC key */
void keyPressEvent(QKeyEvent*);
int GetConstructorId();
+ void setNewMeshName();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
SMESHGUI_SpinBox* SpinBox2_2;
QLabel* TextLabel2_3;
SMESHGUI_SpinBox* SpinBox2_3;
- QCheckBox* CheckBoxCopy;
+ //QCheckBox* CheckBoxCopy;
+ QButtonGroup* ActionGroup;
+ QCheckBox* MakeGroupsCheck;
+ QLineEdit* LineEditNewMesh;
QString myHelpFileName;
void ActivateThisDialog() ;
void onTextChange(const QString&);
void onSelectMesh(bool toSelectMesh);
+ void onActionClicked(int button);
protected:
QGridLayout* SMESHGUI_TranslationDlgLayout;
connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnOk()));
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
- myHelpFileName = "transparency.htm";
+ myHelpFileName = "transparency_page.html";
this->show();
}
#include "SMESHGUI.h"
#include "SMESH_Actor.h"
+#include "SMESH_ActorUtils.h"
#include "SMESH_ObjectDef.h"
+#include <SMDS_Mesh.hxx>
#include <SUIT_Desktop.h>
#include <SUIT_Session.h>
#include <SUIT_Study.h>
+#include <SUIT_MessageBox.h>
#include <SALOME_ListIO.hxx>
#include <SALOME_ListIteratorOfListIO.hxx>
// VTK
#include <vtkRenderer.h>
#include <vtkActorCollection.h>
+#include <vtkUnstructuredGrid.h>
// OCCT
#include <TColStd_IndexedMapOfInteger.hxx>
+#include <Standard_ErrorHandler.hxx>
// STL
#include <set>
typedef map<TKeyOfVisualObj,TVisualObjPtr> TVisualObjCont;
static TVisualObjCont VISUAL_OBJ_CONT;
+ //=============================================================================
+ /*!
+ * \brief Allocate some memory at construction and release it at destruction.
+ * Is used to be able to continue working after mesh generation or visualization
+ * break due to lack of memory
+ */
+ //=============================================================================
+
+ struct MemoryReserve
+ {
+ char* myBuf;
+ MemoryReserve(): myBuf( new char[1024*1024*1] ){} // 1M
+ void Free() { if (myBuf) { delete [] myBuf; myBuf = 0; }}
+ ~MemoryReserve() { Free(); }
+ };
+ static MemoryReserve* theVISU_MemoryReserve = new MemoryReserve;
+
+ //================================================================================
+ /*!
+ * \brief Remove VisualObj and its actor from all views
+ */
+ //================================================================================
+
+ void RemoveVisualObjectWithActors( const char* theEntry )
+ {
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>
+ ( SUIT_Session::session()->activeApplication() );
+ SUIT_ViewManager* aViewManager =
+ app ? app->getViewManager(SVTK_Viewer::Type(), true) : 0;
+ if ( aViewManager ) {
+ QPtrVector<SUIT_ViewWindow> views = aViewManager->getViews();
+ for ( int iV = 0; iV < views.count(); ++iV ) {
+ if ( SMESH_Actor* actor = FindActorByEntry( views[iV], theEntry)) {
+ if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(views[iV]))
+ vtkWnd->RemoveActor(actor);
+ actor->Delete();
+ }
+ }
+ int aStudyId = aViewManager->study()->id();
+ TVisualObjCont::key_type aKey(aStudyId,theEntry);
+ TVisualObjCont::iterator anIter = VISUAL_OBJ_CONT.find(aKey);
+ if(anIter != VISUAL_OBJ_CONT.end()) {
+ // for unknown reason, object destructor is not called, so clear object manually
+ anIter->second->GetUnstructuredGrid()->SetCells(0,0,0);
+ anIter->second->GetUnstructuredGrid()->SetPoints(0);
+ }
+ VISUAL_OBJ_CONT.erase(aKey);
+ }
+ }
+ //================================================================================
+ /*!
+ * \brief Remove all VisualObjs and their actors from all views
+ */
+ //================================================================================
+
+ void RemoveAllObjectsWithActors()
+ {
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>
+ ( SUIT_Session::session()->activeApplication() );
+ if (!app) return;
+ ViewManagerList viewMgrs = app->viewManagers();
+ for ( int iM = 0; iM < viewMgrs.count(); ++iM ) {
+ SUIT_ViewManager* aViewManager = viewMgrs.at( iM );
+ if ( aViewManager && aViewManager->getType() == SVTK_Viewer::Type()) {
+ QPtrVector<SUIT_ViewWindow> views = aViewManager->getViews();
+ for ( int iV = 0; iV < views.count(); ++iV ) {
+ if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(views[iV])) {
+ vtkRenderer *aRenderer = vtkWnd->getRenderer();
+ vtkActorCollection *actors = aRenderer->GetActors();
+ for (int i = 0; i < actors->GetNumberOfItems(); ++i ) {
+ // size of actors changes inside the loop
+ while (SMESH_Actor *actor = dynamic_cast<SMESH_Actor*>(actors->GetItemAsObject(i)))
+ {
+ vtkWnd->RemoveActor(actor);
+ actor->Delete();
+ }
+ }
+ }
+ }
+ }
+ }
+ TVisualObjCont::iterator anIter = VISUAL_OBJ_CONT.begin();
+ for ( ; anIter != VISUAL_OBJ_CONT.end(); ++anIter ) {
+ // for unknown reason, object destructor is not called, so clear object manually
+ anIter->second->GetUnstructuredGrid()->SetCells(0,0,0);
+ anIter->second->GetUnstructuredGrid()->SetPoints(0);
+ }
+ VISUAL_OBJ_CONT.clear();
+ }
+
+ //================================================================================
+ /*!
+ * \brief Remove all VisualObjs of a study
+ */
+ //================================================================================
+
+ void RemoveVisuData(int studyID)
+ {
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>
+ ( SUIT_Session::session()->activeApplication() );
+ if (!app) return;
+ ViewManagerList viewMgrs = app->viewManagers();
+ for ( int iM = 0; iM < viewMgrs.count(); ++iM ) {
+ SUIT_ViewManager* aViewManager = viewMgrs.at( iM );
+ if ( aViewManager && aViewManager->getType() == SVTK_Viewer::Type() &&
+ aViewManager->study()->id() == studyID ) {
+ QPtrVector<SUIT_ViewWindow> views = aViewManager->getViews();
+ for ( int iV = 0; iV < views.count(); ++iV ) {
+ if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(views[iV])) {
+ vtkRenderer *aRenderer = vtkWnd->getRenderer();
+ vtkActorCollection *actors = aRenderer->GetActors();
+ for (int i = 0; i < actors->GetNumberOfItems(); ++i ) {
+ // size of actors changes inside the loop
+ while(SMESH_Actor *actor = dynamic_cast<SMESH_Actor*>(actors->GetItemAsObject(i)))
+ {
+ vtkWnd->RemoveActor(actor);
+ actor->Delete();
+ }
+ }
+ }
+ }
+ }
+ }
+ TVisualObjCont::iterator anIter = VISUAL_OBJ_CONT.begin();
+ for ( ; anIter != VISUAL_OBJ_CONT.end(); ++anIter ) {
+ int curId = anIter->first.first;
+ if ( curId == studyID ) {
+ // for unknown reason, object destructor is not called, so clear object manually
+ anIter->second->GetUnstructuredGrid()->SetCells(0,0,0);
+ anIter->second->GetUnstructuredGrid()->SetPoints(0);
+ VISUAL_OBJ_CONT.erase( anIter-- ); // dercement occures before erase()
+ }
+ }
+ }
+
+ //================================================================================
+ /*!
+ * \brief Notify the user on problems during visualization
+ */
+ //================================================================================
+
+ void OnVisuException()
+ {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ // PAL16774 (Crash after display of many groups). Salome sometimes crashes just
+ // after or at showing this message, so we do an additional check of available memory
+// char* buf = new char[100*1024];
+// delete [] buf;
+ SUIT_MessageBox::warn1 (SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_VISU_PROBLEM"),
+ QObject::tr("SMESH_BUT_OK"));
+ } catch (...) {
+ // no more memory at all: last resort
+ cout<< "SMESHGUI_VTKUtils::OnVisuException(), exception even at showing a message!!!" <<endl;
+ cout<< "Try to remove all visual data..." <<endl;
+ if (theVISU_MemoryReserve) {
+ delete theVISU_MemoryReserve;
+ theVISU_MemoryReserve = 0;
+ }
+ RemoveAllObjectsWithActors();
+ SUIT_MessageBox::warn1 (SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_VISU_PROBLEM_CLEAR"),
+ QObject::tr("SMESH_BUT_OK"));
+ cout<< "...done" << endl;
+ }
+ }
+ //================================================================================
+ /*!
+ * \brief Returns an updated visual object
+ */
+ //================================================================================
+
TVisualObjPtr GetVisualObj(int theStudyId, const char* theEntry){
TVisualObjPtr aVisualObj;
+ TVisualObjCont::key_type aKey(theStudyId,theEntry);
try{
- TVisualObjCont::key_type aKey(theStudyId,theEntry);
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
TVisualObjCont::iterator anIter = VISUAL_OBJ_CONT.find(aKey);
if(anIter != VISUAL_OBJ_CONT.end()){
aVisualObj = anIter->second;
CORBA::String_var aVal = anIOR->Value().c_str();
CORBA::Object_var anObj = app->orb()->string_to_object( aVal.in() );
if(!CORBA::is_nil(anObj)){
- //Try narrow to SMESH_Mesh interafce
+ //Try narrow to SMESH_Mesh interface
SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow(anObj);
if(!aMesh->_is_nil()){
aVisualObj.reset(new SMESH_MeshObj(aMesh));
- aVisualObj->Update();
TVisualObjCont::value_type aValue(aKey,aVisualObj);
VISUAL_OBJ_CONT.insert(aValue);
- return aVisualObj;
}
- //Try narrow to SMESH_Group interafce
+ //Try narrow to SMESH_Group interface
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObj);
if(!aGroup->_is_nil()){
_PTR(SObject) aFatherSObj = aSObj->GetFather();
TVisualObjPtr aVisObj = GetVisualObj(theStudyId,anEntry.in());
if(SMESH_MeshObj* aMeshObj = dynamic_cast<SMESH_MeshObj*>(aVisObj.get())){
aVisualObj.reset(new SMESH_GroupObj(aGroup,aMeshObj));
- aVisualObj->Update();
TVisualObjCont::value_type aValue(aKey,aVisualObj);
VISUAL_OBJ_CONT.insert(aValue);
- return aVisualObj;
}
}
- //Try narrow to SMESH_subMesh interafce
+ //Try narrow to SMESH_subMesh interface
SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow(anObj);
if(!aSubMesh->_is_nil()){
_PTR(SObject) aFatherSObj = aSObj->GetFather();
TVisualObjPtr aVisObj = GetVisualObj(theStudyId,anEntry.in());
if(SMESH_MeshObj* aMeshObj = dynamic_cast<SMESH_MeshObj*>(aVisObj.get())){
aVisualObj.reset(new SMESH_subMeshObj(aSubMesh,aMeshObj));
- aVisualObj->Update();
TVisualObjCont::value_type aValue(aKey,aVisualObj);
VISUAL_OBJ_CONT.insert(aValue);
- return aVisualObj;
}
}
}
}
}catch(...){
INFOS("GetMeshObj - There is no SMESH_Mesh object for the SALOMEDS::Strudy and Entry!!!");
+ return TVisualObjPtr();
}
+ // Update object
+ bool objModified = false;
+ if ( aVisualObj ) {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ objModified = aVisualObj->Update();
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::GetVisualObj()" << endl;
+#endif
+ RemoveVisualObjectWithActors( theEntry ); // remove this object
+ OnVisuException();
+ aVisualObj.reset();
+ }
+ }
+
+ if ( objModified ) {
+ // PAL16631. Mesurements showed that to show aVisualObj in SHADING(default) mode,
+ // ~10 times more memory is used than it occupies.
+ // Warn the user if there is less free memory than 30 sizes of a grid
+ // TODO: estimate memory usage in other modes and take current mode into account
+ int freeMB = SMDS_Mesh::CheckMemory(true);
+ int usedMB = aVisualObj->GetUnstructuredGrid()->GetActualMemorySize() / 1024;
+ if ( freeMB > 0 && usedMB * 30 > freeMB ) {
+#ifdef _DEBUG_
+ cout << "SMESHGUI_VTKUtils::GetVisualObj(), freeMB=" << freeMB
+ << ", usedMB=" << usedMB<< endl;
+#endif
+ int continu = 0;
+ if ( usedMB * 10 > freeMB )
+ // even dont try to show
+ SUIT_MessageBox::warn1 (SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_NO_MESH_VISUALIZATION"),
+ QObject::tr("SMESH_BUT_OK"));
+ else
+ // there is a chance to succeed
+ continu = SUIT_MessageBox::warn2
+ (SMESHGUI::desktop(),
+ QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_CONTINUE_MESH_VISUALIZATION"),
+ QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"),
+ 1, 0, 1);
+ if ( !continu ) {
+ // remove the corresponding actors from all views
+ RemoveVisualObjectWithActors( theEntry );
+ aVisualObj.reset();
+ }
+ }
+ }
+
return aVisualObj;
}
void RepaintCurrentView()
{
if (SVTK_ViewWindow* wnd = GetCurrentVtkView())
- {
- wnd->getRenderer()->Render();
- wnd->Repaint(false);
+ {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ wnd->getRenderer()->Render();
+ wnd->Repaint(false);
}
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::RepaintCurrentView()" << endl;
+#endif
+ OnVisuException();
+ }
+ }
}
void RepaintViewWindow(SVTK_ViewWindow* theWindow)
{
- theWindow->getRenderer()->Render();
- theWindow->Repaint();
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ theWindow->getRenderer()->Render();
+ theWindow->Repaint();
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::RepaintViewWindow(SVTK_ViewWindow)" << endl;
+#endif
+ OnVisuException();
+ }
}
void RenderViewWindow(SVTK_ViewWindow* theWindow)
{
- theWindow->getRenderer()->Render();
- theWindow->Repaint();
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ theWindow->getRenderer()->Render();
+ theWindow->Repaint();
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::RenderViewWindow(SVTK_ViewWindow)" << endl;
+#endif
+ OnVisuException();
+ }
}
void FitAll(){
if(SVTK_ViewWindow* wnd = GetCurrentVtkView() ){
- wnd->onFitAll();
- wnd->Repaint();
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ wnd->onFitAll();
+ wnd->Repaint();
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::FitAll()" << endl;
+#endif
+ OnVisuException();
+ }
}
}
std::string aNameVal = aName->Value();
anActor = SMESH_Actor::New(aVisualObj,theEntry,aNameVal.c_str(),theIsClear);
}
+
+ SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( aSObj ));
+ if(!CORBA::is_nil(aGroup))
+ {
+ SALOMEDS::Color aColor = aGroup->GetColor();
+ if( !( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 ) )
+ {
+ int r = 0, g = 0, b = 0;
+ SMESH::GetColor( "SMESH", "fill_color", r, g, b, QColor( 0, 170, 255 ) );
+ aColor.R = (float)r / 255.0;
+ aColor.G = (float)g / 255.0;
+ aColor.B = (float)b / 255.0;
+ aGroup->SetColor( aColor );
+ }
+ if( aGroup->GetType() == SMESH::NODE )
+ anActor->SetNodeColor( aColor.R, aColor.G, aColor.B );
+ else if( aGroup->GetType() == SMESH::EDGE )
+ anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B );
+ else
+ anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B );
+ }
}
}
return anActor;
void DisplayActor( SUIT_ViewWindow *theWnd, SMESH_Actor* theActor){
if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(theWnd)){
- vtkWnd->AddActor(theActor);
- vtkWnd->Repaint();
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ vtkWnd->AddActor(theActor);
+ vtkWnd->Repaint();
+ }
+ catch (...) {
+#ifdef _DEBUG_
+ cout << "Exception in SMESHGUI_VTKUtils::DisplayActor()" << endl;
+#endif
+ OnVisuException();
+ }
}
}
}
}
+ //================================================================================
+ /*!
+ * \brief Return true if there are no SMESH actors in a view
+ */
+ //================================================================================
+
+ bool noSmeshActors(SUIT_ViewWindow *theWnd)
+ {
+ if(SVTK_ViewWindow* aViewWindow = GetVtkViewWindow(theWnd)) {
+ vtkRenderer *aRenderer = aViewWindow->getRenderer();
+ vtkActorCollection *aCollection = aRenderer->GetActors();
+ aCollection->InitTraversal();
+ while(vtkActor *anAct = aCollection->GetNextActor())
+ if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct))
+ return false;
+ }
+ return true;
+ }
- void UpdateView(SUIT_ViewWindow *theWnd, EDisplaing theAction, const char* theEntry)
+ bool UpdateView(SUIT_ViewWindow *theWnd, EDisplaing theAction, const char* theEntry)
{
- if(SVTK_ViewWindow* aViewWnd = GetVtkViewWindow(theWnd)){
+ bool OK = false;
+ SVTK_ViewWindow* aViewWnd = GetVtkViewWindow(theWnd);
+ if (!aViewWnd)
+ return OK;
+
+ {
+ OK = true;
vtkRenderer *aRenderer = aViewWnd->getRenderer();
vtkActorCollection *aCollection = aRenderer->GetActors();
aCollection->InitTraversal();
- switch(theAction){
+
+ switch (theAction) {
case eDisplayAll: {
- while(vtkActor *anAct = aCollection->GetNextActor()){
- if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
+ while (vtkActor *anAct = aCollection->GetNextActor()) {
+ if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
anActor->SetVisibility(true);
}
}
}
case eDisplayOnly:
case eEraseAll: {
- while(vtkActor *anAct = aCollection->GetNextActor()){
- if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
+ while (vtkActor *anAct = aCollection->GetNextActor()) {
+ if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
anActor->SetVisibility(false);
}
}
}
default: {
- if(SMESH_Actor *anActor = FindActorByEntry(theWnd,theEntry)){
- switch(theAction) {
+ if (SMESH_Actor *anActor = FindActorByEntry(theWnd,theEntry)) {
+ switch (theAction) {
case eDisplay:
case eDisplayOnly:
anActor->SetVisibility(true);
break;
}
} else {
- switch(theAction){
+ switch (theAction) {
case eDisplay:
- case eDisplayOnly:{
- SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( theWnd->getViewManager()->study() );
- _PTR(Study) aDocument = aStudy->studyDS();
- if((anActor = CreateActor(aDocument,theEntry,true))) {
- DisplayActor(theWnd,anActor);
- FitAll();
- }
- break;
- }
+ case eDisplayOnly:
+ {
+ SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(theWnd->getViewManager()->study());
+ _PTR(Study) aDocument = aStudy->studyDS();
+ // Pass non-visual objects (hypotheses, etc.), return true in this case
+ CORBA::Long anId = aDocument->StudyId();
+ if (TVisualObjPtr aVisualObj = GetVisualObj(anId,theEntry))
+ {
+ if ((anActor = CreateActor(aDocument,theEntry,true))) {
+ bool needFitAll = noSmeshActors(theWnd); // fit for the first object only
+ DisplayActor(theWnd,anActor);
+ // FitAll(); - PAL16770(Display of a group performs an automatic fit all)
+ if (needFitAll) FitAll();
+ } else {
+ OK = false;
+ }
+ }
+ break;
+ }
}
}
}
}
}
+ return OK;
}
- void UpdateView(EDisplaing theAction, const char* theEntry){
+ bool UpdateView(EDisplaing theAction, const char* theEntry){
SalomeApp_Study* aStudy = dynamic_cast< SalomeApp_Study* >( GetActiveStudy() );
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( aStudy->application() );
SUIT_ViewWindow *aWnd = app->activeViewManager()->getActiveView();
- UpdateView(aWnd,theAction,theEntry);
+ return UpdateView(aWnd,theAction,theEntry);
}
void UpdateView(){
while(vtkActor *anAct = aCollection->GetNextActor()){
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
if(anActor->hasIO())
- Update(anActor->getIO(),anActor->GetVisibility());
+ if (!Update(anActor->getIO(),anActor->GetVisibility()))
+ break; // avoid multiple warinings if visu failed
}
}
}else{
SALOME_ListIteratorOfListIO anIter( selected );
for(; anIter.More(); anIter.Next()){
Handle(SALOME_InteractiveObject) anIO = anIter.Value();
- Update(anIO,true);
+ if ( !Update(anIO,true) )
+ break; // avoid multiple warinings if visu failed
}
}
RepaintCurrentView();
}
- void Update(const Handle(SALOME_InteractiveObject)& theIO,
- bool theDisplay)
+ bool Update(const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay)
{
_PTR(Study) aStudy = GetActiveStudyDocument();
CORBA::Long anId = aStudy->StudyId();
- TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,theIO->getEntry());
- if( aVisualObj )
- aVisualObj->Update();
- if ( theDisplay )
- UpdateView(SMESH::eDisplay,theIO->getEntry());
+ if ( TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,theIO->getEntry())) {
+ if ( theDisplay )
+ UpdateView(SMESH::eDisplay,theIO->getEntry());
+ return true;
+ }
+ return false;
}
PW = mgr->integerValue( "SMESH", "highlight_width", 5 );
double SP1 = mgr->doubleValue( "SMESH", "selection_precision_node", 0.025 ),
- SP2 = mgr->doubleValue( "SMESH", "selection_precision_element", 0.001 );
+ SP2 = mgr->doubleValue( "SMESH", "selection_precision_element", 0.001 ),
+ SP3 = mgr->doubleValue( "SMESH", "selection_precision_object", 0.025 );
for ( int i=0, n=views.count(); i<n; i++ ){
// update VTK viewer properties
aSelColor.blue()/255.,
SW );
// tolerances
- aVtkView->SetSelectionTolerance(SP1, SP2);
+ aVtkView->SetSelectionTolerance(SP1, SP2, SP3);
// pre-selection
aVtkView->SetPreselectionProp(aPreColor.red()/255.,
SMESHGUI_EXPORT
TVisualObjPtr GetVisualObj(int theStudyId,
const char* theEntry);
+SMESHGUI_EXPORT
+ void OnVisuException(); // PAL16631
//----------------------------------------------------------------------------
SMESHGUI_EXPORT
void DisplayActor (SUIT_ViewWindow*, SMESH_Actor* theActor);
SMESHGUI_EXPORT
void RemoveActor (SUIT_ViewWindow*, SMESH_Actor* theActor);
+SMESHGUI_EXPORT
+ void RemoveVisuData(int studyID);
//----------------------------------------------------------------------------
enum EDisplaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll};
SMESHGUI_EXPORT
- void UpdateView (SUIT_ViewWindow*,
+ bool UpdateView (SUIT_ViewWindow*,
EDisplaing theAction,
const char* theEntry = "" );
SMESHGUI_EXPORT
- void UpdateView (EDisplaing theAction,
+ bool UpdateView (EDisplaing theAction,
const char* theEntry = "");
SMESHGUI_EXPORT
void UpdateView();
SMESHGUI_EXPORT
- void Update(const Handle(SALOME_InteractiveObject)& theIO,
+ bool Update(const Handle(SALOME_InteractiveObject)& theIO,
bool theDisplay);
--- /dev/null
+// SMESH SMESHGUI : GUI for SMESH component
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : SMESHGUI_WhatIsDlg.cxx
+// Author : Vladimir TURIN
+// Module : SMESH
+// $Header:
+
+#include "SMESHGUI_WhatIsDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_SpinBox.h"
+#include "SMESHGUI_Utils.h"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESHGUI_IdValidator.h"
+
+#include "SMESH_Actor.h"
+#include "SMESH_TypeFilter.hxx"
+#include "SMESH_LogicalFilter.hxx"
+#include "SMDS_Mesh.hxx"
+#include "SMDS_VolumeTool.hxx"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+#include "SUIT_MessageBox.h"
+
+#include "LightApp_Application.h"
+
+#include "SVTK_ViewModel.h"
+#include "SVTK_Selection.h"
+#include "SVTK_ViewWindow.h"
+#include "SVTK_Selector.h"
+#include "SALOME_ListIO.hxx"
+
+#include "utilities.h"
+
+// OCCT Includes
+#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <gp_XYZ.hxx>
+
+// QT Includes
+#include <qapplication.h>
+#include <qbuttongroup.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qspinbox.h>
+#include <qpixmap.h>
+#include <qtextbrowser.h>
+
+// IDL Headers
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SMESH_Group)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+using namespace std;
+
+//=================================================================================
+// class : SMESHGUI_WhatIsDlg()
+// purpose :
+//=================================================================================
+SMESHGUI_WhatIsDlg::SMESHGUI_WhatIsDlg( SMESHGUI* theModule, const char* name,
+ bool modal, WFlags fl)
+ : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
+ WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose),
+ mySMESHGUI( theModule ),
+ mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
+{
+ if (!name)
+ setName("SMESHGUI_WhatIsDlg");
+ resize(300, 500);
+ setCaption(tr("SMESH_WHAT_IS_TITLE"));
+ setSizeGripEnabled(TRUE);
+ SMESHGUI_WhatIsDlgLayout = new QGridLayout(this);
+ SMESHGUI_WhatIsDlgLayout->setSpacing(6);
+ SMESHGUI_WhatIsDlgLayout->setMargin(11);
+
+ /***************************************************************/
+ GroupMesh = new QButtonGroup(this, "GroupSelections");
+ GroupMesh->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupMesh->sizePolicy().hasHeightForWidth()));
+ GroupMesh->setTitle(tr(""));
+ GroupMesh->setColumnLayout(0, Qt::Vertical);
+ GroupMesh->layout()->setSpacing(0);
+ GroupMesh->layout()->setMargin(0);
+ GroupMeshLayout = new QGridLayout(GroupMesh->layout());
+ GroupMeshLayout->setAlignment(Qt::AlignTop);
+ GroupMeshLayout->setSpacing(6);
+ GroupMeshLayout->setMargin(11);
+ MeshLabel = new QLabel(GroupMesh, "MeshLabel");
+ MeshLabel->setText(tr("SMESH_NAME"));
+ GroupMeshLayout->addWidget(MeshLabel, 0, 0);
+ MeshName = new QLabel(GroupMesh, "MeshName");
+ MeshName->setText(tr(""));
+ GroupMeshLayout->addWidget(MeshName, 0, 1);
+ SMESHGUI_WhatIsDlgLayout->addWidget(GroupMesh, 0, 0);
+
+ /***************************************************************/
+ GroupSelections = new QButtonGroup(this, "GroupSelections");
+ GroupSelections->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupSelections->sizePolicy().hasHeightForWidth()));
+ GroupSelections->setTitle(tr("ENTITY_TYPE" ));
+ GroupSelections->setExclusive(TRUE);
+ GroupSelections->setColumnLayout(0, Qt::Vertical);
+ GroupSelections->layout()->setSpacing(0);
+ GroupSelections->layout()->setMargin(0);
+ GroupSelectionsLayout = new QGridLayout(GroupSelections->layout());
+ GroupSelectionsLayout->setAlignment(Qt::AlignTop);
+ GroupSelectionsLayout->setSpacing(6);
+ GroupSelectionsLayout->setMargin(11);
+ RadioButtonNodes = new QRadioButton(GroupSelections, "RadioButtonNodes");
+ RadioButtonNodes->setText(tr("SMESH_NODES"));
+ GroupSelectionsLayout->addWidget(RadioButtonNodes, 0, 0);
+ RadioButtonElements = new QRadioButton(GroupSelections, "RadioButtonElements");
+ RadioButtonElements->setText(tr("SMESH_ELEMENTS"));
+ GroupSelectionsLayout->addWidget(RadioButtonElements, 0, 1 );
+ SMESHGUI_WhatIsDlgLayout->addWidget(GroupSelections, 1, 0);
+
+ /***************************************************************/
+ GroupArguments = new QGroupBox(this, "GroupArguments");
+ GroupArguments->setTitle(tr("SMESH_INFORMATION"));
+ GroupArguments->setColumnLayout(0, Qt::Vertical);
+ GroupArguments->layout()->setSpacing(0);
+ GroupArguments->layout()->setMargin(0);
+ GroupArgumentsLayout = new QGridLayout(GroupArguments->layout());
+ GroupArgumentsLayout->setAlignment(Qt::AlignTop);
+ GroupArgumentsLayout->setSpacing(6);
+ GroupArgumentsLayout->setMargin(11);
+
+ // Controls for elements selection
+ TextLabelElements = new QLabel(GroupArguments, "TextLabelElements");
+ TextLabelElements->setText(tr("SMESH_ID_ELEMENTS" ));
+ TextLabelElements->setFixedWidth(74);
+ GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
+
+ LineEditElements = new QLineEdit(GroupArguments, "LineEditElements");
+ LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator"));
+ GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 7);
+
+ // information text browser
+ Info = new QTextBrowser(GroupArguments, "Info");
+ Info->setHScrollBarMode(QScrollView::AlwaysOff);
+ Info->setVScrollBarMode(QScrollView::AlwaysOff);
+ GroupArgumentsLayout->addMultiCellWidget(Info, 1, 1, 0, 7);
+
+ SMESHGUI_WhatIsDlgLayout->addWidget(GroupArguments, 2, 0);
+
+ /***************************************************************/
+ GroupButtons = new QGroupBox(this, "GroupButtons");
+ GroupButtons->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth()));
+ GroupButtons->setTitle(tr("" ));
+ GroupButtons->setColumnLayout(0, Qt::Vertical);
+ GroupButtons->layout()->setSpacing(0);
+ GroupButtons->layout()->setMargin(0);
+ GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
+ GroupButtonsLayout->setAlignment(Qt::AlignTop);
+ GroupButtonsLayout->setSpacing(6);
+ GroupButtonsLayout->setMargin(11);
+ buttonHelp = new QPushButton(GroupButtons, "buttonHelp");
+ buttonHelp->setText(tr("SMESH_BUT_HELP" ));
+ buttonHelp->setAutoDefault(TRUE);
+ GroupButtonsLayout->addWidget(buttonHelp, 0, 3);
+ QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ GroupButtonsLayout->addItem(spacer_9, 0, 1);
+ buttonOk = new QPushButton(GroupButtons, "buttonOk");
+ buttonOk->setText(tr("SMESH_BUT_OK" ));
+ buttonOk->setAutoDefault(TRUE);
+ buttonOk->setDefault(TRUE);
+ GroupButtonsLayout->addWidget(buttonOk, 0, 0);
+ SMESHGUI_WhatIsDlgLayout->addWidget(GroupButtons, 3, 0);
+
+ GroupArguments->show();
+ RadioButtonNodes->setChecked(TRUE);
+
+ mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
+
+ mySMESHGUI->SetActiveDialogBox((QDialog*)this);
+
+ // Costruction of the logical filter
+ SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
+ SMESH_TypeFilter* aSmeshGroupFilter = new SMESH_TypeFilter (GROUP);
+
+ QPtrList<SUIT_SelectionFilter> aListOfFilters;
+ if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter);
+ if (aSmeshGroupFilter) aListOfFilters.append(aSmeshGroupFilter);
+
+ myMeshOrSubMeshOrGroupFilter =
+ new SMESH_LogicalFilter(aListOfFilters, SMESH_LogicalFilter::LO_OR);
+
+ myHelpFileName = "/files/viewing_mesh_info.htm#element_infos";
+
+ Init();
+
+ /* signals and slots connections */
+ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
+ connect(buttonHelp, SIGNAL(clicked()), this, SLOT(ClickOnHelp()));
+ connect(GroupSelections, SIGNAL(clicked(int)), SLOT(SelectionsClicked(int)));
+
+ connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
+ connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+ /* to close dialog if study change */
+ connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
+ connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&)));
+ this->show(); /* displays Dialog */
+
+ SelectionsClicked(0);
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ~SMESHGUI_WhatIsDlg()
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+SMESHGUI_WhatIsDlg::~SMESHGUI_WhatIsDlg()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::Init (bool ResetControls)
+{
+ myBusy = false;
+
+ LineEditElements->clear();
+
+ myActor = 0;
+ myMesh = SMESH::SMESH_Mesh::_nil();
+
+ if (ResetControls) {
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode( CellSelection );
+ onTextChange(LineEditElements->text());
+
+ SelectionIntoArgument();
+ }
+}
+
+//=================================================================================
+// function : SelectionsClicked()
+// purpose : Radio button management
+//=================================================================================
+void SMESHGUI_WhatIsDlg::SelectionsClicked (int selectionId)
+{
+ disconnect(mySelectionMgr, 0, this, 0);
+
+ mySelectionMgr->clearFilters();
+
+ switch (selectionId) {
+ case 0:
+ {
+ SMESH::SetPointRepresentation(true);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode( NodeSelection );
+ break;
+ }
+ case 1:
+ {
+ SMESH::SetPointRepresentation(false);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode( CellSelection );
+ break;
+ }
+ }
+
+ connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnOk()
+{
+ if (mySMESHGUI->isActiveStudyLocked())
+ return;
+
+ SMESH::UpdateView();
+ Init(false);
+ SelectionIntoArgument();
+ ClickOnCancel();
+}
+
+//=================================================================================
+// function : ClickOnCancel()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnCancel()
+{
+ disconnect(mySelectionMgr, 0, this, 0);
+ mySelectionMgr->clearFilters();
+ SMESH::SetPointRepresentation(false);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode( ActorSelection );
+ mySMESHGUI->ResetState();
+ reject();
+}
+
+//=================================================================================
+// function : ClickOnHelp()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnHelp()
+{
+ LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+ if (app)
+ app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
+ else {
+ SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
+ QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+ arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName),
+ QObject::tr("BUT_OK"));
+ }
+}
+
+//=======================================================================
+// function : onTextChange()
+// purpose :
+//=======================================================================
+void SMESHGUI_WhatIsDlg::onTextChange (const QString& theNewText)
+{
+ if (myBusy) return;
+ myBusy = true;
+
+ // hilight entered elements
+ SMDS_Mesh* aMesh = 0;
+ if (myActor)
+ aMesh = myActor->GetObject()->GetMesh();
+
+ if (aMesh) {
+ Handle(SALOME_InteractiveObject) anIO = myActor->getIO();
+
+ TColStd_MapOfInteger newIndices;
+
+ QStringList aListId = QStringList::split(" ", theNewText, false);
+
+ for (int i = 0; i < aListId.count(); i++) {
+ const SMDS_MeshElement * e = RadioButtonNodes->isChecked()?
+ aMesh->FindNode(aListId[ i ].toInt()):
+ aMesh->FindElement(aListId[ i ].toInt());
+ if (e)
+ newIndices.Add(e->GetID());
+ }
+
+ mySelector->AddOrRemoveIndex( anIO, newIndices, false );
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->highlight( anIO, true, true );
+ }
+
+ SelectionIntoArgument();
+
+ myBusy = false;
+}
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection as changed or other case
+//=================================================================================
+void SMESHGUI_WhatIsDlg::SelectionIntoArgument()
+{
+ int curBusy = myBusy;
+
+ // clear
+ myActor = 0;
+ QString aString = "";
+
+ myBusy = true;
+ if(!curBusy)
+ LineEditElements->setText(aString);
+ MeshName->setText(aString);
+ GroupMesh->setTitle(tr(""));
+ Info->clear();
+ myBusy = curBusy;
+
+ if (!GroupButtons->isEnabled()) // inactive
+ return;
+
+ // get selected mesh
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
+
+ int nbSel = aList.Extent();
+
+ if (nbSel != 1)
+ return;
+
+ Handle(SALOME_InteractiveObject) IO = aList.First();
+ myMesh = SMESH::GetMeshByIO(IO);
+ if (myMesh->_is_nil())
+ return;
+
+ myActor = SMESH::FindActorByObject(myMesh);
+ if (!myActor)
+ myActor = SMESH::FindActorByEntry(IO->getEntry());
+ if (!myActor)
+ return;
+
+ QString aName;
+ SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
+ MeshName->setText(aName);
+ if(!SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO)->_is_nil()) {
+ GroupMesh->setTitle(tr("SMESH_MESH"));
+ } else if(!SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO)->_is_nil()) {
+ GroupMesh->setTitle(tr("SMESH_SUBMESH"));
+ } else if(!SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO)->_is_nil()) {
+ GroupMesh->setTitle(tr("SMESH_GROUP"));
+ }
+
+ int aNbUnits = 0;
+
+ aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, IO, aString);
+
+ if (aNbUnits < 1)
+ return;
+
+ const SMDS_MeshElement * e = RadioButtonNodes->isChecked()?
+ myActor->GetObject()->GetMesh()->FindNode(aString.toInt()):
+ myActor->GetObject()->GetMesh()->FindElement(aString.toInt());
+ if (e) {
+ QString anInfo;
+ anInfo=tr("ENTITY_TYPE") + ": ";
+ if(e->GetType() == SMDSAbs_Node) {
+ anInfo+=tr("MESH_NODE")+"\n";
+ const SMDS_MeshNode *en = (SMDS_MeshNode*) e;
+ } else if(e->GetType() == SMDSAbs_Edge) {
+ anInfo+=tr("SMESH_EDGE")+"\n";
+ anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+ const SMDS_MeshEdge *ee = (SMDS_MeshEdge*) e;
+ anInfo+=(ee->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+"\n";
+ } else if(e->GetType() == SMDSAbs_Face) {
+ const SMDS_MeshFace *ef = (SMDS_MeshFace*) e;
+ anInfo+=tr("SMESH_FACE")+"\n";
+ anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+ if(!ef->IsPoly())
+ anInfo+=(ef->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" ";
+ switch(ef->NbNodes()) {
+ case 3:
+ case 6:
+ {
+ anInfo+=tr("SMESH_TRIANGLE");
+ break;
+ }
+ case 4:
+ case 8:
+ {
+ anInfo+=tr("SMESH_QUADRANGLE");
+ break;
+ }
+ default:
+ break;
+ }
+ anInfo+="\n";
+ } else if(e->GetType() == SMDSAbs_Volume) {
+ anInfo+=tr("SMESH_VOLUME")+"\n";
+ anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+ const SMDS_MeshVolume *ev = (SMDS_MeshVolume*) e;
+ SMDS_VolumeTool vt(ev);
+ if(vt.GetVolumeType() != SMDS_VolumeTool::POLYHEDA)
+ anInfo+=(ev->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" ";
+ switch(vt.GetVolumeType()) {
+ case SMDS_VolumeTool::TETRA:
+ case SMDS_VolumeTool::QUAD_TETRA:
+ {
+ anInfo+=tr("SMESH_TETRAS");
+ break;
+ }
+ case SMDS_VolumeTool::PYRAM:
+ case SMDS_VolumeTool::QUAD_PYRAM:
+ {
+ anInfo+=tr("SMESH_PYRAMID");
+ break;
+ }
+ case SMDS_VolumeTool::PENTA:
+ case SMDS_VolumeTool::QUAD_PENTA:
+ {
+ anInfo+=tr("SMESH_PRISM");
+ break;
+ }
+ case SMDS_VolumeTool::HEXA:
+ case SMDS_VolumeTool::QUAD_HEXA:
+ {
+ anInfo+=tr("SMESH_HEXAS");
+ break;
+ }
+ case SMDS_VolumeTool::POLYHEDA:
+ {
+ anInfo+=tr("SMESH_POLYEDRON");
+ break;
+ }
+ default:
+ break;
+ }
+ anInfo+="\n";
+ }
+ if(e->GetType() != SMDSAbs_Node)
+ anInfo+=tr("GRAVITY_CENTER") + ":\n";
+ gp_XYZ anXYZ(0.,0.,0.);
+ SMDS_ElemIteratorPtr nodeIt = e->nodesIterator();
+ int nbNodes = 0;
+ for(; nodeIt->more(); nbNodes++) {
+ const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
+ anXYZ.Add( gp_XYZ( node->X(), node->Y(), node->Z() ) );
+ }
+ anXYZ.Divide(e->NbNodes()) ;
+ anInfo+=QString("X=%1\nY=%2\nZ=%3\n").arg(anXYZ.X()).arg(anXYZ.Y()).arg(anXYZ.Z());
+ Info->setText(anInfo);
+ }
+
+ if(!curBusy) {
+ myBusy = true;
+ LineEditElements->setText(aString);
+ myBusy = false;
+ }
+}
+
+//=================================================================================
+// function : DeactivateActiveDialog()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::DeactivateActiveDialog()
+{
+ if (GroupArguments->isEnabled()) {
+ GroupSelections->setEnabled(false);
+ GroupMesh->setEnabled(false);
+ GroupArguments->setEnabled(false);
+ GroupButtons->setEnabled(false);
+ mySMESHGUI->ResetState();
+ mySMESHGUI->SetActiveDialogBox(0);
+ }
+}
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ActivateThisDialog()
+{
+ /* Emit a signal to deactivate the active dialog */
+ mySMESHGUI->EmitSignalDeactivateDialog();
+ GroupArguments->setEnabled(true);
+ GroupButtons->setEnabled(true);
+ GroupSelections->setEnabled(true);
+ GroupMesh->setEnabled(true);
+
+ mySMESHGUI->SetActiveDialogBox((QDialog*)this);
+
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ SelectionsClicked(RadioButtonNodes->isChecked()?0:1);
+
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : enterEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::enterEvent (QEvent*)
+{
+ if (!GroupArguments->isEnabled())
+ ActivateThisDialog();
+}
+
+//=================================================================================
+// function : closeEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::closeEvent (QCloseEvent*)
+{
+ /* same than click on cancel button */
+ this->ClickOnCancel();
+}
+
+//=======================================================================
+//function : hideEvent
+//purpose : caused by ESC key
+//=======================================================================
+void SMESHGUI_WhatIsDlg::hideEvent (QHideEvent*)
+{
+ if (!isMinimized())
+ ClickOnCancel();
+}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
--- /dev/null
+// SMESH SMESHGUI : GUI for SMESH component
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : SMESHGUI_WhatIsDlg.h
+// Author : Vladimir TURIN
+// Module : SMESH
+// $Header:
+
+#ifndef SMESHGUI_WHATISDLG_H
+#define SMESHGUI_WHATISDLG_H
+
+#include "LightApp_SelectionMgr.h"
+
+#include "SMESH_LogicalFilter.hxx"
+
+// QT Includes
+#include <qdialog.h>
+
+class QGridLayout;
+class QButtonGroup;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class QCheckBox;
+class QTextBrowser;
+class SMESHGUI;
+class SMESHGUI_SpinBox;
+class SMESH_Actor;
+class SVTK_ViewWindow;
+class SVTK_Selector;
+
+// IDL Headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+
+//=================================================================================
+// class : SMESHGUI_WhatIsDlg
+// purpose :
+//=================================================================================
+class SMESHGUI_WhatIsDlg : public QDialog
+{
+ Q_OBJECT
+
+public:
+
+ SMESHGUI_WhatIsDlg( SMESHGUI*,
+ const char* name = 0,
+ bool modal = FALSE,
+ WFlags fl = 0);
+ ~SMESHGUI_WhatIsDlg();
+
+private:
+
+ void Init (bool ResetControls = true);
+ 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 */
+
+ SVTK_Selector* mySelector;
+
+ bool myBusy;
+ SMESH::SMESH_Mesh_var myMesh;
+ SMESH_Actor* myActor;
+ SMESH_LogicalFilter* myMeshOrSubMeshOrGroupFilter;
+
+ QButtonGroup* GroupSelections;
+ QRadioButton* RadioButtonNodes;
+ QRadioButton* RadioButtonElements;
+ QGroupBox* GroupButtons;
+ QPushButton* buttonOk;
+ QPushButton* buttonHelp;
+ QGroupBox* GroupArguments;
+ QGroupBox* GroupMesh;
+ QLabel* TextLabelElements;
+ QLineEdit* LineEditElements;
+ QLabel* MeshLabel;
+ QLabel* MeshName;
+
+ QTextBrowser* Info;
+
+ QString myHelpFileName;
+
+private slots:
+
+ void SelectionsClicked(int selectionId);
+ void ClickOnOk();
+ void ClickOnCancel();
+ void ClickOnHelp();
+ void SelectionIntoArgument() ;
+ void DeactivateActiveDialog() ;
+ void ActivateThisDialog() ;
+ void onTextChange(const QString&);
+
+protected:
+
+ QGridLayout* SMESHGUI_WhatIsDlgLayout;
+ QGridLayout* GroupSelectionsLayout;
+ QGridLayout* GroupMeshLayout;
+ QGridLayout* GroupButtonsLayout;
+ QGridLayout* GroupArgumentsLayout;
+};
+
+#endif // SMESHGUI_WHATISDLG_H
QString aLabel = atts.value("label-id");
QString anIcon = atts.value("icon-id");
bool isAux = atts.value("auxiliary") == "true";
+ bool isNeedGeom = true;
+ QString aNeedGeom = atts.value("need-geom");
+ if ( !aNeedGeom.isEmpty() )
+ isNeedGeom = (aNeedGeom == "true");
QString aDimStr = atts.value("dim");
aDimStr = aDimStr.remove( ' ' );
HypothesisData* aHypData =
new HypothesisData (aHypAlType, myPluginName, myServerLib, myClientLib,
aLabel, anIcon, aDim, isAux,
- attr[ HYPOS ], attr[ OPT_HYPOS ], attr[ INPUT ], attr[ OUTPUT ]);
+ attr[ HYPOS ], attr[ OPT_HYPOS ], attr[ INPUT ], attr[ OUTPUT ], isNeedGeom );
if (qName == "algorithm")
{
msgid "ICON_STD_INFO"
msgstr "standard_mesh_info.png"
+msgid "ICON_WHAT_IS"
+msgstr "mesh_whatis.png"
+
msgid "ICON_LENGTH"
msgstr "mesh_length.png"
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2007-01-19 10:44+0300\n"
+"PO-Revision-Date: 2007-11-23 13:01+0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
-"PO-Revision-Date: 2005-06-07 10:51+0400\n"
+"POT-Creation-Date: 2002-05-28 10:46:48 AM CEST\n"
+"PO-Revision-Date: 2004-10-20 17:25+0400\n"
"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
msgid "SMESH_REMOVE"
msgstr "Remove"
+#Move elements
+msgid "SMESH_MOVE_ELEMENTS"
+msgstr "Move Elements"
+
+#Copy elements
+msgid "SMESH_COPY_ELEMENTS"
+msgstr "Copy Elements"
+
#Remove Elements
msgid "SMESH_REMOVE_ELEMENTS_TITLE"
msgstr "Remove Elements"
msgid "SMESH_EDGE"
msgstr "Edge"
+#Pyramid
+msgid "SMESH_PYRAMID"
+msgstr "Pyramid"
+
+#Prism
+msgid "SMESH_PRISM"
+msgstr "Prism"
+
#Tetrahedron
msgid "SMESH_TETRAS"
msgstr "Tetrahedron"
msgid "SMESH_HEXAS"
msgstr "Hexahedron"
+#Polyhedron
+msgid "SMESH_POLYEDRON"
+msgstr "Polyhedron"
+
#Add Triangle
msgid "SMESH_ADD_TRIANGLE"
msgstr "Add Triangle"
msgid "SMESH_BUILD_COMPOUND_TITLE"
msgstr "Create a Compound"
+# Create a new mesh
+msgid "SMESH_CREATE_MESH"
+msgstr "Create a new mesh"
+
# -------------- Mesh Infos --------------
#Mesh Infos
msgid "SMESH_STANDARD_MESHINFO_TITLE"
msgstr "Standard Mesh Infos"
+#What Is
+msgid "SMESH_WHAT_IS_TITLE"
+msgstr "Mesh Element Info"
+
#Mesh Infos
msgid "SMESH_MESHINFO_NAME"
msgstr "Name"
#Check color group
msgid "SMESH_CHECK_COLOR"
-msgstr "Color number"
+msgstr "Color"
#%1 SubMeshes
msgid "SMESH_SUBMESH_SELECTED"
msgid "SMESH_GROUP_SELECTED"
msgstr "%1 Groups"
+# Generate groups at mesh transformation
+msgid "SMESH_MAKE_GROUPS"
+msgstr "Generate groups"
+
+# Generate groups at mesh transformation
+msgid "SMESH_COPY_GROUPS"
+msgstr "Copy groups"
# -------------- Preferences - Selection --------------
msgid "SMESH_PREF_SELECTION"
msgstr "Hypothesis has a bad parameter value"
msgid "SMESH_HYP_4"
-msgstr "Algorithm is hidden by an algorithm of upper dimension generating all-dimensions elements"
+msgstr "Submesh is ignored as there is another algorithm of upper dimension generating %1D elements"
msgid "SMESH_HYP_5"
msgstr "Algorithm hides algorithm(s) of lower dimension by generating all-dimensions elements"
msgid "STATE_HYP_NOTCONFORM"
msgstr "%3 %2D algorithm \"%1\" would produce not conform mesh: global \"Not Conform Mesh Allowed\" hypotesis is missing"
+msgid "STATE_HYP_BAD_GEOMETRY"
+msgstr "%3 %2D algorithm \"%1\" is assigned to geometry mismatching its expectation"
+
msgid "GLOBAL_ALGO"
msgstr "Global"
msgid "SMESH_AUTO_GROUPS"
msgstr "Automatically create groups"
+msgid "SMESH_CONTINUE_MESH_VISUALIZATION"
+msgstr "It seems that there is not enough memory to show the mesh\n"
+ "so that the application may crash. "
+ "Do you wish to continue visualization?"
+
+msgid "SMESH_NO_MESH_VISUALIZATION"
+msgstr "There is not enough memory to show the mesh"
+
+msgid "SMESH_VISU_PROBLEM"
+msgstr "Mesh visualization failed, probably due to lack of memory"
+
+msgid "SMESH_VISU_PROBLEM_CLEAR"
+msgstr "Mesh visualization failed, no memory even to show a message,\n"
+ "so all visual data have been removed to let the application live.\n"
+ "Consider saving your work before application crash"
+
#----------------------------------------------------
msgid "SMESHGUI_FilterLibraryDlg::ADD_TO_TLT"
msgid "MEN_STD_INFO"
msgstr "Standard Mesh Infos"
+msgid "MEN_WHAT_IS"
+msgstr "Mesh Element Info"
+
msgid "MEN_LENGTH"
msgstr "Length"
msgid "MEN_AUTO_UPD"
msgstr "Automatic update"
+msgid "MEN_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "MEN_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
msgid "MEN_COLORS"
msgstr "Colors / Size"
msgid "MEN_CLIP"
msgstr "Clipping"
-msgid "MEN_DISPLAY"
-msgstr "Display"
+msgid "MEN_SHOW"
+msgstr "Show"
-msgid "MEN_ERASE"
-msgstr "Erase"
+msgid "MEN_HIDE"
+msgstr "Hide"
msgid "MEN_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
#------ TOP -----#
msgid "TOP_STD_INFO"
msgstr "Standard Mesh Infos"
+msgid "TOP_WHAT_IS"
+msgstr "Mesh Element Info"
+
msgid "TOP_LENGTH"
msgstr "Length"
msgid "TOP_AUTO_UPD"
msgstr "Automatic update"
+msgid "TOP_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "TOP_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
msgid "TOP_COLORS"
msgstr "Colors / Size"
msgid "TOP_CLIP"
msgstr "Clipping"
-msgid "TOP_DISPLAY"
-msgstr "Display"
+msgid "TOP_SHOW"
+msgstr "Show"
-msgid "TOP_ERASE"
-msgstr "Erase"
+msgid "TOP_HIDE"
+msgstr "Hide"
msgid "TOP_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
msgid "STB_STD_INFO"
msgstr "Standard Mesh Infos"
+msgid "STB_WHAT_IS"
+msgstr "Mesh Element Info"
+
msgid "STB_LENGTH"
msgstr "Length"
msgid "STB_AUTO_UPD"
msgstr "Automatic update"
+msgid "STB_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "STB_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
msgid "STB_COLORS"
msgstr "Colors / Size"
msgid "STB_CLIP"
msgstr "Clipping"
-msgid "STB_DISPLAY"
-msgstr "Display"
+msgid "STB_SHOW"
+msgstr "Show"
-msgid "STB_ERASE"
-msgstr "Erase"
+msgid "STB_HIDE"
+msgstr "Hide"
msgid "STB_DISPLAY_ONLY"
-msgstr "Display only"
-
-
-
-
+msgstr "Show only"
msgid "TB_MESH"
msgstr "Mesh Toolbar"
msgid "SMESHGUI::PREF_ELEMENTS"
msgstr "Elements"
+msgid "SMESHGUI::PREF_OBJECTS"
+msgstr "Objects"
+
msgid "SMESHGUI::PREF_DISPLAY_MODE"
msgstr "Display mode"
msgid "SMESHGUI_BuildCompoundDlg::MERGE_NODES_AND_ELEMENTS"
msgstr "Merge coincident nodes and elements"
+msgid "SMESHGUI_BuildCompoundDlg::CREATE_COMMON_GROUPS"
+msgstr "Create common groups for initial meshes"
+
#-----------------------------------------------------------
msgid "SMESHGUI_ShapeByMeshDlg::CAPTION"
msgid "SMESHGUI_ComputeDlg::PUBLISH_SHAPE"
msgstr "Publish SubShape"
+msgid "SMESHGUI_ComputeDlg::MEMORY_LACK"
+msgstr "Memory allocation problem"
+
+msgid "SMESHGUI_WhatIsDlg::ENTITY_TYPE"
+msgstr "Element type"
+
+msgid "SMESHGUI_WhatIsDlg::GRAVITY_CENTER"
+msgstr "Gravity center"
+
msgid "COMPERR_OK"
msgstr "No errors"
@HDF5_INCLUDES@ \
$(BOOST_CPPFLAGS) \
$(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
$(MED_CXXFLAGS) \
$(GEOM_CXXFLAGS) \
-I$(srcdir)/../Controls \
-lSalomeGenericObj \
$(GEOM_LDFLAGS) \
-lGEOMClient \
+ $(MED_LDFLAGS) \
+ -lMEDWrapper_V2_2 \
$(CAS_LDPATH) \
-lTKCDF \
-lTKBO \
// 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
//
//
//
// File : SMESH.hxx
// Author : Michael ZORIN
// Module : SMESH
-// $Header:
+// $Header$
#ifndef _SMESH_I_SMESH_HXX_
#define _SMESH_I_SMESH_HXX_
#define SMESH_I_EXPORT
#endif
-// Tags definition
-enum {
- // Top level
- Tag_HypothesisRoot = 1, // hypotheses root
- Tag_AlgorithmsRoot = 2, // algorithms root
- // Mesh/Submesh
- Tag_RefOnShape = 1, // references to shape
- Tag_RefOnAppliedHypothesis = 2, // applied hypotheses root
- Tag_RefOnAppliedAlgorithms = 3, // applied algorithms root
- // Mesh only
- Tag_SubMeshOnVertex = 4, // sub-meshes roots by type
- Tag_SubMeshOnEdge = 5, // ...
- Tag_SubMeshOnWire = 6, // ...
- Tag_SubMeshOnFace = 7, // ...
- Tag_SubMeshOnShell = 8, // ...
- Tag_SubMeshOnSolid = 9, // ...
- Tag_SubMeshOnCompound = 10, // ...
- Tag_NodeGroups = 11, // Group roots by type
- Tag_EdgeGroups = 12, // ...
- Tag_FaceGroups = 13, // ...
- Tag_VolumeGroups = 14 // ...
-};
-
#endif
-
#ifndef _SMESH_0D_ALGO_I_HXX_
#define _SMESH_0D_ALGO_I_HXX_
+#include "SMESH.hxx"
+
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
// ======================================================
// Generic 0D algorithm
// ======================================================
-class SMESH_0D_Algo_i:
+class SMESH_I_EXPORT SMESH_0D_Algo_i:
public virtual POA_SMESH::SMESH_0D_Algo,
public virtual SMESH_Algo_i
{
IMPLEMENT_STANDARD_HANDLE (_pyCommand ,Standard_Transient);
IMPLEMENT_STANDARD_HANDLE (_pyGen ,_pyObject);
IMPLEMENT_STANDARD_HANDLE (_pyMesh ,_pyObject);
+IMPLEMENT_STANDARD_HANDLE (_pyMeshEditor ,_pyObject);
IMPLEMENT_STANDARD_HANDLE (_pyHypothesis ,_pyObject);
IMPLEMENT_STANDARD_HANDLE (_pyAlgorithm ,_pyHypothesis);
IMPLEMENT_STANDARD_HANDLE (_pyComplexParamHypo,_pyHypothesis);
IMPLEMENT_STANDARD_RTTIEXT(_pyCommand ,Standard_Transient);
IMPLEMENT_STANDARD_RTTIEXT(_pyGen ,_pyObject);
IMPLEMENT_STANDARD_RTTIEXT(_pyMesh ,_pyObject);
+IMPLEMENT_STANDARD_RTTIEXT(_pyMeshEditor ,_pyObject);
IMPLEMENT_STANDARD_RTTIEXT(_pyHypothesis ,_pyObject);
IMPLEMENT_STANDARD_RTTIEXT(_pyAlgorithm ,_pyHypothesis);
IMPLEMENT_STANDARD_RTTIEXT(_pyComplexParamHypo,_pyHypothesis);
#undef DUMP_CONVERSION
#endif
+
+namespace {
+
+ //================================================================================
+ /*!
+ * \brief Set of TCollection_AsciiString initialized by C array of C strings
+ */
+ //================================================================================
+
+ struct TStringSet: public set<TCollection_AsciiString>
+ {
+ /*!
+ * \brief Filling. The last string must be ""
+ */
+ void Insert(const char* names[]) {
+ for ( int i = 0; names[i][0] ; ++i )
+ insert( (char*) names[i] );
+ }
+ /*!
+ * \brief Check if a string is in
+ */
+ bool Contains(const TCollection_AsciiString& name ) {
+ return find( name ) != end();
+ }
+ };
+}
+
//================================================================================
/*!
* \brief Convert python script using commands of smesh.py
* \param theScript - Input script
* \retval TCollection_AsciiString - Convertion result
+ *
+ * Class SMESH_2smeshpy declared in SMESH_PythonDump.hxx
*/
//================================================================================
GetCreationCmd()->GetString() += "=";
}
+//================================================================================
+/*!
+ * \brief name of SMESH_Gen in smesh.py
+ */
+//================================================================================
+
+const char* _pyGen::AccessorMethod() const
+{
+ return SMESH_2smeshpy::GenName();
+}
+
//================================================================================
/*!
* \brief Convert a command using a specific converter
// SMESH_Mesh method?
map< _pyID, Handle(_pyMesh) >::iterator id_mesh = myMeshes.find( objID );
if ( id_mesh != myMeshes.end() ) {
+ if ( aCommand->GetMethod() == "GetMeshEditor" ) { // MeshEditor creation
+ _pyID editorID = aCommand->GetResultValue();
+ Handle(_pyMeshEditor) editor = new _pyMeshEditor( aCommand );
+ myMeshEditors.insert( make_pair( editorID, editor ));
+ return aCommand;
+ }
id_mesh->second->Process( aCommand );
return aCommand;
}
+ // SMESH_MeshEditor method?
+ map< _pyID, Handle(_pyMeshEditor) >::iterator id_editor = myMeshEditors.find( objID );
+ if ( id_editor != myMeshEditors.end() ) {
+ id_editor->second->Process( aCommand );
+ return aCommand;
+ }
// SMESH_Hypothesis method?
list< Handle(_pyHypothesis) >::iterator hyp = myHypos.begin();
for ( ; hyp != myHypos.end(); ++hyp )
AddMeshAccessorMethod( aCommand );
// Add access to a wrapped algorithm
- AddAlgoAccessorMethod( aCommand ); // ??? what if algo won't be wrapped at all ???
+ // AddAlgoAccessorMethod( aCommand ); // ??? what if algo won't be wrapped at all ???
// PAL12227. PythonDump was not updated at proper time; result is
// aCriteria.append(SMESH.Filter.Criterion(17,26,0,'L1',26,25,1e-07,SMESH.EDGE,-1))
// Concatenate( [mesh1, ...], ... )
// CreateHypothesis( theHypType, theLibName )
// Compute( mesh, geom )
-
+ // mesh creation
if ( theCommand->GetMethod() == "CreateMesh" ||
- theCommand->GetMethod() == "CreateEmptyMesh" )
+ theCommand->GetMethod() == "CreateEmptyMesh" ||
+ theCommand->GetMethod() == "CreateMeshesFromUNV" ||
+ theCommand->GetMethod() == "CreateMeshesFromSTL")
{
Handle(_pyMesh) mesh = new _pyMesh( theCommand );
myMeshes.insert( make_pair( mesh->GetID(), mesh ));
return;
}
+ if(theCommand->GetMethod() == "CreateMeshesFromMED")
+ {
+ for(int ind = 0;ind<theCommand->GetNbResultValues();ind++)
+ {
+ Handle(_pyMesh) mesh = new _pyMesh( theCommand, theCommand->GetResultValue(ind));
+ myMeshes.insert( make_pair( theCommand->GetResultValue(ind), mesh ));
+ }
+ }
+
// CreateHypothesis()
if ( theCommand->GetMethod() == "CreateHypothesis" )
{
myHasPattern = true;
}
- // smeshgen.Method() --> smesh.smesh.Method()
- theCommand->SetObject( SMESH_2smeshpy::GenName() );
-
// Concatenate( [mesh1, ...], ... )
if ( theCommand->GetMethod() == "Concatenate" )
{
AddMeshAccessorMethod( theCommand );
}
+
+ // Replace name of SMESH_Gen
+
+ // names of SMESH_Gen methods fully equal to methods defined in smesh.py
+ static TStringSet smeshpyMethods;
+ if ( smeshpyMethods.empty() ) {
+ const char * names[] =
+ { "SetEmbeddedMode","IsEmbeddedMode","SetCurrentStudy","GetCurrentStudy",
+ "GetPattern","GetSubShapesId",
+ "" }; // <- mark of array end
+ smeshpyMethods.Insert( names );
+ }
+ if ( smeshpyMethods.Contains( theCommand->GetMethod() ))
+ // smeshgen.Method() --> smesh.Method()
+ theCommand->SetObject( SMESH_2smeshpy::SmeshpyName() );
+ else
+ // smeshgen.Method() --> smesh.smesh.Method()
+ theCommand->SetObject( SMESH_2smeshpy::GenName() );
}
//================================================================================
//================================================================================
/*!
- * \brief Add access method to mesh that is an object or an argument
+ * \brief Add access method to mesh that is an argument
* \param theCmd - command to add access method
* \retval bool - true if added
*/
//================================================================================
Handle(_pyHypothesis) _pyGen::FindAlgo( const _pyID& theGeom, const _pyID& theMesh,
- const TCollection_AsciiString& theAlgoType )
+ const Handle(_pyHypothesis)& theHypothesis )
{
list< Handle(_pyHypothesis) >::iterator hyp = myHypos.begin();
for ( ; hyp != myHypos.end(); ++hyp )
if ( !hyp->IsNull() &&
(*hyp)->IsAlgo() &&
- (*hyp)->GetType() == theAlgoType &&
+ theHypothesis->CanBeCreatedBy( (*hyp)->GetAlgoType() ) &&
(*hyp)->GetGeom() == theGeom &&
(*hyp)->GetMesh() == theMesh )
return *hyp;
case GEOM::SOLID:
case GEOM::SHELL: type = SMESH::VOLUME; break;
case GEOM::COMPOUND: {
- GEOM::GEOM_Gen_var aGeomGen = SMESH_Gen_i::GetSMESHGen()->GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGeomGen = SMESH_Gen_i::GetSMESHGen()->GetGeomEngine();
if ( !aGeomGen->_is_nil() ) {
GEOM::GEOM_IGroupOperations_var aGrpOp =
aGeomGen->GetIGroupOperations( study->StudyId() );
{
// convert my creation command
Handle(_pyCommand) creationCmd = GetCreationCmd();
- creationCmd->SetObject( SMESH_2smeshpy::SmeshpyName() );
- creationCmd->SetMethod( "Mesh" );
+ TCollection_AsciiString str = creationCmd->GetMethod();
+
+ creationCmd->SetObject( SMESH_2smeshpy::SmeshpyName() );
+ if(str != "CreateMeshesFromUNV" &&
+ str != "CreateMeshesFromMED" &&
+ str != "CreateMeshesFromSTL")
+ creationCmd->SetMethod( "Mesh" );
theGen->SetAccessorMethod( GetID(), "GetMesh()" );
}
+//================================================================================
+/*!
+ * \brief
+ * \param theCreationCmd -
+ */
+//================================================================================
+_pyMesh::_pyMesh(const Handle(_pyCommand) theCreationCmd, const TCollection_AsciiString& id):
+ _pyObject(theCreationCmd), myHasEditor(false)
+{
+ // convert my creation command
+ Handle(_pyCommand) creationCmd = GetCreationCmd();
+ creationCmd->SetObject( SMESH_2smeshpy::SmeshpyName() );
+ theGen->SetAccessorMethod( id, "GetMesh()" );
+}
+
//================================================================================
/*!
* \brief Convert a IDL API command of SMESH::Mesh to a method call of python Mesh
void _pyMesh::Process( const Handle(_pyCommand)& theCommand )
{
- // smesh.py wraps the following methods:
+ // some methods of SMESH_Mesh interface needs special conversion
+ // to methods of Mesh python class
//
// 1. GetSubMesh(geom, name) + AddHypothesis(geom, algo)
// --> in Mesh_Algorithm.Create(mesh, geom, hypo, so)
// --> in Mesh_Algorithm.Hypothesis(hyp, args, so)
// 3. CreateGroupFromGEOM(type, name, grp)
// --> in Mesh.Group(grp, name="")
- // 4. ExportToMED(f, opt, version)
- // --> in Mesh.ExportToMED( f, version, opt=0 )
- // 5. ExportMED(f, opt)
- // --> in Mesh.ExportMED( f,opt=0 )
- // 6. ExportDAT(f)
- // --> in Mesh.ExportDAT( f )
- // 7. ExportUNV(f)
- // --> in Mesh.ExportUNV(f)
- // 8. ExportSTL(f, ascii)
- // --> in Mesh.ExportSTL(f, ascii=1)
+ // 4. ExportToMED(f, auto_groups, version)
+ // --> in Mesh.ExportMED( f, auto_groups, version )
+ // 5. etc
const TCollection_AsciiString method = theCommand->GetMethod();
+ // ----------------------------------------------------------------------
if ( method == "GetSubMesh" ) {
mySubmeshes.push_back( theCommand );
}
+ // ----------------------------------------------------------------------
else if ( method == "AddHypothesis" ) { // mesh.AddHypothesis(geom, HYPO )
myAddHypCmds.push_back( theCommand );
// set mesh to hypo
hyp->SetMesh( this->GetID() );
}
}
+ // ----------------------------------------------------------------------
else if ( method == "CreateGroupFromGEOM" ) {// (type, name, grp)
_pyID grp = theCommand->GetArg( 3 );
if ( sameGroupType( grp, theCommand->GetArg( 1 )) ) { // --> Group(grp)
AddMeshAccess( theCommand );
}
}
- else if ( method == "ExportToMED" ) {//(f, opt, version)
- // --> (f, version, opt)
- _pyID opt = theCommand->GetArg( 2 );
- _pyID ver = theCommand->GetArg( 3 );
- theCommand->SetArg( 2, ver );
- theCommand->SetArg( 3, opt );
+ // ----------------------------------------------------------------------
+ else if ( method == "ExportToMED" ) { // ExportToMED() --> ExportMED()
+ theCommand->SetMethod( "ExportMED" );
+ }
+ // ----------------------------------------------------------------------
+ else if ( method == "CreateGroup" ) { // CreateGroup() --> CreateEmptyGroup()
+ theCommand->SetMethod( "CreateEmptyGroup" );
}
+ // ----------------------------------------------------------------------
else if ( method == "RemoveHypothesis" ) // (geom, hyp)
{
- const _pyID & hypID = theCommand->GetArg( 2 );
+ _pyID hypID = theCommand->GetArg( 2 );
// check if this mesh still has corresponding addition command
bool hasAddCmd = false;
}
}
Handle(_pyHypothesis) hyp = theGen->FindHyp( hypID );
- if ( ! hasAddCmd ) { // hypo addition already wrapped
- // access to wrapped mesh
- AddMeshAccess( theCommand );
- // access to wrapped algo
- if ( !hyp.IsNull() && hyp->IsAlgo() && hyp->IsWrapped() )
- theCommand->SetArg( 2, theCommand->GetArg( 2 ) + ".GetAlgorithm()" );
+ if ( ! hasAddCmd && hypID.Length() != 0 ) { // hypo addition already wrapped
+ // RemoveHypothesis(geom, hyp) --> RemoveHypothesis( hyp, geom=0 )
+ _pyID geom = theCommand->GetArg( 1 );
+ theCommand->RemoveArgs();
+ theCommand->SetArg( 1, hypID );
+ if ( geom != GetGeom() )
+ theCommand->SetArg( 2, geom );
}
// remove hyp from myHypos
myHypos.remove( hyp );
}
-
- // leave only one " mesh_editor_<nb> = mesh.GetMeshEditor()"
- else if ( theCommand->GetMethod() == "GetMeshEditor")
- {
- if ( myHasEditor )
- theCommand->Clear();
- else
- AddMeshAccess( theCommand );
- myHasEditor = true;
- }
-
- // apply theCommand to the mesh wrapped by smeshpy mesh
+ // add accessor method if necessary
else
{
- AddMeshAccess( theCommand );
+ if ( NeedMeshAccess( theCommand ))
+ // apply theCommand to the mesh wrapped by smeshpy mesh
+ AddMeshAccess( theCommand );
}
}
-namespace {
-
- //================================================================================
- /*!
- * \brief add addition result treatement command
- * \param addCmd - hypothesis addition command
- */
- //================================================================================
+//================================================================================
+/*!
+ * \brief Return True if addition of accesor method is needed
+ */
+//================================================================================
- void addErrorTreatmentCmd( Handle(_pyCommand) & addCmd,
- const bool isAlgo)
- {
- return; // TO DEBUD - TreatHypoStatus() is not placed right after addCmd
- // addCmd: status = mesh.AddHypothesis( geom, hypo )
- // treatement command:
- // def TreatHypoStatus(status, hypName, geomName, isAlgo):
- TCollection_AsciiString status = addCmd->GetResultValue();
- if ( !status.IsEmpty() ) {
- const _pyID& geomID = addCmd->GetArg( 1 );
- const _pyID& hypoID = addCmd->GetArg( 2 );
- TCollection_AsciiString cmdStr = addCmd->GetIndentation() +
- SMESH_2smeshpy::SmeshpyName() + ".TreatHypoStatus( " + status + ", " +
- SMESH_2smeshpy::SmeshpyName() + ".GetName(" + hypoID + "), " +
- SMESH_2smeshpy::SmeshpyName() + ".GetName(" + geomID + "), " +
- (char*)( isAlgo ? "True" : "False" ) + " )";
- Handle(_pyCommand) cmd = theGen->AddCommand( cmdStr );
- addCmd->AddDependantCmd( cmd, true );
- }
- }
+bool _pyMesh::NeedMeshAccess( const Handle(_pyCommand)& theCommand )
+{
+ // names of SMESH_Mesh methods fully equal to methods of class Mesh, so
+ // no conversion is needed for them at all:
+ static TStringSet sameMethods;
+ if ( sameMethods.empty() ) {
+ const char * names[] =
+ { "ExportDAT","ExportUNV","ExportSTL", "RemoveGroup","RemoveGroupWithContents",
+ "GetGroups","UnionGroups","IntersectGroups","CutGroups","GetLog","GetId","ClearLog",
+ "GetStudyId","HasDuplicatedGroupNamesMED","GetMEDMesh","NbNodes","NbElements",
+ "NbEdges","NbEdgesOfOrder","NbFaces","NbFacesOfOrder","NbTriangles",
+ "NbTrianglesOfOrder","NbQuadrangles","NbQuadranglesOfOrder","NbPolygons","NbVolumes",
+ "NbVolumesOfOrder","NbTetras","NbTetrasOfOrder","NbHexas","NbHexasOfOrder",
+ "NbPyramids","NbPyramidsOfOrder","NbPrisms","NbPrismsOfOrder","NbPolyhedrons",
+ "NbSubMesh","GetElementsId","GetElementsByType","GetNodesId","GetElementType",
+ "GetSubMeshElementsId","GetSubMeshNodesId","GetSubMeshElementType","Dump","GetNodeXYZ",
+ "GetNodeInverseElements","GetShapeID","GetShapeIDForElem","GetElemNbNodes",
+ "GetElemNode","IsMediumNode","IsMediumNodeOfAnyElem","ElemNbEdges","ElemNbFaces",
+ "IsPoly","IsQuadratic","BaryCenter","GetHypothesisList", "SetAutoColor", "GetAutoColor",
+ "" }; // <- mark of end
+ sameMethods.Insert( names );
+ }
+
+ return !sameMethods.Contains( theCommand->GetMethod() );
}
//================================================================================
for ( cmd = myAddHypCmds.begin(); cmd != myAddHypCmds.end(); ++cmd )
{
Handle(_pyCommand) addCmd = *cmd;
- const _pyID& algoID = addCmd->GetArg( 2 );
+ _pyID algoID = addCmd->GetArg( 2 );
Handle(_pyHypothesis) algo = theGen->FindHyp( algoID );
if ( algo.IsNull() || !algo->IsAlgo() )
continue;
// try to convert
_pyID geom = addCmd->GetArg( 1 );
+ bool isLocalAlgo = ( geom != GetGeom() );
if ( algo->Addition2Creation( addCmd, this->GetID() )) // OK
{
// wrapped algo is created atfer mesh creation
GetCreationCmd()->AddDependantCmd( addCmd );
- if ( geom != GetGeom() ) // local algo
- {
+ if ( isLocalAlgo ) {
// mesh.AddHypothesis(geom, ALGO ) --> mesh.AlgoMethod(geom)
addCmd->SetArg( addCmd->GetNbArgs() + 1,
TCollection_AsciiString( "geom=" ) + geom );
}
}
}
- else // ALGO was already created
+ else // KO - ALGO was already created
{
- // mesh.AddHypothesis(geom, ALGO ) --> mesh.GetMesh().AddHypothesis(geom, ALGO )
- AddMeshAccess( addCmd );
- // mesh.GetMesh().AddHypothesis(geom, ALGO ) ->
- // mesh.GetMesh().AddHypothesis(geom, ALGO.GetAlgorithm() )
- addCmd->SetArg( 2, addCmd->GetArg( 2 ) + ".GetAlgorithm()" );
- // add addition result treatement cmd
- addErrorTreatmentCmd( addCmd, true );
+ // mesh.AddHypothesis(geom, ALGO) --> mesh.AddHypothesis(ALGO, geom=0)
+ addCmd->RemoveArgs();
+ addCmd->SetArg( 1, algoID );
+ if ( isLocalAlgo )
+ addCmd->SetArg( 2, geom );
}
}
for ( cmd = myAddHypCmds.begin(); cmd != myAddHypCmds.end(); ++cmd )
{
Handle(_pyCommand) addCmd = *cmd;
- const _pyID& hypID = addCmd->GetArg( 2 );
+ _pyID hypID = addCmd->GetArg( 2 );
Handle(_pyHypothesis) hyp = theGen->FindHyp( hypID );
if ( hyp.IsNull() || hyp->IsAlgo() )
continue;
- if ( !hyp->Addition2Creation( addCmd, this->GetID() ))
- {
- AddMeshAccess( addCmd );
- // add addition result treatement cmd
- addErrorTreatmentCmd( addCmd, false );
+ bool converted = hyp->Addition2Creation( addCmd, this->GetID() );
+ if ( !converted ) {
+ // mesh.AddHypothesis(geom, HYP) --> mesh.AddHypothesis(HYP, geom=0)
+ _pyID geom = addCmd->GetArg( 1 );
+ addCmd->RemoveArgs();
+ addCmd->SetArg( 1, hypID );
+ if ( geom != GetGeom() )
+ addCmd->SetArg( 2, geom );
}
}
// sm = mesh.GetSubMesh(geom, name) --> sm = mesh.GetMesh().GetSubMesh(geom, name)
- for ( cmd = mySubmeshes.begin(); cmd != mySubmeshes.end(); ++cmd ) {
- Handle(_pyCommand) subCmd = *cmd;
- if ( subCmd->GetNbArgs() > 0 )
- AddMeshAccess( subCmd );
- }
+// for ( cmd = mySubmeshes.begin(); cmd != mySubmeshes.end(); ++cmd ) {
+// Handle(_pyCommand) subCmd = *cmd;
+// if ( subCmd->GetNbArgs() > 0 )
+// AddMeshAccess( subCmd );
+// }
myAddHypCmds.clear();
mySubmeshes.clear();
(*hyp)->Flush();
}
+//================================================================================
+/*!
+ * \brief MeshEditor convert its commands to ones of mesh
+ */
+//================================================================================
+
+_pyMeshEditor::_pyMeshEditor(const Handle(_pyCommand)& theCreationCmd):
+ _pyObject( theCreationCmd )
+{
+ myMesh = theCreationCmd->GetObject();
+ myCreationCmdStr = theCreationCmd->GetString();
+ theCreationCmd->Clear();
+}
+
+//================================================================================
+/*!
+ * \brief convert its commands to ones of mesh
+ */
+//================================================================================
+
+void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
+{
+ // names of SMESH_MeshEditor methods fully equal to methods of class Mesh, so
+ // commands calling this methods are converted to calls of methods of Mesh
+ static TStringSet sameMethods;
+ if ( sameMethods.empty() ) {
+ const char * names[] = {
+ "RemoveElements","RemoveNodes","AddNode","AddEdge","AddFace","AddPolygonalFace",
+ "AddVolume","AddPolyhedralVolume","AddPolyhedralVolumeByFaces","MoveNode",
+ "InverseDiag","DeleteDiag","Reorient","ReorientObject","SplitQuad","SplitQuadObject",
+ "BestSplit","Smooth","SmoothObject","SmoothParametric","SmoothParametricObject",
+ "ConvertToQuadratic","ConvertFromQuadratic","RenumberNodes","RenumberElements",
+ "RotationSweep","RotationSweepObject","ExtrusionSweep","AdvancedExtrusion",
+ "ExtrusionSweepObject","ExtrusionSweepObject1D","ExtrusionSweepObject2D","Mirror",
+ "MirrorObject","Translate","TranslateObject","Rotate","RotateObject",
+ "FindCoincidentNodes","FindCoincidentNodesOnPart","MergeNodes","FindEqualElements",
+ "MergeElements","MergeEqualElements","SewFreeBorders","SewConformFreeBorders",
+ "SewBorderToSide","SewSideElements","ChangeElemNodes","GetLastCreatedNodes",
+ "GetLastCreatedElems",
+ "MirrorMakeMesh","MirrorObjectMakeMesh","TranslateMakeMesh",
+ "TranslateObjectMakeMesh","RotateMakeMesh","RotateObjectMakeMesh",
+ "" }; // <- mark of the end
+ sameMethods.Insert( names );
+ }
+ //theGen->AddMeshAccessorMethod( theCommand ); // for *Object()
+
+ if ( sameMethods.Contains( theCommand->GetMethod() )) {
+ theCommand->SetObject( myMesh );
+
+ // meshes made by *MakeMesh() methods are not wrapped by _pyMesh,
+ // so let _pyMesh care of it (TMP?)
+ if ( theCommand->GetMethod().Search("MakeMesh") != -1 )
+ _pyMesh( new _pyCommand( theCommand->GetString(), 0 )); // for theGen->SetAccessorMethod()
+ }
+ else {
+ // editor creation command is needed only if any editor function is called
+ if ( !myCreationCmdStr.IsEmpty() ) {
+ GetCreationCmd()->GetString() = myCreationCmdStr;
+ myCreationCmdStr.Clear();
+ }
+ }
+}
+
//================================================================================
/*!
* \brief _pyHypothesis constructor
hyp->AddArgMethod( "SetNumberOfSegments");
hyp->AddArgMethod( "SetPythonLog10RatioFunction");
}
- // 2D ----------
- else if ( hypType == "MEFISTO_2D" ) {
+ // MEFISTO_2D ----------
+ else if ( hypType == "MEFISTO_2D" ) { // MEFISTO_2D
algo->SetConvMethodAndType( "Triangle", hypType.ToCString());
}
else if ( hypType == "MaxElementArea" ) {
hyp->SetConvMethodAndType( "MaxElementArea", "MEFISTO_2D");
+ hyp->SetConvMethodAndType( "MaxElementArea", "NETGEN_2D_ONLY");
hyp->AddArgMethod( "SetMaxElementArea");
}
else if ( hypType == "LengthFromEdges" ) {
hyp->SetConvMethodAndType( "LengthFromEdges", "MEFISTO_2D");
+ hyp->SetConvMethodAndType( "LengthFromEdges", "NETGEN_2D_ONLY");
}
+ // Quadrangle_2D ----------
else if ( hypType == "Quadrangle_2D" ) {
algo->SetConvMethodAndType( "Quadrangle" , hypType.ToCString());
}
else if ( hypType == "QuadranglePreference" ) {
hyp->SetConvMethodAndType( "QuadranglePreference", "Quadrangle_2D");
- }
- // 3D ----------
- else if ( hypType == "NETGEN_3D") {
+ hyp->SetConvMethodAndType( "QuadranglePreference", "NETGEN_2D_ONLY");
+ }
+ // NETGEN ----------
+// else if ( hypType == "NETGEN_2D") { // 1D-2D
+// algo->SetConvMethodAndType( "Triangle" , hypType.ToCString());
+// algo->myArgs.Append( "algo=smesh.NETGEN" );
+// }
+ else if ( hypType == "NETGEN_2D_ONLY") { // 2D
+ algo->SetConvMethodAndType( "Triangle" , hypType.ToCString());
+ algo->myArgs.Append( "algo=smesh.NETGEN_2D" );
+ }
+ else if ( hypType == "NETGEN_3D") { // 3D
algo->SetConvMethodAndType( "Tetrahedron" , hypType.ToCString());
algo->myArgs.Append( "algo=smesh.NETGEN" );
}
hyp->SetConvMethodAndType( "MaxElementVolume", "NETGEN_3D");
hyp->AddArgMethod( "SetMaxElementVolume" );
}
+ // GHS3D_3D ----------
else if ( hypType == "GHS3D_3D" ) {
algo->SetConvMethodAndType( "Tetrahedron", hypType.ToCString());
algo->myArgs.Append( "algo=smesh.GHS3D" );
}
+ // Hexa_3D ---------
else if ( hypType == "Hexa_3D" ) {
algo->SetConvMethodAndType( "Hexahedron", hypType.ToCString());
}
- // Repetitive ---------
+ // Repetitive Projection_1D ---------
else if ( hypType == "Projection_1D" ) {
algo->SetConvMethodAndType( "Projection1D", hypType.ToCString());
}
// 2 args of SetVertexAssociation() will become the 3-th and 4-th args of hyp creation command
hyp->AddArgMethod( "SetVertexAssociation", 2 );
}
+ // Projection_2D ---------
else if ( hypType == "Projection_2D" ) {
algo->SetConvMethodAndType( "Projection2D", hypType.ToCString());
}
hyp->AddArgMethod( "SetSourceMesh");
hyp->AddArgMethod( "SetVertexAssociation", 4 );
}
+ // Projection_3D ---------
else if ( hypType == "Projection_3D" ) {
algo->SetConvMethodAndType( "Projection3D", hypType.ToCString());
}
hyp->AddArgMethod( "SetSourceMesh");
hyp->AddArgMethod( "SetVertexAssociation", 4 );
}
+ // Prism_3D ---------
else if ( hypType == "Prism_3D" ) {
algo->SetConvMethodAndType( "Prism", hypType.ToCString());
}
+ // RadialPrism_3D ---------
else if ( hypType == "RadialPrism_3D" ) {
algo->SetConvMethodAndType( "Prism", hypType.ToCString());
}
hyp->SetConvMethodAndType( "LayerDistribution", "RadialPrism_3D");
}
- if ( !algo->GetCreationMethod().IsEmpty() ) {
+ if ( algo->IsValid() ) {
return algo;
}
return hyp;
Handle(_pyHypothesis) algo;
if ( !IsAlgo() ) {
// find algo created on myGeom in theMesh
- algo = theGen->FindAlgo( myGeom, theMesh, GetType() );
+ algo = theGen->FindAlgo( myGeom, theMesh, this );
if ( algo.IsNull() )
return false;
algo->GetCreationCmd()->AddDependantCmd( theCmd );
// mesh.AddHypothesis(geom,hyp) --> hyp = <theMesh or algo>.myCreationMethod(args)
theCmd->SetResultValue( GetID() );
theCmd->SetObject( IsAlgo() ? theMesh : algo->GetID());
- theCmd->SetMethod( myCreationMethod );
+ theCmd->SetMethod( IsAlgo() ? GetAlgoCreationMethod() : GetCreationMethod( algo->GetAlgoType() ));
// set args
theCmd->RemoveArgs();
for ( int i = 1; i <= myArgs.Length(); ++i ) {
// Convert my creation => me = RadialPrismAlgo.Get3DHypothesis()
// find RadialPrism algo created on <geom> for theMesh
- Handle(_pyHypothesis) algo = theGen->FindAlgo( geom, theMesh, this->GetType() );
+ Handle(_pyHypothesis) algo = theGen->FindAlgo( geom, theMesh, this );
if ( !algo.IsNull() ) {
GetCreationCmd()->SetObject( algo->GetID() );
GetCreationCmd()->SetMethod( "Get3DHypothesis" );
while ( algo.IsNull() && !geom.IsEmpty()) {
// try to find geom as a father of <vertex>
geom = FatherID( geom );
- algo = theGen->FindAlgo( geom, theMeshID, GetType() );
+ algo = theGen->FindAlgo( geom, theMeshID, this );
}
if ( algo.IsNull() )
return false; // also possible to find geom as brother of veretex...
return myRes;
}
+//================================================================================
+/*!
+ * \brief Return number of python command result value ResultValue = Obj.Meth()
+ * \retval const int
+ */
+//================================================================================
+
+const int _pyCommand::GetNbResultValues()
+{
+ int begPos = 1;
+ int Nb=0;
+ int endPos = myString.Location( "=", 1, Length() );
+ TCollection_AsciiString str = "";
+ while ( begPos < endPos) {
+ str = GetWord( myString, begPos, true );
+ begPos = begPos+ str.Length();
+ Nb++;
+ }
+ return (Nb-1);
+}
+
+
+//================================================================================
+/*!
+ * \brief Return substring of python command looking like
+ * ResultValue1 , ResultValue1,... = Obj.Meth() with res index
+ * \retval const TCollection_AsciiString & - ResultValue with res index substring
+ */
+//================================================================================
+const TCollection_AsciiString & _pyCommand::GetResultValue(int res)
+{
+ int begPos = 1;
+ int Nb=0;
+ int endPos = myString.Location( "=", 1, Length() );
+ while ( begPos < endPos) {
+ myRes = GetWord( myString, begPos, true );
+ begPos = begPos + myRes.Length();
+ Nb++;
+ if(res == Nb){
+ myRes.RemoveAll('[');myRes.RemoveAll(']');
+ return myRes;
+ }
+ if(Nb>res)
+ break;
+ }
+ return theEmptyString;
+}
+
//================================================================================
/*!
* \brief Return substring of python command looking like ResVal = Object.Meth()
// ===========================================================================================
/*!
- * \brief Tool converting SMESH engine calls into commands defined in smesh.py
- *
* This file was created in order to respond to requirement of bug PAL10494:
* SMESH python dump uses idl interface.
*
* The creation reason is that smesh.py commands defining hypotheses encapsulate
* several SMESH engine method calls. As well, the dependencies between smesh.py
- * classes differ from ones between SMESH IDL interfaces.
+ * classes differ from ones between corresponding SMESH IDL interfaces.
*
- * The only API method here is SMESH_2smeshpy::ConvertScript(), the rest ones are
- * for internal usage
+ * Everything here is for internal usage by SMESH_2smeshpy::ConvertScript()
+ * declared in SMESH_PythonDump.hxx
*
- * See comments to _pyHypothesis class to know how to assure convertion of a new hypothesis
+ * See comments to _pyHypothesis class to know how to assure convertion of a new
+ * type of hypothesis
*/
// ===========================================================================================
class Resource_DataMapOfAsciiStringAsciiString;
-class SMESH_2smeshpy
-{
-public:
- /*!
- * \brief Convert a python script using commands of smesh.py
- * \param theScript - Input script
- * \param theEntry2AccessorMethod - The returning method names to access to
- * objects wrapped with python class
- * \retval TCollection_AsciiString - Convertion result
- */
- static TCollection_AsciiString
- ConvertScript(const TCollection_AsciiString& theScript,
- Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod);
-
- /*!
- * \brief Return the name of the python file wrapping IDL API
- * \retval TCollection_AsciiString - The file name
- */
- static char* SmeshpyName() { return "smesh"; }
- static char* GenName() { return "smesh.smesh"; }
-};
-
// ===========================================================================================
// =====================
// INTERNAL STUFF
DEFINE_STANDARD_HANDLE (_pyObject ,Standard_Transient);
DEFINE_STANDARD_HANDLE (_pyGen ,_pyObject);
DEFINE_STANDARD_HANDLE (_pyMesh ,_pyObject);
+DEFINE_STANDARD_HANDLE (_pyMeshEditor,_pyObject);
DEFINE_STANDARD_HANDLE (_pyHypothesis,_pyObject);
DEFINE_STANDARD_HANDLE (_pyAlgorithm ,_pyHypothesis);
bool IsEmpty() const { return myString.IsEmpty(); }
TCollection_AsciiString GetIndentation();
const TCollection_AsciiString & GetResultValue();
+ const int GetNbResultValues();
+ const TCollection_AsciiString & GetResultValue(int res);
const TCollection_AsciiString & GetObject();
const TCollection_AsciiString & GetMethod();
const TCollection_AsciiString & GetArg( int index );
void Flush();
Handle(_pyHypothesis) FindHyp( const _pyID& theHypID );
Handle(_pyHypothesis) FindAlgo( const _pyID& theGeom, const _pyID& theMesh,
- const TCollection_AsciiString& theAlgoType);
+ const Handle(_pyHypothesis)& theHypothesis);
void ExchangeCommands( Handle(_pyCommand) theCmd1, Handle(_pyCommand) theCmd2 );
void SetCommandAfter( Handle(_pyCommand) theCmd, Handle(_pyCommand) theAfterCmd );
std::list< Handle(_pyCommand) >& GetCommands() { return myCommands; }
void SetAccessorMethod(const _pyID& theID, const char* theMethod );
bool AddMeshAccessorMethod( Handle(_pyCommand) theCmd ) const;
bool AddAlgoAccessorMethod( Handle(_pyCommand) theCmd ) const;
- const char* AccessorMethod() const { return SMESH_2smeshpy::GenName(); }
+ const char* AccessorMethod() const;
private:
- std::map< _pyID, Handle(_pyMesh) > myMeshes;
- std::list< Handle(_pyHypothesis) > myHypos;
- std::list< Handle(_pyCommand) > myCommands;
- int myNbCommands;
- bool myHasPattern;
+ std::map< _pyID, Handle(_pyMesh) > myMeshes;
+ std::map< _pyID, Handle(_pyMeshEditor) > myMeshEditors;
+ std::list< Handle(_pyHypothesis) > myHypos;
+ std::list< Handle(_pyCommand) > myCommands;
+ int myNbCommands;
+ bool myHasPattern;
Resource_DataMapOfAsciiStringAsciiString& myID2AccessorMethod;
DEFINE_STANDARD_RTTI (_pyGen)
bool myHasEditor;
public:
_pyMesh(const Handle(_pyCommand) theCreationCmd);
+ _pyMesh(const Handle(_pyCommand) theCreationCmd, const TCollection_AsciiString &);
const _pyID& GetGeom() { return GetCreationCmd()->GetArg(1); }
void Process( const Handle(_pyCommand)& theCommand);
void Flush();
const char* AccessorMethod() const { return _pyMesh_ACCESS_METHOD; }
private:
+ static bool NeedMeshAccess( const Handle(_pyCommand)& theCommand );
static void AddMeshAccess( const Handle(_pyCommand)& theCommand )
{ theCommand->SetObject( theCommand->GetObject() + "." _pyMesh_ACCESS_METHOD ); }
+ //friend class _pyMeshEditor;
DEFINE_STANDARD_RTTI (_pyMesh)
};
#undef _pyMesh_ACCESS_METHOD
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief MeshEditor convert its commands to ones of mesh
+ */
+// -------------------------------------------------------------------------------------
+class _pyMeshEditor: public _pyObject
+{
+ _pyID myMesh;
+ TCollection_AsciiString myCreationCmdStr;
+public:
+ _pyMeshEditor(const Handle(_pyCommand)& theCreationCmd);
+ void Process( const Handle(_pyCommand)& theCommand);
+ virtual void Flush() {}
+
+ DEFINE_STANDARD_RTTI (_pyMesh)
+};
+
// -------------------------------------------------------------------------------------
/*!
* \brief Root class for hypothesis
*
- * HOWTO assure convertion of a new hypothesis
- * In NewHypothesis():
- * 1. add a case for the name of the new hypothesis and
- * 2. initialize _pyHypothesis fields:
- * . myDim - hypothesis dimention;
- * . myType - type name of the algorithm creating the hypothesis;
- * . myCreationMethod - method name of the algorithm creating the hypothesis;
- * . append to myArgMethods interface methods setting param values in the
- * order they are used when myCreationMethod is called. It is supposed that
- * each interface method sets only one parameter, if it is not so, you are
+ * HOWTO assure convertion of a new type of hypothesis
+ * In _pyHypothesis::NewHypothesis():
+ * 1. add a case for the name of the new hypothesis
+ * 2. use SetConvMethodAndType() to set
+ * . for algo: algorithm name and method of Mesh creating the algo
+ * . for hypo: name of the algorithm and method creating the hypothesis
+ * 3. append to myArgMethods interface methods setting param values in the
+ * order they are used when creation method is called. If arguments of
+ * the creation method can't be easily got from calls of hypothesis methods, you are
* to derive a specific class from _pyHypothesis that would redefine Process(),
* see _pyComplexParamHypo for example
*/
class _pyHypothesis: public _pyObject
{
protected:
- bool myIsAlgo, myIsWrapped; //myIsLocal, myIsConverted;
- //int myDim/*, myAdditionCmdNb*/;
- _pyID myGeom, myMesh;
- TCollection_AsciiString myCreationMethod, myType;
- TColStd_SequenceOfAsciiString myArgs;
- TColStd_SequenceOfAsciiString myArgMethods;
- TColStd_SequenceOfInteger myNbArgsByMethod;
+ bool myIsAlgo, myIsWrapped;
+ _pyID myGeom, myMesh;
+ // a hypothesis can be used and created by different algos by different methods
+ std::map<TCollection_AsciiString, TCollection_AsciiString > myType2CreationMethod;
+ //TCollection_AsciiString myCreationMethod, myType;
+ TColStd_SequenceOfAsciiString myArgs; // creation arguments
+ TColStd_SequenceOfAsciiString myArgMethods; // hypo methods setting myArgs
+ TColStd_SequenceOfInteger myNbArgsByMethod; // nb args set by each method
std::list<Handle(_pyCommand)> myArgCommands;
std::list<Handle(_pyCommand)> myUnknownCommands;
public:
_pyHypothesis(const Handle(_pyCommand)& theCreationCmd);
- void SetConvMethodAndType(const char* creationMethod, const char* type=0)
- { myCreationMethod = (char*)creationMethod; if ( type ) myType = (char*)type; }
-// void SetDimMethodType(const int dim, const char* creationMethod, const char* type=0)
-// { myDim = dim; myCreationMethod = (char*)creationMethod; if ( type ) myType = (char*)type; }
+ void SetConvMethodAndType(const char* creationMethod, const char* type)
+ { myType2CreationMethod[ (char*)type ] = (char*)creationMethod; }
void AddArgMethod(const char* method, const int nbArgs = 1)
{ myArgMethods.Append( (char*)method ); myNbArgsByMethod.Append( nbArgs ); }
const TColStd_SequenceOfAsciiString& GetArgs() const { return myArgs; }
- const TCollection_AsciiString& GetCreationMethod() const { return myCreationMethod; }
const std::list<Handle(_pyCommand)>& GetArgCommands() const { return myArgCommands; }
void ClearAllCommands();
virtual bool IsAlgo() const { return myIsAlgo; }
+ bool IsValid() const { return !myType2CreationMethod.empty(); }
bool IsWrapped() const { return myIsWrapped; }
- //bool & IsConverted() { return myIsConverted; }
- //int GetDim() const { return myDim; }
const _pyID & GetGeom() const { return myGeom; }
void SetMesh( const _pyID& theMeshId) { if ( myMesh.IsEmpty() ) myMesh = theMeshId; }
const _pyID & GetMesh() const { return myMesh; }
- const TCollection_AsciiString GetType() { return myType; }
+ const TCollection_AsciiString& GetAlgoType() const
+ { return myType2CreationMethod.begin()->first; }
+ const TCollection_AsciiString& GetAlgoCreationMethod() const
+ { return myType2CreationMethod.begin()->second; }
+ bool CanBeCreatedBy(const TCollection_AsciiString& algoType ) const
+ { return myType2CreationMethod.find( algoType ) != myType2CreationMethod.end(); }
+ const TCollection_AsciiString& GetCreationMethod(const TCollection_AsciiString& algoType) const
+ { return myType2CreationMethod.find( algoType )->second; }
bool IsWrappable(const _pyID& theMesh) { return !myIsWrapped && myMesh == theMesh; }
virtual bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
const _pyID& theMesh);
static Handle(_pyHypothesis) NewHypothesis( const Handle(_pyCommand)& theCreationCmd);
- // bool HasMesh() const { return !myMesh.IsEmpty(); }
- // void SetGeom( const _pyID& theGeomID ) { myGeom = theGeomID; }
void Process( const Handle(_pyCommand)& theCommand);
void Flush();
if (aSeq->Value(aLen) < aScriptLength)
anUpdatedScript += aScript.SubString(aSeq->Value(aLen) + 1, aScriptLength);
+
+ SMESH_Gen_i* aSMESHGenI = SMESH_Gen_i::GetSMESHGen();
+ SALOMEDS::Study_ptr aStudy = aSMESHGenI->GetCurrentStudy();
+ if( !CORBA::is_nil(aStudy) )
+ {
+ SALOMEDS::SObject_var aComp = aStudy->FindComponent(ComponentDataType());
+ if( !CORBA::is_nil(aComp) )
+ {
+ SALOMEDS::ChildIterator_var Itr = aStudy->NewChildIterator(aComp);
+ for( Itr->InitEx(true); Itr->More(); Itr->Next() )
+ {
+ SALOMEDS::SObject_var aSObj = Itr->Value();
+ CORBA::String_var aName = aSObj->GetName();
+
+ SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( SMESH_Gen_i::SObjectToObject( aSObj ) );
+ if( !CORBA::is_nil(aMesh) )
+ {
+ bool isAutoColor = aMesh->GetAutoColor();
+ if( isAutoColor )
+ {
+ anUpdatedScript += "\n\t";
+ anUpdatedScript += (char*)aName.in();
+ anUpdatedScript += ".SetAutoColor(1)";
+ }
+ }
+
+ SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH_Gen_i::SObjectToObject( aSObj ) );
+ if( !CORBA::is_nil(aGroup) )
+ {
+ SALOMEDS::Color aColor = aGroup->GetColor();
+ if ( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 )
+ {
+ anUpdatedScript += "\n\t";
+ anUpdatedScript += (char*)aName.in();
+ anUpdatedScript += ".SetColor(SALOMEDS.Color(";
+ anUpdatedScript += aColor.R;
+ anUpdatedScript += ",";
+ anUpdatedScript += aColor.G;
+ anUpdatedScript += ",";
+ anUpdatedScript += aColor.B;
+ anUpdatedScript += "))";
+ }
+ }
+ }
+ }
+ }
+
// Remove removed objects
if ( seqRemoved.Length() > 0 ) {
anUpdatedScript += "\n\t## some objects were removed";
#include "SMESHDS_Mesh.hxx"
+#include <BRep_Tool.hxx>
+#include <Geom_CylindricalSurface.hxx>
+#include <Geom_Plane.hxx>
+#include <LDOMParser.hxx>
+#include <LDOMString.hxx>
#include <LDOM_Document.hxx>
#include <LDOM_Element.hxx>
#include <LDOM_Node.hxx>
-#include <LDOMString.hxx>
-#include <LDOMParser.hxx>
#include <LDOM_XmlWriter.hxx>
-#include <TCollection_HAsciiString.hxx>
+#include <Precision.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
+#include <TColStd_ListIteratorOfListOfReal.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <TColStd_ListOfReal.hxx>
-#include <TColStd_MapOfInteger.hxx>
#include <TColStd_SequenceOfHAsciiString.hxx>
-#include <TColStd_ListIteratorOfListOfReal.hxx>
-#include <Precision.hxx>
-#include <BRep_Tool.hxx>
-#include <TopoDS_Shape.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Face.hxx>
-#include <Geom_Plane.hxx>
-#include <Geom_CylindricalSurface.hxx>
-#include <TopExp_Explorer.hxx>
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
+#include <TopoDS_Shape.hxx>
using namespace SMESH;
using namespace SMESH::Controls;
GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow( aList[ 0 ]->GetObject() );
if ( !aGeomObj->_is_nil() )
{
- GEOM::GEOM_Gen_var aGEOMGen = SMESH_Gen_i::GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGEOMGen = SMESH_Gen_i::GetGeomEngine();
TopoDS_Shape aLocShape = aSMESHGen->GetShapeReader()->GetShape( aGEOMGen, aGeomObj );
return aLocShape;
}
return TopoDS_Shape();
}
-static TopoDS_Shape getShapeByID( const char* theID )
+static TopoDS_Shape getShapeByID (const char* theID)
{
- if ( theID != 0 && theID!="" )
- {
+ if (theID != 0 && theID != "") {
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy();
- if ( aStudy != 0 )
- {
- CORBA::Object_var obj = aStudy->ConvertIORToObject(theID);
- GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow( obj );
+ if (aStudy != 0) {
+ SALOMEDS::SObject_var aSObj = aStudy->FindObjectID(theID);
+ SALOMEDS::GenericAttribute_var anAttr;
+ if (!aSObj->_is_nil() && aSObj->FindAttribute(anAttr, "AttributeIOR")) {
+ SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
+ CORBA::String_var aVal = anIOR->Value();
+ CORBA::Object_var obj = aStudy->ConvertIORToObject(aVal);
+ GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow(obj);
- if ( !aGeomObj->_is_nil() )
- {
- GEOM::GEOM_Gen_var aGEOMGen = SMESH_Gen_i::GetGeomEngine();
+ if (!aGeomObj->_is_nil()) {
+ GEOM::GEOM_Gen_ptr aGEOMGen = SMESH_Gen_i::GetGeomEngine();
TopoDS_Shape aLocShape = aSMESHGen->GetShapeReader()->GetShape( aGEOMGen, aGeomObj );
return aLocShape;
}
+ }
}
}
return TopoDS_Shape();
}
-static char* getShapeNameByID ( const char* theID )
+static char* getShapeNameByID (const char* theID)
{
char* aName = "";
- if ( theID != 0 && theID!="" )
- {
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy();
- if ( aStudy != 0 )
- {
- SALOMEDS::SObject_var aSObj = aStudy->FindObjectIOR( theID );
- SALOMEDS::GenericAttribute_var anAttr;
- if ( !aSObj->_is_nil() && aSObj->FindAttribute( anAttr, "AttributeName") )
- {
- SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow( anAttr );
- aName = aNameAttr->Value();
- }
- }
+ if (theID != 0 && theID != "") {
+ SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
+ SALOMEDS::Study_ptr aStudy = aSMESHGen->GetCurrentStudy();
+ if (aStudy != 0) {
+ //SALOMEDS::SObject_var aSObj = aStudy->FindObjectIOR( theID );
+ SALOMEDS::SObject_var aSObj = aStudy->FindObjectID(theID);
+ SALOMEDS::GenericAttribute_var anAttr;
+ if (!aSObj->_is_nil() && aSObj->FindAttribute(anAttr, "AttributeName")) {
+ SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow(anAttr);
+ aName = aNameAttr->Value();
+ }
}
-
+ }
+
return aName;
}
if ( theGeom->_is_nil() )
return;
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- GEOM::GEOM_Gen_var aGEOMGen = SMESH_Gen_i::GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGEOMGen = SMESH_Gen_i::GetGeomEngine();
TopoDS_Shape aLocShape = aSMESHGen->GetShapeReader()->GetShape( aGEOMGen, theGeom );
myBelongToGeomPtr->SetGeom( aLocShape );
TPythonDump()<<this<<".SetGeom("<<theGeom<<")";
if ( theGeom->_is_nil() )
return;
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- GEOM::GEOM_Gen_var aGEOMGen = SMESH_Gen_i::GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGEOMGen = SMESH_Gen_i::GetGeomEngine();
TopoDS_Shape aLocShape = aSMESHGen->GetShapeReader()->GetShape( aGEOMGen, theGeom );
if ( aLocShape.ShapeType() == TopAbs_FACE )
if ( theGeom->_is_nil() )
return;
SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- GEOM::GEOM_Gen_var aGEOMGen = SMESH_Gen_i::GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGEOMGen = SMESH_Gen_i::GetGeomEngine();
TopoDS_Shape aLocShape = aSMESHGen->GetShapeReader()->GetShape( aGEOMGen, theGeom );
myLyingOnGeomPtr->SetGeom( aLocShape );
TPythonDump()<<this<<".SetGeom("<<theGeom<<")";
ElementType aTypeOfElem = theCriteria[ i ].TypeOfElement;
long aPrecision = theCriteria[ i ].Precision;
- TPythonDump()<<"aCriterion = SMESH.Filter.Criterion("<<
- aCriterion<<","<<aCompare<<","<<aThreshold<<",'"<<aThresholdStr<<"','"<<aThresholdID<<"',"<<
- aUnary<<","<<aBinary<<","<<aTolerance<<","<<aTypeOfElem<<","<<aPrecision<<"))";
+ {
+ TPythonDump pd;
+ pd << "aCriterion = SMESH.Filter.Criterion(" << aCriterion << "," << aCompare
+ << "," << aThreshold << ",'" << aThresholdStr;
+ if (strlen(aThresholdID) > 0)
+ pd << "',salome.ObjectToID(" << aThresholdID
+ << ")," << aUnary << "," << aBinary << "," << aTolerance
+ << "," << aTypeOfElem << "," << aPrecision << ")";
+ else
+ pd << "',''," << aUnary << "," << aBinary << "," << aTolerance
+ << "," << aTypeOfElem << "," << aPrecision << ")";
+ }
SMESH::Predicate_ptr aPredicate = SMESH::Predicate::_nil();
SMESH::NumericalFunctor_ptr aFunctor = SMESH::NumericalFunctor::_nil();
#endif
// Static variables definition
+GEOM::GEOM_Gen_var SMESH_Gen_i::myGeomGen = GEOM::GEOM_Gen::_nil();
CORBA::ORB_var SMESH_Gen_i::myOrb;
PortableServer::POA_var SMESH_Gen_i::myPoa;
SALOME_NamingService* SMESH_Gen_i::myNS = NULL;
*/
//=============================================================================
GEOM::GEOM_Gen_ptr SMESH_Gen_i::GetGeomEngine() {
- GEOM::GEOM_Gen_var aGeomEngine =
- GEOM::GEOM_Gen::_narrow( GetLCC()->FindOrLoad_Component("FactoryServer","GEOM") );
- return aGeomEngine._retn();
+ //CCRT GEOM::GEOM_Gen_var aGeomEngine =
+ //CCRT GEOM::GEOM_Gen::_narrow( GetLCC()->FindOrLoad_Component("FactoryServer","GEOM") );
+ //CCRT return aGeomEngine._retn();
+ if(CORBA::is_nil(myGeomGen))
+ {
+ Engines::Component_ptr temp=GetLCC()->FindOrLoad_Component("FactoryServer","GEOM");
+ myGeomGen=GEOM::GEOM_Gen::_narrow(temp);
+ }
+ return myGeomGen;
}
//=============================================================================
{
int libNameLen = strlen(theLibName);
//check for old format "libXXXXXXX.so"
- if( libNameLen > 7 && !strncmp( theLibName, "lib", 3 ) && !strcmp( theLibName+libNameLen-3, ".so" ) )
- {
- //the old format
+ if (libNameLen > 7 &&
+ !strncmp( theLibName, "lib", 3 ) &&
+ !strcmp( theLibName+libNameLen-3, ".so" ))
+ {
+ //the old format
#ifdef WNT
- aPlatformLibName = new char[libNameLen - 1];
- aPlatformLibName[0] = '\0';
- aPlatformLibName = strncat( aPlatformLibName, theLibName+3, libNameLen-6 );
- aPlatformLibName = strcat( aPlatformLibName, ".dll" );
- aPlatformLibName[libNameLen - 2] = '\0';
+ aPlatformLibName = new char[libNameLen - 1];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strncat( aPlatformLibName, theLibName+3, libNameLen-6 );
+ aPlatformLibName = strcat( aPlatformLibName, ".dll" );
+ aPlatformLibName[libNameLen - 2] = '\0';
#else
- aPlatformLibName = new char[ libNameLen + 1];
- aPlatformLibName[0] = '\0';
- aPlatformLibName = strcat( aPlatformLibName, theLibName );
- aPlatformLibName[libNameLen] = '\0';
+ aPlatformLibName = new char[ libNameLen + 1];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strcat( aPlatformLibName, theLibName );
+ aPlatformLibName[libNameLen] = '\0';
#endif
-
- }
+ }
else
- {
- //try to use new format
+ {
+ //try to use new format
#ifdef WNT
- aPlatformLibName = new char[ libNameLen + 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[ libNameLen + 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
- }
+ }
}
-
Unexpect aCatch(SALOME_SalomeException);
// create a new hypothesis object, store its ref. in studyContext
if(MYDEBUG) MESSAGE("Create Hypothesis " << theHypName);
myHypothesis_i =
- myHypCreatorMap[string(theHypName)]->Create (myPoa, GetCurrentStudyID(), &myGen);
+ myHypCreatorMap[string(theHypName)]->Create(myPoa, GetCurrentStudyID(), &myGen);
myHypothesis_i->SetLibName(aPlatformLibName/*theLibName*/); // for persistency assurance
}
catch (SALOME_Exception& S_ex)
return hypothesis_i._retn();
}
-
+
//=============================================================================
/*!
* SMESH_Gen_i::createMesh
return myShapeReader;
}
+//=============================================================================
+/*!
+ * SMESH_Gen_i::SetGeomEngine
+ *
+ * Set GEOM::GEOM_Gen reference
+ */
+//=============================================================================
+//GEOM::GEOM_Gen_ptr SMESH_Gen_i::SetGeomEngine( const char* containerLoc )
+void SMESH_Gen_i::SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo )
+{
+ //Engines::Component_ptr temp=GetLCC()->FindOrLoad_Component(containerLoc,"GEOM");
+ //myGeomGen=GEOM::GEOM_Gen::_narrow(temp);
+ myGeomGen=GEOM::GEOM_Gen::_duplicate(geomcompo);
+ //return myGeomGen;
+}
+
//=============================================================================
/*!
* SMESH_Gen_i::SetEmbeddedMode
Unexpect aCatch(SALOME_SalomeException);
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetComputeErrors()" );
- if ( CORBA::is_nil( theSubObject ) )
+ if ( CORBA::is_nil( theSubObject ) && theMesh->HasShapeToMesh())
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
if ( CORBA::is_nil( theMesh ) )
try {
if ( SMESH_Mesh_i* meshServant = SMESH::DownCast<SMESH_Mesh_i*>( theMesh ))
{
- TopoDS_Shape shape = GeomObjectToShape( theSubObject );
+ TopoDS_Shape shape;
+ if(theMesh->HasShapeToMesh())
+ shape = GeomObjectToShape( theSubObject );
+ else
+ shape = SMESH_Mesh::PseudoShape();
+
::SMESH_Mesh& mesh = meshServant->GetImpl();
error_array->length( mesh.GetMeshDS()->MaxShapeIndex() );
Unexpect aCatch(SALOME_SalomeException);
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetAlgoState()" );
- if ( CORBA::is_nil( theSubObject ) )
+ if ( CORBA::is_nil( theSubObject ) && theMesh->HasShapeToMesh())
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
if ( CORBA::is_nil( theMesh ) )
SMESH_Mesh_i* meshServant = SMESH::DownCast<SMESH_Mesh_i*>( theMesh );
ASSERT( meshServant );
if ( meshServant ) {
- TopoDS_Shape myLocShape = GeomObjectToShape( theSubObject );
+ TopoDS_Shape myLocShape;
+ if(theMesh->HasShapeToMesh())
+ myLocShape = GeomObjectToShape( theSubObject );
+ else
+ myLocShape = SMESH_Mesh::PseudoShape();
+
::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
list< ::SMESH_Gen::TAlgoStateError > error_list;
list< ::SMESH_Gen::TAlgoStateError >::iterator error;
Unexpect aCatch(SALOME_SalomeException);
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Compute" );
- if ( CORBA::is_nil( theShapeObject ) )
+ if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh())
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
SALOME::BAD_PARAM );
// Update Python script
TPythonDump() << "isDone = " << this << ".Compute( "
<< theMesh << ", " << theShapeObject << ")";
- TPythonDump() << "if not isDone: print 'Mesh', " << theMesh << ", ': computation failed'";
try {
// get mesh servant
SMESH_Mesh_i* meshServant = dynamic_cast<SMESH_Mesh_i*>( GetServant( theMesh ).in() );
ASSERT( meshServant );
if ( meshServant ) {
+ // NPAL16168: "geometrical group edition from a submesh don't modifiy mesh computation"
+ meshServant->CheckGeomGroupModif();
// get local TopoDS_Shape
- TopoDS_Shape myLocShape = GeomObjectToShape( theShapeObject );
+ TopoDS_Shape myLocShape;
+ if(theMesh->HasShapeToMesh())
+ myLocShape = GeomObjectToShape( theShapeObject );
+ else
+ myLocShape = SMESH_Mesh::PseudoShape();
// call implementation compute
::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
return myGen.Compute( myLocMesh, myLocShape);
}
}
- catch ( std::bad_alloc& exc ) {
- THROW_SALOME_CORBA_EXCEPTION( "Memory allocation problem",
- SALOME::INTERNAL_ERROR );
+ catch ( std::bad_alloc ) {
+ INFOS( "Compute(): lack of memory" );
}
catch ( SALOME_Exception& S_ex ) {
INFOS( "Compute(): catch exception "<< S_ex.what() );
GEOM::GEOM_Object_var geom = FindGeometryByMeshElement(theMesh, theElementID);
if ( !geom->_is_nil() ) {
GEOM::GEOM_Object_var mainShape = theMesh->GetShapeToMesh();
- GEOM::GEOM_Gen_var geomGen = GetGeomEngine();
+ GEOM::GEOM_Gen_ptr geomGen = GetGeomEngine();
// try to find the corresponding SObject
SALOMEDS::SObject_var SObj = ObjectToSObject( myCurrentStudy, geom.in() );
THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference", SALOME::BAD_PARAM );
GEOM::GEOM_Object_var mainShape = theMesh->GetShapeToMesh();
- GEOM::GEOM_Gen_var geomGen = GetGeomEngine();
+ GEOM::GEOM_Gen_ptr geomGen = GetGeomEngine();
// get a core mesh DS
SMESH_Mesh_i* meshServant = SMESH::DownCast<SMESH_Mesh_i*>( theMesh );
::SMESH_Mesh & mesh = meshServant->GetImpl();
SMESHDS_Mesh* meshDS = mesh.GetMeshDS();
// find the element in mesh
- if ( const SMDS_MeshElement * elem = meshDS->FindElement( theElementID ) )
+ if ( const SMDS_MeshElement * elem = meshDS->FindElement( theElementID ) ) {
// find a shape id by the element
if ( int shapeID = ::SMESH_MeshEditor( &mesh ).FindShape( elem )) {
// get a geom object by the shape id
GEOM::GEOM_Object_var geom = ShapeToGeomObject( meshDS->IndexToShape( shapeID ));
if ( geom->_is_nil() ) {
+ // try to find a published sub-shape
+ SALOMEDS::SObject_var mainSO = ObjectToSObject( myCurrentStudy, mainShape );
+ SALOMEDS::ChildIterator_var it;
+ if ( !mainSO->_is_nil() )
+ it = myCurrentStudy->NewChildIterator( mainSO );
+ if ( !it->_is_nil() ) {
+ for ( it->InitEx(true); it->More(); it->Next() ) {
+ GEOM::GEOM_Object_var subGeom =
+ GEOM::GEOM_Object::_narrow( SObjectToObject( it->Value() ));
+ if ( !subGeom->_is_nil() ) {
+ GEOM::ListOfLong_var subList = subGeom->GetSubShapeIndices();
+ if ( subList->length() == 1 && shapeID == subList[0] ) {
+ geom = subGeom;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if ( geom->_is_nil() ) {
+ // explode
GEOM::GEOM_IShapesOperations_var op =
geomGen->GetIShapesOperations( GetCurrentStudyID() );
if ( !op->_is_nil() )
return geom._retn();
}
}
+ }
}
return GEOM::GEOM_Object::_nil();
}
if( libname_len > 4 )
libname.resize( libname_len - 4 );
#else
- if( libname_len > 3 )
- libname.resize( libname_len - 3 );
+ // PAL17753 (Regresion: missing hypothesis in restored study)
+ // "lib" also should be removed from the beginning
+ //if( libname_len > 3 )
+ //libname.resize( libname_len - 3 );
+ if( libname_len > 6 )
+ libname = libname.substr( 3, libname_len - 3 - 3 );
#endif
CORBA::String_var objStr = GetORB()->object_to_string( anObject );
int id = myStudyContext->findId( string( objStr.in() ) );
if( libname_len > 4 )
libname.resize( libname_len - 4 );
#else
- if( libname_len > 3 )
- libname.resize( libname_len - 3 );
+ // PAL17753 (Regresion: missing hypothesis in restored study)
+ // "lib" also should be removed from the beginning
+ //if( libname_len > 3 )
+ //libname.resize( libname_len - 3 );
+ if( libname_len > 6 )
+ libname = libname.substr( 3, libname_len - 3 - 3 );
#endif
CORBA::String_var objStr = GetORB()->object_to_string( anObject );
int id = myStudyContext->findId( string( objStr.in() ) );
int id = myStudyContext->findId( string( objStr.in() ) );
::SMESH_Mesh& myLocMesh = myImpl->GetImpl();
SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS();
+ bool hasShape = myLocMesh.HasShapeToMesh();
// for each mesh open the HDF group basing on its id
char meshGrpName[ 30 ];
aDataset->WriteOnDisk( ( char* )( strHasData.c_str() ) );
aDataset->CloseOnDisk();
+ // ouv : NPAL12872
+ // for each mesh open the HDF group basing on its auto color parameter
+ char meshAutoColorName[ 30 ];
+ sprintf( meshAutoColorName, "AutoColorMesh %d", id );
+ int anAutoColor[1];
+ anAutoColor[0] = myImpl->GetAutoColor();
+ aSize[ 0 ] = 1;
+ aDataset = new HDFdataset( meshAutoColorName, aTopGroup, HDF_INT32, aSize, 1 );
+ aDataset->CreateOnDisk();
+ aDataset->WriteOnDisk( anAutoColor );
+ aDataset->CloseOnDisk();
+
// write reference on a shape if exists
SALOMEDS::SObject_var myRef;
bool shapeRefFound = false;
// write applied hypotheses if exist
SALOMEDS::SObject_var myHypBranch;
found = gotBranch->FindSubObject( GetRefOnAppliedHypothesisTag(), myHypBranch );
- if ( found && !shapeRefFound ) { // remove applied hyps
+ if ( found && !shapeRefFound && hasShape) { // remove applied hyps
myCurrentStudy->NewBuilder()->RemoveObjectWithChildren( myHypBranch );
}
- if ( found && shapeRefFound ) {
+ if ( found && (shapeRefFound || !hasShape) ) {
aGroup = new HDFgroup( "Applied Hypotheses", aTopGroup );
aGroup->CreateOnDisk();
// write applied algorithms if exist
SALOMEDS::SObject_var myAlgoBranch;
found = gotBranch->FindSubObject( GetRefOnAppliedAlgorithmsTag(), myAlgoBranch );
- if ( found && !shapeRefFound ) { // remove applied algos
+ if ( found && !shapeRefFound && hasShape) { // remove applied algos
myCurrentStudy->NewBuilder()->RemoveObjectWithChildren( myAlgoBranch );
}
- if ( found && shapeRefFound ) {
+ if ( found && (shapeRefFound || !hasShape)) {
aGroup = new HDFgroup( "Applied Algorithms", aTopGroup );
aGroup->CreateOnDisk();
aDataset->WriteOnDisk( aUserName );
aDataset->CloseOnDisk();
+ // ouv : NPAL12872
+ // For each group, create a dataset named "Group <group_persistent_id> Color"
+ // and store the group's color into it
+ char grpColorName[ 30 ];
+ sprintf( grpColorName, "ColorGroup %d", anId );
+ SALOMEDS::Color aColor = myGroupImpl->GetColor();
+ double anRGB[3];
+ anRGB[ 0 ] = aColor.R;
+ anRGB[ 1 ] = aColor.G;
+ anRGB[ 2 ] = aColor.B;
+ aSize[ 0 ] = 3;
+ aDataset = new HDFdataset( grpColorName, aGroup, HDF_FLOAT64, aSize, 1 );
+ aDataset->CreateOnDisk();
+ aDataset->WriteOnDisk( anRGB );
+ aDataset->CloseOnDisk();
+
// Store the group contents into MED file
if ( myLocMesh.GetGroup( myGroupImpl->GetLocalID() ) ) {
myWriter.Perform();
// maybe a shape was deleted in the study
- if ( !shapeRefFound && !mySMESHDSMesh->ShapeToMesh().IsNull() ) {
+ if ( !shapeRefFound && !mySMESHDSMesh->ShapeToMesh().IsNull() && hasShape) {
TopoDS_Shape nullShape;
myLocMesh.ShapeToMesh( nullShape ); // remove shape referring data
}
}
// close hypotheses root HDF group
aTopGroup->CloseOnDisk();
+ aTopGroup = 0;
}
// --> then we should read&create algorithms
}
// close algorithms root HDF group
aTopGroup->CloseOnDisk();
+ aTopGroup = 0;
}
// --> the rest groups should be meshes
int newId = myStudyContext->findId( iorString );
myStudyContext->mapOldToNew( id, newId );
+ // ouv : NPAL12872
+ // try to read and set auto color flag
+ char aMeshAutoColorName[ 30 ];
+ sprintf( aMeshAutoColorName, "AutoColorMesh %d", id);
+ if( aTopGroup->ExistInternalObject( aMeshAutoColorName ) )
+ {
+ aDataset = new HDFdataset( aMeshAutoColorName, aTopGroup );
+ aDataset->OpenOnDisk();
+ size = aDataset->GetSize();
+ int* anAutoColor = new int[ size ];
+ aDataset->ReadFromDisk( anAutoColor );
+ aDataset->CloseOnDisk();
+ myNewMeshImpl->SetAutoColor( (bool)anAutoColor[0] );
+ }
+
// try to read and set reference to shape
GEOM::GEOM_Object_var aShapeObject;
if ( aTopGroup->ExistInternalObject( "Ref on shape" ) ) {
CORBA::Object_var hypObject = GetORB()->string_to_object( anIOR.c_str() );
if ( !CORBA::is_nil( hypObject ) ) {
SMESH::SMESH_Hypothesis_var anHyp = SMESH::SMESH_Hypothesis::_narrow( hypObject );
- if ( !anHyp->_is_nil() && !aShapeObject->_is_nil() )
+ if ( !anHyp->_is_nil() && (!aShapeObject->_is_nil()
+ || !myNewMeshImpl->HasShapeToMesh()) )
myNewMeshImpl->addHypothesis( aShapeObject, anHyp );
}
}
CORBA::Object_var hypObject = GetORB()->string_to_object( anIOR.c_str() );
if ( !CORBA::is_nil( hypObject ) ) {
SMESH::SMESH_Hypothesis_var anHyp = SMESH::SMESH_Hypothesis::_narrow( hypObject );
- if ( !anHyp->_is_nil() && !aShapeObject->_is_nil() )
+ if ( !anHyp->_is_nil() && (!aShapeObject->_is_nil()
+ || !myNewMeshImpl->HasShapeToMesh()) )
myNewMeshImpl->addHypothesis( aShapeObject, anHyp );
}
}
} // if ( hasData )
// Recompute State (as computed sub-meshes are restored from MED)
- if ( !aShapeObject->_is_nil() ) {
+ if ( !aShapeObject->_is_nil() || !myNewMeshImpl->HasShapeToMesh()) {
MESSAGE("Compute State Engine ...");
- TopoDS_Shape myLocShape = GeomObjectToShape( aShapeObject );
+ TopoDS_Shape myLocShape;
+ if(myNewMeshImpl->HasShapeToMesh())
+ myLocShape = GeomObjectToShape( aShapeObject );
+ else
+ myLocShape = SMESH_Mesh::PseudoShape();
+
myNewMeshImpl->GetImpl().GetSubMesh(myLocShape)->ComputeStateEngine
(SMESH_subMesh::SUBMESH_RESTORED);
MESSAGE("Compute State Engine finished");
SMESHDS_GroupBase* aGroupBaseDS = aLocalGroup->GetGroupDS();
aGroupBaseDS->SetStoreName( name_dataset );
+ // ouv : NPAL12872
+ // Read color of the group
+ char aGroupColorName[ 30 ];
+ sprintf( aGroupColorName, "ColorGroup %d", subid);
+ if ( aGroup->ExistInternalObject( aGroupColorName ) )
+ {
+ aDataset = new HDFdataset( aGroupColorName, aGroup );
+ aDataset->OpenOnDisk();
+ size = aDataset->GetSize();
+ double* anRGB = new double[ size ];
+ aDataset->ReadFromDisk( anRGB );
+ aDataset->CloseOnDisk();
+ Quantity_Color aColor( anRGB[0], anRGB[1], anRGB[2], Quantity_TOC_RGB );
+ aGroupBaseDS->SetColor( aColor );
+ }
+
// Fill group with contents from MED file
SMESHDS_Group* aGrp = dynamic_cast<SMESHDS_Group*>( aGroupBaseDS );
if ( aGrp )
}
}
// close mesh group
- aTopGroup->CloseOnDisk();
+ if(aTopGroup)
+ aTopGroup->CloseOnDisk();
}
// close HDF file
aFile->CloseOnDisk();
{
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Close" );
+ // set correct current study
+ if (theComponent->GetStudy()->StudyId() != GetCurrentStudyID())
+ SetCurrentStudy(theComponent->GetStudy());
+
// Clear study contexts data
int studyId = GetCurrentStudyID();
if ( myStudyContextMap.find( studyId ) != myStudyContextMap.end() ) {
delete myStudyContextMap[ studyId ];
myStudyContextMap.erase( studyId );
}
+
+ // delete SMESH_Mesh's
+ StudyContextStruct* context = myGen.GetStudyContext( studyId );
+ map< int, SMESH_Mesh* >::iterator i_mesh = context->mapMesh.begin();
+ for ( ; i_mesh != context->mapMesh.end(); ++i_mesh )
+ delete i_mesh->second;
+ // delete SMESHDS_Mesh's
+ // it's too long on big meshes
+// if ( context->myDocument ) {
+// delete context->myDocument;
+// context->myDocument = 0;
+// }
+
return;
}
*/
//================================================================================
-int SMESH_Gen_i::GetObjectId(CORBA::Object_ptr theObject)
+CORBA::Long SMESH_Gen_i::GetObjectId(CORBA::Object_ptr theObject)
{
StudyContext* myStudyContext = GetCurrentStudyContext();
if ( myStudyContext && !CORBA::is_nil( theObject )) {
// 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
//
//
//
const char* interfaceName );
// Destructor
virtual ~SMESH_Gen_i();
-
+
// *****************************************
// Interface methods
// *****************************************
+ //GEOM::GEOM_Gen_ptr SetGeomEngine( const char* containerLoc );
+ void SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo );
// Set current study
void SetEmbeddedMode( CORBA::Boolean theMode );
int RegisterObject(CORBA::Object_ptr theObject);
// Return id of registered object
- int GetObjectId(CORBA::Object_ptr theObject);
+ CORBA::Long GetObjectId(CORBA::Object_ptr theObject);
// Return an object that previously had an oldID
template<class TInterface>
static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot );
private:
-
+ static GEOM::GEOM_Gen_var myGeomGen;
static CORBA::ORB_var myOrb; // ORB reference
static PortableServer::POA_var myPoa; // POA reference
static SALOME_NamingService* myNS; // Naming Service
#include "SMESH_Hypothesis_i.hxx"
#include "SMESH_Algo_i.hxx"
#include "SMESH_Group_i.hxx"
-
-#include "SMESH.hxx"
+#include "SMESH_subMesh_i.hxx"
#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
long SMESH_Gen_i::GetHypothesisRootTag()
{
- return Tag_HypothesisRoot;
+ return SMESH::Tag_HypothesisRoot;
}
long SMESH_Gen_i::GetAlgorithmsRootTag()
{
- return Tag_AlgorithmsRoot;
+ return SMESH::Tag_AlgorithmsRoot;
}
long SMESH_Gen_i::GetRefOnShapeTag()
{
- return Tag_RefOnShape;
+ return SMESH::Tag_RefOnShape;
}
long SMESH_Gen_i::GetRefOnAppliedHypothesisTag()
{
- return Tag_RefOnAppliedHypothesis;
+ return SMESH::Tag_RefOnAppliedHypothesis;
}
long SMESH_Gen_i::GetRefOnAppliedAlgorithmsTag()
{
- return Tag_RefOnAppliedAlgorithms;
+ return SMESH::Tag_RefOnAppliedAlgorithms;
}
long SMESH_Gen_i::GetSubMeshOnVertexTag()
{
- return Tag_SubMeshOnVertex;
+ return SMESH::Tag_SubMeshOnVertex;
}
long SMESH_Gen_i::GetSubMeshOnEdgeTag()
{
- return Tag_SubMeshOnEdge;
+ return SMESH::Tag_SubMeshOnEdge;
}
long SMESH_Gen_i::GetSubMeshOnFaceTag()
{
- return Tag_SubMeshOnFace;
+ return SMESH::Tag_SubMeshOnFace;
}
long SMESH_Gen_i::GetSubMeshOnSolidTag()
{
- return Tag_SubMeshOnSolid;
+ return SMESH::Tag_SubMeshOnSolid;
}
long SMESH_Gen_i::GetSubMeshOnCompoundTag()
{
- return Tag_SubMeshOnCompound;
+ return SMESH::Tag_SubMeshOnCompound;
}
long SMESH_Gen_i::GetSubMeshOnWireTag()
{
- return Tag_SubMeshOnWire;
+ return SMESH::Tag_SubMeshOnWire;
}
long SMESH_Gen_i::GetSubMeshOnShellTag()
{
- return Tag_SubMeshOnShell;
+ return SMESH::Tag_SubMeshOnShell;
}
long SMESH_Gen_i::GetNodeGroupsTag()
{
- return Tag_NodeGroups;
+ return SMESH::Tag_NodeGroups;
}
long SMESH_Gen_i::GetEdgeGroupsTag()
{
- return Tag_EdgeGroups;
+ return SMESH::Tag_EdgeGroups;
}
long SMESH_Gen_i::GetFaceGroupsTag()
{
- return Tag_FaceGroups;
+ return SMESH::Tag_FaceGroups;
}
long SMESH_Gen_i::GetVolumeGroupsTag()
{
- return Tag_VolumeGroups;
+ return SMESH::Tag_VolumeGroups;
}
//=============================================================================
TopoDS_Shape S;
if ( !theGeomObject->_is_nil() ) {
GEOM_Client* aClient = GetShapeReader();
- GEOM::GEOM_Gen_var aGeomEngine = GetGeomEngine();
+ GEOM::GEOM_Gen_ptr aGeomEngine = GetGeomEngine();
if ( aClient && !aGeomEngine->_is_nil () )
S = aClient->GetShape( aGeomEngine, theGeomObject );
}
{
if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape")
SALOMEDS::SObject_var aMeshOrSubMesh;
- if ( theShape->_is_nil() || theMesh->_is_nil() )
+ if (theMesh->_is_nil() || ( theShape->_is_nil() && theMesh->HasShapeToMesh()))
return aMeshOrSubMesh._retn();
+
+ TopoDS_Shape aShape;
+ if(theMesh->HasShapeToMesh())
+ aShape = GeomObjectToShape( theShape );
+ else
+ aShape = SMESH_Mesh::PseudoShape();
- TopoDS_Shape aShape = GeomObjectToShape( theShape );
SMESH_Mesh_i* mesh_i = objectToServant<SMESH_Mesh_i>( theMesh );
if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) {
{
if(MYDEBUG) MESSAGE("AddHypothesisToShape")
if (theStudy->_is_nil() || theMesh->_is_nil() ||
- theHyp->_is_nil() || theShape->_is_nil() )
+ theHyp->_is_nil() || (theShape->_is_nil()
+ && theMesh->HasShapeToMesh()) )
return false;
SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh );
SMESH::SMESH_Hypothesis_ptr theHyp)
{
if (theStudy->_is_nil() || theMesh->_is_nil() ||
- theHyp->_is_nil() || theShape->_is_nil() )
+ theHyp->_is_nil() || (theShape->_is_nil()
+ && theMesh->HasShapeToMesh()))
return false;
SALOMEDS::SObject_var aHypSO = ObjectToSObject( theStudy, theHyp );
return aGeomObj._retn();
}
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+SALOMEDS::Color SMESH_GroupBase_i::GetColor()
+{
+ SMESHDS_GroupBase* aGroupDS = GetGroupDS();
+ if (aGroupDS)
+ {
+ Quantity_Color aQColor = aGroupDS->GetColor();
+ SALOMEDS::Color aColor;
+ aColor.R = aQColor.Red();
+ aColor.G = aQColor.Green();
+ aColor.B = aQColor.Blue();
+
+ return aColor;
+ }
+ MESSAGE("get color of a group");
+ return SALOMEDS::Color();
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void SMESH_GroupBase_i::SetColor(const SALOMEDS::Color& color)
+{
+ SMESHDS_GroupBase* aGroupDS = GetGroupDS();
+ if (aGroupDS)
+ {
+ Quantity_Color aQColor( color.R, color.G, color.B, Quantity_TOC_RGB );
+ return aGroupDS->SetColor(aQColor);
+ }
+ MESSAGE("set color of a group");
+ return ;
+}
+
//=============================================================================
/*!
*
SMESHDS_GroupBase* aGroupDS = GetGroupDS();
if (aGroupDS)
return aGroupDS->GetColorGroup();
- MESSAGE("get color number of a vague group");
+ MESSAGE("get color number of a group");
return 0;
}
SMESHDS_GroupBase* aGroupDS = GetGroupDS();
if (aGroupDS)
return aGroupDS->SetColorGroup(color);
- MESSAGE("set color number of a vague group");
+ MESSAGE("set color number of a group");
return ;
}
-
-
-
SMESH_Group* GetSmeshGroup() const;
SMESHDS_GroupBase* GetGroupDS() const;
- void SetColorNumber(CORBA::Long color);
- CORBA::Long GetColorNumber();
+ void SetColor(const SALOMEDS::Color& color);
+ SALOMEDS::Color GetColor();
+
+ void SetColorNumber(CORBA::Long color);
+ CORBA::Long GetColorNumber();
private:
SMESH_Mesh_i* myMeshServant;
::SMESH_Hypothesis* SMESH_Hypothesis_i::GetImpl()
{
- MESSAGE( "SMESH_Hypothesis_i::GetImpl" );
+ //MESSAGE( "SMESH_Hypothesis_i::GetImpl" );
return myBaseImpl;
}
#include "SMESH_Gen_i.hxx"
#include "SMESH_Filter_i.hxx"
#include "SMESH_PythonDump.hxx"
-#include "CASCatch.hxx"
#include "utilities.h"
-
+#include "Utils_ExceptHandlers.hxx"
+#include "Utils_CorbaException.hxx"
+
+#include <BRepAdaptor_Surface.hxx>
+#include <BRep_Tool.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Face.hxx>
#include <gp_Ax1.hxx>
#include <gp_Ax2.hxx>
#include <gp_Vec.hxx>
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
-#else
-#include "CASCatch.hxx"
#endif
#include <sstream>
}
}
};
+
+ TCollection_AsciiString mirrorTypeName( SMESH::SMESH_MeshEditor::MirrorType theMirrorType )
+ {
+ TCollection_AsciiString typeStr;
+ switch ( theMirrorType ) {
+ case SMESH::SMESH_MeshEditor::POINT:
+ typeStr = "SMESH.SMESH_MeshEditor.POINT";
+ break;
+ case SMESH::SMESH_MeshEditor::AXIS:
+ typeStr = "SMESH.SMESH_MeshEditor.AXIS";
+ break;
+ default:
+ typeStr = "SMESH.SMESH_MeshEditor.PLANE";
+ }
+ return typeStr;
+ }
}
//=============================================================================
*/
//=============================================================================
-SMESH_MeshEditor_i::SMESH_MeshEditor_i(SMESH_Mesh* theMesh, bool isPreview)
+SMESH_MeshEditor_i::SMESH_MeshEditor_i(SMESH_Mesh_i* theMesh, bool isPreview)
{
- myMesh = theMesh;
+ myMesh_i = theMesh;
+ myMesh = & theMesh->GetImpl();
myPreviewMode = isPreview;
}
return 0;
}
+//=============================================================================
+/*!
+ * \brief Bind a node to a vertex
+ * \param NodeID - node ID
+ * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \retval boolean - false if NodeID or VertexID is invalid
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::SetNodeOnVertex(CORBA::Long NodeID, CORBA::Long VertexID)
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESHDS_Mesh * mesh = GetMeshDS();
+ SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( mesh->FindNode(NodeID) );
+ if ( !node )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid NodeID", SALOME::BAD_PARAM);
+
+ if ( mesh->MaxShapeIndex() < VertexID )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid VertexID", SALOME::BAD_PARAM);
+
+ TopoDS_Shape shape = mesh->IndexToShape( VertexID );
+ if ( shape.ShapeType() != TopAbs_VERTEX )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid VertexID", SALOME::BAD_PARAM);
+
+ mesh->SetNodeOnVertex( node, VertexID );
+}
+
+//=============================================================================
+/*!
+ * \brief Store node position on an edge
+ * \param NodeID - node ID
+ * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param paramOnEdge - parameter on edge where the node is located
+ * \retval boolean - false if any parameter is invalid
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::SetNodeOnEdge(CORBA::Long NodeID, CORBA::Long EdgeID,
+ CORBA::Double paramOnEdge)
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESHDS_Mesh * mesh = GetMeshDS();
+ SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( mesh->FindNode(NodeID) );
+ if ( !node )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid NodeID", SALOME::BAD_PARAM);
+
+ if ( mesh->MaxShapeIndex() < EdgeID )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid EdgeID", SALOME::BAD_PARAM);
+
+ TopoDS_Shape shape = mesh->IndexToShape( EdgeID );
+ if ( shape.ShapeType() != TopAbs_EDGE )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid EdgeID", SALOME::BAD_PARAM);
+
+ Standard_Real f,l;
+ BRep_Tool::Range( TopoDS::Edge( shape ), f,l);
+ if ( paramOnEdge < f || paramOnEdge > l )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid paramOnEdge", SALOME::BAD_PARAM);
+
+ mesh->SetNodeOnEdge( node, EdgeID, paramOnEdge );
+}
+
+//=============================================================================
+/*!
+ * \brief Store node position on a face
+ * \param NodeID - node ID
+ * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param u - U parameter on face where the node is located
+ * \param v - V parameter on face where the node is located
+ * \retval boolean - false if any parameter is invalid
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::SetNodeOnFace(CORBA::Long NodeID, CORBA::Long FaceID,
+ CORBA::Double u, CORBA::Double v)
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESHDS_Mesh * mesh = GetMeshDS();
+ SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( mesh->FindNode(NodeID) );
+ if ( !node )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid NodeID", SALOME::BAD_PARAM);
+
+ if ( mesh->MaxShapeIndex() < FaceID )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid FaceID", SALOME::BAD_PARAM);
+
+ TopoDS_Shape shape = mesh->IndexToShape( FaceID );
+ if ( shape.ShapeType() != TopAbs_FACE )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid FaceID", SALOME::BAD_PARAM);
+
+ BRepAdaptor_Surface surf( TopoDS::Face( shape ));
+ bool isOut = ( u < surf.FirstUParameter() ||
+ u > surf.LastUParameter() ||
+ v < surf.FirstVParameter() ||
+ v > surf.LastVParameter() );
+
+ if ( isOut ) {
+#ifdef _DEBUG_
+ cout << "FACE " << FaceID << " (" << u << "," << v << ") out of "
+ << " u( " << surf.FirstUParameter()
+ << "," << surf.LastUParameter()
+ << ") v( " << surf.FirstVParameter()
+ << "," << surf.LastVParameter()
+ << ")" << endl;
+#endif
+ THROW_SALOME_CORBA_EXCEPTION("Invalid UV", SALOME::BAD_PARAM);
+ }
+
+ mesh->SetNodeOnFace( node, FaceID, u, v );
+}
+
+//=============================================================================
+/*!
+ * \brief Bind a node to a solid
+ * \param NodeID - node ID
+ * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \retval boolean - false if NodeID or SolidID is invalid
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::SetNodeInVolume(CORBA::Long NodeID, CORBA::Long SolidID)
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESHDS_Mesh * mesh = GetMeshDS();
+ SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( mesh->FindNode(NodeID) );
+ if ( !node )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid NodeID", SALOME::BAD_PARAM);
+
+ if ( mesh->MaxShapeIndex() < SolidID )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid SolidID", SALOME::BAD_PARAM);
+
+ TopoDS_Shape shape = mesh->IndexToShape( SolidID );
+ if ( shape.ShapeType() != TopAbs_SOLID &&
+ shape.ShapeType() != TopAbs_SHELL)
+ THROW_SALOME_CORBA_EXCEPTION("Invalid SolidID", SALOME::BAD_PARAM);
+
+ mesh->SetNodeInVolume( node, SolidID );
+}
+
+//=============================================================================
+/*!
+ * \brief Bind an element to a shape
+ * \param ElementID - element ID
+ * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \retval boolean - false if ElementID or ShapeID is invalid
+ */
+//=============================================================================
+
+void SMESH_MeshEditor_i::SetMeshElementOnShape(CORBA::Long ElementID,
+ CORBA::Long ShapeID)
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESHDS_Mesh * mesh = GetMeshDS();
+ SMDS_MeshElement* elem = const_cast<SMDS_MeshElement*>(mesh->FindElement(ElementID));
+ if ( !elem )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid ElementID", SALOME::BAD_PARAM);
+
+ if ( mesh->MaxShapeIndex() < ShapeID )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid ShapeID", SALOME::BAD_PARAM);
+
+ TopoDS_Shape shape = mesh->IndexToShape( ShapeID );
+ if ( shape.ShapeType() != TopAbs_EDGE &&
+ shape.ShapeType() != TopAbs_FACE &&
+ shape.ShapeType() != TopAbs_SOLID &&
+ shape.ShapeType() != TopAbs_SHELL )
+ THROW_SALOME_CORBA_EXCEPTION("Invalid shape type", SALOME::BAD_PARAM);
+
+ mesh->SetMeshElementOnShape( elem, ShapeID );
+}
+
+
//=============================================================================
/*!
*
bool stat = aMeshEditor.DeleteDiag ( n1, n2 );
- StoreResult(aMeshEditor);
+ storeResult(aMeshEditor);
return stat;
}
*/
//================================================================================
- void ToMap(const SMESH::long_array & IDs,
- const SMESHDS_Mesh* aMesh,
- TIDSortedElemSet& aMap,
- const SMDSAbs_ElementType aType = SMDSAbs_All )
+ void arrayToSet(const SMESH::long_array & IDs,
+ const SMESHDS_Mesh* aMesh,
+ TIDSortedElemSet& aMap,
+ const SMDSAbs_ElementType aType = SMDSAbs_All )
{
for (int i=0; i<IDs.length(); i++) {
CORBA::Long ind = IDs[i];
SMESHDS_Mesh* aMesh = GetMeshDS();
TIDSortedElemSet faces;
- ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
+ arrayToSet(IDsOfElements, aMesh, faces, SMDSAbs_Face);
SMESH::NumericalFunctor_i* aNumericalFunctor =
dynamic_cast<SMESH::NumericalFunctor_i*>( SMESH_Gen_i::GetServant( Criterion ).in() );
bool stat = anEditor.TriToQuad( faces, aCrit, MaxAngle );
- StoreResult(anEditor);
+ storeResult(anEditor);
return stat;
}
SMESHDS_Mesh* aMesh = GetMeshDS();
TIDSortedElemSet faces;
- ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
+ arrayToSet(IDsOfElements, aMesh, faces, SMDSAbs_Face);
SMESH::NumericalFunctor_i* aNumericalFunctor =
dynamic_cast<SMESH::NumericalFunctor_i*>( SMESH_Gen_i::GetServant( Criterion ).in() );
::SMESH_MeshEditor anEditor( myMesh );
CORBA::Boolean stat = anEditor.QuadToTri( faces, aCrit );
- StoreResult(anEditor);
+ storeResult(anEditor);
return stat;
}
SMESHDS_Mesh* aMesh = GetMeshDS();
TIDSortedElemSet faces;
- ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
+ arrayToSet(IDsOfElements, aMesh, faces, SMDSAbs_Face);
// Update Python script
TPythonDump() << "isDone = " << this << ".SplitQuad( "
::SMESH_MeshEditor anEditor( myMesh );
CORBA::Boolean stat = anEditor.QuadToTri( faces, Diag13 );
- StoreResult(anEditor);
+ storeResult(anEditor);
return stat;
}
SMESHDS_Mesh* aMesh = GetMeshDS();
TIDSortedElemSet elements;
- ToMap(IDsOfElements, aMesh, elements, SMDSAbs_Face);
+ arrayToSet(IDsOfElements, aMesh, elements, SMDSAbs_Face);
set<const SMDS_MeshNode*> fixedNodes;
for (int i = 0; i < IDsOfFixedNodes.length(); i++) {
anEditor.Smooth(elements, fixedNodes, method,
MaxNbOfIterations, MaxAspectRatio, IsParametric );
- StoreResult(anEditor);
+ storeResult(anEditor);
// Update Python script
TPythonDump() << "isDone = " << this << "."
GetMeshDS()->Renumber( false );
}
+//=======================================================================
+ /*!
+ * \brief Return groups by their IDs
+ */
+//=======================================================================
+
+SMESH::ListOfGroups* SMESH_MeshEditor_i::getGroups(const std::list<int>* groupIDs)
+{
+ if ( !groupIDs )
+ return 0;
+ myMesh_i->CreateGroupServants();
+ return myMesh_i->GetGroups( *groupIDs );
+}
//=======================================================================
-//function : RotationSweep
-//purpose :
+//function : rotationSweep
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::RotationSweep(const SMESH::long_array & theIDsOfElements,
- const SMESH::AxisStruct & theAxis,
- CORBA::Double theAngleInRadians,
- CORBA::Long theNbOfSteps,
- CORBA::Double theTolerance)
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::rotationSweep(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Long theNbOfSteps,
+ CORBA::Double theTolerance,
+ const bool theMakeGroups)
{
initData();
TIDSortedElemSet inElements, copyElements;
- ToMap(theIDsOfElements, GetMeshDS(), inElements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), inElements);
TIDSortedElemSet* workElements = & inElements;
TPreviewMesh tmpMesh( SMDSAbs_Face );
gp_Vec( theAxis.vx, theAxis.vy, theAxis.vz ));
::SMESH_MeshEditor anEditor( mesh );
- anEditor.RotationSweep (*workElements, Ax1, theAngleInRadians,
- theNbOfSteps, theTolerance, makeWalls);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.RotationSweep (*workElements, Ax1, theAngleInRadians,
+ theNbOfSteps, theTolerance, theMakeGroups, makeWalls);
+ storeResult(anEditor);
+
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
+}
- StoreResult(anEditor);
+//=======================================================================
+//function : RotationSweep
+//purpose :
+//=======================================================================
+void SMESH_MeshEditor_i::RotationSweep(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Long theNbOfSteps,
+ CORBA::Double theTolerance)
+{
if ( !myPreviewMode ) {
- // Update Python script
TPythonDump() << "axis = " << theAxis;
TPythonDump() << this << ".RotationSweep( "
<< theIDsOfElements
<< theNbOfSteps << ", "
<< theTolerance << " )";
}
+ rotationSweep(theIDsOfElements,
+ theAxis,
+ theAngleInRadians,
+ theNbOfSteps,
+ theTolerance,
+ false);
+}
+
+//=======================================================================
+//function : RotationSweepMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::RotationSweepMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Long theNbOfSteps,
+ CORBA::Double theTolerance)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotationSweepMakeGroups( "
+ << theIDsOfElements
+ << ", axis, "
+ << theAngleInRadians << ", "
+ << theNbOfSteps << ", "
+ << theTolerance << " )";
+ }
+ return rotationSweep(theIDsOfElements,
+ theAxis,
+ theAngleInRadians,
+ theNbOfSteps,
+ theTolerance,
+ true);
}
//=======================================================================
CORBA::Long theNbOfSteps,
CORBA::Double theTolerance)
{
- initData();
-
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotationSweepObject( "
+ << theObject
+ << ", axis, "
+ << theAngleInRadians << ", "
+ << theNbOfSteps << ", "
+ << theTolerance << " )";
+ }
SMESH::long_array_var anElementsId = theObject->GetIDs();
- RotationSweep(anElementsId, theAxis, theAngleInRadians, theNbOfSteps, theTolerance);
+ rotationSweep(anElementsId,
+ theAxis,
+ theAngleInRadians,
+ theNbOfSteps,
+ theTolerance,
+ false);
+}
- // Clear python line, created by RotationSweep()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
+//=======================================================================
+//function : RotationSweepObjectMakeGroups
+//purpose :
+//=======================================================================
- // Update Python script
- TPythonDump() << this << ".RotationSweepObject( "
- << theObject
- << ", axis, "
- << theAngleInRadians << ", "
- << theNbOfSteps << ", "
- << theTolerance << " )";
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::RotationSweepObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Long theNbOfSteps,
+ CORBA::Double theTolerance)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotationSweepObjectMakeGroups( "
+ << theObject
+ << ", axis, "
+ << theAngleInRadians << ", "
+ << theNbOfSteps << ", "
+ << theTolerance << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ return rotationSweep(anElementsId,
+ theAxis,
+ theAngleInRadians,
+ theNbOfSteps,
+ theTolerance,
+ true);
}
+
//=======================================================================
-//function : ExtrusionSweep
-//purpose :
+//function : extrusionSweep
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElements,
- const SMESH::DirStruct & theStepVector,
- CORBA::Long theNbOfSteps)
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::extrusionSweep(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps,
+ const bool theMakeGroups,
+ const SMDSAbs_ElementType theElementType)
{
initData();
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
- SMESHDS_Mesh* aMesh = GetMeshDS();
-
TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements, theElementType);
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);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory, theMakeGroups);
- StoreResult(anEditor);
+ storeResult(anEditor);
- // Update Python script
- TPythonDump() << "stepVector = " << theStepVector;
- TPythonDump() << this << ".ExtrusionSweep( "
- << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
-#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() );
}
+ return 0;
+}
+
+//=======================================================================
+//function : ExtrusionSweep
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ extrusionSweep (theIDsOfElements, theStepVector, theNbOfSteps, false );
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweep( "
+ << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+ }
}
const SMESH::DirStruct & theStepVector,
CORBA::Long theNbOfSteps)
{
- initData();
-
SMESH::long_array_var anElementsId = theObject->GetIDs();
- ExtrusionSweep(anElementsId, theStepVector, theNbOfSteps);
-
- // Clear python line, created by ExtrusionSweep()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
-
- // Update Python script
- TPythonDump() << this << ".ExtrusionSweepObject( "
- << theObject << ", stepVector, " << theNbOfSteps << " )";
+ extrusionSweep (anElementsId, theStepVector, theNbOfSteps, false );
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
}
//=======================================================================
const SMESH::DirStruct & theStepVector,
CORBA::Long theNbOfSteps)
{
- initData();
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ extrusionSweep (anElementsId, theStepVector, theNbOfSteps, false, SMDSAbs_Edge );
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject1D( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
+}
- SMESHDS_Mesh* aMesh = GetMeshDS();
+//=======================================================================
+//function : ExtrusionSweepObject2D
+//purpose :
+//=======================================================================
- SMESH::long_array_var allElementsId = theObject->GetIDs();
+void SMESH_MeshEditor_i::ExtrusionSweepObject2D(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ extrusionSweep (anElementsId, theStepVector, theNbOfSteps, false, SMDSAbs_Face );
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject2D( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
+}
- TIDSortedElemSet elements;
- ToMap(allElementsId, aMesh, elements);
+//=======================================================================
+//function : ExtrusionSweepMakeGroups
+//purpose :
+//=======================================================================
- const SMESH::PointStruct * P = &theStepVector.PS;
- gp_Vec stepVec( P->x, P->y, P->z );
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::ExtrusionSweepMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::DirStruct& theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepMakeGroups( "
+ << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+ }
+ return extrusionSweep (theIDsOfElements, theStepVector, theNbOfSteps, true );
+}
+//=======================================================================
+//function : ExtrusionSweepObjectMakeGroups
+//purpose :
+//=======================================================================
- ::SMESH_MeshEditor anEditor( myMesh );
- //anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
- TElemOfElemListMap aHystory;
- anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::ExtrusionSweepObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct& theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObjectMakeGroups( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ return extrusionSweep (anElementsId, theStepVector, theNbOfSteps, true );
+}
- StoreResult(anEditor);
+//=======================================================================
+//function : ExtrusionSweepObject1DMakeGroups
+//purpose :
+//=======================================================================
- // Update Python script
- TPythonDump() << "stepVector = " << theStepVector;
- TPythonDump() << this << ".ExtrusionSweepObject1D( "
- << theObject << ", stepVector, " << theNbOfSteps << " )";
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::ExtrusionSweepObject1DMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct& theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject1DMakeGroups( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ return extrusionSweep (anElementsId, theStepVector, theNbOfSteps, true, SMDSAbs_Edge );
}
//=======================================================================
-//function : ExtrusionSweepObject2D
-//purpose :
+//function : ExtrusionSweepObject2DMakeGroups
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::ExtrusionSweepObject2D(SMESH::SMESH_IDSource_ptr theObject,
- const SMESH::DirStruct & theStepVector,
- CORBA::Long theNbOfSteps)
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::ExtrusionSweepObject2DMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct& theStepVector,
+ CORBA::Long theNbOfSteps)
{
- initData();
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject2DMakeGroups( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ return extrusionSweep (anElementsId, theStepVector, theNbOfSteps, true, SMDSAbs_Face );
+}
- SMESHDS_Mesh* aMesh = GetMeshDS();
- SMESH::long_array_var allElementsId = theObject->GetIDs();
+//=======================================================================
+//function : advancedExtrusion
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::advancedExtrusion(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps,
+ CORBA::Long theExtrFlags,
+ CORBA::Double theSewTolerance,
+ const bool theMakeGroups)
+{
+ initData();
TIDSortedElemSet elements;
- ToMap(allElementsId, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements);
const SMESH::PointStruct * P = &theStepVector.PS;
gp_Vec stepVec( P->x, P->y, P->z );
::SMESH_MeshEditor anEditor( myMesh );
- //anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
TElemOfElemListMap aHystory;
- anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
-
- StoreResult(anEditor);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory,
+ theMakeGroups, theExtrFlags, theSewTolerance);
+ storeResult(anEditor);
- // Update Python script
- TPythonDump() << "stepVector = " << theStepVector;
- TPythonDump() << this << ".ExtrusionSweepObject2D( "
- << theObject << ", stepVector, " << theNbOfSteps << " )";
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
}
-
//=======================================================================
//function : AdvancedExtrusion
//purpose :
CORBA::Long theExtrFlags,
CORBA::Double theSewTolerance)
{
- initData();
-
- SMESHDS_Mesh* aMesh = GetMeshDS();
-
- TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
-
- const SMESH::PointStruct * P = &theStepVector.PS;
- gp_Vec stepVec( P->x, P->y, P->z );
-
- ::SMESH_MeshEditor anEditor( myMesh );
- TElemOfElemListMap aHystory;
- anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory,
- theExtrFlags, theSewTolerance);
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".AdvancedExtrusion("
+ << theIDsOfElements
+ << ", stepVector, "
+ << theNbOfSteps << ","
+ << theExtrFlags << ", "
+ << theSewTolerance << " )";
+ }
+ advancedExtrusion( theIDsOfElements,
+ theStepVector,
+ theNbOfSteps,
+ theExtrFlags,
+ theSewTolerance,
+ false);
+}
- StoreResult(anEditor);
+//=======================================================================
+//function : AdvancedExtrusionMakeGroups
+//purpose :
+//=======================================================================
- // Update Python script
- TPythonDump() << "stepVector = " << theStepVector;
- TPythonDump() << this << ".AdvancedExtrusion("
- << theIDsOfElements
- << ", stepVector, "
- << theNbOfSteps << ","
- << theExtrFlags << ", "
- << theSewTolerance << " )";
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::AdvancedExtrusionMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::DirStruct& theStepVector,
+ CORBA::Long theNbOfSteps,
+ CORBA::Long theExtrFlags,
+ CORBA::Double theSewTolerance)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".AdvancedExtrusionMakeGroups("
+ << theIDsOfElements
+ << ", stepVector, "
+ << theNbOfSteps << ","
+ << theExtrFlags << ", "
+ << theSewTolerance << " )";
+ }
+ return advancedExtrusion( theIDsOfElements,
+ theStepVector,
+ theNbOfSteps,
+ theExtrFlags,
+ theSewTolerance,
+ true);
}
+//================================================================================
+/*!
+ * \brief Convert extrusion error to IDL enum
+ */
+//================================================================================
+
#define RETCASE(enm) case ::SMESH_MeshEditor::enm: return SMESH::SMESH_MeshEditor::enm;
static SMESH::SMESH_MeshEditor::Extrusion_Error convExtrError( const::SMESH_MeshEditor::Extrusion_Error e )
return SMESH::SMESH_MeshEditor::EXTR_OK;
}
+
//=======================================================================
-//function : ExtrusionAlongPath
-//purpose :
+//function : extrusionAlongPath
+//purpose :
//=======================================================================
-SMESH::SMESH_MeshEditor::Extrusion_Error
- SMESH_MeshEditor_i::ExtrusionAlongPath(const SMESH::long_array & theIDsOfElements,
- SMESH::SMESH_Mesh_ptr thePathMesh,
- GEOM::GEOM_Object_ptr thePathShape,
- CORBA::Long theNodeStart,
- CORBA::Boolean theHasAngles,
- const SMESH::double_array & theAngles,
- CORBA::Boolean theHasRefPoint,
- const SMESH::PointStruct & theRefPoint)
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::extrusionAlongPath(const SMESH::long_array & theIDsOfElements,
+ SMESH::SMESH_Mesh_ptr thePathMesh,
+ GEOM::GEOM_Object_ptr thePathShape,
+ CORBA::Long theNodeStart,
+ CORBA::Boolean theHasAngles,
+ const SMESH::double_array & theAngles,
+ CORBA::Boolean theHasRefPoint,
+ const SMESH::PointStruct & theRefPoint,
+ const bool theMakeGroups,
+ SMESH::SMESH_MeshEditor::Extrusion_Error & theError)
{
initData();
- SMESHDS_Mesh* aMesh = GetMeshDS();
-
- if ( thePathMesh->_is_nil() || thePathShape->_is_nil() )
- return SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE;
+ if ( thePathMesh->_is_nil() || thePathShape->_is_nil() ) {
+ theError = SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE;
+ return 0;
+ }
+ SMESH_Mesh_i* aMeshImp = SMESH::DownCast<SMESH_Mesh_i*>( thePathMesh );
- SMESH_Mesh_i* aMeshImp = dynamic_cast<SMESH_Mesh_i*>( SMESH_Gen_i::GetServant( thePathMesh ).in() );
TopoDS_Shape aShape = SMESH_Gen_i::GetSMESHGen()->GeomObjectToShape( thePathShape );
SMESH_subMesh* aSubMesh = aMeshImp->GetImpl().GetSubMesh( aShape );
- if ( !aSubMesh || !aSubMesh->GetSubMeshDS())
- return SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE;
+ if ( !aSubMesh || !aSubMesh->GetSubMeshDS()) {
+ theError = SMESH::SMESH_MeshEditor::EXTR_BAD_PATH_SHAPE;
+ return 0;
+ }
SMDS_MeshNode* nodeStart = (SMDS_MeshNode*)aMeshImp->GetImpl().GetMeshDS()->FindNode(theNodeStart);
- if ( !nodeStart )
- return SMESH::SMESH_MeshEditor::EXTR_BAD_STARTING_NODE;
+ if ( !nodeStart ) {
+ theError = SMESH::SMESH_MeshEditor::EXTR_BAD_STARTING_NODE;
+ return 0;
+ }
TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements);
list<double> angles;
for (int i = 0; i < theAngles.length(); i++) {
gp_Pnt refPnt( theRefPoint.x, theRefPoint.y, theRefPoint.z );
- // Update Python script
- TPythonDump() << "rotAngles = " << theAngles;
-
- if ( theHasRefPoint )
- TPythonDump() << "refPoint = SMESH.PointStruct( "
- << refPnt.X() << ", "
- << refPnt.Y() << ", "
- << refPnt.Z() << " )";
- else
- TPythonDump() << "refPoint = SMESH.PointStruct( 0,0,0 )";
-
- TPythonDump() << "error = " << this << ".ExtrusionAlongPath( "
- << theIDsOfElements << ", "
- << thePathMesh << ", "
- << thePathShape << ", "
- << theNodeStart << ", "
- << theHasAngles << ", "
- << "rotAngles" << ", "
- << theHasRefPoint << ", refPoint )";
+ int nbOldGroups = myMesh->NbGroup();
::SMESH_MeshEditor anEditor( myMesh );
- SMESH::SMESH_MeshEditor::Extrusion_Error error =
- convExtrError( anEditor.ExtrusionAlongTrack( elements, aSubMesh, nodeStart,
- theHasAngles, angles,
- theHasRefPoint, refPnt ) );
+ ::SMESH_MeshEditor::Extrusion_Error error =
+ anEditor.ExtrusionAlongTrack( elements, aSubMesh, nodeStart,
+ theHasAngles, angles,
+ theHasRefPoint, refPnt, theMakeGroups );
+ storeResult(anEditor);
+ theError = convExtrError( error );
+
+ if ( theMakeGroups ) {
+ list<int> groupIDs = myMesh->GetGroupIds();
+ list<int>::iterator newBegin = groupIDs.begin();
+ std::advance( newBegin, nbOldGroups ); // skip old groups
+ groupIDs.erase( groupIDs.begin(), newBegin );
+ return getGroups( & groupIDs );
+ }
+ return 0;
+}
- StoreResult(anEditor);
+//=======================================================================
+//function : ExtrusionAlongPath
+//purpose :
+//=======================================================================
- return error;
+SMESH::SMESH_MeshEditor::Extrusion_Error
+ SMESH_MeshEditor_i::ExtrusionAlongPath(const SMESH::long_array & theIDsOfElements,
+ SMESH::SMESH_Mesh_ptr thePathMesh,
+ GEOM::GEOM_Object_ptr thePathShape,
+ CORBA::Long theNodeStart,
+ CORBA::Boolean theHasAngles,
+ const SMESH::double_array & theAngles,
+ CORBA::Boolean theHasRefPoint,
+ const SMESH::PointStruct & theRefPoint)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "rotAngles = " << theAngles;
+
+ if ( theHasRefPoint )
+ TPythonDump() << "refPoint = SMESH.PointStruct( "
+ << theRefPoint.x << ", "
+ << theRefPoint.y << ", "
+ << theRefPoint.z << " )";
+ else
+ TPythonDump() << "refPoint = SMESH.PointStruct( 0,0,0 )";
+
+ TPythonDump() << "error = " << this << ".ExtrusionAlongPath( "
+ << theIDsOfElements << ", "
+ << thePathMesh << ", "
+ << thePathShape << ", "
+ << theNodeStart << ", "
+ << theHasAngles << ", "
+ << "rotAngles" << ", "
+ << theHasRefPoint << ", refPoint )";
+ }
+ SMESH::SMESH_MeshEditor::Extrusion_Error anError;
+ extrusionAlongPath( theIDsOfElements,
+ thePathMesh,
+ thePathShape,
+ theNodeStart,
+ theHasAngles,
+ theAngles,
+ theHasRefPoint,
+ theRefPoint,
+ false,
+ anError);
+ return anError;
}
//=======================================================================
CORBA::Boolean theHasRefPoint,
const SMESH::PointStruct & theRefPoint)
{
- initData();
+ if ( !myPreviewMode ) {
+ TPythonDump() << "rotAngles = " << theAngles;
+ if ( theHasRefPoint )
+ TPythonDump() << "refPoint = SMESH.PointStruct( "
+ << theRefPoint.x << ", "
+ << theRefPoint.y << ", "
+ << theRefPoint.z << " )";
+ else
+ TPythonDump() << "refPoint = SMESH.PointStruct( 0,0,0 )";
+
+ TPythonDump() << "error = " << this << ".ExtrusionAlongPathObject( "
+ << theObject << ", "
+ << thePathMesh << ", "
+ << thePathShape << ", "
+ << theNodeStart << ", "
+ << theHasAngles << ", "
+ << "rotAngles" << ", "
+ << theHasRefPoint << ", refPoint )";
+ }
+ SMESH::SMESH_MeshEditor::Extrusion_Error anError;
SMESH::long_array_var anElementsId = theObject->GetIDs();
- SMESH::SMESH_MeshEditor::Extrusion_Error error = ExtrusionAlongPath
- (anElementsId, thePathMesh, thePathShape, theNodeStart,
- theHasAngles, theAngles, theHasRefPoint, theRefPoint);
+ extrusionAlongPath( anElementsId,
+ thePathMesh,
+ thePathShape,
+ theNodeStart,
+ theHasAngles,
+ theAngles,
+ theHasRefPoint,
+ theRefPoint,
+ false,
+ anError);
+ return anError;
+}
- // Clear python line, created by ExtrusionAlongPath()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
- // Update Python script
- TPythonDump() << "rotAngles = " << theAngles;
- TPythonDump() << "error = " << this << ".ExtrusionAlongPathObject( "
- << theObject << ", "
- << thePathMesh << ", "
- << thePathShape << ", "
- << theNodeStart << ", "
- << theHasAngles << ", "
- << "rotAngles" << ", "
- << theHasRefPoint<<", refPoint )";
+//=======================================================================
+//function : ExtrusionAlongPathMakeGroups
+//purpose :
+//=======================================================================
- return error;
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::ExtrusionAlongPathMakeGroups(const SMESH::long_array& theIDsOfElements,
+ SMESH::SMESH_Mesh_ptr thePathMesh,
+ GEOM::GEOM_Object_ptr thePathShape,
+ CORBA::Long theNodeStart,
+ CORBA::Boolean theHasAngles,
+ const SMESH::double_array& theAngles,
+ CORBA::Boolean theHasRefPoint,
+ const SMESH::PointStruct& theRefPoint,
+ SMESH::SMESH_MeshEditor::Extrusion_Error& Error)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "rotAngles = " << theAngles;
+
+ if ( theHasRefPoint )
+ TPythonDump() << "refPoint = SMESH.PointStruct( "
+ << theRefPoint.x << ", "
+ << theRefPoint.y << ", "
+ << theRefPoint.z << " )";
+ else
+ TPythonDump() << "refPoint = SMESH.PointStruct( 0,0,0 )";
+
+ TPythonDump() << "groups = " << this << ".ExtrusionAlongPathMakeGroups( "
+ << theIDsOfElements << ", "
+ << thePathMesh << ", "
+ << thePathShape << ", "
+ << theNodeStart << ", "
+ << theHasAngles << ", "
+ << "rotAngles" << ", "
+ << theHasRefPoint << ", refPoint )";
+ }
+ return extrusionAlongPath( theIDsOfElements,
+ thePathMesh,
+ thePathShape,
+ theNodeStart,
+ theHasAngles,
+ theAngles,
+ theHasRefPoint,
+ theRefPoint,
+ true,
+ Error);
+}
+
+//=======================================================================
+//function : ExtrusionAlongPathObjectMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups* SMESH_MeshEditor_i::
+ExtrusionAlongPathObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ SMESH::SMESH_Mesh_ptr thePathMesh,
+ GEOM::GEOM_Object_ptr thePathShape,
+ CORBA::Long theNodeStart,
+ CORBA::Boolean theHasAngles,
+ const SMESH::double_array& theAngles,
+ CORBA::Boolean theHasRefPoint,
+ const SMESH::PointStruct& theRefPoint,
+ SMESH::SMESH_MeshEditor::Extrusion_Error& Error)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "rotAngles = " << theAngles;
+
+ if ( theHasRefPoint )
+ TPythonDump() << "refPoint = SMESH.PointStruct( "
+ << theRefPoint.x << ", "
+ << theRefPoint.y << ", "
+ << theRefPoint.z << " )";
+ else
+ TPythonDump() << "refPoint = SMESH.PointStruct( 0,0,0 )";
+
+ TPythonDump() << "groups = " << this << ".ExtrusionAlongPathObjectMakeGroups( "
+ << theObject << ", "
+ << thePathMesh << ", "
+ << thePathShape << ", "
+ << theNodeStart << ", "
+ << theHasAngles << ", "
+ << "rotAngles" << ", "
+ << theHasRefPoint << ", refPoint )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ return extrusionAlongPath( anElementsId,
+ thePathMesh,
+ thePathShape,
+ theNodeStart,
+ theHasAngles,
+ theAngles,
+ theHasRefPoint,
+ theRefPoint,
+ true,
+ Error);
}
//================================================================================
return aResult._retn();
}
+
//=======================================================================
-//function : Mirror
-//purpose :
+//function : mirror
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::Mirror(const SMESH::long_array & theIDsOfElements,
- const SMESH::AxisStruct & theAxis,
- SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
- CORBA::Boolean theCopy)
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::mirror(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
+ CORBA::Boolean theCopy,
+ const bool theMakeGroups,
+ ::SMESH_Mesh* theTargetMesh)
{
initData();
- SMESHDS_Mesh* aMesh = GetMeshDS();
-
TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements);
gp_Pnt P ( theAxis.x, theAxis.y, theAxis.z );
gp_Vec V ( theAxis.vx, theAxis.vy, theAxis.vz );
gp_Trsf aTrsf;
- TCollection_AsciiString typeStr;
switch ( theMirrorType ) {
case SMESH::SMESH_MeshEditor::POINT:
aTrsf.SetMirror( P );
- typeStr = "SMESH.SMESH_MeshEditor.POINT";
break;
case SMESH::SMESH_MeshEditor::AXIS:
aTrsf.SetMirror( gp_Ax1( P, V ));
- typeStr = "SMESH.SMESH_MeshEditor.AXIS";
break;
default:
aTrsf.SetMirror( gp_Ax2( P, V ));
- typeStr = "SMESH.SMESH_MeshEditor.PLANE";
}
- // Update Python script
- TPythonDump() << this << ".Mirror( "
- << theIDsOfElements << ", "
- << theAxis << ", "
- << typeStr << ", "
- << theCopy << " )";
-
::SMESH_MeshEditor anEditor( myMesh );
- anEditor.Transform (elements, aTrsf, theCopy);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.Transform (elements, aTrsf, theCopy, theMakeGroups, theTargetMesh);
if(theCopy) {
- StoreResult(anEditor);
+ storeResult(anEditor);
+ }
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
+}
+
+//=======================================================================
+//function : Mirror
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::Mirror(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
+ CORBA::Boolean theCopy)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << this << ".Mirror( "
+ << theIDsOfElements << ", "
+ << theAxis << ", "
+ << mirrorTypeName(theMirrorType) << ", "
+ << theCopy << " )";
}
+ mirror(theIDsOfElements, theAxis, theMirrorType, theCopy, false);
}
SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
CORBA::Boolean theCopy)
{
- initData();
+ if ( !myPreviewMode ) {
+ TPythonDump() << this << ".MirrorObject( "
+ << theObject << ", "
+ << theAxis << ", "
+ << mirrorTypeName(theMirrorType) << ", "
+ << theCopy << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ mirror(anElementsId, theAxis, theMirrorType, theCopy, false);
+}
+
+//=======================================================================
+//function : MirrorMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::MirrorMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::AxisStruct& theMirror,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << this << ".MirrorMakeGroups( "
+ << theIDsOfElements << ", "
+ << theMirror << ", "
+ << mirrorTypeName(theMirrorType) << " )";
+ }
+ return mirror(theIDsOfElements, theMirror, theMirrorType, true, true);
+}
+//=======================================================================
+//function : MirrorObjectMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::MirrorObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::AxisStruct& theMirror,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << this << ".MirrorObjectMakeGroups( "
+ << theObject << ", "
+ << theMirror << ", "
+ << mirrorTypeName(theMirrorType) << " )";
+ }
SMESH::long_array_var anElementsId = theObject->GetIDs();
- Mirror(anElementsId, theAxis, theMirrorType, theCopy);
+ return mirror(anElementsId, theMirror, theMirrorType, true, true);
+}
- // Clear python line, created by Mirror()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
+//=======================================================================
+//function : MirrorMakeMesh
+//purpose :
+//=======================================================================
- // Update Python script
- TCollection_AsciiString typeStr;
- switch ( theMirrorType ) {
- case SMESH::SMESH_MeshEditor::POINT:
- typeStr = "SMESH.SMESH_MeshEditor.POINT";
- break;
- case SMESH::SMESH_MeshEditor::AXIS:
- typeStr = "SMESH.SMESH_MeshEditor.AXIS";
- break;
- default:
- typeStr = "SMESH.SMESH_MeshEditor.PLANE";
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::MirrorMakeMesh(const SMESH::long_array& theIDsOfElements,
+ const SMESH::AxisStruct& theMirror,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
+{
+ TPythonDump pydump; // to prevent dump at mesh creation
+
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh ))
+ {
+ mirror(theIDsOfElements, theMirror, theMirrorType,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".MirrorMakeMesh( "
+ << theIDsOfElements << ", "
+ << theMirror << ", "
+ << mirrorTypeName(theMirrorType) << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
}
- TPythonDump() << "axis = " << theAxis;
- TPythonDump() << this << ".MirrorObject( "
- << theObject << ", "
- << "axis, "
- << typeStr << ", "
- << theCopy << " )";
+ return mesh._retn();
}
//=======================================================================
-//function : Translate
-//purpose :
+//function : MirrorObjectMakeMesh
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::Translate(const SMESH::long_array & theIDsOfElements,
- const SMESH::DirStruct & theVector,
- CORBA::Boolean theCopy)
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::MirrorObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::AxisStruct& theMirror,
+ SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
{
- initData();
+ TPythonDump pydump; // to prevent dump at mesh creation
- SMESHDS_Mesh* aMesh = GetMeshDS();
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh ))
+ {
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ mirror(anElementsId, theMirror, theMirrorType,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".MirrorObjectMakeMesh( "
+ << theObject << ", "
+ << theMirror << ", "
+ << mirrorTypeName(theMirrorType) << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
+ }
+ return mesh._retn();
+}
+
+//=======================================================================
+//function : translate
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::translate(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theVector,
+ CORBA::Boolean theCopy,
+ const bool theMakeGroups,
+ ::SMESH_Mesh* theTargetMesh)
+{
+ initData();
TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements);
gp_Trsf aTrsf;
const SMESH::PointStruct * P = &theVector.PS;
aTrsf.SetTranslation( gp_Vec( P->x, P->y, P->z ));
::SMESH_MeshEditor anEditor( myMesh );
- anEditor.Transform (elements, aTrsf, theCopy);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.Transform (elements, aTrsf, theCopy, theMakeGroups, theTargetMesh);
- if(theCopy) {
- StoreResult(anEditor);
- }
+ if(theCopy)
+ storeResult(anEditor);
- // Update Python script
- TPythonDump() << "vector = " << theVector;
- TPythonDump() << this << ".Translate( "
- << theIDsOfElements
- << ", vector, "
- << theCopy << " )";
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
+}
+
+//=======================================================================
+//function : Translate
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::Translate(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theVector,
+ CORBA::Boolean theCopy)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "vector = " << theVector;
+ TPythonDump() << this << ".Translate( "
+ << theIDsOfElements
+ << ", vector, "
+ << theCopy << " )";
+ }
+ translate(theIDsOfElements,
+ theVector,
+ theCopy,
+ false);
}
//=======================================================================
const SMESH::DirStruct & theVector,
CORBA::Boolean theCopy)
{
- initData();
+ if ( !myPreviewMode ) {
+ TPythonDump() << this << ".TranslateObject( "
+ << theObject
+ << ", vector, "
+ << theCopy << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ translate(anElementsId,
+ theVector,
+ theCopy,
+ false);
+}
+
+//=======================================================================
+//function : TranslateMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::TranslateMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::DirStruct& theVector)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "vector = " << theVector;
+ TPythonDump() << this << ".TranslateMakeGroups( "
+ << theIDsOfElements
+ << ", vector )";
+ }
+ return translate(theIDsOfElements,theVector,true,true);
+}
+
+//=======================================================================
+//function : TranslateObjectMakeGroups
+//purpose :
+//=======================================================================
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::TranslateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct& theVector)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "vector = " << theVector;
+ TPythonDump() << this << ".TranslateObjectMakeGroups( "
+ << theObject
+ << ", vector )";
+ }
SMESH::long_array_var anElementsId = theObject->GetIDs();
- Translate(anElementsId, theVector, theCopy);
+ return translate(anElementsId, theVector, true, true);
+}
- // Clear python line, created by Translate()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
+//=======================================================================
+//function : TranslateMakeMesh
+//purpose :
+//=======================================================================
- // Update Python script
- TPythonDump() << this << ".TranslateObject( "
- << theObject
- << ", vector, "
- << theCopy << " )";
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::TranslateMakeMesh(const SMESH::long_array& theIDsOfElements,
+ const SMESH::DirStruct& theVector,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
+{
+ TPythonDump pydump; // to prevent dump at mesh creation
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
+
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh )) {
+ translate(theIDsOfElements, theVector,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".TranslateMakeMesh( "
+ << theIDsOfElements << ", "
+ << theVector << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
+ }
+ return mesh._retn();
}
//=======================================================================
-//function : Rotate
-//purpose :
+//function : TranslateObjectMakeMesh
+//purpose :
//=======================================================================
-void SMESH_MeshEditor_i::Rotate(const SMESH::long_array & theIDsOfElements,
- const SMESH::AxisStruct & theAxis,
- CORBA::Double theAngle,
- CORBA::Boolean theCopy)
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::TranslateObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct& theVector,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
{
- initData();
+ TPythonDump pydump; // to prevent dump at mesh creation
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
- SMESHDS_Mesh* aMesh = GetMeshDS();
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh )) {
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ translate(anElementsId, theVector,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".TranslateObjectMakeMesh( "
+ << theObject << ", "
+ << theVector << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
+ }
+ return mesh._retn();
+}
+
+//=======================================================================
+//function : rotate
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::rotate(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ CORBA::Double theAngle,
+ CORBA::Boolean theCopy,
+ const bool theMakeGroups,
+ ::SMESH_Mesh* theTargetMesh)
+{
+ initData();
TIDSortedElemSet elements;
- ToMap(theIDsOfElements, aMesh, elements);
+ arrayToSet(theIDsOfElements, GetMeshDS(), elements);
gp_Pnt P ( theAxis.x, theAxis.y, theAxis.z );
gp_Vec V ( theAxis.vx, theAxis.vy, theAxis.vz );
aTrsf.SetRotation( gp_Ax1( P, V ), theAngle);
::SMESH_MeshEditor anEditor( myMesh );
- anEditor.Transform (elements, aTrsf, theCopy);
+ ::SMESH_MeshEditor::PGroupIDs groupIds =
+ anEditor.Transform (elements, aTrsf, theCopy, theMakeGroups, theTargetMesh);
if(theCopy) {
- StoreResult(anEditor);
+ storeResult(anEditor);
}
+ return theMakeGroups ? getGroups(groupIds.get()) : 0;
+}
- // Update Python script
- TPythonDump() << "axis = " << theAxis;
- TPythonDump() << this << ".Rotate( "
- << theIDsOfElements
- << ", axis, "
- << theAngle << ", "
- << theCopy << " )";
+//=======================================================================
+//function : Rotate
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::Rotate(const SMESH::long_array & theIDsOfElements,
+ const SMESH::AxisStruct & theAxis,
+ CORBA::Double theAngle,
+ CORBA::Boolean theCopy)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".Rotate( "
+ << theIDsOfElements
+ << ", axis, "
+ << theAngle << ", "
+ << theCopy << " )";
+ }
+ rotate(theIDsOfElements,
+ theAxis,
+ theAngle,
+ theCopy,
+ false);
}
//=======================================================================
CORBA::Double theAngle,
CORBA::Boolean theCopy)
{
- initData();
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotateObject( "
+ << theObject
+ << ", axis, "
+ << theAngle << ", "
+ << theCopy << " )";
+ }
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ rotate(anElementsId,
+ theAxis,
+ theAngle,
+ theCopy,
+ false);
+}
+
+//=======================================================================
+//function : RotateMakeGroups
+//purpose :
+//=======================================================================
+
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::RotateMakeGroups(const SMESH::long_array& theIDsOfElements,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngle)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotateMakeGroups( "
+ << theIDsOfElements
+ << ", axis, "
+ << theAngle << " )";
+ }
+ return rotate(theIDsOfElements,theAxis,theAngle,true,true);
+}
+
+//=======================================================================
+//function : RotateObjectMakeGroups
+//purpose :
+//=======================================================================
+SMESH::ListOfGroups*
+SMESH_MeshEditor_i::RotateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngle)
+{
+ if ( !myPreviewMode ) {
+ TPythonDump() << "axis = " << theAxis;
+ TPythonDump() << this << ".RotateObjectMakeGroups( "
+ << theObject
+ << ", axis, "
+ << theAngle << " )";
+ }
SMESH::long_array_var anElementsId = theObject->GetIDs();
- Rotate(anElementsId, theAxis, theAngle, theCopy);
+ return rotate(anElementsId,theAxis,theAngle,true,true);
+}
- // Clear python line, created by Rotate()
- SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
- aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
+//=======================================================================
+//function : RotateMakeMesh
+//purpose :
+//=======================================================================
- // Update Python script
- TPythonDump() << this << ".RotateObject( "
- << theObject
- << ", axis, "
- << theAngle << ", "
- << theCopy << " )";
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::RotateMakeMesh(const SMESH::long_array& theIDsOfElements,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
+{
+ TPythonDump pydump; // to prevent dump at mesh creation
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
+
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh )) {
+ rotate(theIDsOfElements, theAxis, theAngleInRadians,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".RotateMakeMesh( "
+ << theIDsOfElements << ", "
+ << theAxis << ", "
+ << theAngleInRadians << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
+ }
+ return mesh._retn();
+}
+
+//=======================================================================
+//function : RotateObjectMakeMesh
+//purpose :
+//=======================================================================
+
+SMESH::SMESH_Mesh_ptr
+SMESH_MeshEditor_i::RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::AxisStruct& theAxis,
+ CORBA::Double theAngleInRadians,
+ CORBA::Boolean theCopyGroups,
+ const char* theMeshName)
+{
+ TPythonDump pydump; // to prevent dump at mesh creation
+ SMESH::SMESH_Mesh_var mesh = makeMesh( theMeshName );
+
+ if ( SMESH_Mesh_i* mesh_i = SMESH::DownCast<SMESH_Mesh_i*>( mesh )) {
+ SMESH::long_array_var anElementsId = theObject->GetIDs();
+ rotate(anElementsId, theAxis, theAngleInRadians,
+ false, theCopyGroups, & mesh_i->GetImpl());
+ mesh_i->CreateGroupServants();
+ }
+ if ( !myPreviewMode ) {
+ pydump << mesh << " = " << this << ".RotateObjectMakeMesh( "
+ << theObject << ", "
+ << theAxis << ", "
+ << theAngleInRadians << ", "
+ << theCopyGroups << ", '"
+ << theMeshName << "' )";
+ }
+ return mesh._retn();
}
//=======================================================================
for ( CORBA::Long i = 0; llIt != aListOfListOfNodes.end(); llIt++, i++ ) {
list< const SMDS_MeshNode* >& aListOfNodes = *llIt;
list< const SMDS_MeshNode* >::iterator lIt = aListOfNodes.begin();;
- SMESH::long_array& aGroup = (*GroupsOfNodes)[i];
+ SMESH::long_array& aGroup = (*GroupsOfNodes)[ i ];
aGroup.length( aListOfNodes.size() );
for ( int j = 0; lIt != aListOfNodes.end(); lIt++, j++ )
aGroup[ j ] = (*lIt)->GetID();
}
- // Update Python script
TPythonDump() << "coincident_nodes = " << this << ".FindCoincidentNodes( "
<< Tolerance << " )";
}
for ( CORBA::Long i = 0; llIt != aListOfListOfNodes.end(); llIt++, i++ ) {
list< const SMDS_MeshNode* >& aListOfNodes = *llIt;
list< const SMDS_MeshNode* >::iterator lIt = aListOfNodes.begin();;
- SMESH::long_array& aGroup = GroupsOfNodes[ i ];
+ SMESH::long_array& aGroup = (*GroupsOfNodes)[ i ];
aGroup.length( aListOfNodes.size() );
for ( int j = 0; lIt != aListOfNodes.end(); lIt++, j++ )
aGroup[ j ] = (*lIt)->GetID();
}
- // Update Python script
TPythonDump() << "coincident_nodes_on_part = " << this << ".FindCoincidentNodesOnPart( "
<<theObject<<", "
<< Tolerance << " )";
::SMESH_MeshEditor anEditor( myMesh );
anEditor.MergeNodes( aListOfListOfNodes );
- // Update Python script
aTPythonDump << "])";
}
::SMESH_MeshEditor::TListOfListOfElementsID::iterator arraysIt = aListOfListOfElementsID.begin();
for (CORBA::Long j = 0; arraysIt != aListOfListOfElementsID.end(); ++arraysIt, ++j) {
- SMESH::long_array& aGroup = GroupsOfElementsID[ j ];
+ SMESH::long_array& aGroup = (*GroupsOfElementsID)[ j ];
TListOfIDs& listOfIDs = *arraysIt;
aGroup.length( listOfIDs.size() );
TListOfIDs::iterator idIt = listOfIDs.begin();
}
}
- // Update Python script
TPythonDump() << "equal_elements = " << this << ".FindEqualElements( "
<<theObject<<" )";
}
::SMESH_MeshEditor anEditor( myMesh );
anEditor.MergeElements(aListOfListOfElementsID);
- // Update Python script
aTPythonDump << "] )";
}
::SMESH_MeshEditor anEditor( myMesh );
anEditor.MergeEqualElements();
- // Update Python script
TPythonDump() << this << ".MergeEqualElements()";
}
tmpMesh.GetMeshDS()->MoveNode(node, x, y, z);
// fill preview data
::SMESH_MeshEditor anEditor( & tmpMesh );
- StoreResult( anEditor );
+ storeResult( anEditor );
}
else
{
}
if ( !myPreviewMode ) {
- // Update Python script
TPythonDump() << "nodeID = " << this
<< ".MoveClosestNodeToPoint( "<< x << ", " << y << ", " << z << " )";
}
!aSide2ThirdNode)
return SMESH::SMESH_MeshEditor::SEW_BORDER2_NOT_FOUND;
- // Update Python script
TPythonDump() << "error = " << this << ".SewFreeBorders( "
<< FirstNodeID1 << ", "
<< SecondNodeID1 << ", "
CreatePolygons,
CreatePolyedrs) );
- StoreResult(anEditor);
+ storeResult(anEditor);
return error;
}
!aSide2SecondNode)
return SMESH::SMESH_MeshEditor::SEW_BORDER2_NOT_FOUND;
- // Update Python script
TPythonDump() << "error = " << this << ".SewConformFreeBorders( "
<< FirstNodeID1 << ", "
<< SecondNodeID1 << ", "
true,
false, false) );
- StoreResult(anEditor);
+ storeResult(anEditor);
return error;
}
!aSide2SecondNode)
return SMESH::SMESH_MeshEditor::SEW_BAD_SIDE_NODES;
- // Update Python script
TPythonDump() << "error = " << this << ".SewBorderToSide( "
<< FirstNodeIDOnFreeBorder << ", "
<< SecondNodeIDOnFreeBorder << ", "
CreatePolygons,
CreatePolyedrs) );
- StoreResult(anEditor);
+ storeResult(anEditor);
return error;
}
return SMESH::SMESH_MeshEditor::SEW_BAD_SIDE2_NODES;
TIDSortedElemSet aSide1Elems, aSide2Elems;
- ToMap(IDsOfSide1Elements, aMesh, aSide1Elems);
- ToMap(IDsOfSide2Elements, aMesh, aSide2Elems);
+ arrayToSet(IDsOfSide1Elements, aMesh, aSide1Elems);
+ arrayToSet(IDsOfSide2Elements, aMesh, aSide2Elems);
- // Update Python script
TPythonDump() << "error = " << this << ".SewSideElements( "
<< IDsOfSide1Elements << ", "
<< IDsOfSide2Elements << ", "
aSecondNode1ToMerge,
aSecondNode2ToMerge));
- StoreResult(anEditor);
+ storeResult(anEditor);
return error;
}
int nbn = newIDs.length();
int i=0;
- vector<const SMDS_MeshNode*> aNodes (nbn);
+ vector<const SMDS_MeshNode*> aNodes(nbn);
int nbn1=-1;
for(; i<nbn; i++) {
const SMDS_MeshNode* aNode = GetMeshDS()->FindNode(newIDs[i]);
aNodes[nbn1] = aNode;
}
}
- // Update Python script
TPythonDump() << "isDone = " << this << ".ChangeElemNodes( "
<< ide << ", " << newIDs << " )";
#ifdef _DEBUG_
TPythonDump() << "print 'ChangeElemNodes: ', isDone";
#endif
- return GetMeshDS()->ChangeElementNodes( elem, &aNodes[0], nbn1+1 );
+ return GetMeshDS()->ChangeElementNodes( elem, & aNodes[0], nbn1+1 );
}
//================================================================================
*/
//================================================================================
-void SMESH_MeshEditor_i::StoreResult(::SMESH_MeshEditor& anEditor)
+void SMESH_MeshEditor_i::storeResult(::SMESH_MeshEditor& anEditor)
{
if ( myPreviewMode ) { // --- MeshPreviewStruct filling ---
{
::SMESH_MeshEditor anEditor( myMesh );
anEditor.ConvertToQuadratic(theForce3d);
- // Update Python script
TPythonDump() << this << ".ConvertToQuadratic( " << theForce3d << " )";
}
//=======================================================================
//function : ConvertFromQuadratic
-//purpose :
+//purpose :
//=======================================================================
CORBA::Boolean SMESH_MeshEditor_i::ConvertFromQuadratic()
{
::SMESH_MeshEditor anEditor( myMesh );
CORBA::Boolean isDone = anEditor.ConvertFromQuadratic();
- // Update Python script
TPythonDump() << this << ".ConvertFromQuadratic()";
return isDone;
}
+
+//=======================================================================
+//function : makeMesh
+//purpose : create a named imported mesh
+//=======================================================================
+
+SMESH::SMESH_Mesh_ptr SMESH_MeshEditor_i::makeMesh(const char* theMeshName)
+{
+ SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen();
+ SMESH::SMESH_Mesh_var mesh = gen->CreateEmptyMesh();
+ SALOMEDS::Study_var study = gen->GetCurrentStudy();
+ SALOMEDS::SObject_var meshSO = gen->ObjectToSObject( study, mesh );
+ gen->SetName( meshSO, theMeshName, "Mesh" );
+
+ SALOMEDS::StudyBuilder_var builder = study->NewBuilder();
+ SALOMEDS::GenericAttribute_var anAttr
+ = builder->FindOrCreateAttribute( meshSO, "AttributePixMap" );
+ SALOMEDS::AttributePixMap::_narrow( anAttr )->SetPixMap( "ICON_SMESH_TREE_MESH_IMPORTED" );
+
+ return mesh._retn();
+}
#include "SMESH_Mesh.hxx"
+#include <list>
+
class SMESH_MeshEditor;
+class SMESH_Mesh_i;
-class SMESH_I_EXPORT SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor
+class SMESH_MeshEditor_i: public POA_SMESH::SMESH_MeshEditor
{
public:
- SMESH_MeshEditor_i(SMESH_Mesh * theMesh, bool isPreview);
+ SMESH_MeshEditor_i(SMESH_Mesh_i * theMesh, bool isPreview);
virtual ~ SMESH_MeshEditor_i();
const SMESH::long_array & Quantities);
CORBA::Long AddPolyhedralVolumeByFaces(const SMESH::long_array & IdsOfFaces);
+ /*!
+ * \brief Bind a node to a vertex
+ * \param NodeID - node ID
+ * \param VertexID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetNodeOnVertex(CORBA::Long NodeID, CORBA::Long VertexID)
+ throw (SALOME::SALOME_Exception);
+ /*!
+ * \brief Store node position on an edge
+ * \param NodeID - node ID
+ * \param EdgeID - edge ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param paramOnEdge - parameter on edge where the node is located
+ */
+ void SetNodeOnEdge(CORBA::Long NodeID, CORBA::Long EdgeID,
+ CORBA::Double paramOnEdge)
+ throw (SALOME::SALOME_Exception);
+ /*!
+ * \brief Store node position on a face
+ * \param NodeID - node ID
+ * \param FaceID - face ID available through GEOM_Object.GetSubShapeIndices()[0]
+ * \param u - U parameter on face where the node is located
+ * \param v - V parameter on face where the node is located
+ */
+ void SetNodeOnFace(CORBA::Long NodeID, CORBA::Long FaceID,
+ CORBA::Double u, CORBA::Double v)
+ throw (SALOME::SALOME_Exception);
+ /*!
+ * \brief Bind a node to a solid
+ * \param NodeID - node ID
+ * \param SolidID - vertex ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetNodeInVolume(CORBA::Long NodeID, CORBA::Long SolidID)
+ throw (SALOME::SALOME_Exception);
+ /*!
+ * \brief Bind an element to a shape
+ * \param ElementID - element ID
+ * \param ShapeID - shape ID available through GEOM_Object.GetSubShapeIndices()[0]
+ */
+ void SetMeshElementOnShape(CORBA::Long ElementID, CORBA::Long ShapeID)
+ throw (SALOME::SALOME_Exception);
+
+
CORBA::Boolean MoveNode(CORBA::Long NodeID,
CORBA::Double x, CORBA::Double y, CORBA::Double z);
CORBA::Double Angle,
CORBA::Boolean Copy);
+ SMESH::ListOfGroups* RotationSweepMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::AxisStruct& Axix,
+ CORBA::Double AngleInRadians,
+ CORBA::Long NbOfSteps,
+ CORBA::Double Tolerance);
+ SMESH::ListOfGroups* RotationSweepObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::AxisStruct& Axix,
+ CORBA::Double AngleInRadians,
+ CORBA::Long NbOfSteps,
+ CORBA::Double Tolerance);
+ SMESH::ListOfGroups* ExtrusionSweepMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::DirStruct& StepVector,
+ CORBA::Long NbOfSteps);
+ SMESH::ListOfGroups* AdvancedExtrusionMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::DirStruct& StepVector,
+ CORBA::Long NbOfSteps,
+ CORBA::Long ExtrFlags,
+ CORBA::Double SewTolerance);
+ SMESH::ListOfGroups* ExtrusionSweepObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::DirStruct& StepVector,
+ CORBA::Long NbOfSteps);
+ SMESH::ListOfGroups* ExtrusionSweepObject1DMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::DirStruct& StepVector,
+ CORBA::Long NbOfSteps);
+ SMESH::ListOfGroups* ExtrusionSweepObject2DMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::DirStruct& StepVector,
+ CORBA::Long NbOfSteps);
+ SMESH::ListOfGroups* ExtrusionAlongPathMakeGroups(const SMESH::long_array& IDsOfElements,
+ SMESH::SMESH_Mesh_ptr PathMesh,
+ GEOM::GEOM_Object_ptr PathShape,
+ CORBA::Long NodeStart,
+ CORBA::Boolean HasAngles,
+ const SMESH::double_array& Angles,
+ CORBA::Boolean HasRefPoint,
+ const SMESH::PointStruct& RefPoint,
+ SMESH::SMESH_MeshEditor::Extrusion_Error& Error);
+ SMESH::ListOfGroups* ExtrusionAlongPathObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ SMESH::SMESH_Mesh_ptr PathMesh,
+ GEOM::GEOM_Object_ptr PathShape,
+ CORBA::Long NodeStart,
+ CORBA::Boolean HasAngles,
+ const SMESH::double_array& Angles,
+ CORBA::Boolean HasRefPoint,
+ const SMESH::PointStruct& RefPoint,
+ SMESH::SMESH_MeshEditor::Extrusion_Error& Error);
+ SMESH::ListOfGroups* MirrorMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::AxisStruct& Mirror,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType);
+ SMESH::ListOfGroups* MirrorObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::AxisStruct& Mirror,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType);
+ SMESH::ListOfGroups* TranslateMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::DirStruct& Vector);
+ SMESH::ListOfGroups* TranslateObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::DirStruct& Vector);
+ SMESH::ListOfGroups* RotateMakeGroups(const SMESH::long_array& IDsOfElements,
+ const SMESH::AxisStruct& Axis,
+ CORBA::Double AngleInRadians);
+ SMESH::ListOfGroups* RotateObjectMakeGroups(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::AxisStruct& Axis,
+ CORBA::Double AngleInRadians);
+
+ SMESH::SMESH_Mesh_ptr MirrorMakeMesh(const SMESH::long_array& IDsOfElements,
+ const SMESH::AxisStruct& Mirror,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+ SMESH::SMESH_Mesh_ptr MirrorObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::AxisStruct& Mirror,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+ SMESH::SMESH_Mesh_ptr TranslateMakeMesh(const SMESH::long_array& IDsOfElements,
+ const SMESH::DirStruct& Vector,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+ SMESH::SMESH_Mesh_ptr TranslateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::DirStruct& Vector,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+ SMESH::SMESH_Mesh_ptr RotateMakeMesh(const SMESH::long_array& IDsOfElements,
+ const SMESH::AxisStruct& Axis,
+ CORBA::Double AngleInRadians,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+ SMESH::SMESH_Mesh_ptr RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr Object,
+ const SMESH::AxisStruct& Axis,
+ CORBA::Double AngleInRadians,
+ CORBA::Boolean CopyGroups,
+ const char* MeshName);
+
void FindCoincidentNodes (CORBA::Double Tolerance,
SMESH::array_of_long_array_out GroupsOfNodes);
- void FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr theObject,
+ void FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr Object,
CORBA::Double Tolerance,
SMESH::array_of_long_array_out GroupsOfNodes);
void MergeNodes (const SMESH::array_of_long_array& GroupsOfNodes);
- void FindEqualElements(SMESH::SMESH_IDSource_ptr theObject,
- SMESH::array_of_long_array_out GroupsOfElementsID);
+ void FindEqualElements(SMESH::SMESH_IDSource_ptr Object,
+ SMESH::array_of_long_array_out GroupsOfElementsID);
void MergeElements(const SMESH::array_of_long_array& GroupsOfElementsID);
void MergeEqualElements();
CORBA::Long MoveClosestNodeToPoint(CORBA::Double x,
SMESH::SMESH_MeshEditor::Sew_Error
- SewFreeBorders(CORBA::Long FirstNodeID1,
- CORBA::Long SecondNodeID1,
- CORBA::Long LastNodeID1,
- CORBA::Long FirstNodeID2,
- CORBA::Long SecondNodeID2,
- CORBA::Long LastNodeID2,
- CORBA::Boolean CreatePolygons,
- CORBA::Boolean CreatePolyedrs);
+ SewFreeBorders(CORBA::Long FirstNodeID1,
+ CORBA::Long SecondNodeID1,
+ CORBA::Long LastNodeID1,
+ CORBA::Long FirstNodeID2,
+ CORBA::Long SecondNodeID2,
+ CORBA::Long LastNodeID2,
+ CORBA::Boolean CreatePolygons,
+ CORBA::Boolean CreatePolyedrs);
SMESH::SMESH_MeshEditor::Sew_Error
- SewConformFreeBorders(CORBA::Long FirstNodeID1,
- CORBA::Long SecondNodeID1,
- CORBA::Long LastNodeID1,
- CORBA::Long FirstNodeID2,
- CORBA::Long SecondNodeID2);
+ SewConformFreeBorders(CORBA::Long FirstNodeID1,
+ CORBA::Long SecondNodeID1,
+ CORBA::Long LastNodeID1,
+ CORBA::Long FirstNodeID2,
+ CORBA::Long SecondNodeID2);
SMESH::SMESH_MeshEditor::Sew_Error
- SewBorderToSide(CORBA::Long FirstNodeIDOnFreeBorder,
- CORBA::Long SecondNodeIDOnFreeBorder,
- CORBA::Long LastNodeIDOnFreeBorder,
- CORBA::Long FirstNodeIDOnSide,
- CORBA::Long LastNodeIDOnSide,
- CORBA::Boolean CreatePolygons,
- CORBA::Boolean CreatePolyedrs);
+ SewBorderToSide(CORBA::Long FirstNodeIDOnFreeBorder,
+ CORBA::Long SecondNodeIDOnFreeBorder,
+ CORBA::Long LastNodeIDOnFreeBorder,
+ CORBA::Long FirstNodeIDOnSide,
+ CORBA::Long LastNodeIDOnSide,
+ CORBA::Boolean CreatePolygons,
+ CORBA::Boolean CreatePolyedrs);
SMESH::SMESH_MeshEditor::Sew_Error
- SewSideElements(const SMESH::long_array& IDsOfSide1Elements,
- const SMESH::long_array& IDsOfSide2Elements,
- CORBA::Long NodeID1OfSide1ToMerge,
- CORBA::Long NodeID1OfSide2ToMerge,
- CORBA::Long NodeID2OfSide1ToMerge,
- CORBA::Long NodeID2OfSide2ToMerge);
+ SewSideElements(const SMESH::long_array& IDsOfSide1Elements,
+ const SMESH::long_array& IDsOfSide2Elements,
+ CORBA::Long NodeID1OfSide1ToMerge,
+ CORBA::Long NodeID1OfSide2ToMerge,
+ CORBA::Long NodeID2OfSide1ToMerge,
+ CORBA::Long NodeID2OfSide2ToMerge);
/*!
* Set new nodes for given element.
*/
SMESH::long_array* GetLastCreatedElems();
- //
- // Internal methods
- //
-
- /*!
- * \brief Update myLastCreated* or myPreviewData
- * \param anEditor - it contains edition results
- */
- void StoreResult(::SMESH_MeshEditor& anEditor);
-
/*!
* \brief Return edited mesh ID
* \retval int - mesh ID
*/
int GetMeshId() const { return myMesh->GetId(); }
- private:
+
+private: //!< private methods
SMESHDS_Mesh * GetMeshDS() { return myMesh->GetMeshDS(); }
+
+ /*!
+ * \brief Update myLastCreated* or myPreviewData
+ * \param anEditor - it contains edition results
+ */
+ void storeResult(::SMESH_MeshEditor& anEditor);
+ /*!
+ * \brief Clear myLastCreated* or myPreviewData
+ */
void initData();
+ /*!
+ * \brief Return groups by their IDs
+ */
+ SMESH::ListOfGroups* getGroups(const std::list<int>* groupIDs);
+
+ SMESH::ListOfGroups* rotationSweep(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ CORBA::Double AngleInRadians,
+ CORBA::Long NbOfSteps,
+ CORBA::Double Tolerance,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* extrusionSweep(const SMESH::long_array & IDsOfElements,
+ const SMESH::DirStruct & StepVector,
+ CORBA::Long NbOfSteps,
+ const bool MakeGroups,
+ const SMDSAbs_ElementType ElementType=SMDSAbs_All);
+ SMESH::ListOfGroups* advancedExtrusion(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps,
+ CORBA::Long theExtrFlags,
+ CORBA::Double theSewTolerance,
+ const bool MakeGroups);
+ SMESH::ListOfGroups* extrusionAlongPath(const SMESH::long_array & IDsOfElements,
+ SMESH::SMESH_Mesh_ptr PathMesh,
+ GEOM::GEOM_Object_ptr PathShape,
+ CORBA::Long NodeStart,
+ CORBA::Boolean HasAngles,
+ const SMESH::double_array & Angles,
+ CORBA::Boolean HasRefPoint,
+ const SMESH::PointStruct & RefPoint,
+ const bool MakeGroups,
+ SMESH::SMESH_MeshEditor::Extrusion_Error & Error);
+ SMESH::ListOfGroups* mirror(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ SMESH::SMESH_MeshEditor::MirrorType MirrorType,
+ CORBA::Boolean Copy,
+ const bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0);
+ SMESH::ListOfGroups* translate(const SMESH::long_array & IDsOfElements,
+ const SMESH::DirStruct & Vector,
+ CORBA::Boolean Copy,
+ const bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0);
+ SMESH::ListOfGroups* rotate(const SMESH::long_array & IDsOfElements,
+ const SMESH::AxisStruct & Axis,
+ CORBA::Double Angle,
+ CORBA::Boolean Copy,
+ const bool MakeGroups,
+ ::SMESH_Mesh* TargetMesh=0);
+
+ SMESH::SMESH_Mesh_ptr makeMesh(const char* theMeshName);
+
+private: //!< fields
+
+ SMESH_Mesh_i* myMesh_i;
SMESH_Mesh * myMesh;
SMESH::long_array_var myLastCreatedElems;
// $Header$
#include "SMESH_Mesh_i.hxx"
-#include "SMESH_subMesh_i.hxx"
-#include "SMESH_MEDMesh_i.hxx"
-#include "SMESH_Group_i.hxx"
+
#include "SMESH_Filter_i.hxx"
+#include "SMESH_Gen_i.hxx"
+#include "SMESH_Group_i.hxx"
+#include "SMESH_MEDMesh_i.hxx"
+#include "SMESH_MeshEditor_i.hxx"
#include "SMESH_PythonDump.hxx"
+#include "SMESH_subMesh_i.hxx"
-#include "Utils_CorbaException.hxx"
-#include "Utils_ExceptHandlers.hxx"
-#include "utilities.h"
-
-#include "SALOME_NamingService.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "OpUtil.hxx"
-
-#include "SMESHDS_Command.hxx"
-#include "SMESHDS_CommandType.hxx"
-#include "SMESH_MeshEditor_i.hxx"
-#include "SMESH_Gen_i.hxx"
#include "DriverMED_R_SMESHDS_Mesh.h"
-//#include "SMDS_ElemIterator.hxx"
+#include "DriverMED_W_SMESHDS_Mesh.h"
#include "SMDS_VolumeTool.hxx"
-#include "SMESH_MesherHelper.hxx"
+#include "SMESHDS_Command.hxx"
+#include "SMESHDS_CommandType.hxx"
+#include "SMESHDS_GroupOnGeom.hxx"
+#include "SMESH_Group.hxx"
#include "SMESH_MeshEditor.hxx"
+#include "SMESH_MesherHelper.hxx"
+#include "SMDS_EdgePosition.hxx"
+#include "SMDS_FacePosition.hxx"
+
+#include "OpUtil.hxx"
+#include "SALOME_NamingService.hxx"
+#include "Utils_CorbaException.hxx"
+#include "Utils_ExceptHandlers.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "utilities.h"
// OCCT Includes
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
+#include <BRep_Builder.hxx>
#include <OSD_Directory.hxx>
+#include <OSD_File.hxx>
+#include <OSD_Path.hxx>
#include <OSD_Protection.hxx>
-#include <TColStd_MapOfInteger.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
+#include <TColStd_MapOfInteger.hxx>
#include <TColStd_SequenceOfInteger.hxx>
-#include "TCollection_AsciiString.hxx"
+#include <TCollection_AsciiString.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS_Compound.hxx>
// STL Includes
#include <string>
Unexpect aCatch(SALOME_SalomeException);
int status;
try {
- status = importMEDFile( theFileName, theMeshName );
+ status = _impl->MEDToMesh( theFileName, theMeshName );
}
catch( SALOME_Exception& S_ex ) {
THROW_SALOME_CORBA_EXCEPTION(S_ex.what(), SALOME::BAD_PARAM);
THROW_SALOME_CORBA_EXCEPTION("ImportMEDFile(): unknown exception", SALOME::BAD_PARAM);
}
- SALOMEDS::Study_ptr aStudy = _gen_i->GetCurrentStudy();
- if ( !aStudy->_is_nil() ) {
- // publishing of the groups in the study (sub-meshes are out of scope of MED import)
- map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.begin();
- for (; it != _mapGroups.end(); it++ ) {
- SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_duplicate( it->second );
- _gen_i->PublishGroup( aStudy, _this(), aGroup,
- GEOM::GEOM_Object::_nil(), aGroup->GetName());
- }
- }
+ CreateGroupServants();
+
return ConvertDriverMEDReadStatus(status);
}
+//================================================================================
+/*!
+ * \brief Return string representation of a MED file version comprising nbDigits
+ */
+//================================================================================
+
+char* SMESH_Mesh_i::GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits)
+{
+ std::string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(MED::EVersion(version),
+ nbDigits);
+ return CORBA::string_dup( ver.c_str() );
+}
+
//=============================================================================
/*!
* ImportUNVFile
CreateGroupServants();
- SALOMEDS::Study_ptr aStudy = _gen_i->GetCurrentStudy();
- if ( !aStudy->_is_nil() ) {
- // publishing of the groups in the study (sub-meshes are out of scope of UNV import)
- map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.begin();
- for (; it != _mapGroups.end(); it++ ) {
- SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_duplicate( it->second );
- _gen_i->PublishGroup( aStudy, _this(), aGroup,
- GEOM::GEOM_Object::_nil(), aGroup->GetName());
- }
- }
return 1;
}
*/
//=============================================================================
-int SMESH_Mesh_i::importMEDFile( const char* theFileName, const char* theMeshName )
-{
- // Read mesh with name = <theMeshName> and all its groups into SMESH_Mesh
- int status = _impl->MEDToMesh( theFileName, theMeshName );
- CreateGroupServants();
+// int SMESH_Mesh_i::importMEDFile( const char* theFileName, const char* theMeshName )
+// {
+// // Read mesh with name = <theMeshName> and all its groups into SMESH_Mesh
+// int status = _impl->MEDToMesh( theFileName, theMeshName );
+// CreateGroupServants();
- return status;
-}
+// return status;
+// }
//=============================================================================
/*!
if(MYDEBUG) MESSAGE( " AddHypothesis(): status = " << status );
// Update Python script
- TPythonDump() << "status = " << _this() << ".AddHypothesis( "
- << aSubShapeObject << ", " << anHyp << " )";
-
+ if(_impl->HasShapeToMesh()) {
+ TPythonDump() << "status = " << _this() << ".AddHypothesis( "
+ << aSubShapeObject << ", " << anHyp << " )";
+ }
+ else {
+ TPythonDump() << "status = " << _this() << ".AddHypothesis( "<< anHyp << " )";
+ }
+
return ConvertHypothesisStatus(status);
}
{
if(MYDEBUG) MESSAGE("addHypothesis");
- if (CORBA::is_nil(aSubShapeObject))
+ if (CORBA::is_nil(aSubShapeObject) && HasShapeToMesh())
THROW_SALOME_CORBA_EXCEPTION("bad subShape reference",
SALOME::BAD_PARAM);
SMESH_Hypothesis::Hypothesis_Status status = SMESH_Hypothesis::HYP_OK;
try
{
- TopoDS_Shape myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+ TopoDS_Shape myLocSubShape;
+ //use PseudoShape in case if mesh has no shape
+ if(HasShapeToMesh())
+ myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+ else
+ myLocSubShape = _impl->GetShapeToMesh();
+
int hypId = myHyp->GetId();
status = _impl->AddHypothesis(myLocSubShape, hypId);
if ( !SMESH_Hypothesis::IsStatusFatal(status) ) {
aSubShapeObject, anHyp );
// Update Python script
+ // Update Python script
+ if(_impl->HasShapeToMesh()) {
TPythonDump() << "status = " << _this() << ".RemoveHypothesis( "
<< aSubShapeObject << ", " << anHyp << " )";
+ }
+ else {
+ TPythonDump() << "status = " << _this() << ".RemoveHypothesis( "
+ << anHyp << " )";
+ }
return ConvertHypothesisStatus(status);
}
if(MYDEBUG) MESSAGE("removeHypothesis()");
// **** proposer liste de subShape (selection multiple)
- if (CORBA::is_nil(aSubShapeObject))
+ if (CORBA::is_nil(aSubShapeObject) && HasShapeToMesh())
THROW_SALOME_CORBA_EXCEPTION("bad subShape reference",
SALOME::BAD_PARAM);
SMESH_Hypothesis::Hypothesis_Status status = SMESH_Hypothesis::HYP_OK;
try
{
- TopoDS_Shape myLocSubShape = _gen_i->GeomObjectToShape(aSubShapeObject);
- int hypId = myHyp->GetId();
+ TopoDS_Shape myLocSubShape;
+ //use PseudoShape in case if mesh has no shape
+ if(HasShapeToMesh())
+ myLocSubShape = _gen_i->GeomObjectToShape( aSubShapeObject);
+ else
+ myLocSubShape = _impl->GetShapeToMesh();
+
+ int hypId = myHyp->GetId();
status = _impl->RemoveHypothesis(myLocSubShape, hypId);
if ( !SMESH_Hypothesis::IsStatusFatal(status) )
_mapHypo.erase( hypId );
return aList._retn();
}
+//=============================================================================
+/*!
+ * Get number of groups existing in the mesh
+ */
+//=============================================================================
+
+CORBA::Long SMESH_Mesh_i::NbGroups() throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ return _mapGroups.size();
+}
//=============================================================================
/*! UnionGroups
return aResGrp._retn();
}
+//================================================================================
+/*!
+ * \brief Return group items of a group present in a study
+ */
+//================================================================================
+
+static GEOM::GEOM_Object_ptr getGroupItemsFromStudy(CORBA::Object_ptr theMesh,
+ SMESH_Gen_i* theGen,
+ list<TopoDS_Shape> & theItems)
+{
+ GEOM::GEOM_Object_var groupObj;
+ SALOMEDS::Study_var study = theGen->GetCurrentStudy();
+ GEOM::GEOM_Gen_var geomGen = theGen->GetGeomEngine();
+ if ( study->_is_nil() || geomGen->_is_nil() )
+ return groupObj._retn();
+
+ GEOM::GEOM_IGroupOperations_var groupOp =
+ geomGen->GetIGroupOperations( theGen->GetCurrentStudyID() );
+ GEOM::GEOM_IShapesOperations_var shapeOp =
+ geomGen->GetIShapesOperations( theGen->GetCurrentStudyID() );
+
+ SALOMEDS::SObject_var meshOS = theGen->ObjectToSObject(study, theMesh);
+ if ( meshOS->_is_nil() || groupOp->_is_nil() || shapeOp->_is_nil() )
+ return groupObj._retn();
+ SALOMEDS::SObject_var fatherSO = meshOS->GetFather();
+ if ( fatherSO->_is_nil() || fatherSO->Tag() != theGen->GetSubMeshOnCompoundTag() )
+ return groupObj._retn(); // keep only submeshes on groups
+
+ SALOMEDS::ChildIterator_var anIter = study->NewChildIterator(meshOS);
+ if ( anIter->_is_nil() ) return groupObj._retn();
+ for ( ; anIter->More(); anIter->Next())
+ {
+ SALOMEDS::SObject_var aSObject = anIter->Value();
+ SALOMEDS::SObject_var aRefSO;
+ if ( !aSObject->_is_nil() && aSObject->ReferencedObject(aRefSO) )
+ {
+ groupObj = GEOM::GEOM_Object::_narrow(aRefSO->GetObject());
+ if ( groupObj->_is_nil() ) break;
+ GEOM::ListOfLong_var ids = groupOp->GetObjects( groupObj );
+ GEOM::GEOM_Object_var mainShape = groupObj->GetMainShape();
+ for ( int i = 0; i < ids->length(); ++i ) {
+ GEOM::GEOM_Object_var subShape = shapeOp->GetSubShape( mainShape, ids[i] );
+ TopoDS_Shape S = theGen->GeomObjectToShape( subShape );
+ if ( !S.IsNull() )
+ theItems.push_back( S );
+ }
+ break;
+ }
+ }
+ return groupObj._retn();
+}
+
+//=============================================================================
+/*!
+ * \brief Update hypotheses assigned to geom groups if the latter change
+ *
+ * NPAL16168: "geometrical group edition from a submesh don't modifiy mesh computation"
+ */
+//=============================================================================
+
+void SMESH_Mesh_i::CheckGeomGroupModif()
+{
+ if ( !_impl->HasShapeToMesh() ) return;
+
+ SALOMEDS::Study_var study = _gen_i->GetCurrentStudy();
+ if ( study->_is_nil() ) return;
+
+ // check if items of groups changed
+ map<int, ::SMESH_subMesh*>::iterator i_sm = _mapSubMesh.begin();
+ for ( ; i_sm != _mapSubMesh.end(); ++i_sm )
+ {
+ const TopoDS_Shape & oldGroupShape = i_sm->second->GetSubShape();
+ SMESHDS_SubMesh * oldDS = i_sm->second->GetSubMeshDS();
+ if ( !oldDS /*|| !oldDS->IsComplexSubmesh()*/ )
+ continue;
+ int oldID = i_sm->first;
+ map<int, SMESH::SMESH_subMesh_ptr>::iterator i_smIor = _mapSubMeshIor.find( oldID );
+ if ( i_smIor == _mapSubMeshIor.end() )
+ continue;
+ list< TopoDS_Shape> newItems;
+ GEOM::GEOM_Object_var groupObj = getGroupItemsFromStudy ( i_smIor->second, _gen_i, newItems );
+ if ( groupObj->_is_nil() )
+ continue;
+
+ int nbOldItems = oldDS->IsComplexSubmesh() ? oldDS->NbSubMeshes() : 1;
+ int nbNewItems = newItems.size();
+ bool groupChanged = ( nbOldItems != nbNewItems);
+ if ( !groupChanged ) {
+ if ( !oldDS->IsComplexSubmesh() ) { // old group has one item
+ groupChanged = ( oldGroupShape != newItems.front() );
+ }
+ else {
+ list<TopoDS_Shape>::iterator item = newItems.begin();
+ for ( ; item != newItems.end() && !groupChanged; ++item )
+ {
+ SMESHDS_SubMesh * itemDS = _impl->GetMeshDS()->MeshElements( *item );
+ groupChanged = ( !itemDS || !oldDS->ContainsSubMesh( itemDS ));
+ }
+ }
+ }
+ // update hypotheses and submeshes if necessary
+ if ( groupChanged )
+ {
+ // get a new group shape
+ GEOM_Client* geomClient = _gen_i->GetShapeReader();
+ if ( !geomClient ) continue;
+ TCollection_AsciiString groupIOR = _gen_i->GetGeomEngine()->GetStringFromIOR( groupObj );
+ geomClient->RemoveShapeFromBuffer( groupIOR );
+ TopoDS_Shape newGroupShape = _gen_i->GeomObjectToShape( groupObj );
+ // update hypotheses
+ list <const SMESHDS_Hypothesis * > hyps = _impl->GetHypothesisList(oldGroupShape);
+ list <const SMESHDS_Hypothesis * >::iterator hypIt;
+ for ( hypIt = hyps.begin(); hypIt != hyps.end(); ++hypIt )
+ {
+ _impl->RemoveHypothesis( oldGroupShape, (*hypIt)->GetID());
+ _impl->AddHypothesis ( newGroupShape, (*hypIt)->GetID());
+ }
+ // care of submeshes
+ SMESH_subMesh* newSubmesh = _impl->GetSubMesh( newGroupShape );
+ int newID = newSubmesh->GetId();
+ if ( newID != oldID ) {
+ _mapSubMesh [ newID ] = newSubmesh;
+ _mapSubMesh_i [ newID ] = _mapSubMesh_i [ oldID ];
+ _mapSubMeshIor[ newID ] = _mapSubMeshIor[ oldID ];
+ _mapSubMesh.erase (oldID);
+ _mapSubMesh_i.erase (oldID);
+ _mapSubMeshIor.erase(oldID);
+ _mapSubMesh_i [ newID ]->changeLocalId( newID );
+ }
+ }
+ }
+}
+
//=============================================================================
/*!
*
SMESH::SMESH_MeshEditor_ptr SMESH_Mesh_i::GetMeshEditor()
{
// Create MeshEditor
- SMESH_MeshEditor_i *aMeshEditor = new SMESH_MeshEditor_i( _impl, false );
+ SMESH_MeshEditor_i *aMeshEditor = new SMESH_MeshEditor_i( this, false );
SMESH::SMESH_MeshEditor_var aMesh = aMeshEditor->_this();
// Update Python script
SMESH::SMESH_MeshEditor_ptr SMESH_Mesh_i::GetMeshEditPreviewer()
{
- SMESH_MeshEditor_i *aMeshEditor = new SMESH_MeshEditor_i( _impl, true );
+ SMESH_MeshEditor_i *aMeshEditor = new SMESH_MeshEditor_i( this, true );
SMESH::SMESH_MeshEditor_var aMesh = aMeshEditor->_this();
return aMesh._retn();
}
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void SMESH_Mesh_i::SetAutoColor(CORBA::Boolean theAutoColor) throw(SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ _impl->SetAutoColor(theAutoColor);
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+CORBA::Boolean SMESH_Mesh_i::GetAutoColor() throw(SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ return _impl->GetAutoColor();
+}
+
+
//=============================================================================
/*!
* Export in different formats
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbEdges( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbEdges( (SMDSAbs_ElementOrder) order);
}
//=============================================================================
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbFaces( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbFaces( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbTrianglesOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbTriangles( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbTriangles( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbQuadranglesOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbQuadrangles( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbQuadrangles( (SMDSAbs_ElementOrder) order);
}
//=============================================================================
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbVolumes( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbVolumes( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbTetrasOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbTetras( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbTetras( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbHexasOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbHexas( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbHexas( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbPyramidsOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbPyramids( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbPyramids( (SMDSAbs_ElementOrder) order);
}
CORBA::Long SMESH_Mesh_i::NbPrismsOfOrder(SMESH::ElementOrder order)
throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
- return _impl->NbPrisms( (::SMESH_Mesh::ElementOrder) order);
+ return _impl->NbPrisms( (SMDSAbs_ElementOrder) order);
}
//=============================================================================
return aResult._retn();
}
+//=============================================================================
+/*!
+ * \brief Return position of a node on shape
+ */
+//=============================================================================
+
+SMESH::NodePosition* SMESH_Mesh_i::GetNodePosition(CORBA::Long NodeID)
+{
+ SMESH::NodePosition* aNodePosition = new SMESH::NodePosition();
+ aNodePosition->shapeID = 0;
+ aNodePosition->shapeType = GEOM::SHAPE;
+
+ SMESHDS_Mesh* mesh = _impl->GetMeshDS();
+ if ( !mesh ) return aNodePosition;
+
+ if ( const SMDS_MeshNode* aNode = mesh->FindNode(NodeID) )
+ {
+ if ( SMDS_PositionPtr pos = aNode->GetPosition() )
+ {
+ aNodePosition->shapeID = pos->GetShapeId();
+ switch ( pos->GetTypeOfPosition() ) {
+ case SMDS_TOP_EDGE:
+ aNodePosition->shapeType = GEOM::EDGE;
+ aNodePosition->params.length(1);
+ aNodePosition->params[0] =
+ static_cast<SMDS_EdgePosition*>( pos.get() )->GetUParameter();
+ break;
+ case SMDS_TOP_FACE:
+ aNodePosition->shapeType = GEOM::FACE;
+ aNodePosition->params.length(2);
+ aNodePosition->params[0] =
+ static_cast<SMDS_FacePosition*>( pos.get() )->GetUParameter();
+ aNodePosition->params[1] =
+ static_cast<SMDS_FacePosition*>( pos.get() )->GetVParameter();
+ break;
+ case SMDS_TOP_VERTEX:
+ aNodePosition->shapeType = GEOM::VERTEX;
+ break;
+ case SMDS_TOP_3DSPACE:
+ if ( TopExp_Explorer(_impl->GetShapeToMesh(), TopAbs_SOLID).More() )
+ aNodePosition->shapeType = GEOM::SOLID;
+ else if ( TopExp_Explorer(_impl->GetShapeToMesh(), TopAbs_SHELL).More() )
+ aNodePosition->shapeType = GEOM::SHELL;
+ break;
+ default:;
+ }
+ }
+ }
+ return aNodePosition;
+}
//=============================================================================
/*!
return aResult._retn();
if(elem->GetType()==SMDSAbs_Volume) {
- // use SMDS_VolumeTool
SMDS_VolumeTool aTool;
if(aTool.Set(elem)) {
- double x=0., y=0., z=0.;
- if(aTool.GetBaryCenter(x,y,z)) {
- // add coordinates
- aResult->length(3);
- aResult[0] = x;
- aResult[1] = y;
- aResult[2] = z;
- }
+ aResult->length(3);
+ if (!aTool.GetBaryCenter( aResult[0], aResult[1], aResult[2]) )
+ aResult->length(0);
}
}
else {
//=============================================================================
/*!
- *
+ * Create and publish group servants if any groups were imported or created anyhow
*/
//=============================================================================
+
void SMESH_Mesh_i::CreateGroupServants()
{
- // Create group servants, if any groups were imported
- list<int> aGroupIds = _impl->GetGroupIds();
- for ( list<int>::iterator it = aGroupIds.begin(); it != aGroupIds.end(); it++ ) {
- SMESH_Group_i* aGroupImpl = new SMESH_Group_i( SMESH_Gen_i::GetPOA(), this, *it );
+ SALOMEDS::Study_ptr aStudy = _gen_i->GetCurrentStudy();
- // PAL7962: san -- To ensure correct mapping of servant and correct reference counting in GenericObj_i
+ ::SMESH_Mesh::GroupIteratorPtr groupIt = _impl->GetGroups();
+ while ( groupIt->more() )
+ {
+ ::SMESH_Group* group = groupIt->next();
+ int anId = group->GetGroupDS()->GetID();
+
+ map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.find(anId);
+ if ( it != _mapGroups.end() && !CORBA::is_nil( it->second ))
+ continue;
+
+ SMESH_GroupBase_i* aGroupImpl;
+ TopoDS_Shape shape;
+ if ( SMESHDS_GroupOnGeom* groupOnGeom =
+ dynamic_cast<SMESHDS_GroupOnGeom*>( group->GetGroupDS() ))
+ {
+ aGroupImpl = new SMESH_GroupOnGeom_i( SMESH_Gen_i::GetPOA(), this, anId );
+ shape = groupOnGeom->GetShape();
+ }
+ else {
+ aGroupImpl = new SMESH_Group_i( SMESH_Gen_i::GetPOA(), this, anId );
+ }
+
+ // To ensure correct mapping of servant and correct reference counting in GenericObj_i
SMESH_Gen_i::GetPOA()->activate_object( aGroupImpl );
aGroupImpl->Register();
- // PAL7962: san -- To ensure correct mapping of servant and correct reference counting in GenericObj_i
- SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( aGroupImpl->_this() );
- _mapGroups[*it] = SMESH::SMESH_Group::_duplicate( aGroup );
+ SMESH::SMESH_GroupBase_var groupVar =
+ SMESH::SMESH_GroupBase::_narrow( aGroupImpl->_this() );
+ _mapGroups[anId] = SMESH::SMESH_GroupBase::_duplicate( groupVar );
// register CORBA object for persistence
- int nextId = _gen_i->RegisterObject( aGroup );
+ int nextId = _gen_i->RegisterObject( groupVar );
if(MYDEBUG) MESSAGE( "Add group to map with id = "<< nextId);
+
+ // publishing of the groups in the study
+ if ( !aStudy->_is_nil() ) {
+ GEOM::GEOM_Object_var shapeVar = _gen_i->ShapeToGeomObject( shape );
+ _gen_i->PublishGroup( aStudy, _this(), groupVar, shapeVar, groupVar->GetName());
+ }
}
}
+//=============================================================================
+/*!
+ * \brief Return groups cantained in _mapGroups by their IDs
+ */
+//=============================================================================
+
+SMESH::ListOfGroups* SMESH_Mesh_i::GetGroups(const list<int>& groupIDs) const
+{
+ int nbGroups = groupIDs.size();
+ SMESH::ListOfGroups_var aList = new SMESH::ListOfGroups();
+ aList->length( nbGroups );
+
+ list<int>::const_iterator ids = groupIDs.begin();
+ for ( nbGroups = 0; ids != groupIDs.end(); ++ids )
+ {
+ map<int, SMESH::SMESH_GroupBase_ptr>::const_iterator it = _mapGroups.find( *ids );
+ if ( it != _mapGroups.end() && !CORBA::is_nil( it->second ))
+ aList[nbGroups++] = SMESH::SMESH_GroupBase::_duplicate( it->second );
+ }
+ aList->length( nbGroups );
+ return aList._retn();
+}
#include "SMESH_Hypothesis.hxx"
#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh_i.hxx"
+//#include "SMESH_subMesh_i.hxx"
#include "SMESH_subMesh.hxx"
#include "SALOME_GenericObj_i.hh"
class SMESH_Gen_i;
class SMESH_GroupBase_i;
+class SMESH_subMesh_i;
#include <map>
SMESH::ListOfGroups* GetGroups()
throw (SALOME::SALOME_Exception);
+ CORBA::Long NbGroups()
+ throw (SALOME::SALOME_Exception);
+
SMESH::SMESH_Group_ptr UnionGroups( SMESH::SMESH_GroupBase_ptr theGroup1,
SMESH::SMESH_GroupBase_ptr theGroup2,
const char* theName )
SMESH::DriverMED_ReadStatus ImportMEDFile( const char* theFileName, const char* theMeshName )
throw (SALOME::SALOME_Exception);
+ /*!
+ * Auto color
+ */
+ void SetAutoColor(CORBA::Boolean theAutoColor)
+ throw (SALOME::SALOME_Exception);
+
+ CORBA::Boolean GetAutoColor()
+ throw (SALOME::SALOME_Exception);
+
/*! Check group names for duplications.
* Consider maximum group name length stored in MED file.
*/
CORBA::Boolean HasDuplicatedGroupNamesMED();
+ /*!
+ * Return string representation of a MED file version comprising nbDigits
+ */
+ char* GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits);
void ExportToMED( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION theVersion )
throw (SALOME::SALOME_Exception);
static SMESH::Hypothesis_Status
ConvertHypothesisStatus (SMESH_Hypothesis::Hypothesis_Status theStatus);
- int importMEDFile( const char* theFileName, const char* theMeshName );
+ //int importMEDFile( const char* theFileName, const char* theMeshName );
SMESH::SMESH_subMesh_ptr createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject );
const map<int, SMESH::SMESH_GroupBase_ptr>& getGroups() { return _mapGroups; }
// return an existing group object.
+ /*!
+ * \brief Update hypotheses assigned to geom groups if the latter change
+ *
+ * NPAL16168: "geometrical group edition from a submesh don't modifiy mesh computation"
+ */
+ void CheckGeomGroupModif();
+
virtual SMESH::long_array* GetIDs();
CORBA::LongLong GetMeshPtr();
+ /*!
+ * \brief Assure that all groups are published
+ */
+ void CreateGroupServants();
+
+ /*!
+ * \brief Return groups cantained in _mapGroups by their IDs
+ */
+ SMESH::ListOfGroups* GetGroups(const std::list<int>& groupIDs) const;
/*!
* Get XYZ coordinates of node as list of double
*/
SMESH::long_array* GetNodeInverseElements(CORBA::Long id);
+ /*!
+ * \brief Return position of a node on shape
+ */
+ SMESH::NodePosition* GetNodePosition(CORBA::Long NodeID);
+
/*!
* If given element is node returns IDs of shape from position
* If there is not node for given ID - returns -1
map<int, ::SMESH_subMesh*> _mapSubMesh; //NRI
private:
- void CreateGroupServants();
static int myIdGenerator;
::SMESH_Mesh* _impl; // :: force no namespace here
#include <TopoDS.hxx>
#include <TopoDS_Face.hxx>
+#include <Standard_Failure.hxx>
+#include <Standard_ErrorHandler.hxx>
+
#include <sstream>
#include <set>
if ( elem && elem->GetType() == SMDSAbs_Face )
fset.insert( static_cast<const SMDS_MeshFace *>( elem ));
}
- if (myPattern.Apply( fset, theNodeIndexOnKeyPoint1, theReverse ) &&
- myPattern.GetMappedPoints( xyzList ))
+ bool ok = false;
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ ok = myPattern.Apply( aMesh, fset, theNodeIndexOnKeyPoint1, theReverse );
+ }
+ catch (Standard_Failure& exc) {
+ MESSAGE("OCCT Exception in SMESH_Pattern: " << exc.GetMessageString());
+ }
+ catch ( std::exception& exc ) {
+ MESSAGE("STD Exception in SMESH_Pattern: << exc.what()");
+ }
+ catch ( ... ) {
+ MESSAGE("Unknown Exception in SMESH_Pattern");
+ }
+
+ if ( ok && myPattern.GetMappedPoints( xyzList ))
{
points->length( xyzList.size() );
list<const gp_XYZ *>::iterator xyzIt = xyzList.begin();
class SMESH_Gen_i;
class SMESH_MeshEditor_i;
class TCollection_AsciiString;
+class Resource_DataMapOfAsciiStringAsciiString;
+
+// ===========================================================================================
+/*!
+ * \brief Tool converting SMESH engine calls into commands defined in smesh.py
+ *
+ * Implementation is in SMESH_2smeshpy.cxx
+ */
+// ===========================================================================================
+
+class SMESH_2smeshpy
+{
+public:
+ /*!
+ * \brief Convert a python script using commands of smesh.py
+ * \param theScript - Input script
+ * \param theEntry2AccessorMethod - The returning method names to access to
+ * objects wrapped with python class
+ * \retval TCollection_AsciiString - Convertion result
+ */
+ static TCollection_AsciiString
+ ConvertScript(const TCollection_AsciiString& theScript,
+ Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod);
+
+ /*!
+ * \brief Return the name of the python file wrapping IDL API
+ * \retval TCollection_AsciiString - The file name
+ */
+ static char* SmeshpyName() { return "smesh"; }
+ static char* GenName() { return "smesh.smesh"; }
+};
namespace SMESH
{
class Filter_i;
class Functor_i;
+// ===========================================================================================
+/*!
+ * \brief Utility helping in storing SMESH engine calls as python commands
+ */
+// ===========================================================================================
+
class SMESH_I_EXPORT TPythonDump
{
std::ostringstream myStream;
};
}
-
#endif
#include "OpUtil.hxx"
#include "Utils_ExceptHandlers.hxx"
-#include <BRepTools.hxx>
-#include <TopoDS.hxx>
#include <TopoDS_Iterator.hxx>
+#include <TopExp_Explorer.hxx>
using namespace std;
try {
if ( _mesh_i->_mapSubMesh.find( _localId ) != _mesh_i->_mapSubMesh.end()) {
TopoDS_Shape S = _mesh_i->_mapSubMesh[ _localId ]->GetSubShape();
- if ( !S.IsNull() )
+ if ( !S.IsNull() ) {
aShapeObj = _gen_i->ShapeToGeomObject( S );
+ //mzn: N7PAL16232, N7PAL16233
+ //In some cases it's possible that GEOM_Client contains the shape same to S, but
+ //with another orientation.
+ if (aShapeObj->_is_nil())
+ aShapeObj = _gen_i->ShapeToGeomObject( S.Reversed() );
+ }
}
}
catch(SALOME_Exception & S_ex) {
#include CORBA_CLIENT_HEADER(MED)
#include "SALOME_GenericObj_i.hh"
+#include "SMESH_Mesh_i.hxx"
class SMESH_Gen_i;
class SMESH_Mesh_i;
SMESH_Mesh_i* _mesh_i; //NRI
protected:
+ void changeLocalId(int localId) { _localId = localId; }
SMESH_Gen_i* _gen_i;
int _localId;
+
+ friend void SMESH_Mesh_i::CheckGeomGroupModif();
};
#endif
include $(top_srcdir)/adm_local/unix/make_common_starter.am
-# ===============================================================
-# Swig targets
-# ===============================================================
-# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
-#
-# Step 1: build the wrapping source files with swig
-#
-# libSALOME_LifeCycleCORBA.i -- swig --> swig_wrap.cpp
-# libSALOME_Swig.py
-#
-# Step 2: build the dynamic library from cpp built source files and
-# dependant libraries.
-#
-# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libSALOME_Swig.la
-# + |
-# dependant libs |
-#
-# The file libSALOME_Swigcmodule.py will be installed in
-# <prefix>/lib/python<version>/site-package/salome.
-# The library will be installed in the same place.
-#
-
-# this option puts it to dist
-#BUILT_SOURCES = swig_wrap.cpp
-
-SWIG_FLAGS = \
- @SWIG_FLAGS@ \
- -I$(srcdir) \
- -I$(srcdir)/../SMESHGUI
-
-SWIG_SOURCES = libSMESH_Swig.i
-
-# Libraries targets
-
-lib_LTLIBRARIES = libSMESH_Swigcmodule.la
-
-nodist_pkgpython_DATA = libSMESH_Swig.py
-libSMESH_Swig.py: swig_wrap.cpp
-
-libSMESH_Swigcmodule_la_SOURCES = \
- $(BUILT_SOURCES) \
- $(SWIG_SOURCES) \
- ../SMESHGUI/SMESHGUI_Swig.cxx
-
-nodist_libSMESH_Swigcmodule_la_SOURCES = \
- swig_wrap.cpp
-
-libSMESH_Swigcmodule_la_CPPFLAGS = \
- $(QT_INCLUDES) \
- $(PYTHON_INCLUDES) \
- $(CAS_CPPFLAGS) \
- $(VTK_INCLUDES) \
- $(OGL_INCLUDES) \
- $(KERNEL_CXXFLAGS) \
- $(GUI_CXXFLAGS) \
- $(MED_CXXFLAGS) \
- $(GEOM_CXXFLAGS) \
- $(CORBA_CXXFLAGS) \
- $(CORBA_INCLUDES) \
- $(BOOST_CPPFLAGS) \
- -I$(srcdir)/../SMESHGUI \
- -I$(top_builddir)/idl \
- -I$(top_builddir)/salome_adm/unix
-
-libSMESH_Swigcmodule_la_LDFLAGS = \
- ../SMESHGUI/libSMESH.la \
- $(KERNEL_LDFLAGS) -lSalomeGenericObj -lSALOMELocalTrace \
- $(GUI_LDFLAGS) -lCAM -lsuit -lqtx -lSalomeApp -lstd -lEvent \
- $(PYTHON_LIBS) \
- $(QT_MT_LIBS)
-
-
-swig_wrap.cpp : $(SWIG_SOURCES)
- $(SWIG) $(SWIG_FLAGS) -o $@ $<
-
-CLEANFILES = \
- swig_wrap.cpp
# Scripts to be installed.
dist_salomescript_DATA= \
- libSMESH_Swig.py \
smesh.py \
+ smeshDC.py \
batchmode_smesh.py \
batchmode_mefisto.py \
ex00_all.py \
ex18_dome2.py \
ex19_sphereINcube.py \
ex21_lamp.py \
+ ex24_cylinder.py \
SMESH_test.py\
SMESH_test0.py\
SMESH_test1.py \
SMESH_GroupFromGeom.py \
SMESH_Nut.py \
SMESH_GroupLyingOnGeom.py \
+ SMESH_AdvancedEditor.py \
PAL_MESH_041_mesh.py \
PAL_MESH_043_2D.py \
PAL_MESH_043_3D.py \
EXPORT_SHAREDPYSCRIPTS = \
SMESH_shared_modules.py
-
-install-exec-hook: $(libdir)/_libSMESH_Swig.so
-
-$(libdir)/_libSMESH_Swig.so:
- ( cd $(libdir); ln -sf libSMESH_Swigcmodule.so _libSMESH_Swig.so; )
--- /dev/null
+# CEA/LGLS 2007, Francis KLOSS (OCC)
+# ==================================
+
+import math
+
+import geompy
+import smesh
+
+geo = geompy
+
+# Parameters
+# ----------
+
+radius = 50
+height = 200
+
+# Build a cylinder
+# ----------------
+
+base = geo.MakeVertex(0, 0, 0)
+direction = geo.MakeVectorDXDYDZ(0, 0, 1)
+
+cylinder = geo.MakeCylinder(base, direction, radius, height)
+
+geo.addToStudy(cylinder, "cylinder")
+
+# Build blocks
+# ------------
+
+size = radius/2.0
+
+box_rot = geo.MakeBox(-size, -size, 0, +size, +size, height)
+box_axis = geo.MakeLine(base, direction)
+box = geo.MakeRotation(box_rot, box_axis, math.pi/4)
+
+hole = geo.MakeCut(cylinder, box)
+
+plane_trim = 2000
+
+plane_a = geo.MakePlane(base, geo.MakeVectorDXDYDZ(1, 0, 0), plane_trim)
+plane_b = geo.MakePlane(base, geo.MakeVectorDXDYDZ(0, 1, 0), plane_trim)
+
+blocks_part = geo.MakePartition([hole], [plane_a, plane_b], [], [], geo.ShapeType["SOLID"])
+blocks_list = [box] + geo.SubShapeAll(blocks_part, geo.ShapeType["SOLID"])
+blocks_all = geo.MakeCompound(blocks_list)
+blocks = geo.MakeGlueFaces(blocks_all, 0.0001)
+
+geo.addToStudy(blocks, "cylinder:blocks")
+
+# Build geometric groups
+# ----------------------
+
+def group(name, shape, type, base=None, direction=None):
+ t = geo.ShapeType[type]
+ g = geo.CreateGroup(shape, t)
+
+ geo.addToStudy(g, name)
+ g.SetName(name)
+
+ if base!=None:
+ l = geo.GetShapesOnPlaneWithLocationIDs(shape, t, direction, base, geo.GEOM.ST_ON)
+ geo.UnionIDs(g, l)
+
+ return g
+
+group_a = group("baseA", blocks, "FACE", base, direction)
+
+base_b = geo.MakeVertex(0, 0, height)
+group_b = group("baseB", blocks, "FACE", base_b, direction)
+
+group_1 = group("limit", blocks, "SOLID")
+group_1_all = geo.SubShapeAllIDs(blocks, geo.ShapeType["SOLID"])
+geo.UnionIDs(group_1, group_1_all)
+group_1_box = geo.GetBlockNearPoint(blocks, base)
+geo.DifferenceList(group_1, [group_1_box])
+
+# Mesh the blocks with hexahedral
+# -------------------------------
+
+def discretize(x, y, z, n, s=blocks):
+ p = geo.MakeVertex(x, y, z)
+ e = geo.GetEdgeNearPoint(s, p)
+ a = hexa.Segment(e)
+ a.NumberOfSegments(n)
+ a.Propagation()
+
+hexa = smesh.Mesh(blocks)
+
+hexa_1d = hexa.Segment()
+hexa_1d.NumberOfSegments(1)
+
+discretize(+radius , +radius, 0, 5)
+discretize(-radius , +radius, 0, 8)
+discretize((radius+size)/2, 0, 0, 10)
+discretize( +radius, 0, height/2, 20)
+
+hexa.Quadrangle()
+hexa.Hexahedron()
+
+hexa.Compute()
+
+hexa.Group(group_a)
+hexa.Group(group_b)
+hexa.Group(group_1)
+++ /dev/null
-// Copyright (C) 2003 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
-// 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
-// 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
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//
-//
-// File : libGeometry_Swig.i
-// Author : Nicolas REJNERI, Paul RASCLE
-// Module : SMESH
-// $Header$
-
-%module libSMESH_Swig
-
-%include "SMESHGUI_Swig.i"
-
# Author : Francis KLOSS, OCC
# Module : SMESH
-"""
- \namespace smesh
+"""@package smesh
\brief Module smesh
"""
import salome
-import geompy
-
-import SMESH
-from SMESH import *
-
-import StdMeshers
-
-import SALOME
-
-# import NETGENPlugin module if possible
-noNETGENPlugin = 0
-try:
- import NETGENPlugin
-except ImportError:
- noNETGENPlugin = 1
- pass
-
-# Types of algo
-REGULAR = 1
-PYTHON = 2
-COMPOSITE = 3
-
-MEFISTO = 3
-NETGEN = 4
-GHS3D = 5
-FULL_NETGEN = 6
-Hexa = 7
-Hexotic = 8
-BLSURF = 9
-
-# MirrorType enumeration
-POINT = SMESH_MeshEditor.POINT
-AXIS = SMESH_MeshEditor.AXIS
-PLANE = SMESH_MeshEditor.PLANE
-
-# Smooth_Method enumeration
-LAPLACIAN_SMOOTH = SMESH_MeshEditor.LAPLACIAN_SMOOTH
-CENTROIDAL_SMOOTH = SMESH_MeshEditor.CENTROIDAL_SMOOTH
-
-# Fineness enumeration(for NETGEN)
-VeryCoarse = 0
-Coarse = 1
-Moderate = 2
-Fine = 3
-VeryFine = 4
-Custom = 5
-
-
-NO_NAME = "NoName"
+from salome import *
+import geompy
+import smeshDC
+from smeshDC import *
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-# Global functions
-
-## Gets object name
-def GetName(obj):
- ior = salome.orb.object_to_string(obj)
- sobj = salome.myStudy.FindObjectIOR(ior)
- if sobj is None:
- return NO_NAME
- else:
- attr = sobj.FindAttribute("AttributeName")[1]
- return attr.Value()
-
-## Sets name to object
-def SetName(obj, name):
- ior = salome.orb.object_to_string(obj)
- sobj = salome.myStudy.FindObjectIOR(ior)
- if not sobj is None:
- attr = sobj.FindAttribute("AttributeName")[1]
- attr.SetValue(name)
-
-## Returns long value from enumeration
-# Uses for SMESH.FunctorType enumeration
-def EnumToLong(theItem):
- return theItem._v
-
-## Get PointStruct from vertex
-# @param theVertex is GEOM object(vertex)
-# @return SMESH.PointStruct
-def GetPointStruct(theVertex):
- [x, y, z] = geompy.PointCoordinates(theVertex)
- return PointStruct(x,y,z)
-
-## Get DirStruct from vector
-# @param theVector is GEOM object(vector)
-# @return SMESH.DirStruct
-def GetDirStruct(theVector):
- vertices = geompy.SubShapeAll( theVector, geompy.ShapeType["VERTEX"] )
- if(len(vertices) != 2):
- print "Error: vector object is incorrect."
- return None
- p1 = geompy.PointCoordinates(vertices[0])
- p2 = geompy.PointCoordinates(vertices[1])
- pnt = PointStruct(p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2])
- dir = DirStruct(pnt)
- return dir
-
-## Get AxisStruct from object
-# @param theObj is GEOM object(line or plane)
-# @return SMESH.AxisStruct
-def GetAxisStruct(theObj):
- edges = geompy.SubShapeAll( theObj, geompy.ShapeType["EDGE"] )
- if len(edges) > 1:
- vertex1, vertex2 = geompy.SubShapeAll( edges[0], geompy.ShapeType["VERTEX"] )
- vertex3, vertex4 = geompy.SubShapeAll( edges[1], geompy.ShapeType["VERTEX"] )
- vertex1 = geompy.PointCoordinates(vertex1)
- vertex2 = geompy.PointCoordinates(vertex2)
- vertex3 = geompy.PointCoordinates(vertex3)
- vertex4 = geompy.PointCoordinates(vertex4)
- v1 = [vertex2[0]-vertex1[0], vertex2[1]-vertex1[1], vertex2[2]-vertex1[2]]
- v2 = [vertex4[0]-vertex3[0], vertex4[1]-vertex3[1], vertex4[2]-vertex3[2]]
- normal = [ v1[1]*v2[2]-v2[1]*v1[2], v1[2]*v2[0]-v2[2]*v1[0], v1[0]*v2[1]-v2[0]*v1[1] ]
- axis = AxisStruct(vertex1[0], vertex1[1], vertex1[2], normal[0], normal[1], normal[2])
- return axis
- elif len(edges) == 1:
- vertex1, vertex2 = geompy.SubShapeAll( edges[0], geompy.ShapeType["VERTEX"] )
- p1 = geompy.PointCoordinates( vertex1 )
- p2 = geompy.PointCoordinates( vertex2 )
- axis = AxisStruct(p1[0], p1[1], p1[2], p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2])
- return axis
- return None
-
-# From SMESH_Gen interface:
-# ------------------------
-
-## Set the current mode
-def SetEmbeddedMode( theMode ):
- smesh.SetEmbeddedMode(theMode)
-
-## Get the current mode
-def IsEmbeddedMode():
- return smesh.IsEmbeddedMode()
-
-## Set the current study
-def SetCurrentStudy( theStudy ):
- smesh.SetCurrentStudy(theStudy)
-
-## Get the current study
-def GetCurrentStudy():
- return smesh.GetCurrentStudy()
-
-## Create Mesh object importing data from given UNV file
-# @return an instance of Mesh class
-def CreateMeshesFromUNV( theFileName ):
- aSmeshMesh = smesh.CreateMeshesFromUNV(theFileName)
- aMesh = Mesh(aSmeshMesh)
- return aMesh
-
-## Create Mesh object(s) importing data from given MED file
-# @return a list of Mesh class instances
-def CreateMeshesFromMED( theFileName ):
- aSmeshMeshes, aStatus = smesh.CreateMeshesFromMED(theFileName)
- aMeshes = []
- for iMesh in range(len(aSmeshMeshes)) :
- aMesh = Mesh(aSmeshMeshes[iMesh])
- aMeshes.append(aMesh)
- return aMeshes, aStatus
-
-## Create Mesh object importing data from given STL file
-# @return an instance of Mesh class
-def CreateMeshesFromSTL( theFileName ):
- aSmeshMesh = smesh.CreateMeshesFromSTL(theFileName)
- aMesh = Mesh(aSmeshMesh)
- return aMesh
-
-## From SMESH_Gen interface
-def GetSubShapesId( theMainObject, theListOfSubObjects ):
- return smesh.GetSubShapesId(theMainObject, theListOfSubObjects)
-
-## From SMESH_Gen interface. Creates pattern
-def GetPattern():
- return smesh.GetPattern()
-
-
-
-# Filtering. Auxiliary functions:
-# ------------------------------
-
-## Creates an empty criterion
-# @return SMESH.Filter.Criterion
-def GetEmptyCriterion():
- Type = EnumToLong(FT_Undefined)
- Compare = EnumToLong(FT_Undefined)
- Threshold = 0
- ThresholdStr = ""
- ThresholdID = ""
- UnaryOp = EnumToLong(FT_Undefined)
- BinaryOp = EnumToLong(FT_Undefined)
- Tolerance = 1e-07
- TypeOfElement = ALL
- Precision = -1 ##@1e-07
- return Filter.Criterion(Type, Compare, Threshold, ThresholdStr, ThresholdID,
- UnaryOp, BinaryOp, Tolerance, TypeOfElement, Precision)
-
-## Creates a criterion by given parameters
-# @param elementType is the type of elements(NODE, EDGE, FACE, VOLUME)
-# @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
-# @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
-# @param Treshold is threshold value (range of ids as string, shape, numeric)
-# @param UnaryOp is FT_LogicalNOT or FT_Undefined
-# @param BinaryOp is binary logical operation FT_LogicalAND, FT_LogicalOR or
-# FT_Undefined(must be for the last criterion in criteria)
-# @return SMESH.Filter.Criterion
-def GetCriterion(elementType,
- CritType,
- Compare = FT_EqualTo,
- Treshold="",
- UnaryOp=FT_Undefined,
- BinaryOp=FT_Undefined):
- aCriterion = GetEmptyCriterion()
- aCriterion.TypeOfElement = elementType
- aCriterion.Type = EnumToLong(CritType)
-
- aTreshold = Treshold
-
- if Compare in [FT_LessThan, FT_MoreThan, FT_EqualTo]:
- aCriterion.Compare = EnumToLong(Compare)
- elif Compare == "=" or Compare == "==":
- aCriterion.Compare = EnumToLong(FT_EqualTo)
- elif Compare == "<":
- aCriterion.Compare = EnumToLong(FT_LessThan)
- elif Compare == ">":
- aCriterion.Compare = EnumToLong(FT_MoreThan)
- else:
- aCriterion.Compare = EnumToLong(FT_EqualTo)
- aTreshold = Compare
-
- if CritType in [FT_BelongToGeom, FT_BelongToPlane, FT_BelongToGenSurface,
- FT_BelongToCylinder, FT_LyingOnGeom]:
- # Check treshold
- if isinstance(aTreshold, geompy.GEOM._objref_GEOM_Object):
- aCriterion.ThresholdStr = GetName(aTreshold)
- aCriterion.ThresholdID = salome.ObjectToID(aTreshold)
- else:
- print "Error: Treshold should be a shape."
- return None
- elif CritType == FT_RangeOfIds:
- # Check treshold
- if isinstance(aTreshold, str):
- aCriterion.ThresholdStr = aTreshold
- else:
- print "Error: Treshold should be a string."
- return None
- elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume]:
- # Here we don't need treshold
- if aTreshold == FT_LogicalNOT:
- aCriterion.UnaryOp = EnumToLong(FT_LogicalNOT)
- elif aTreshold in [FT_LogicalAND, FT_LogicalOR]:
- aCriterion.BinaryOp = aTreshold
- else:
- # Check treshold
- try:
- aTreshold = float(aTreshold)
- aCriterion.Threshold = aTreshold
- except:
- print "Error: Treshold should be a number."
- return None
-
- if Treshold == FT_LogicalNOT or UnaryOp == FT_LogicalNOT:
- aCriterion.UnaryOp = EnumToLong(FT_LogicalNOT)
-
- if Treshold in [FT_LogicalAND, FT_LogicalOR]:
- aCriterion.BinaryOp = EnumToLong(Treshold)
-
- if UnaryOp in [FT_LogicalAND, FT_LogicalOR]:
- aCriterion.BinaryOp = EnumToLong(UnaryOp)
-
- if BinaryOp in [FT_LogicalAND, FT_LogicalOR]:
- aCriterion.BinaryOp = EnumToLong(BinaryOp)
-
- return aCriterion
-
-## Creates filter by given parameters of criterion
-# @param elementType is the type of elements in the group
-# @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
-# @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
-# @param Treshold is threshold value (range of id ids as string, shape, numeric)
-# @param UnaryOp is FT_LogicalNOT or FT_Undefined
-# @return SMESH_Filter
-def GetFilter(elementType,
- CritType=FT_Undefined,
- Compare=FT_EqualTo,
- Treshold="",
- UnaryOp=FT_Undefined):
- aCriterion = GetCriterion(elementType, CritType, Compare, Treshold, UnaryOp, FT_Undefined)
- aFilterMgr = smesh.CreateFilterManager()
- aFilter = aFilterMgr.CreateFilter()
- aCriteria = []
- aCriteria.append(aCriterion)
- aFilter.SetCriteria(aCriteria)
- return aFilter
-
-## Creates numerical functor by its type
-# @param theCrierion is FT_...; functor type
-# @return SMESH_NumericalFunctor
-def GetFunctor(theCriterion):
- aFilterMgr = smesh.CreateFilterManager()
- if theCriterion == FT_AspectRatio:
- return aFilterMgr.CreateAspectRatio()
- elif theCriterion == FT_AspectRatio3D:
- return aFilterMgr.CreateAspectRatio3D()
- elif theCriterion == FT_Warping:
- return aFilterMgr.CreateWarping()
- elif theCriterion == FT_MinimumAngle:
- return aFilterMgr.CreateMinimumAngle()
- elif theCriterion == FT_Taper:
- return aFilterMgr.CreateTaper()
- elif theCriterion == FT_Skew:
- return aFilterMgr.CreateSkew()
- elif theCriterion == FT_Area:
- return aFilterMgr.CreateArea()
- elif theCriterion == FT_Volume3D:
- return aFilterMgr.CreateVolume3D()
- elif theCriterion == FT_MultiConnection:
- return aFilterMgr.CreateMultiConnection()
- elif theCriterion == FT_MultiConnection2D:
- return aFilterMgr.CreateMultiConnection2D()
- elif theCriterion == FT_Length:
- return aFilterMgr.CreateLength()
- elif theCriterion == FT_Length2D:
- return aFilterMgr.CreateLength2D()
- else:
- print "Error: given parameter is not numerucal functor type."
-
-
-## Print error message if a hypothesis was not assigned.
-def TreatHypoStatus(status, hypName, geomName, isAlgo):
- if isAlgo:
- hypType = "algorithm"
- else:
- hypType = "hypothesis"
- pass
- if status == HYP_UNKNOWN_FATAL :
- reason = "for unknown reason"
- elif status == HYP_INCOMPATIBLE :
- reason = "this hypothesis mismatches algorithm"
- elif status == HYP_NOTCONFORM :
- reason = "not conform mesh would be built"
- elif status == HYP_ALREADY_EXIST :
- reason = hypType + " of the same dimension already assigned to this shape"
- elif status == HYP_BAD_DIM :
- reason = hypType + " mismatches shape"
- elif status == HYP_CONCURENT :
- reason = "there are concurrent hypotheses on sub-shapes"
- elif status == HYP_BAD_SUBSHAPE :
- reason = "shape is neither the main one, nor its subshape, nor a valid group"
- elif status == HYP_BAD_GEOMETRY:
- reason = "geometry mismatches algorithm's expectation"
- elif status == HYP_HIDDEN_ALGO:
- reason = "it is hidden by an algorithm of upper dimension generating all-dimensions elements"
- elif status == HYP_HIDING_ALGO:
- reason = "it hides algorithm(s) of lower dimension by generating all-dimensions elements"
- else:
- return
- hypName = '"' + hypName + '"'
- geomName= '"' + geomName+ '"'
- if status < HYP_UNKNOWN_FATAL:
- print hypName, "was assigned to", geomName,"but", reason
- else:
- print hypName, "was not assigned to",geomName,":", reason
- pass
-
-
-
-## Mother class to define algorithm, recommended to don't use directly.
-#
-# More details.
-class Mesh_Algorithm:
- # @class Mesh_Algorithm
- # @brief Class Mesh_Algorithm
-
- mesh = 0
- geom = 0
- subm = 0
- algo = 0
-
- ## If the algorithm is global, return 0; \n
- # else return the submesh associated to this algorithm.
- def GetSubMesh(self):
- return self.subm
-
- ## Return the wrapped mesher.
- def GetAlgorithm(self):
- return self.algo
-
- ## Get list of hypothesis that can be used with this algorithm
- def GetCompatibleHypothesis(self):
- list = []
- if self.algo:
- list = self.algo.GetCompatibleHypothesis()
- return list
-
- ## Get name of algo
- def GetName(self):
- GetName(self.algo)
-
- ## Set name to algo
- def SetName(self, name):
- SetName(self.algo, name)
-
- ## Get id of algo
- def GetId(self):
- return self.algo.GetId()
-
- ## Private method.
- def Create(self, mesh, geom, hypo, so="libStdMeshersEngine.so"):
- if geom is None:
- raise RuntimeError, "Attemp to create " + hypo + " algoritm on None shape"
- self.mesh = mesh
- piece = mesh.geom
- if geom==0:
- self.geom = piece
- name = GetName(piece)
- else:
- self.geom = geom
- name = GetName(geom)
- if name==NO_NAME:
- name = geompy.SubShapeName(geom, piece)
- geompy.addToStudyInFather(piece, geom, name)
- self.subm = mesh.mesh.GetSubMesh(geom, hypo)
-
- self.algo = smesh.CreateHypothesis(hypo, so)
- SetName(self.algo, name + "/" + hypo)
- status = mesh.mesh.AddHypothesis(self.geom, self.algo)
- TreatHypoStatus( status, hypo, name, 1 )
-
- ## Private method
- def Hypothesis(self, hyp, args=[], so="libStdMeshersEngine.so"):
- hypo = smesh.CreateHypothesis(hyp, so)
- a = ""
- s = "="
- i = 0
- n = len(args)
- while i<n:
- a = a + s + str(args[i])
- s = ","
- i = i + 1
- name = GetName(self.geom)
- SetName(hypo, name + "/" + hyp + a)
- status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
- TreatHypoStatus( status, hyp, name, 0 )
- return hypo
-
-
-# Public class: Mesh_Segment
-# --------------------------
-
-## Class to define a segment 1D algorithm for discretization
-#
-# More details.
-class Mesh_Segment(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Regular_1D")
-
- ## Define "LocalLength" hypothesis to cut an edge in several segments with the same length
- # @param l for the length of segments that cut an edge
- def LocalLength(self, l):
- hyp = self.Hypothesis("LocalLength", [l])
- hyp.SetLength(l)
- return hyp
-
- ## Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments
- # @param n for the number of segments that cut an edge
- # @param s for the scale factor (optional)
- def NumberOfSegments(self, n, s=[]):
- if s == []:
- hyp = self.Hypothesis("NumberOfSegments", [n])
- else:
- hyp = self.Hypothesis("NumberOfSegments", [n,s])
- hyp.SetDistrType( 1 )
- hyp.SetScaleFactor(s)
- hyp.SetNumberOfSegments(n)
- return hyp
-
- ## Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing
- # @param start for the length of the first segment
- # @param end for the length of the last segment
- def Arithmetic1D(self, start, end):
- hyp = self.Hypothesis("Arithmetic1D", [start, end])
- hyp.SetLength(start, 1)
- hyp.SetLength(end , 0)
- return hyp
-
- ## Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing
- # @param start for the length of the first segment
- # @param end for the length of the last segment
- def StartEndLength(self, start, end):
- hyp = self.Hypothesis("StartEndLength", [start, end])
- hyp.SetLength(start, 1)
- hyp.SetLength(end , 0)
- return hyp
-
- ## Define "Deflection1D" hypothesis
- # @param d for the deflection
- def Deflection1D(self, d):
- hyp = self.Hypothesis("Deflection1D", [d])
- hyp.SetDeflection(d)
- return hyp
-
- ## Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in
- # the opposite side in the case of quadrangular faces
- def Propagation(self):
- return self.Hypothesis("Propagation")
-
- ## Define "AutomaticLength" hypothesis
- # @param fineness for the fineness [0-1]
- def AutomaticLength(self, fineness=0):
- hyp = self.Hypothesis("AutomaticLength")
- hyp.SetFineness( fineness )
- return hyp
-
- ## Define "SegmentLengthAroundVertex" hypothesis
- # @param length for the segment length
- # @param vertex for the length localization: vertex index [0,1] | verext object
- def LengthNearVertex(self, length, vertex=0):
- import types
- store_geom = self.geom
- if vertex:
- if type(vertex) is types.IntType:
- vertex = geompy.SubShapeAllSorted(self.geom,geompy.ShapeType["VERTEX"])[vertex]
- pass
- self.geom = vertex
- pass
- hyp = self.Hypothesis("SegmentAroundVertex_0D")
- hyp = self.Hypothesis("SegmentLengthAroundVertex")
- self.geom = store_geom
- hyp.SetLength( length )
- return hyp
-
- ## Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges.
- # If the 2D mesher sees that all boundary edges are quadratic ones,
- # it generates quadratic faces, else it generates linear faces using
- # medium nodes as if they were vertex ones.
- # The 3D mesher generates quadratic volumes only if all boundary faces
- # are quadratic ones, else it fails.
- def QuadraticMesh(self):
- hyp = self.Hypothesis("QuadraticMesh")
- return hyp
-
-# Public class: Mesh_CompositeSegment
-# --------------------------
-
-## Class to define a segment 1D algorithm for discretization
-#
-# More details.
-class Mesh_CompositeSegment(Mesh_Segment):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "CompositeSegment_1D")
-
-
-# Public class: Mesh_Segment_Python
-# ---------------------------------
-
-## Class to define a segment 1D algorithm for discretization with python function
-#
-# More details.
-class Mesh_Segment_Python(Mesh_Segment):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- import Python1dPlugin
- self.Create(mesh, geom, "Python_1D", "libPython1dEngine.so")
-
- ## Define "PythonSplit1D" hypothesis based on the Erwan Adam patch, awaiting equivalent SALOME functionality
- # @param n for the number of segments that cut an edge
- # @param func for the python function that calculate the length of all segments
- def PythonSplit1D(self, n, func):
- hyp = self.Hypothesis("PythonSplit1D", [n], "libPython1dEngine.so")
- hyp.SetNumberOfSegments(n)
- hyp.SetPythonLog10RatioFunction(func)
- return hyp
-
-# Public class: Mesh_Triangle
-# ---------------------------
-
-## Class to define a triangle 2D algorithm
-#
-# More details.
-class Mesh_Triangle(Mesh_Algorithm):
-
- algoType = 0
- params = 0
- _angleMeshS = 8
- _gradation = 1.1
-
- ## Private constructor.
- def __init__(self, mesh, algoType, geom=0):
- self.algoType = algoType
- if algoType == MEFISTO:
- self.Create(mesh, geom, "MEFISTO_2D")
- elif algoType == BLSURF:
- import BLSURFPlugin
- self.Create(mesh, geom, "BLSURF", "libBLSURFEngine.so")
- self.SetPhysicalMesh()
- elif algoType == NETGEN:
- if noNETGENPlugin:
- print "Warning: NETGENPlugin module has not been imported."
- self.Create(mesh, geom, "NETGEN_2D", "libNETGENEngine.so")
-
- ## Define "MaxElementArea" hypothesis to give the maximun area of each triangles
- # @param area for the maximum area of each triangles
- def MaxElementArea(self, area):
- if self.algoType == MEFISTO:
- hyp = self.Hypothesis("MaxElementArea", [area])
- hyp.SetMaxElementArea(area)
- return hyp
- elif self.algoType == NETGEN:
- print "Netgen 1D-2D algo doesn't support this hypothesis"
- return None
-
- ## Define "LengthFromEdges" hypothesis to build triangles based on the length of the edges taken from the wire
- def LengthFromEdges(self):
- if self.algoType == MEFISTO:
- hyp = self.Hypothesis("LengthFromEdges")
- return hyp
- elif self.algoType == NETGEN:
- print "Netgen 1D-2D algo doesn't support this hypothesis"
- return None
-
- ## Define "Netgen 2D Parameters" hypothesis
- def Parameters(self):
- if self.algoType == NETGEN:
- self.params = self.Hypothesis("NETGEN_Parameters_2D", [], "libNETGENEngine.so")
- return self.params
- elif self.algoType == MEFISTO:
- print "Mefisto algo doesn't support this hypothesis"
- return None
- elif self.algoType == BLSURF:
- self.params = self.Hypothesis("BLSURF_Parameters", [], "libBLSURFEngine.so")
- return self.params
-
- ## Set MaxSize
- def SetMaxSize(self, theSize):
- if self.params == 0:
- self.Parameters()
- self.params.SetMaxSize(theSize)
-
- ## Set SecondOrder flag
- def SetSecondOrder(seld, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetSecondOrder(theVal)
-
- ## Set Optimize flag
- def SetOptimize(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetOptimize(theVal)
-
- ## Set Fineness
- # @param theFineness is:
- # VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
- def SetFineness(self, theFineness):
- if self.params == 0:
- self.Parameters()
- self.params.SetFineness(theFineness)
-
- ## Set GrowthRate
- def SetGrowthRate(self, theRate):
- if self.params == 0:
- self.Parameters()
- self.params.SetGrowthRate(theRate)
-
- ## Set NbSegPerEdge
- def SetNbSegPerEdge(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetNbSegPerEdge(theVal)
-
- ## Set NbSegPerRadius
- def SetNbSegPerRadius(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetNbSegPerRadius(theVal)
-
- ## Set PhysicalMesh
- # @param thePhysicalMesh is:
- # DefaultSize or Custom
- def SetPhysicalMesh(self, thePhysicalMesh=1):
- if self.params == 0:
- self.Parameters()
- self.params.SetPhysicalMesh(thePhysicalMesh)
-
- ## Set PhySize flag
- def SetPhySize(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetPhySize(theVal)
-
- ## Set GeometricMesh
- # @param theGeometricMesh is:
- # DefaultGeom or Custom
- def SetGeometricMesh(self, theGeometricMesh=0):
- if self.params == 0:
- self.Parameters()
- if self.params.GetPhysicalMesh() == 0: theGeometricMesh = 1
- self.params.SetGeometricMesh(theGeometricMesh)
-
- ## Set AngleMeshS flag
- def SetAngleMeshS(self, theVal=_angleMeshS):
- if self.params == 0:
- self.Parameters()
- if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS
- self.params.SetAngleMeshS(theVal)
-
- ## Set Gradation flag
- def SetGradation(self, theVal=_gradation):
- if self.params == 0:
- self.Parameters()
- if self.params.GetGeometricMesh() == 0: theVal = self._gradation
- self.params.SetGradation(theVal)
-
- ## Set QuadAllowed flag
- def SetQuadAllowed(self, toAllow=False):
- if self.params == 0:
- self.Parameters()
- self.params.SetQuadAllowed(toAllow)
-
- ## Set Decimesh flag
- def SetDecimesh(self, toAllow=False):
- if self.params == 0:
- self.Parameters()
- self.params.SetDecimesh(toAllow)
-
-# Public class: Mesh_Quadrangle
-# -----------------------------
-
-## Class to define a quadrangle 2D algorithm
-#
-# More details.
-class Mesh_Quadrangle(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Quadrangle_2D")
-
- ## Define "QuadranglePreference" hypothesis, forcing construction
- # of quadrangles if the number of nodes on opposite edges is not the same
- # in the case where the global number of nodes on edges is even
- def QuadranglePreference(self):
- hyp = self.Hypothesis("QuadranglePreference")
- return hyp
-
-# Public class: Mesh_Tetrahedron
-# ------------------------------
-
-## Class to define a tetrahedron 3D algorithm
-#
-# More details.
-class Mesh_Tetrahedron(Mesh_Algorithm):
-
- params = 0
- algoType = 0
-
- ## Private constructor.
- def __init__(self, mesh, algoType, geom=0):
- if algoType == NETGEN:
- self.Create(mesh, geom, "NETGEN_3D", "libNETGENEngine.so")
- elif algoType == GHS3D:
- import GHS3DPlugin
- self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.so")
- elif algoType == FULL_NETGEN:
- if noNETGENPlugin:
- print "Warning: NETGENPlugin module has not been imported."
- self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
- self.algoType = algoType
-
- ## Define "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedral
- # @param vol for the maximum volume of each tetrahedral
- def MaxElementVolume(self, vol):
- hyp = self.Hypothesis("MaxElementVolume", [vol])
- hyp.SetMaxElementVolume(vol)
- return hyp
-
- ## Define "Netgen 3D Parameters" hypothesis
- def Parameters(self):
- if (self.algoType == FULL_NETGEN):
- self.params = self.Hypothesis("NETGEN_Parameters", [], "libNETGENEngine.so")
- return self.params
- else:
- print "Algo doesn't support this hypothesis"
- return None
-
- ## Set MaxSize
- def SetMaxSize(self, theSize):
- if self.params == 0:
- self.Parameters()
- self.params.SetMaxSize(theSize)
-
- ## Set SecondOrder flag
- def SetSecondOrder(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetSecondOrder(theVal)
-
- ## Set Optimize flag
- def SetOptimize(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetOptimize(theVal)
-
- ## Set Fineness
- # @param theFineness is:
- # VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
- def SetFineness(self, theFineness):
- if self.params == 0:
- self.Parameters()
- self.params.SetFineness(theFineness)
-
- ## Set GrowthRate
- def SetGrowthRate(self, theRate):
- if self.params == 0:
- self.Parameters()
- self.params.SetGrowthRate(theRate)
-
- ## Set NbSegPerEdge
- def SetNbSegPerEdge(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetNbSegPerEdge(theVal)
-
- ## Set NbSegPerRadius
- def SetNbSegPerRadius(self, theVal):
- if self.params == 0:
- self.Parameters()
- self.params.SetNbSegPerRadius(theVal)
-
-# Public class: Mesh_Hexahedron
-# ------------------------------
-
-## Class to define a hexahedron 3D algorithm
-#
-# More details.
-class Mesh_Hexahedron(Mesh_Algorithm):
-
- ## Private constructor.
- ## def __init__(self, mesh, geom=0):
- ## self.Create(mesh, geom, "Hexa_3D")
- def __init__(self, mesh, algo, geom):
- if algo == Hexa:
- self.Create(mesh, geom, "Hexa_3D")
- elif algo == Hexotic:
- import HexoticPlugin
- self.Create(mesh, geom, "Hexotic_3D" , "libHexoticEngine.so")
-
- ## Define "MinMaxQuad" hypothesis to give the three hexotic parameters
- def MinMaxQuad(self, min=3, max=8, quad=True):
- hyp = self.Hypothesis("Hexotic_Parameters", [], "libHexoticEngine.so")
- hyp.SetHexesMinLevel(min)
- hyp.SetHexesMaxLevel(max)
- hyp.SetHexoticQuadrangles(quad)
- return hyp
-
-# Deprecated, only for compatibility!
-# Public class: Mesh_Netgen
-# ------------------------------
-
-## Class to define a NETGEN-based 2D or 3D algorithm
-# that need no discrete boundary (i.e. independent)
-#
-# This class is deprecated, only for compatibility!
-#
-# More details.
-class Mesh_Netgen(Mesh_Algorithm):
-
- is3D = 0
-
- ## Private constructor.
- def __init__(self, mesh, is3D, geom=0):
- if noNETGENPlugin:
- print "Warning: NETGENPlugin module has not been imported."
-
- self.is3D = is3D
- if is3D:
- self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
- else:
- self.Create(mesh, geom, "NETGEN_2D", "libNETGENEngine.so")
-
- ## Define hypothesis containing parameters of the algorithm
- def Parameters(self):
- if self.is3D:
- hyp = self.Hypothesis("NETGEN_Parameters", [], "libNETGENEngine.so")
- else:
- hyp = self.Hypothesis("NETGEN_Parameters_2D", [], "libNETGENEngine.so")
- return hyp
-
-# Public class: Mesh_Projection1D
-# ------------------------------
-
-## Class to define a projection 1D algorithm
-#
-# More details.
-class Mesh_Projection1D(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Projection_1D")
-
- ## Define "Source Edge" hypothesis, specifying a meshed edge to
- # take a mesh pattern from, and optionally association of vertices
- # between the source edge and a target one (where a hipothesis is assigned to)
- # @param edge to take nodes distribution from
- # @param mesh to take nodes distribution from (optional)
- # @param srcV is vertex of \a edge to associate with \a tgtV (optional)
- # @param tgtV is vertex of \a the edge where the algorithm is assigned,
- # to associate with \a srcV (optional)
- def SourceEdge(self, edge, mesh=None, srcV=None, tgtV=None):
- hyp = self.Hypothesis("ProjectionSource1D")
- hyp.SetSourceEdge( edge )
- if not mesh is None and isinstance(mesh, Mesh):
- mesh = mesh.GetMesh()
- hyp.SetSourceMesh( mesh )
- hyp.SetVertexAssociation( srcV, tgtV )
- return hyp
-
-
-# Public class: Mesh_Projection2D
-# ------------------------------
-
-## Class to define a projection 2D algorithm
-#
-# More details.
-class Mesh_Projection2D(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Projection_2D")
-
- ## Define "Source Face" hypothesis, specifying a meshed face to
- # take a mesh pattern from, and optionally association of vertices
- # between the source face and a target one (where a hipothesis is assigned to)
- # @param face to take mesh pattern from
- # @param mesh to take mesh pattern from (optional)
- # @param srcV1 is vertex of \a face to associate with \a tgtV1 (optional)
- # @param tgtV1 is vertex of \a the face where the algorithm is assigned,
- # to associate with \a srcV1 (optional)
- # @param srcV2 is vertex of \a face to associate with \a tgtV1 (optional)
- # @param tgtV2 is vertex of \a the face where the algorithm is assigned,
- # to associate with \a srcV2 (optional)
- #
- # Note: association vertices must belong to one edge of a face
- def SourceFace(self, face, mesh=None, srcV1=None, tgtV1=None, srcV2=None, tgtV2=None):
- hyp = self.Hypothesis("ProjectionSource2D")
- hyp.SetSourceFace( face )
- if not mesh is None and isinstance(mesh, Mesh):
- mesh = mesh.GetMesh()
- hyp.SetSourceMesh( mesh )
- hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
- return hyp
-
-# Public class: Mesh_Projection3D
-# ------------------------------
-
-## Class to define a projection 3D algorithm
-#
-# More details.
-class Mesh_Projection3D(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Projection_3D")
-
- ## Define "Source Shape 3D" hypothesis, specifying a meshed solid to
- # take a mesh pattern from, and optionally association of vertices
- # between the source solid and a target one (where a hipothesis is assigned to)
- # @param solid to take mesh pattern from
- # @param mesh to take mesh pattern from (optional)
- # @param srcV1 is vertex of \a solid to associate with \a tgtV1 (optional)
- # @param tgtV1 is vertex of \a the solid where the algorithm is assigned,
- # to associate with \a srcV1 (optional)
- # @param srcV2 is vertex of \a solid to associate with \a tgtV1 (optional)
- # @param tgtV2 is vertex of \a the solid where the algorithm is assigned,
- # to associate with \a srcV2 (optional)
- #
- # Note: association vertices must belong to one edge of a solid
- def SourceShape3D(self, solid, mesh=0, srcV1=0, tgtV1=0, srcV2=0, tgtV2=0):
- hyp = self.Hypothesis("ProjectionSource3D")
- hyp.SetSource3DShape( solid )
- if not mesh is None and isinstance(mesh, Mesh):
- mesh = mesh.GetMesh()
- hyp.SetSourceMesh( mesh )
- hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
- return hyp
-
-
-# Public class: Mesh_Prism
-# ------------------------
-
-## Class to define a 3D extrusion algorithm
-#
-# More details.
-class Mesh_Prism3D(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "Prism_3D")
-
-# Public class: Mesh_RadialPrism
-# -------------------------------
-
-## Class to define a Radial Prism 3D algorithm
-#
-# More details.
-class Mesh_RadialPrism3D(Mesh_Algorithm):
-
- ## Private constructor.
- def __init__(self, mesh, geom=0):
- self.Create(mesh, geom, "RadialPrism_3D")
- self.distribHyp = self.Hypothesis( "LayerDistribution" )
- self.nbLayers = None
-
- ## Return 3D hypothesis holding the 1D one
- def Get3DHypothesis(self):
- return self.distribHyp
-
- ## Private method creating 1D hypothes and storing it in the LayerDistribution
- # hypothes. Returns the created hypothes
- def OwnHypothesis(self, hypType, args=[], so="libStdMeshersEngine.so"):
- if not self.nbLayers is None:
- self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers )
- self.mesh.GetMesh().AddHypothesis( self.geom, self.distribHyp )
- study = GetCurrentStudy() # prevent publishing of own 1D hypothesis
- hyp = smesh.CreateHypothesis(hypType, so)
- SetCurrentStudy( study ) # anable publishing
- self.distribHyp.SetLayerDistribution( hyp )
- return hyp
-
- ## Define "NumberOfLayers" hypothesis, specifying a number of layers of
- # prisms to build between the inner and outer shells
- def NumberOfLayers(self, n ):
- self.mesh.GetMesh().RemoveHypothesis( self.geom, self.distribHyp )
- self.nbLayers = self.Hypothesis("NumberOfLayers")
- self.nbLayers.SetNumberOfLayers( n )
- return self.nbLayers
-
- ## Define "LocalLength" hypothesis, specifying segment length
- # to build between the inner and outer shells
- # @param l for the length of segments
- def LocalLength(self, l):
- hyp = self.OwnHypothesis("LocalLength", [l])
- hyp.SetLength(l)
- return hyp
-
- ## Define "NumberOfSegments" hypothesis, specifying a number of layers of
- # prisms to build between the inner and outer shells
- # @param n for the number of segments
- # @param s for the scale factor (optional)
- def NumberOfSegments(self, n, s=[]):
- if s == []:
- hyp = self.OwnHypothesis("NumberOfSegments", [n])
- else:
- hyp = self.OwnHypothesis("NumberOfSegments", [n,s])
- hyp.SetDistrType( 1 )
- hyp.SetScaleFactor(s)
- hyp.SetNumberOfSegments(n)
- return hyp
-
- ## Define "Arithmetic1D" hypothesis, specifying distribution of segments
- # to build between the inner and outer shells as arithmetic length increasing
- # @param start for the length of the first segment
- # @param end for the length of the last segment
- def Arithmetic1D(self, start, end):
- hyp = self.OwnHypothesis("Arithmetic1D", [start, end])
- hyp.SetLength(start, 1)
- hyp.SetLength(end , 0)
- return hyp
-
- ## Define "StartEndLength" hypothesis, specifying distribution of segments
- # to build between the inner and outer shells as geometric length increasing
- # @param start for the length of the first segment
- # @param end for the length of the last segment
- def StartEndLength(self, start, end):
- hyp = self.OwnHypothesis("StartEndLength", [start, end])
- hyp.SetLength(start, 1)
- hyp.SetLength(end , 0)
- return hyp
-
- ## Define "AutomaticLength" hypothesis, specifying number of segments
- # to build between the inner and outer shells
- # @param fineness for the fineness [0-1]
- def AutomaticLength(self, fineness=0):
- hyp = self.OwnHypothesis("AutomaticLength")
- hyp.SetFineness( fineness )
- return hyp
-
-
-# Public class: Mesh
-# ==================
-
-## Class to define a mesh
-#
-# The class contains mesh shape, SMESH_Mesh, SMESH_MeshEditor
-# More details.
-class Mesh:
-
- geom = 0
- mesh = 0
- editor = 0
-
- ## Constructor
- #
- # Creates mesh on the shape \a geom(or the empty mesh if geom equal to 0),
- # sets GUI name of this mesh to \a name.
- # @param obj Shape to be meshed or SMESH_Mesh object
- # @param name Study name of the mesh
- def __init__(self, obj=0, name=0):
- if obj is None:
- obj = 0
- if obj != 0:
- if isinstance(obj, geompy.GEOM._objref_GEOM_Object):
- self.geom = obj
- self.mesh = smesh.CreateMesh(self.geom)
- elif isinstance(obj, SMESH._objref_SMESH_Mesh):
- self.SetMesh(obj)
- else:
- self.mesh = smesh.CreateEmptyMesh()
- if name != 0:
- SetName(self.mesh, name)
- elif obj != 0:
- SetName(self.mesh, GetName(obj))
-
- self.editor = self.mesh.GetMeshEditor()
-
- ## Method that inits the Mesh object from SMESH_Mesh interface
- # @param theMesh is SMESH_Mesh object
- def SetMesh(self, theMesh):
- self.mesh = theMesh
- self.geom = self.mesh.GetShapeToMesh()
-
- ## Method that returns the mesh
- # @return SMESH_Mesh object
- def GetMesh(self):
- return self.mesh
-
- ## Get mesh name
- def GetName(self):
- name = GetName(self.GetMesh())
- return name
-
- ## Set name to mesh
- def SetName(self, name):
- SetName(self.GetMesh(), name)
-
- ## Get the subMesh object associated to a subShape. The subMesh object
- # gives access to nodes and elements IDs.
- # \n SubMesh will be used instead of SubShape in a next idl version to
- # adress a specific subMesh...
- def GetSubMesh(self, theSubObject, name):
- submesh = self.mesh.GetSubMesh(theSubObject, name)
- return submesh
-
- ## Method that returns the shape associated to the mesh
- # @return GEOM_Object
- def GetShape(self):
- return self.geom
-
- ## Method that associates given shape to the mesh(entails the mesh recreation)
- # @param geom shape to be meshed(GEOM_Object)
- def SetShape(self, geom):
- self.mesh = smesh.CreateMesh(geom)
-
- ## Return true if hypotheses are defined well
- # @param theMesh is an instance of Mesh class
- # @param theSubObject subshape of a mesh shape
- def IsReadyToCompute(self, theSubObject):
- return smesh.IsReadyToCompute(self.mesh, theSubObject)
-
- ## Return errors of hypotheses definintion
- # error list is empty if everything is OK
- # @param theMesh is an instance of Mesh class
- # @param theSubObject subshape of a mesh shape
- # @return a list of errors
- def GetAlgoState(self, theSubObject):
- return smesh.GetAlgoState(self.mesh, theSubObject)
-
- ## Return geometrical object the given element is built on.
- # The returned geometrical object, if not nil, is either found in the
- # study or is published by this method with the given name
- # @param theMesh is an instance of Mesh class
- # @param theElementID an id of the mesh element
- # @param theGeomName user defined name of geometrical object
- # @return GEOM::GEOM_Object instance
- def GetGeometryByMeshElement(self, theElementID, theGeomName):
- return smesh.GetGeometryByMeshElement( self.mesh, theElementID, theGeomName )
-
- ## Returns mesh dimension depending on shape one
- def MeshDimension(self):
- shells = geompy.SubShapeAllIDs( self.geom, geompy.ShapeType["SHELL"] )
- if len( shells ) > 0 :
- return 3
- elif geompy.NumberOfFaces( self.geom ) > 0 :
- return 2
- elif geompy.NumberOfEdges( self.geom ) > 0 :
- return 1
- else:
- return 0;
- pass
-
- ## Creates a segment discretization 1D algorithm.
- # If the optional \a algo parameter is not sets, this algorithm is REGULAR.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param algo values are smesh.REGULAR or smesh.PYTHON for discretization via python function
- # @param geom If defined, subshape to be meshed
- def Segment(self, algo=REGULAR, geom=0):
- ## if Segment(geom) is called by mistake
- if ( isinstance( algo, geompy.GEOM._objref_GEOM_Object)):
- algo, geom = geom, algo
- pass
- if algo == REGULAR:
- return Mesh_Segment(self, geom)
- elif algo == PYTHON:
- return Mesh_Segment_Python(self, geom)
- elif algo == COMPOSITE:
- return Mesh_CompositeSegment(self, geom)
- else:
- return Mesh_Segment(self, geom)
-
- ## Creates a triangle 2D algorithm for faces.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param algo values are: smesh.MEFISTO or smesh.NETGEN
- # @param geom If defined, subshape to be meshed
- def Triangle(self, algo=MEFISTO, geom=0):
- ## if Triangle(geom) is called by mistake
- if ( isinstance( algo, geompy.GEOM._objref_GEOM_Object)):
- geom = algo
- algo = MEFISTO
-
- return Mesh_Triangle(self, algo, geom)
-
- ## Creates a quadrangle 2D algorithm for faces.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- def Quadrangle(self, geom=0):
- return Mesh_Quadrangle(self, geom)
-
- ## Creates a tetrahedron 3D algorithm for solids.
- # The parameter \a algo permits to choice the algorithm: NETGEN or GHS3D
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param algo values are: smesh.NETGEN, smesh.GHS3D, smesh.FULL_NETGEN
- # @param geom If defined, subshape to be meshed
- def Tetrahedron(self, algo=NETGEN, geom=0):
- ## if Tetrahedron(geom) is called by mistake
- if ( isinstance( algo, geompy.GEOM._objref_GEOM_Object)):
- algo, geom = geom, algo
- pass
- return Mesh_Tetrahedron(self, algo, geom)
-
- ## Creates a hexahedron 3D algorithm for solids.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- ## def Hexahedron(self, geom=0):
- ## return Mesh_Hexahedron(self, geom)
- def Hexahedron(self, algo=Hexa, geom=0):
- ## if Hexahedron(geom, algo) or Hexahedron(geom) is called by mistake
- if ( isinstance(algo, geompy.GEOM._objref_GEOM_Object) ):
- if geom in [Hexa, Hexotic]: algo, geom = geom, algo
- elif geom == 0: algo, geom = Hexa, algo
- return Mesh_Hexahedron(self, algo, geom)
-
- ## Deprecated, only for compatibility!
- def Netgen(self, is3D, geom=0):
- return Mesh_Netgen(self, is3D, geom)
-
- ## Creates a projection 1D algorithm for edges.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- def Projection1D(self, geom=0):
- return Mesh_Projection1D(self, geom)
-
- ## Creates a projection 2D algorithm for faces.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- def Projection2D(self, geom=0):
- return Mesh_Projection2D(self, geom)
-
- ## Creates a projection 3D algorithm for solids.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- def Projection3D(self, geom=0):
- return Mesh_Projection3D(self, geom)
-
- ## Creates a 3D extrusion (Prism 3D) or RadialPrism 3D algorithm for solids.
- # If the optional \a geom parameter is not sets, this algorithm is global.
- # Otherwise, this algorithm define a submesh based on \a geom subshape.
- # @param geom If defined, subshape to be meshed
- def Prism(self, geom=0):
- shape = geom
- if shape==0:
- shape = self.geom
- nbSolids = len( geompy.SubShapeAll( shape, geompy.ShapeType["SOLID"] ))
- nbShells = len( geompy.SubShapeAll( shape, geompy.ShapeType["SHELL"] ))
- if nbSolids == 0 or nbSolids == nbShells:
- return Mesh_Prism3D(self, geom)
- return Mesh_RadialPrism3D(self, geom)
-
- ## Compute the mesh and return the status of the computation
- def Compute(self, geom=0):
- if geom == 0 or not isinstance(geom, geompy.GEOM._objref_GEOM_Object):
- if self.geom == 0:
- print "Compute impossible: mesh is not constructed on geom shape."
- return 0
- else:
- geom = self.geom
- ok = False
- try:
- ok = smesh.Compute(self.mesh, geom)
- except SALOME.SALOME_Exception, ex:
- print "Mesh computation failed, exception cought:"
- print " ", ex.details.text
- except:
- import traceback
- print "Mesh computation failed, exception cought:"
- traceback.print_exc()
- if not ok:
- errors = smesh.GetAlgoState( self.mesh, geom )
- allReasons = ""
- for err in errors:
- if err.isGlobalAlgo:
- glob = " global "
- else:
- glob = " local "
- pass
- dim = str(err.algoDim)
- if err.name == MISSING_ALGO:
- reason = glob + dim + "D algorithm is missing"
- elif err.name == MISSING_HYPO:
- name = '"' + err.algoName + '"'
- reason = glob + dim + "D algorithm " + name + " misses " + dim + "D hypothesis"
- elif err.name == NOT_CONFORM_MESH:
- reason = "Global \"Not Conform mesh allowed\" hypothesis is missing"
- elif err.name == BAD_PARAM_VALUE:
- name = '"' + err.algoName + '"'
- reason = "Hypothesis of" + glob + dim + "D algorithm " + name +\
- " has a bad parameter value"
- else:
- reason = "For unknown reason."+\
- " Revise Mesh.Compute() implementation in smesh.py!"
- pass
- if allReasons != "":
- allReasons += "\n"
- pass
- allReasons += reason
- pass
- if allReasons != "":
- print '"' + GetName(self.mesh) + '"',"has not been computed:"
- print allReasons
- else:
- print '"' + GetName(self.mesh) + '"',"has not been computed."
- pass
- pass
- if salome.sg.hasDesktop():
- smeshgui = salome.ImportComponentGUI("SMESH")
- smeshgui.Init(salome.myStudyId)
- smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), ok, (self.NbNodes()==0) )
- salome.sg.updateObjBrowser(1)
- pass
- return ok
-
- ## Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN
- # The parameter \a fineness [0,-1] defines mesh fineness
- def AutomaticTetrahedralization(self, fineness=0):
- dim = self.MeshDimension()
- # assign hypotheses
- self.RemoveGlobalHypotheses()
- self.Segment().AutomaticLength(fineness)
- if dim > 1 :
- self.Triangle().LengthFromEdges()
- pass
- if dim > 2 :
- self.Tetrahedron(NETGEN)
- pass
- return self.Compute()
-
- ## Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron
- # The parameter \a fineness [0,-1] defines mesh fineness
- def AutomaticHexahedralization(self, fineness=0):
- dim = self.MeshDimension()
- # assign hypotheses
- self.RemoveGlobalHypotheses()
- self.Segment().AutomaticLength(fineness)
- if dim > 1 :
- self.Quadrangle()
- pass
- if dim > 2 :
- self.Hexahedron()
- pass
- return self.Compute()
-
- ## Assign hypothesis
- # @param hyp is a hypothesis to assign
- # @param geom is subhape of mesh geometry
- def AddHypothesis(self, hyp, geom=0 ):
- if isinstance( hyp, Mesh_Algorithm ):
- hyp = hyp.GetAlgorithm()
- pass
- if not geom:
- geom = self.geom
- pass
- status = self.mesh.AddHypothesis(geom, hyp)
- isAlgo = ( hyp._narrow( SMESH.SMESH_Algo ) is not None )
- TreatHypoStatus( status, GetName( hyp ), GetName( geom ), isAlgo )
- return status
-
- ## Get the list of hypothesis added on a geom
- # @param geom is subhape of mesh geometry
- def GetHypothesisList(self, geom):
- return self.mesh.GetHypothesisList( geom )
-
- ## Removes all global hypotheses
- def RemoveGlobalHypotheses(self):
- current_hyps = self.mesh.GetHypothesisList( self.geom )
- for hyp in current_hyps:
- self.mesh.RemoveHypothesis( self.geom, hyp )
- pass
- pass
-
- ## Create a mesh group based on geometric object \a grp
- # and give a \a name, \n if this parameter is not defined
- # the name is the same as the geometric group name \n
- # Note: Works like GroupOnGeom().
- # @param grp is a geometric group, a vertex, an edge, a face or a solid
- # @param name is the name of the mesh group
- # @return SMESH_GroupOnGeom
- def Group(self, grp, name=""):
- return self.GroupOnGeom(grp, name)
-
- ## Deprecated, only for compatibility! Please, use ExportMED() method instead.
- # Export the mesh in a file with the MED format and choice the \a version of MED format
- # @param f is the file name
- # @param version values are SMESH.MED_V2_1, SMESH.MED_V2_2
- def ExportToMED(self, f, version, opt=0):
- self.mesh.ExportToMED(f, opt, version)
-
- ## Export the mesh in a file with the MED format
- # @param f is the file name
- # @param auto_groups boolean parameter for creating/not creating
- # the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
- # the typical use is auto_groups=false.
- # @param version MED format version(MED_V2_1 or MED_V2_2)
- def ExportMED(self, f, auto_groups=0, version=MED_V2_2):
- self.mesh.ExportToMED(f, auto_groups, version)
-
- ## Export the mesh in a file with the DAT format
- # @param f is the file name
- def ExportDAT(self, f):
- self.mesh.ExportDAT(f)
-
- ## Export the mesh in a file with the UNV format
- # @param f is the file name
- def ExportUNV(self, f):
- self.mesh.ExportUNV(f)
-
- ## Export the mesh in a file with the STL format
- # @param f is the file name
- # @param ascii defined the kind of file contents
- def ExportSTL(self, f, ascii=1):
- self.mesh.ExportSTL(f, ascii)
-
-
- # Operations with groups:
- # ----------------------
-
- ## Creates an empty mesh group
- # @param elementType is the type of elements in the group
- # @param name is the name of the mesh group
- # @return SMESH_Group
- def CreateEmptyGroup(self, elementType, name):
- return self.mesh.CreateGroup(elementType, name)
-
- ## Creates a mesh group based on geometric object \a grp
- # and give a \a name, \n if this parameter is not defined
- # the name is the same as the geometric group name
- # @param grp is a geometric group, a vertex, an edge, a face or a solid
- # @param name is the name of the mesh group
- # @return SMESH_GroupOnGeom
- def GroupOnGeom(self, grp, name="", type=None):
- if name == "":
- name = grp.GetName()
-
- if type == None:
- tgeo = str(grp.GetShapeType())
- if tgeo == "VERTEX":
- type = NODE
- elif tgeo == "EDGE":
- type = EDGE
- elif tgeo == "FACE":
- type = FACE
- elif tgeo == "SOLID":
- type = VOLUME
- elif tgeo == "SHELL":
- type = VOLUME
- elif tgeo == "COMPOUND":
- if len( geompy.GetObjectIDs( grp )) == 0:
- print "Mesh.Group: empty geometric group", GetName( grp )
- return 0
- tgeo = geompy.GetType(grp)
- if tgeo == geompy.ShapeType["VERTEX"]:
- type = NODE
- elif tgeo == geompy.ShapeType["EDGE"]:
- type = EDGE
- elif tgeo == geompy.ShapeType["FACE"]:
- type = FACE
- elif tgeo == geompy.ShapeType["SOLID"]:
- type = VOLUME
-
- if type == None:
- print "Mesh.Group: bad first argument: expected a group, a vertex, an edge, a face or a solid"
- return 0
- else:
- return self.mesh.CreateGroupFromGEOM(type, name, grp)
-
- ## Create a mesh group by the given ids of elements
- # @param groupName is the name of the mesh group
- # @param elementType is the type of elements in the group
- # @param elemIDs is the list of ids
- # @return SMESH_Group
- def MakeGroupByIds(self, groupName, elementType, elemIDs):
- group = self.mesh.CreateGroup(elementType, groupName)
- group.Add(elemIDs)
- return group
-
- ## Create a mesh group by the given conditions
- # @param groupName is the name of the mesh group
- # @param elementType is the type of elements in the group
- # @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
- # @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
- # @param Treshold is threshold value (range of id ids as string, shape, numeric)
- # @param UnaryOp is FT_LogicalNOT or FT_Undefined
- # @return SMESH_Group
- def MakeGroup(self,
- groupName,
- elementType,
- CritType=FT_Undefined,
- Compare=FT_EqualTo,
- Treshold="",
- UnaryOp=FT_Undefined):
- aCriterion = GetCriterion(elementType, CritType, Compare, Treshold, UnaryOp, FT_Undefined)
- group = self.MakeGroupByCriterion(groupName, aCriterion)
- return group
-
- ## Create a mesh group by the given criterion
- # @param groupName is the name of the mesh group
- # @param Criterion is the instance of Criterion class
- # @return SMESH_Group
- def MakeGroupByCriterion(self, groupName, Criterion):
- aFilterMgr = smesh.CreateFilterManager()
- aFilter = aFilterMgr.CreateFilter()
- aCriteria = []
- aCriteria.append(Criterion)
- aFilter.SetCriteria(aCriteria)
- group = self.MakeGroupByFilter(groupName, aFilter)
- return group
-
- ## Create a mesh group by the given criteria(list of criterions)
- # @param groupName is the name of the mesh group
- # @param Criteria is the list of criterions
- # @return SMESH_Group
- def MakeGroupByCriteria(self, groupName, theCriteria):
- aFilterMgr = smesh.CreateFilterManager()
- aFilter = aFilterMgr.CreateFilter()
- aFilter.SetCriteria(theCriteria)
- group = self.MakeGroupByFilter(groupName, aFilter)
- return group
-
- ## Create a mesh group by the given filter
- # @param groupName is the name of the mesh group
- # @param Criterion is the instance of Filter class
- # @return SMESH_Group
- def MakeGroupByFilter(self, groupName, theFilter):
- anIds = theFilter.GetElementsId(self.mesh)
- anElemType = theFilter.GetElementType()
- group = self.MakeGroupByIds(groupName, anElemType, anIds)
- return group
-
- ## Pass mesh elements through the given filter and return ids
- # @param theFilter is SMESH_Filter
- # @return list of ids
- def GetIdsFromFilter(self, theFilter):
- return theFilter.GetElementsId(self.mesh)
-
- ## Verify whether 2D mesh element has free edges(edges connected to one face only)\n
- # Returns list of special structures(borders).
- # @return list of SMESH.FreeEdges.Border structure: edge id and two its nodes ids.
- def GetFreeBorders(self):
- aFilterMgr = smesh.CreateFilterManager()
- aPredicate = aFilterMgr.CreateFreeEdges()
- aPredicate.SetMesh(self.mesh)
- aBorders = aPredicate.GetBorders()
- return aBorders
-
- ## Remove a group
- def RemoveGroup(self, group):
- self.mesh.RemoveGroup(group)
-
- ## Remove group with its contents
- def RemoveGroupWithContents(self, group):
- self.mesh.RemoveGroupWithContents(group)
-
- ## Get the list of groups existing in the mesh
- def GetGroups(self):
- return self.mesh.GetGroups()
-
- ## Get the list of names of groups existing in the mesh
- def GetGroupNames(self):
- groups = self.GetGroups()
- names = []
- for group in groups:
- names.append(group.GetName())
- return names
-
- ## Union of two groups
- # New group is created. All mesh elements that are
- # present in initial groups are added to the new one
- def UnionGroups(self, group1, group2, name):
- return self.mesh.UnionGroups(group1, group2, name)
-
- ## Intersection of two groups
- # New group is created. All mesh elements that are
- # present in both initial groups are added to the new one.
- def IntersectGroups(self, group1, group2, name):
- return self.mesh.IntersectGroups(group1, group2, name)
-
- ## Cut of two groups
- # New group is created. All mesh elements that are present in
- # main group but do not present in tool group are added to the new one
- def CutGroups(self, mainGroup, toolGroup, name):
- return self.mesh.CutGroups(mainGroup, toolGroup, name)
-
-
- # Get some info about mesh:
- # ------------------------
-
- ## Get the log of nodes and elements added or removed since previous
- # clear of the log.
- # @param clearAfterGet log is emptied after Get (safe if concurrents access)
- # @return list of log_block structures:
- # commandType
- # number
- # coords
- # indexes
- def GetLog(self, clearAfterGet):
- return self.mesh.GetLog(clearAfterGet)
-
- ## Clear the log of nodes and elements added or removed since previous
- # clear. Must be used immediately after GetLog if clearAfterGet is false.
- def ClearLog(self):
- self.mesh.ClearLog()
-
- ## Get the internal Id
- def GetId(self):
- return self.mesh.GetId()
-
- ## Get the study Id
- def GetStudyId(self):
- return self.mesh.GetStudyId()
-
- ## Check group names for duplications.
- # Consider maximum group name length stored in MED file.
- def HasDuplicatedGroupNamesMED(self):
- return self.mesh.GetStudyId()
-
- ## Obtain instance of SMESH_MeshEditor
- def GetMeshEditor(self):
- return self.mesh.GetMeshEditor()
-
- ## Get MED Mesh
- def GetMEDMesh(self):
- return self.mesh.GetMEDMesh()
-
-
- # Get informations about mesh contents:
- # ------------------------------------
-
- ## Returns number of nodes in mesh
- def NbNodes(self):
- return self.mesh.NbNodes()
-
- ## Returns number of elements in mesh
- def NbElements(self):
- return self.mesh.NbElements()
-
- ## Returns number of edges in mesh
- def NbEdges(self):
- return self.mesh.NbEdges()
-
- ## Returns number of edges with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbEdgesOfOrder(self, elementOrder):
- return self.mesh.NbEdgesOfOrder(elementOrder)
-
- ## Returns number of faces in mesh
- def NbFaces(self):
- return self.mesh.NbFaces()
-
- ## Returns number of faces with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbFacesOfOrder(self, elementOrder):
- return self.mesh.NbFacesOfOrder(elementOrder)
-
- ## Returns number of triangles in mesh
- def NbTriangles(self):
- return self.mesh.NbTriangles()
-
- ## Returns number of triangles with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbTrianglesOfOrder(self, elementOrder):
- return self.mesh.NbTrianglesOfOrder(elementOrder)
-
- ## Returns number of quadrangles in mesh
- def NbQuadrangles(self):
- return self.mesh.NbQuadrangles()
-
- ## Returns number of quadrangles with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbQuadranglesOfOrder(self, elementOrder):
- return self.mesh.NbQuadranglesOfOrder(elementOrder)
-
- ## Returns number of polygons in mesh
- def NbPolygons(self):
- return self.mesh.NbPolygons()
-
- ## Returns number of volumes in mesh
- def NbVolumes(self):
- return self.mesh.NbVolumes()
-
- ## Returns number of volumes with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbVolumesOfOrder(self, elementOrder):
- return self.mesh.NbVolumesOfOrder(elementOrder)
-
- ## Returns number of tetrahedrons in mesh
- def NbTetras(self):
- return self.mesh.NbTetras()
-
- ## Returns number of tetrahedrons with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbTetrasOfOrder(self, elementOrder):
- return self.mesh.NbTetrasOfOrder(elementOrder)
-
- ## Returns number of hexahedrons in mesh
- def NbHexas(self):
- return self.mesh.NbHexas()
-
- ## Returns number of hexahedrons with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbHexasOfOrder(self, elementOrder):
- return self.mesh.NbHexasOfOrder(elementOrder)
-
- ## Returns number of pyramids in mesh
- def NbPyramids(self):
- return self.mesh.NbPyramids()
-
- ## Returns number of pyramids with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbPyramidsOfOrder(self, elementOrder):
- return self.mesh.NbPyramidsOfOrder(elementOrder)
-
- ## Returns number of prisms in mesh
- def NbPrisms(self):
- return self.mesh.NbPrisms()
-
- ## Returns number of prisms with given order in mesh
- # @param elementOrder is order of elements:
- # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
- def NbPrismsOfOrder(self, elementOrder):
- return self.mesh.NbPrismsOfOrder(elementOrder)
-
- ## Returns number of polyhedrons in mesh
- def NbPolyhedrons(self):
- return self.mesh.NbPolyhedrons()
-
- ## Returns number of submeshes in mesh
- def NbSubMesh(self):
- return self.mesh.NbSubMesh()
-
- ## Returns list of mesh elements ids
- def GetElementsId(self):
- return self.mesh.GetElementsId()
-
- ## Returns list of ids of mesh elements with given type
- # @param elementType is required type of elements
- def GetElementsByType(self, elementType):
- return self.mesh.GetElementsByType(elementType)
-
- ## Returns list of mesh nodes ids
- def GetNodesId(self):
- return self.mesh.GetNodesId()
-
- # Get informations about mesh elements:
- # ------------------------------------
-
- ## Returns type of mesh element
- def GetElementType(self, id, iselem):
- return self.mesh.GetElementType(id, iselem)
-
- ## Returns list of submesh elements ids
- # @param shapeID is geom object(subshape) IOR
- def GetSubMeshElementsId(self, shapeID):
- return self.mesh.GetSubMeshElementsId(shapeID)
-
- ## Returns list of submesh nodes ids
- # @param shapeID is geom object(subshape) IOR
- def GetSubMeshNodesId(self, shapeID, all):
- return self.mesh.GetSubMeshNodesId(shapeID, all)
-
- ## Returns list of ids of submesh elements with given type
- # @param shapeID is geom object(subshape) IOR
- def GetSubMeshElementType(self, shapeID):
- return self.mesh.GetSubMeshElementType(shapeID)
-
- ## Get mesh description
- def Dump(self):
- return self.mesh.Dump()
-
-
- # Get information about nodes and elements of mesh by its ids:
- # -----------------------------------------------------------
-
- ## Get XYZ coordinates of node as list of double
- # \n If there is not node for given ID - returns empty list
- def GetNodeXYZ(self, id):
- return self.mesh.GetNodeXYZ(id)
-
- ## For given node returns list of IDs of inverse elements
- # \n If there is not node for given ID - returns empty list
- def GetNodeInverseElements(self, id):
- return self.mesh.GetNodeInverseElements(id)
-
- ## If given element is node returns IDs of shape from position
- # \n If there is not node for given ID - returns -1
- def GetShapeID(self, id):
- return self.mesh.GetShapeID(id)
-
- ## For given element returns ID of result shape after
- # FindShape() from SMESH_MeshEditor
- # \n If there is not element for given ID - returns -1
- def GetShapeIDForElem(id):
- return self.mesh.GetShapeIDForElem(id)
-
- ## Returns number of nodes for given element
- # \n If there is not element for given ID - returns -1
- def GetElemNbNodes(self, id):
- return self.mesh.GetElemNbNodes(id)
-
- ## Returns ID of node by given index for given element
- # \n If there is not element for given ID - returns -1
- # \n If there is not node for given index - returns -2
- def GetElemNode(self, id, index):
- return self.mesh.GetElemNode(id, index)
-
- ## Returns true if given node is medium node
- # in given quadratic element
- def IsMediumNode(self, elementID, nodeID):
- return self.mesh.IsMediumNode(elementID, nodeID)
-
- ## Returns true if given node is medium node
- # in one of quadratic elements
- def IsMediumNodeOfAnyElem(self, nodeID, elementType):
- return self.mesh.IsMediumNodeOfAnyElem(nodeID, elementType)
-
- ## Returns number of edges for given element
- def ElemNbEdges(self, id):
- return self.mesh.ElemNbEdges(id)
-
- ## Returns number of faces for given element
- def ElemNbFaces(self, id):
- return self.mesh.ElemNbFaces(id)
-
- ## Returns true if given element is polygon
- def IsPoly(self, id):
- return self.mesh.IsPoly(id)
-
- ## Returns true if given element is quadratic
- def IsQuadratic(self, id):
- return self.mesh.IsQuadratic(id)
-
- ## Returns XYZ coordinates of bary center for given element
- # as list of double
- # \n If there is not element for given ID - returns empty list
- def BaryCenter(self, id):
- return self.mesh.BaryCenter(id)
-
-
- # Mesh edition (SMESH_MeshEditor functionality):
- # ---------------------------------------------
-
- ## Removes elements from mesh by ids
- # @param IDsOfElements is list of ids of elements to remove
- def RemoveElements(self, IDsOfElements):
- return self.editor.RemoveElements(IDsOfElements)
-
- ## Removes nodes from mesh by ids
- # @param IDsOfNodes is list of ids of nodes to remove
- def RemoveNodes(self, IDsOfNodes):
- return self.editor.RemoveNodes(IDsOfNodes)
-
- ## Add node to mesh by coordinates
- def AddNode(self, x, y, z):
- return self.editor.AddNode( x, y, z)
-
-
- ## Create edge 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. \n 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.
- def AddEdge(self, IDsOfNodes):
- return self.editor.AddEdge(IDsOfNodes)
-
- ## Create face 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. \n 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.
- def AddFace(self, IDsOfNodes):
- return self.editor.AddFace(IDsOfNodes)
-
- ## Add polygonal face to mesh by list of nodes ids
- def AddPolygonalFace(self, IdsOfNodes):
- return self.editor.AddPolygonalFace(IdsOfNodes)
-
- ## Create volume 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. \n 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.
- def AddVolume(self, IDsOfNodes):
- return self.editor.AddVolume(IDsOfNodes)
-
- ## Create volume of many faces, giving nodes for each face.
- # @param IdsOfNodes List of node IDs for volume creation face by face.
- # @param Quantities List of integer values, Quantities[i]
- # gives quantity of nodes in face number i.
- def AddPolyhedralVolume (self, IdsOfNodes, Quantities):
- return self.editor.AddPolyhedralVolume(IdsOfNodes, Quantities)
-
- ## Create volume of many faces, giving IDs of existing faces.
- # @param IdsOfFaces List of face IDs for volume creation.
- #
- # Note: The created volume will refer only to nodes
- # of the given faces, not to the faces itself.
- def AddPolyhedralVolumeByFaces (self, IdsOfFaces):
- return self.editor.AddPolyhedralVolumeByFaces(IdsOfFaces)
-
- ## Move node with given id
- # @param NodeID id of the node
- # @param x new X coordinate
- # @param y new Y coordinate
- # @param z new Z coordinate
- def MoveNode(self, NodeID, x, y, z):
- return self.editor.MoveNode(NodeID, x, y, z)
-
- ## Find a node closest to a point
- # @param x X coordinate of a point
- # @param y Y coordinate of a point
- # @param z Z coordinate of a point
- # @return id of a node
- def FindNodeClosestTo(self, x, y, z):
- preview = self.mesh.GetMeshEditPreviewer()
- return preview.MoveClosestNodeToPoint(x, y, z, -1)
-
- ## Find a node closest to a point and move it to a point location
- # @param x X coordinate of a point
- # @param y Y coordinate of a point
- # @param z Z coordinate of a point
- # @return id of a moved node
- def MeshToPassThroughAPoint(self, x, y, z):
- return self.editor.MoveClosestNodeToPoint(x, y, z, -1)
-
- ## Replace two neighbour triangles sharing Node1-Node2 link
- # with ones built on the same 4 nodes but having other common link.
- # @param NodeID1 first node id
- # @param NodeID2 second node id
- # @return false if proper faces not found
- def InverseDiag(self, NodeID1, NodeID2):
- return self.editor.InverseDiag(NodeID1, NodeID2)
-
- ## Replace two neighbour triangles sharing Node1-Node2 link
- # with a quadrangle built on the same 4 nodes.
- # @param NodeID1 first node id
- # @param NodeID2 second node id
- # @return false if proper faces not found
- def DeleteDiag(self, NodeID1, NodeID2):
- return self.editor.DeleteDiag(NodeID1, NodeID2)
-
- ## Reorient elements by ids
- # @param IDsOfElements if undefined reorient all mesh elements
- def Reorient(self, IDsOfElements=None):
- if IDsOfElements == None:
- IDsOfElements = self.GetElementsId()
- return self.editor.Reorient(IDsOfElements)
-
- ## Reorient all elements of the object
- # @param theObject is mesh, submesh or group
- def ReorientObject(self, theObject):
- return self.editor.ReorientObject(theObject)
-
- ## Fuse neighbour triangles into quadrangles.
- # @param IDsOfElements The triangles to be fused,
- # @param theCriterion is FT_...; used to choose a neighbour to fuse with.
- # @param MaxAngle is a max angle between element normals at which fusion
- # is still performed; theMaxAngle is mesured in radians.
- # @return TRUE in case of success, FALSE otherwise.
- def TriToQuad(self, IDsOfElements, theCriterion, MaxAngle):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- return self.editor.TriToQuad(IDsOfElements, GetFunctor(theCriterion), MaxAngle)
-
- ## Fuse neighbour triangles of the object into quadrangles
- # @param theObject is mesh, submesh or group
- # @param theCriterion is FT_...; used to choose a neighbour to fuse with.
- # @param MaxAngle is a max angle between element normals at which fusion
- # is still performed; theMaxAngle is mesured in radians.
- # @return TRUE in case of success, FALSE otherwise.
- def TriToQuadObject (self, theObject, theCriterion, MaxAngle):
- return self.editor.TriToQuadObject(theObject, GetFunctor(theCriterion), MaxAngle)
-
- ## Split quadrangles into triangles.
- # @param IDsOfElements the faces to be splitted.
- # @param theCriterion is FT_...; used to choose a diagonal for splitting.
- # @param @return TRUE in case of success, FALSE otherwise.
- def QuadToTri (self, IDsOfElements, theCriterion):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- return self.editor.QuadToTri(IDsOfElements, GetFunctor(theCriterion))
-
- ## Split quadrangles into triangles.
- # @param theObject object to taking list of elements from, is mesh, submesh or group
- # @param theCriterion is FT_...; used to choose a diagonal for splitting.
- def QuadToTriObject (self, theObject, theCriterion):
- return self.editor.QuadToTriObject(theObject, GetFunctor(theCriterion))
-
- ## Split quadrangles into triangles.
- # @param theElems The faces to be splitted
- # @param the13Diag is used to choose a diagonal for splitting.
- # @return TRUE in case of success, FALSE otherwise.
- def SplitQuad (self, IDsOfElements, Diag13):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- return self.editor.SplitQuad(IDsOfElements, Diag13)
-
- ## Split quadrangles into triangles.
- # @param theObject is object to taking list of elements from, is mesh, submesh or group
- def SplitQuadObject (self, theObject, Diag13):
- return self.editor.SplitQuadObject(theObject, Diag13)
-
- ## Find better splitting of the given quadrangle.
- # @param IDOfQuad ID of the quadrangle to be splitted.
- # @param theCriterion is FT_...; a criterion to choose a diagonal for splitting.
- # @return 1 if 1-3 diagonal is better, 2 if 2-4
- # diagonal is better, 0 if error occurs.
- def BestSplit (self, IDOfQuad, theCriterion):
- return self.editor.BestSplit(IDOfQuad, GetFunctor(theCriterion))
-
- ## Split quafrangle faces near triangular facets of volumes
- #
- def SplitQuadsNearTriangularFacets(self):
- faces_array = self.GetElementsByType(SMESH.FACE)
- for face_id in faces_array:
- if self.GetElemNbNodes(face_id) == 4: # quadrangle
- quad_nodes = self.mesh.GetElemNodes(face_id)
- node1_elems = self.GetNodeInverseElements(quad_nodes[1 -1])
- isVolumeFound = False
- for node1_elem in node1_elems:
- if not isVolumeFound:
- if self.GetElementType(node1_elem, True) == SMESH.VOLUME:
- nb_nodes = self.GetElemNbNodes(node1_elem)
- if 3 < nb_nodes and nb_nodes < 7: # tetra or penta, or prism
- volume_elem = node1_elem
- volume_nodes = self.mesh.GetElemNodes(volume_elem)
- if volume_nodes.count(quad_nodes[2 -1]) > 0: # 1,2
- if volume_nodes.count(quad_nodes[4 -1]) > 0: # 1,2,4
- isVolumeFound = True
- if volume_nodes.count(quad_nodes[3 -1]) == 0: # 1,2,4 & !3
- self.SplitQuad([face_id], False) # diagonal 2-4
- elif volume_nodes.count(quad_nodes[3 -1]) > 0: # 1,2,3 & !4
- isVolumeFound = True
- self.SplitQuad([face_id], True) # diagonal 1-3
- elif volume_nodes.count(quad_nodes[4 -1]) > 0: # 1,4 & !2
- if volume_nodes.count(quad_nodes[3 -1]) > 0: # 1,4,3 & !2
- isVolumeFound = True
- self.SplitQuad([face_id], True) # diagonal 1-3
-
- ## @brief Split hexahedrons into tetrahedrons.
- #
- # Use pattern mapping functionality for splitting.
- # @param theObject object to take list of hexahedrons from; is mesh, submesh or group.
- # @param theNode000,theNode001 is in range [0,7]; give an orientation of the
- # pattern relatively each hexahedron: the (0,0,0) key-point of pattern
- # will be mapped into <theNode000>-th node of each volume, the (0,0,1)
- # key-point will be mapped into <theNode001>-th node of each volume.
- # The (0,0,0) key-point of used pattern corresponds to not split corner.
- # @return TRUE in case of success, FALSE otherwise.
- def SplitHexaToTetras (self, theObject, theNode000, theNode001):
- # Pattern: 5.---------.6
- # /|#* /|
- # / | #* / |
- # / | # * / |
- # / | # /* |
- # (0,0,1) 4.---------.7 * |
- # |#* |1 | # *|
- # | # *.----|---#.2
- # | #/ * | /
- # | /# * | /
- # | / # * | /
- # |/ #*|/
- # (0,0,0) 0.---------.3
- pattern_tetra = "!!! Nb of points: \n 8 \n\
- !!! Points: \n\
- 0 0 0 !- 0 \n\
- 0 1 0 !- 1 \n\
- 1 1 0 !- 2 \n\
- 1 0 0 !- 3 \n\
- 0 0 1 !- 4 \n\
- 0 1 1 !- 5 \n\
- 1 1 1 !- 6 \n\
- 1 0 1 !- 7 \n\
- !!! Indices of points of 6 tetras: \n\
- 0 3 4 1 \n\
- 7 4 3 1 \n\
- 4 7 5 1 \n\
- 6 2 5 7 \n\
- 1 5 2 7 \n\
- 2 3 1 7 \n"
-
- pattern = GetPattern()
- isDone = pattern.LoadFromFile(pattern_tetra)
- if not isDone:
- print 'Pattern.LoadFromFile :', pattern.GetErrorCode()
- return isDone
-
- pattern.ApplyToHexahedrons(self.mesh, theObject.GetIDs(), theNode000, theNode001)
- isDone = pattern.MakeMesh(self.mesh, False, False)
- if not isDone: print 'Pattern.MakeMesh :', pattern.GetErrorCode()
-
- # split quafrangle faces near triangular facets of volumes
- self.SplitQuadsNearTriangularFacets()
-
- return isDone
-
- ## @brief Split hexahedrons into prisms.
- #
- # Use pattern mapping functionality for splitting.
- # @param theObject object to take list of hexahedrons from; is mesh, submesh or group.
- # @param theNode000,theNode001 is in range [0,7]; give an orientation of the
- # pattern relatively each hexahedron: the (0,0,0) key-point of pattern
- # will be mapped into <theNode000>-th node of each volume, the (0,0,1)
- # key-point will be mapped into <theNode001>-th node of each volume.
- # The edge (0,0,0)-(0,0,1) of used pattern connects two not split corners.
- # @param @return TRUE in case of success, FALSE otherwise.
- def SplitHexaToPrisms (self, theObject, theNode000, theNode001):
- # Pattern: 5.---------.6
- # /|# /|
- # / | # / |
- # / | # / |
- # / | # / |
- # (0,0,1) 4.---------.7 |
- # | | | |
- # | 1.----|----.2
- # | / * | /
- # | / * | /
- # | / * | /
- # |/ *|/
- # (0,0,0) 0.---------.3
- pattern_prism = "!!! Nb of points: \n 8 \n\
- !!! Points: \n\
- 0 0 0 !- 0 \n\
- 0 1 0 !- 1 \n\
- 1 1 0 !- 2 \n\
- 1 0 0 !- 3 \n\
- 0 0 1 !- 4 \n\
- 0 1 1 !- 5 \n\
- 1 1 1 !- 6 \n\
- 1 0 1 !- 7 \n\
- !!! Indices of points of 2 prisms: \n\
- 0 1 3 4 5 7 \n\
- 2 3 1 6 7 5 \n"
-
- pattern = GetPattern()
- isDone = pattern.LoadFromFile(pattern_prism)
- if not isDone:
- print 'Pattern.LoadFromFile :', pattern.GetErrorCode()
- return isDone
-
- pattern.ApplyToHexahedrons(self.mesh, theObject.GetIDs(), theNode000, theNode001)
- isDone = pattern.MakeMesh(self.mesh, False, False)
- if not isDone: print 'Pattern.MakeMesh :', pattern.GetErrorCode()
-
- # split quafrangle faces near triangular facets of volumes
- self.SplitQuadsNearTriangularFacets()
-
- return isDone
-
- ## Smooth elements
- # @param IDsOfElements list if ids of elements to smooth
- # @param IDsOfFixedNodes list of ids of fixed nodes.
- # Note that nodes built on edges and boundary nodes are always fixed.
- # @param MaxNbOfIterations maximum number of iterations
- # @param MaxAspectRatio varies in range [1.0, inf]
- # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
- def Smooth(self, IDsOfElements, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- return self.editor.Smooth(IDsOfElements, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method)
-
- ## Smooth elements belong to given object
- # @param theObject object to smooth
- # @param IDsOfFixedNodes list of ids of fixed nodes.
- # Note that nodes built on edges and boundary nodes are always fixed.
- # @param MaxNbOfIterations maximum number of iterations
- # @param MaxAspectRatio varies in range [1.0, inf]
- # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
- def SmoothObject(self, theObject, IDsOfFixedNodes,
- MaxNbOfIterations, MaxxAspectRatio, Method):
- return self.editor.SmoothObject(theObject, IDsOfFixedNodes,
- MaxNbOfIterations, MaxxAspectRatio, Method)
-
- ## Parametric smooth the given elements
- # @param IDsOfElements list if ids of elements to smooth
- # @param IDsOfFixedNodes list of ids of fixed nodes.
- # Note that nodes built on edges and boundary nodes are always fixed.
- # @param MaxNbOfIterations maximum number of iterations
- # @param MaxAspectRatio varies in range [1.0, inf]
- # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
- def SmoothParametric(IDsOfElements, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- return self.editor.SmoothParametric(IDsOfElements, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method)
-
- ## Parametric smooth elements belong to given object
- # @param theObject object to smooth
- # @param IDsOfFixedNodes list of ids of fixed nodes.
- # Note that nodes built on edges and boundary nodes are always fixed.
- # @param MaxNbOfIterations maximum number of iterations
- # @param MaxAspectRatio varies in range [1.0, inf]
- # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
- def SmoothParametricObject(self, theObject, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method):
- return self.editor.SmoothParametricObject(theObject, IDsOfFixedNodes,
- MaxNbOfIterations, MaxAspectRatio, Method)
-
- ## Converts all mesh to quadratic one, deletes old elements, replacing
- # them with quadratic ones with the same id.
- def ConvertToQuadratic(self, theForce3d):
- self.editor.ConvertToQuadratic(theForce3d)
-
- ## Converts all mesh from quadratic to ordinary ones,
- # deletes old quadratic elements, \n replacing
- # them with ordinary mesh elements with the same id.
- def ConvertFromQuadratic(self):
- return self.editor.ConvertFromQuadratic()
-
- ## Renumber mesh nodes
- def RenumberNodes(self):
- self.editor.RenumberNodes()
-
- ## Renumber mesh elements
- def RenumberElements(self):
- self.editor.RenumberElements()
-
- ## Generate new elements by rotation of the elements around the axis
- # @param IDsOfElements list of ids of elements to sweep
- # @param Axix axis of rotation, AxisStruct or line(geom object)
- # @param AngleInRadians angle of Rotation
- # @param NbOfSteps number of steps
- # @param Tolerance tolerance
- def RotationSweep(self, IDsOfElements, Axix, AngleInRadians, NbOfSteps, Tolerance):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( Axix, geompy.GEOM._objref_GEOM_Object)):
- Axix = GetAxisStruct(Axix)
- self.editor.RotationSweep(IDsOfElements, Axix, AngleInRadians, NbOfSteps, Tolerance)
-
- ## Generate new elements by rotation of the elements of object around the axis
- # @param theObject object wich elements should be sweeped
- # @param Axix axis of rotation, AxisStruct or line(geom object)
- # @param AngleInRadians angle of Rotation
- # @param NbOfSteps number of steps
- # @param Tolerance tolerance
- def RotationSweepObject(self, theObject, Axix, AngleInRadians, NbOfSteps, Tolerance):
- if ( isinstance( Axix, geompy.GEOM._objref_GEOM_Object)):
- Axix = GetAxisStruct(Axix)
- self.editor.RotationSweepObject(theObject, Axix, AngleInRadians, NbOfSteps, Tolerance)
-
- ## Generate new elements by extrusion of the elements with given ids
- # @param IDsOfElements list of elements ids for extrusion
- # @param StepVector vector, defining the direction and value of extrusion
- # @param NbOfSteps the number of steps
- def ExtrusionSweep(self, IDsOfElements, StepVector, NbOfSteps):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( StepVector, geompy.GEOM._objref_GEOM_Object)):
- StepVector = GetDirStruct(StepVector)
- self.editor.ExtrusionSweep(IDsOfElements, StepVector, NbOfSteps)
-
- ## Generate new elements by extrusion of the elements with given ids
- # @param IDsOfElements is ids of elements
- # @param StepVector vector, defining the direction and value of extrusion
- # @param NbOfSteps the number of steps
- # @param ExtrFlags set flags for performing extrusion
- # @param SewTolerance uses for comparing locations of nodes if flag
- # EXTRUSION_FLAG_SEW is set
- def AdvancedExtrusion(self, IDsOfElements, StepVector, NbOfSteps, ExtrFlags, SewTolerance):
- if ( isinstance( StepVector, geompy.GEOM._objref_GEOM_Object)):
- StepVector = GetDirStruct(StepVector)
- self.editor.AdvancedExtrusion(IDsOfElements, StepVector, NbOfSteps, ExtrFlags, SewTolerance)
-
- ## Generate new elements by extrusion of the elements belong to object
- # @param theObject object wich elements should be processed
- # @param StepVector vector, defining the direction and value of extrusion
- # @param NbOfSteps the number of steps
- def ExtrusionSweepObject(self, theObject, StepVector, NbOfSteps):
- if ( isinstance( StepVector, geompy.GEOM._objref_GEOM_Object)):
- StepVector = GetDirStruct(StepVector)
- self.editor.ExtrusionSweepObject(theObject, StepVector, NbOfSteps)
-
- ## Generate new elements by extrusion of the elements belong to object
- # @param theObject object wich elements should be processed
- # @param StepVector vector, defining the direction and value of extrusion
- # @param NbOfSteps the number of steps
- def ExtrusionSweepObject1D(self, theObject, StepVector, NbOfSteps):
- if ( isinstance( StepVector, geompy.GEOM._objref_GEOM_Object)):
- StepVector = GetDirStruct(StepVector)
- self.editor.ExtrusionSweepObject1D(theObject, StepVector, NbOfSteps)
-
- ## Generate new elements by extrusion of the elements belong to object
- # @param theObject object wich elements should be processed
- # @param StepVector vector, defining the direction and value of extrusion
- # @param NbOfSteps the number of steps
- def ExtrusionSweepObject2D(self, theObject, StepVector, NbOfSteps):
- if ( isinstance( StepVector, geompy.GEOM._objref_GEOM_Object)):
- StepVector = GetDirStruct(StepVector)
- self.editor.ExtrusionSweepObject2D(theObject, StepVector, NbOfSteps)
-
- ## Generate new elements by extrusion of the given elements
- # A path of extrusion must be a meshed edge.
- # @param IDsOfElements is ids of elements
- # @param PathMesh mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion
- # @param PathShape is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path
- # @param NodeStart the first or the last node on the edge. It is used to define the direction of extrusion
- # @param HasAngles allows the shape to be rotated around the path to get the resulting mesh in a helical fashion
- # @param Angles list of angles
- # @param HasRefPoint allows to use base point
- # @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
- # User can specify any point as the Base Point and the shape will be rotated with respect to this point.
- # @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
- def ExtrusionAlongPath(self, IDsOfElements, PathMesh, PathShape, NodeStart,
- HasAngles, Angles, HasRefPoint, RefPoint, LinearVariation=False):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( RefPoint, geompy.GEOM._objref_GEOM_Object)):
- RefPoint = GetPointStruct(RefPoint)
- pass
- return self.editor.ExtrusionAlongPath(IDsOfElements, PathMesh.GetMesh(), PathShape, NodeStart,
- HasAngles, Angles, HasRefPoint, RefPoint)
-
- ## Generate new elements by extrusion of the elements belong to object
- # A path of extrusion must be a meshed edge.
- # @param IDsOfElements is ids of elements
- # @param PathMesh mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion
- # @param PathShape is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path
- # @param NodeStart the first or the last node on the edge. It is used to define the direction of extrusion
- # @param HasAngles allows the shape to be rotated around the path to get the resulting mesh in a helical fashion
- # @param Angles list of angles
- # @param HasRefPoint allows to use base point
- # @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
- # User can specify any point as the Base Point and the shape will be rotated with respect to this point.
- # @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
- def ExtrusionAlongPathObject(self, theObject, PathMesh, PathShape, NodeStart,
- HasAngles, Angles, HasRefPoint, RefPoint, LinearVariation=False):
- if ( isinstance( RefPoint, geompy.GEOM._objref_GEOM_Object)):
- RefPoint = GetPointStruct(RefPoint)
- return self.editor.ExtrusionAlongPathObject(theObject, PathMesh.GetMesh(), PathShape, NodeStart,
- HasAngles, Angles, HasRefPoint, RefPoint, LinearVariation)
-
- ## Symmetrical copy of mesh elements
- # @param IDsOfElements list of elements ids
- # @param Mirror is AxisStruct or geom object(point, line, plane)
- # @param theMirrorType is POINT, AXIS or PLANE
- # If the Mirror is geom object this parameter is unnecessary
- # @param Copy allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0)
- def Mirror(self, IDsOfElements, Mirror, theMirrorType, Copy=0):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( Mirror, geompy.GEOM._objref_GEOM_Object)):
- Mirror = GetAxisStruct(Mirror)
- self.editor.Mirror(IDsOfElements, Mirror, theMirrorType, Copy)
-
- ## Symmetrical copy of object
- # @param theObject mesh, submesh or group
- # @param Mirror is AxisStruct or geom object(point, line, plane)
- # @param theMirrorType is POINT, AXIS or PLANE
- # If the Mirror is geom object this parameter is unnecessary
- # @param Copy allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0)
- def MirrorObject (self, theObject, Mirror, theMirrorType, Copy=0):
- if ( isinstance( Mirror, geompy.GEOM._objref_GEOM_Object)):
- Mirror = GetAxisStruct(Mirror)
- self.editor.MirrorObject(theObject, Mirror, theMirrorType, Copy)
-
- ## Translates the elements
- # @param IDsOfElements list of elements ids
- # @param Vector direction of translation(DirStruct or vector)
- # @param Copy allows to copy the translated elements
- def Translate(self, IDsOfElements, Vector, Copy):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( Vector, geompy.GEOM._objref_GEOM_Object)):
- Vector = GetDirStruct(Vector)
- self.editor.Translate(IDsOfElements, Vector, Copy)
-
- ## Translates the object
- # @param theObject object to translate(mesh, submesh, or group)
- # @param Vector direction of translation(DirStruct or geom vector)
- # @param Copy allows to copy the translated elements
- def TranslateObject(self, theObject, Vector, Copy):
- if ( isinstance( Vector, geompy.GEOM._objref_GEOM_Object)):
- Vector = GetDirStruct(Vector)
- self.editor.TranslateObject(theObject, Vector, Copy)
-
- ## Rotates the elements
- # @param IDsOfElements list of elements ids
- # @param Axis axis of rotation(AxisStruct or geom line)
- # @param AngleInRadians angle of rotation(in radians)
- # @param Copy allows to copy the rotated elements
- def Rotate (self, IDsOfElements, Axis, AngleInRadians, Copy):
- if IDsOfElements == []:
- IDsOfElements = self.GetElementsId()
- if ( isinstance( Axis, geompy.GEOM._objref_GEOM_Object)):
- Axis = GetAxisStruct(Axis)
- self.editor.Rotate(IDsOfElements, Axis, AngleInRadians, Copy)
-
- ## Rotates the object
- # @param theObject object to rotate(mesh, submesh, or group)
- # @param Axis axis of rotation(AxisStruct or geom line)
- # @param AngleInRadians angle of rotation(in radians)
- # @param Copy allows to copy the rotated elements
- def RotateObject (self, theObject, Axis, AngleInRadians, Copy):
- self.editor.RotateObject(theObject, Axis, AngleInRadians, Copy)
-
- ## Find group of nodes close to each other within Tolerance.
- # @param Tolerance tolerance value
- # @param list of group of nodes
- def FindCoincidentNodes (self, Tolerance):
- return self.editor.FindCoincidentNodes(Tolerance)
-
- ## Find group of nodes close to each other within Tolerance.
- # @param Tolerance tolerance value
- # @param SubMeshOrGroup SubMesh or Group
- # @param list of group of nodes
- def FindCoincidentNodesOnPart (self, SubMeshOrGroup, Tolerance):
- return self.editor.FindCoincidentNodesOnPart(SubMeshOrGroup, Tolerance)
-
- ## Merge nodes
- # @param list of group of nodes
- def MergeNodes (self, GroupsOfNodes):
- self.editor.MergeNodes(GroupsOfNodes)
-
- ## Find elements built on the same nodes.
- # @param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching
- # @return a list of groups of equal elements
- def FindEqualElements (self, MeshOrSubMeshOrGroup):
- return self.editor.FindEqualElements(MeshOrSubMeshOrGroup)
-
- ## Merge elements in each given group.
- # @param GroupsOfElementsID groups of elements for merging
- def MergeElements(self, GroupsOfElementsID):
- self.editor.MergeElements(GroupsOfElementsID)
-
- ## Remove all but one of elements built on the same nodes.
- def MergeEqualElements(self):
- self.editor.MergeEqualElements()
-
- ## Sew free borders
- def SewFreeBorders (self, FirstNodeID1, SecondNodeID1, LastNodeID1,
- FirstNodeID2, SecondNodeID2, LastNodeID2,
- CreatePolygons, CreatePolyedrs):
- return self.editor.SewFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1,
- FirstNodeID2, SecondNodeID2, LastNodeID2,
- CreatePolygons, CreatePolyedrs)
-
- ## Sew conform free borders
- def SewConformFreeBorders (self, FirstNodeID1, SecondNodeID1, LastNodeID1,
- FirstNodeID2, SecondNodeID2):
- return self.editor.SewConformFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1,
- FirstNodeID2, SecondNodeID2)
-
- ## Sew border to side
- def SewBorderToSide (self, FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
- FirstNodeIDOnSide, LastNodeIDOnSide, CreatePolygons, CreatePolyedrs):
- return self.editor.SewBorderToSide(FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
- FirstNodeIDOnSide, LastNodeIDOnSide, CreatePolygons, CreatePolyedrs)
-
- ## Sew two sides of a mesh. Nodes belonging to Side1 are
- # merged with nodes of elements of Side2.
- # Number of elements in theSide1 and in theSide2 must be
- # equal and they should have similar node connectivity.
- # The nodes to merge should belong to sides borders and
- # the first node should be linked to the second.
- def SewSideElements (self, IDsOfSide1Elements, IDsOfSide2Elements,
- NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge,
- NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge):
- return self.editor.SewSideElements(IDsOfSide1Elements, IDsOfSide2Elements,
- NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge,
- NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge)
+smesh.init_smesh(salome.myStudy,geompy.geom)
- ## Set new nodes for given element.
- # @param ide the element id
- # @param newIDs nodes ids
- # @return If number of nodes is not corresponded to type of element - returns false
- def ChangeElemNodes(self, ide, newIDs):
- return self.editor.ChangeElemNodes(ide, newIDs)
-
- ## If during last operation of MeshEditor some nodes were
- # created this method returns list of it's IDs, \n
- # if new nodes not created - returns empty list
- def GetLastCreatedNodes(self):
- return self.editor.GetLastCreatedNodes()
+# Export the methods of smeshD
+for k in dir(smesh):
+ if k[0] == '_':continue
+ globals()[k]=getattr(smesh,k)
+del k
- ## If during last operation of MeshEditor some elements were
- # created this method returns list of it's IDs, \n
- # if new elements not creared - returns empty list
- def GetLastCreatedElems(self):
- return self.editor.GetLastCreatedElems()
--- /dev/null
+# 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
+# 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
+# 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
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# File : smesh.py
+# Author : Francis KLOSS, OCC
+# Module : SMESH
+
+"""
+ \namespace smesh
+ \brief Module smesh
+"""
+
+import salome
+import geompyDC
+
+import SMESH # necessary for back compatibility
+from SMESH import *
+
+import StdMeshers
+
+import SALOME
+
+# import NETGENPlugin module if possible
+noNETGENPlugin = 0
+try:
+ import NETGENPlugin
+except ImportError:
+ noNETGENPlugin = 1
+ pass
+
+# Types of algo
+REGULAR = 1
+PYTHON = 2
+COMPOSITE = 3
+
+MEFISTO = 3
+NETGEN = 4
+GHS3D = 5
+FULL_NETGEN = 6
+NETGEN_2D = 7
+NETGEN_1D2D = NETGEN
+NETGEN_1D2D3D = FULL_NETGEN
+NETGEN_FULL = FULL_NETGEN
+Hexa = 8
+Hexotic = 9
+BLSURF = 10
+
+# MirrorType enumeration
+POINT = SMESH_MeshEditor.POINT
+AXIS = SMESH_MeshEditor.AXIS
+PLANE = SMESH_MeshEditor.PLANE
+
+# Smooth_Method enumeration
+LAPLACIAN_SMOOTH = SMESH_MeshEditor.LAPLACIAN_SMOOTH
+CENTROIDAL_SMOOTH = SMESH_MeshEditor.CENTROIDAL_SMOOTH
+
+# Fineness enumeration(for NETGEN)
+VeryCoarse = 0
+Coarse = 1
+Moderate = 2
+Fine = 3
+VeryFine = 4
+Custom = 5
+
+PrecisionConfusion = 1e-07
+
+def IsEqual(val1, val2, tol=PrecisionConfusion):
+ if abs(val1 - val2) < tol:
+ return True
+ return False
+
+NO_NAME = "NoName"
+
+## Gets object name
+def GetName(obj):
+ ior = salome.orb.object_to_string(obj)
+ sobj = salome.myStudy.FindObjectIOR(ior)
+ if sobj is None:
+ return NO_NAME
+ else:
+ attr = sobj.FindAttribute("AttributeName")[1]
+ return attr.Value()
+
+ ## Sets name to object
+def SetName(obj, name):
+ ior = salome.orb.object_to_string(obj)
+ sobj = salome.myStudy.FindObjectIOR(ior)
+ if not sobj is None:
+ attr = sobj.FindAttribute("AttributeName")[1]
+ attr.SetValue(name)
+
+ ## Print error message if a hypothesis was not assigned.
+def TreatHypoStatus(status, hypName, geomName, isAlgo):
+ if isAlgo:
+ hypType = "algorithm"
+ else:
+ hypType = "hypothesis"
+ pass
+ if status == HYP_UNKNOWN_FATAL :
+ reason = "for unknown reason"
+ elif status == HYP_INCOMPATIBLE :
+ reason = "this hypothesis mismatches algorithm"
+ elif status == HYP_NOTCONFORM :
+ reason = "not conform mesh would be built"
+ elif status == HYP_ALREADY_EXIST :
+ reason = hypType + " of the same dimension already assigned to this shape"
+ elif status == HYP_BAD_DIM :
+ reason = hypType + " mismatches shape"
+ elif status == HYP_CONCURENT :
+ reason = "there are concurrent hypotheses on sub-shapes"
+ elif status == HYP_BAD_SUBSHAPE :
+ reason = "shape is neither the main one, nor its subshape, nor a valid group"
+ elif status == HYP_BAD_GEOMETRY:
+ reason = "geometry mismatches algorithm's expectation"
+ elif status == HYP_HIDDEN_ALGO:
+ reason = "it is hidden by an algorithm of upper dimension generating all-dimensions elements"
+ elif status == HYP_HIDING_ALGO:
+ reason = "it hides algorithm(s) of lower dimension by generating all-dimensions elements"
+ else:
+ return
+ hypName = '"' + hypName + '"'
+ geomName= '"' + geomName+ '"'
+ if status < HYP_UNKNOWN_FATAL:
+ print hypName, "was assigned to", geomName,"but", reason
+ else:
+ print hypName, "was not assigned to",geomName,":", reason
+ pass
+
+class smeshDC(SMESH._objref_SMESH_Gen):
+
+ def init_smesh(self,theStudy,geompyD):
+ self.geompyD=geompyD
+ self.SetGeomEngine(geompyD)
+ self.SetCurrentStudy(theStudy)
+
+ def Mesh(self, obj=0, name=0):
+ return Mesh(self,self.geompyD,obj,name)
+
+ ## Returns long value from enumeration
+ # Uses for SMESH.FunctorType enumeration
+ def EnumToLong(self,theItem):
+ return theItem._v
+
+ ## Get PointStruct from vertex
+ # @param theVertex is GEOM object(vertex)
+ # @return SMESH.PointStruct
+ def GetPointStruct(self,theVertex):
+ [x, y, z] = self.geompyD.PointCoordinates(theVertex)
+ return PointStruct(x,y,z)
+
+ ## Get DirStruct from vector
+ # @param theVector is GEOM object(vector)
+ # @return SMESH.DirStruct
+ def GetDirStruct(self,theVector):
+ vertices = self.geompyD.SubShapeAll( theVector, geompyDC.ShapeType["VERTEX"] )
+ if(len(vertices) != 2):
+ print "Error: vector object is incorrect."
+ return None
+ p1 = self.geompyD.PointCoordinates(vertices[0])
+ p2 = self.geompyD.PointCoordinates(vertices[1])
+ pnt = PointStruct(p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2])
+ dirst = DirStruct(pnt)
+ return dirst
+
+ ## Make DirStruct from a triplet
+ # @param x,y,z are vector components
+ # @return SMESH.DirStruct
+ def MakeDirStruct(self,x,y,z):
+ pnt = PointStruct(x,y,z)
+ return DirStruct(pnt)
+
+ ## Get AxisStruct from object
+ # @param theObj is GEOM object(line or plane)
+ # @return SMESH.AxisStruct
+ def GetAxisStruct(self,theObj):
+ edges = self.geompyD.SubShapeAll( theObj, geompyDC.ShapeType["EDGE"] )
+ if len(edges) > 1:
+ vertex1, vertex2 = self.geompyD.SubShapeAll( edges[0], geompyDC.ShapeType["VERTEX"] )
+ vertex3, vertex4 = self.geompyD.SubShapeAll( edges[1], geompyDC.ShapeType["VERTEX"] )
+ vertex1 = self.geompyD.PointCoordinates(vertex1)
+ vertex2 = self.geompyD.PointCoordinates(vertex2)
+ vertex3 = self.geompyD.PointCoordinates(vertex3)
+ vertex4 = self.geompyD.PointCoordinates(vertex4)
+ v1 = [vertex2[0]-vertex1[0], vertex2[1]-vertex1[1], vertex2[2]-vertex1[2]]
+ v2 = [vertex4[0]-vertex3[0], vertex4[1]-vertex3[1], vertex4[2]-vertex3[2]]
+ normal = [ v1[1]*v2[2]-v2[1]*v1[2], v1[2]*v2[0]-v2[2]*v1[0], v1[0]*v2[1]-v2[0]*v1[1] ]
+ axis = AxisStruct(vertex1[0], vertex1[1], vertex1[2], normal[0], normal[1], normal[2])
+ return axis
+ elif len(edges) == 1:
+ vertex1, vertex2 = self.geompyD.SubShapeAll( edges[0], geompyDC.ShapeType["VERTEX"] )
+ p1 = self.geompyD.PointCoordinates( vertex1 )
+ p2 = self.geompyD.PointCoordinates( vertex2 )
+ axis = AxisStruct(p1[0], p1[1], p1[2], p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2])
+ return axis
+ return None
+
+ # From SMESH_Gen interface:
+ # ------------------------
+
+ ## Set the current mode
+ def SetEmbeddedMode( self,theMode ):
+ #self.SetEmbeddedMode(theMode)
+ SMESH._objref_SMESH_Gen.SetEmbeddedMode(self,theMode)
+
+ ## Get the current mode
+ def IsEmbeddedMode(self):
+ #return self.IsEmbeddedMode()
+ return SMESH._objref_SMESH_Gen.IsEmbeddedMode(self)
+
+ ## Set the current study
+ def SetCurrentStudy( self, theStudy ):
+ #self.SetCurrentStudy(theStudy)
+ SMESH._objref_SMESH_Gen.SetCurrentStudy(self,theStudy)
+
+ ## Get the current study
+ def GetCurrentStudy(self):
+ #return self.GetCurrentStudy()
+ return SMESH._objref_SMESH_Gen.GetCurrentStudy(self)
+
+ ## Create Mesh object importing data from given UNV file
+ # @return an instance of Mesh class
+ def CreateMeshesFromUNV( self,theFileName ):
+ aSmeshMesh = SMESH._objref_SMESH_Gen.CreateMeshesFromUNV(self,theFileName)
+ aMesh = Mesh(self, self.geompyD, aSmeshMesh)
+ return aMesh
+
+ ## Create Mesh object(s) importing data from given MED file
+ # @return a list of Mesh class instances
+ def CreateMeshesFromMED( self,theFileName ):
+ aSmeshMeshes, aStatus = SMESH._objref_SMESH_Gen.CreateMeshesFromMED(self,theFileName)
+ aMeshes = []
+ for iMesh in range(len(aSmeshMeshes)) :
+ aMesh = Mesh(self, self.geompyD, aSmeshMeshes[iMesh])
+ aMeshes.append(aMesh)
+ return aMeshes, aStatus
+
+ ## Create Mesh object importing data from given STL file
+ # @return an instance of Mesh class
+ def CreateMeshesFromSTL( self, theFileName ):
+ aSmeshMesh = SMESH._objref_SMESH_Gen.CreateMeshesFromSTL(self,theFileName)
+ aMesh = Mesh(self, self.geompyD, aSmeshMesh)
+ return aMesh
+
+ ## From SMESH_Gen interface
+ def GetSubShapesId( self, theMainObject, theListOfSubObjects ):
+ return SMESH._objref_SMESH_Gen.GetSubShapesId(self,theMainObject, theListOfSubObjects)
+
+ ## From SMESH_Gen interface. Creates pattern
+ def GetPattern(self):
+ return SMESH._objref_SMESH_Gen.GetPattern(self)
+
+
+
+ # Filtering. Auxiliary functions:
+ # ------------------------------
+
+ ## Creates an empty criterion
+ # @return SMESH.Filter.Criterion
+ def GetEmptyCriterion(self):
+ Type = self.EnumToLong(FT_Undefined)
+ Compare = self.EnumToLong(FT_Undefined)
+ Threshold = 0
+ ThresholdStr = ""
+ ThresholdID = ""
+ UnaryOp = self.EnumToLong(FT_Undefined)
+ BinaryOp = self.EnumToLong(FT_Undefined)
+ Tolerance = 1e-07
+ TypeOfElement = ALL
+ Precision = -1 ##@1e-07
+ return Filter.Criterion(Type, Compare, Threshold, ThresholdStr, ThresholdID,
+ UnaryOp, BinaryOp, Tolerance, TypeOfElement, Precision)
+
+ ## Creates a criterion by given parameters
+ # @param elementType is the type of elements(NODE, EDGE, FACE, VOLUME)
+ # @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
+ # @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
+ # @param Treshold is threshold value (range of ids as string, shape, numeric)
+ # @param UnaryOp is FT_LogicalNOT or FT_Undefined
+ # @param BinaryOp is binary logical operation FT_LogicalAND, FT_LogicalOR or
+ # FT_Undefined(must be for the last criterion in criteria)
+ # @return SMESH.Filter.Criterion
+ def GetCriterion(self,elementType,
+ CritType,
+ Compare = FT_EqualTo,
+ Treshold="",
+ UnaryOp=FT_Undefined,
+ BinaryOp=FT_Undefined):
+ aCriterion = self.GetEmptyCriterion()
+ aCriterion.TypeOfElement = elementType
+ aCriterion.Type = self.EnumToLong(CritType)
+
+ aTreshold = Treshold
+
+ if Compare in [FT_LessThan, FT_MoreThan, FT_EqualTo]:
+ aCriterion.Compare = self.EnumToLong(Compare)
+ elif Compare == "=" or Compare == "==":
+ aCriterion.Compare = self.EnumToLong(FT_EqualTo)
+ elif Compare == "<":
+ aCriterion.Compare = self.EnumToLong(FT_LessThan)
+ elif Compare == ">":
+ aCriterion.Compare = self.EnumToLong(FT_MoreThan)
+ else:
+ aCriterion.Compare = self.EnumToLong(FT_EqualTo)
+ aTreshold = Compare
+
+ if CritType in [FT_BelongToGeom, FT_BelongToPlane, FT_BelongToGenSurface,
+ FT_BelongToCylinder, FT_LyingOnGeom]:
+ # Check treshold
+ if isinstance(aTreshold, geompyDC.GEOM._objref_GEOM_Object):
+ aCriterion.ThresholdStr = GetName(aTreshold)
+ aCriterion.ThresholdID = salome.ObjectToID(aTreshold)
+ else:
+ print "Error: Treshold should be a shape."
+ return None
+ elif CritType == FT_RangeOfIds:
+ # Check treshold
+ if isinstance(aTreshold, str):
+ aCriterion.ThresholdStr = aTreshold
+ else:
+ print "Error: Treshold should be a string."
+ return None
+ elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume]:
+ # Here we do not need treshold
+ if aTreshold == FT_LogicalNOT:
+ aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
+ elif aTreshold in [FT_LogicalAND, FT_LogicalOR]:
+ aCriterion.BinaryOp = aTreshold
+ else:
+ # Check treshold
+ try:
+ aTreshold = float(aTreshold)
+ aCriterion.Threshold = aTreshold
+ except:
+ print "Error: Treshold should be a number."
+ return None
+
+ if Treshold == FT_LogicalNOT or UnaryOp == FT_LogicalNOT:
+ aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
+
+ if Treshold in [FT_LogicalAND, FT_LogicalOR]:
+ aCriterion.BinaryOp = self.EnumToLong(Treshold)
+
+ if UnaryOp in [FT_LogicalAND, FT_LogicalOR]:
+ aCriterion.BinaryOp = self.EnumToLong(UnaryOp)
+
+ if BinaryOp in [FT_LogicalAND, FT_LogicalOR]:
+ aCriterion.BinaryOp = self.EnumToLong(BinaryOp)
+
+ return aCriterion
+
+ ## Creates filter by given parameters of criterion
+ # @param elementType is the type of elements in the group
+ # @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
+ # @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
+ # @param Treshold is threshold value (range of id ids as string, shape, numeric)
+ # @param UnaryOp is FT_LogicalNOT or FT_Undefined
+ # @return SMESH_Filter
+ def GetFilter(self,elementType,
+ CritType=FT_Undefined,
+ Compare=FT_EqualTo,
+ Treshold="",
+ UnaryOp=FT_Undefined):
+ aCriterion = self.GetCriterion(elementType, CritType, Compare, Treshold, UnaryOp, FT_Undefined)
+ aFilterMgr = self.CreateFilterManager()
+ aFilter = aFilterMgr.CreateFilter()
+ aCriteria = []
+ aCriteria.append(aCriterion)
+ aFilter.SetCriteria(aCriteria)
+ return aFilter
+
+ ## Creates numerical functor by its type
+ # @param theCrierion is FT_...; functor type
+ # @return SMESH_NumericalFunctor
+ def GetFunctor(self,theCriterion):
+ aFilterMgr = self.CreateFilterManager()
+ if theCriterion == FT_AspectRatio:
+ return aFilterMgr.CreateAspectRatio()
+ elif theCriterion == FT_AspectRatio3D:
+ return aFilterMgr.CreateAspectRatio3D()
+ elif theCriterion == FT_Warping:
+ return aFilterMgr.CreateWarping()
+ elif theCriterion == FT_MinimumAngle:
+ return aFilterMgr.CreateMinimumAngle()
+ elif theCriterion == FT_Taper:
+ return aFilterMgr.CreateTaper()
+ elif theCriterion == FT_Skew:
+ return aFilterMgr.CreateSkew()
+ elif theCriterion == FT_Area:
+ return aFilterMgr.CreateArea()
+ elif theCriterion == FT_Volume3D:
+ return aFilterMgr.CreateVolume3D()
+ elif theCriterion == FT_MultiConnection:
+ return aFilterMgr.CreateMultiConnection()
+ elif theCriterion == FT_MultiConnection2D:
+ return aFilterMgr.CreateMultiConnection2D()
+ elif theCriterion == FT_Length:
+ return aFilterMgr.CreateLength()
+ elif theCriterion == FT_Length2D:
+ return aFilterMgr.CreateLength2D()
+ else:
+ print "Error: given parameter is not numerucal functor type."
+
+import omniORB
+#Register the new proxy for SMESH_Gen
+omniORB.registerObjref(SMESH._objref_SMESH_Gen._NP_RepositoryId, smeshDC)
+
+
+## Mother class to define algorithm, recommended to do not use directly.
+#
+# More details.
+class Mesh_Algorithm:
+ # @class Mesh_Algorithm
+ # @brief Class Mesh_Algorithm
+
+ #def __init__(self,smesh):
+ # self.smesh=smesh
+ def __init__(self):
+ self.mesh = None
+ self.geom = None
+ self.subm = None
+ self.algo = None
+
+ ## Find hypothesis in study by its type name and parameters.
+ # Find only those hypothesis, which was created in smeshpyD engine.
+ def FindHypothesis (self, hypname, args, CompareMethod, smeshpyD):
+ study = smeshpyD.GetCurrentStudy()
+ #to do: find component by smeshpyD object, not by its data type
+ scomp = study.FindComponent(smeshpyD.ComponentDataType())
+ if scomp is not None:
+ res,hypRoot = scomp.FindSubObject(SMESH.Tag_HypothesisRoot)
+ # is hypotheses root label exists?
+ if res and hypRoot is not None:
+ iter = study.NewChildIterator(hypRoot)
+ # check all published hypotheses
+ while iter.More():
+ hypo_so_i = iter.Value()
+ attr = hypo_so_i.FindAttribute("AttributeIOR")[1]
+ if attr is not None:
+ anIOR = attr.Value()
+ hypo_o_i = salome.orb.string_to_object(anIOR)
+ if hypo_o_i is not None:
+ # is hypothesis?
+ hypo_i = hypo_o_i._narrow(SMESH.SMESH_Hypothesis)
+ if hypo_i is not None:
+ # belongs to this engine?
+ if smeshpyD.GetObjectId(hypo_i) > 0:
+ # is it the needed hypothesis?
+ if hypo_i.GetName() == hypname:
+ # check args
+ if CompareMethod(hypo_i, args):
+ # found!!!
+ return hypo_i
+ pass
+ pass
+ pass
+ pass
+ pass
+ iter.Next()
+ pass
+ pass
+ pass
+ return None
+
+ ## Find algorithm in study by its type name.
+ # Find only those algorithm, which was created in smeshpyD engine.
+ def FindAlgorithm (self, algoname, smeshpyD):
+ study = smeshpyD.GetCurrentStudy()
+ #to do: find component by smeshpyD object, not by its data type
+ scomp = study.FindComponent(smeshpyD.ComponentDataType())
+ if scomp is not None:
+ res,hypRoot = scomp.FindSubObject(SMESH.Tag_AlgorithmsRoot)
+ # is algorithms root label exists?
+ if res and hypRoot is not None:
+ iter = study.NewChildIterator(hypRoot)
+ # check all published algorithms
+ while iter.More():
+ algo_so_i = iter.Value()
+ attr = algo_so_i.FindAttribute("AttributeIOR")[1]
+ if attr is not None:
+ anIOR = attr.Value()
+ algo_o_i = salome.orb.string_to_object(anIOR)
+ if algo_o_i is not None:
+ # is algorithm?
+ algo_i = algo_o_i._narrow(SMESH.SMESH_Algo)
+ if algo_i is not None:
+ # belongs to this engine?
+ if smeshpyD.GetObjectId(algo_i) > 0:
+ # is it the needed algorithm?
+ if algo_i.GetName() == algoname:
+ # found!!!
+ return algo_i
+ pass
+ pass
+ pass
+ pass
+ iter.Next()
+ pass
+ pass
+ pass
+ return None
+
+ ## If the algorithm is global, return 0; \n
+ # else return the submesh associated to this algorithm.
+ def GetSubMesh(self):
+ return self.subm
+
+ ## Return the wrapped mesher.
+ def GetAlgorithm(self):
+ return self.algo
+
+ ## Get list of hypothesis that can be used with this algorithm
+ def GetCompatibleHypothesis(self):
+ mylist = []
+ if self.algo:
+ mylist = self.algo.GetCompatibleHypothesis()
+ return mylist
+
+ ## Get name of algo
+ def GetName(self):
+ GetName(self.algo)
+
+ ## Set name to algo
+ def SetName(self, name):
+ SetName(self.algo, name)
+
+ ## Get id of algo
+ def GetId(self):
+ return self.algo.GetId()
+
+ ## Private method.
+ def Create(self, mesh, geom, hypo, so="libStdMeshersEngine.so"):
+ if geom is None:
+ raise RuntimeError, "Attemp to create " + hypo + " algoritm on None shape"
+ algo = self.FindAlgorithm(hypo, mesh.smeshpyD)
+ if algo is None:
+ algo = mesh.smeshpyD.CreateHypothesis(hypo, so)
+ pass
+ self.Assign(algo, mesh, geom)
+ return self.algo
+
+ ## Private method
+ def Assign(self, algo, mesh, geom):
+ if geom is None:
+ raise RuntimeError, "Attemp to create " + algo + " algoritm on None shape"
+ self.mesh = mesh
+ piece = mesh.geom
+ if not geom:
+ self.geom = piece
+ else:
+ self.geom = geom
+ name = GetName(geom)
+ if name==NO_NAME:
+ name = mesh.geompyD.SubShapeName(geom, piece)
+ mesh.geompyD.addToStudyInFather(piece, geom, name)
+ self.subm = mesh.mesh.GetSubMesh(geom, algo.GetName())
+
+ self.algo = algo
+ status = mesh.mesh.AddHypothesis(self.geom, self.algo)
+ TreatHypoStatus( status, algo.GetName(), GetName(self.geom), True )
+
+ def CompareHyp (self, hyp, args):
+ print "CompareHyp is not implemented for ", self.__class__.__name__, ":", hyp.GetName()
+ return False
+
+ def CompareEqualHyp (self, hyp, args):
+ return True
+
+ ## Private method
+ def Hypothesis (self, hyp, args=[], so="libStdMeshersEngine.so",
+ UseExisting=0, CompareMethod=""):
+ hypo = None
+ if UseExisting:
+ if CompareMethod == "": CompareMethod = self.CompareHyp
+ hypo = self.FindHypothesis(hyp, args, CompareMethod, self.mesh.smeshpyD)
+ pass
+ if hypo is None:
+ hypo = self.mesh.smeshpyD.CreateHypothesis(hyp, so)
+ a = ""
+ s = "="
+ i = 0
+ n = len(args)
+ while i<n:
+ a = a + s + str(args[i])
+ s = ","
+ i = i + 1
+ pass
+ SetName(hypo, hyp + a)
+ pass
+ status = self.mesh.mesh.AddHypothesis(self.geom, hypo)
+ TreatHypoStatus( status, GetName(hypo), GetName(self.geom), 0 )
+ return hypo
+
+
+# Public class: Mesh_Segment
+# --------------------------
+
+## Class to define a segment 1D algorithm for discretization
+#
+# More details.
+class Mesh_Segment(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Regular_1D")
+
+ ## Define "LocalLength" hypothesis to cut an edge in several segments with the same length
+ # @param l for the length of segments that cut an edge
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ # @param p precision, used for number of segments calculation.
+ # It must be pozitive, meaningfull values are in range [0,1].
+ # In general, number of segments is calculated with formula:
+ # nb = ceil((edge_length / l) - p)
+ # Function ceil rounds its argument to the higher integer.
+ # So, p=0 means rounding of (edge_length / l) to the higher integer,
+ # p=0.5 means rounding of (edge_length / l) to the nearest integer,
+ # p=1 means rounding of (edge_length / l) to the lower integer.
+ # Default value is 1e-07.
+ def LocalLength(self, l, UseExisting=0, p=1e-07):
+ hyp = self.Hypothesis("LocalLength", [l,p], UseExisting=UseExisting,
+ CompareMethod=self.CompareLocalLength)
+ hyp.SetLength(l)
+ hyp.SetPrecision(p)
+ return hyp
+
+ ## Check if the given "LocalLength" hypothesis has the same parameters as given arguments
+ def CompareLocalLength(self, hyp, args):
+ if IsEqual(hyp.GetLength(), args[0]):
+ return IsEqual(hyp.GetPrecision(), args[1])
+ return False
+
+ ## Define "NumberOfSegments" hypothesis to cut an edge in several fixed number of segments
+ # @param n for the number of segments that cut an edge
+ # @param s for the scale factor (optional)
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def NumberOfSegments(self, n, s=[], UseExisting=0):
+ if s == []:
+ hyp = self.Hypothesis("NumberOfSegments", [n], UseExisting=UseExisting,
+ CompareMethod=self.CompareNumberOfSegments)
+ else:
+ hyp = self.Hypothesis("NumberOfSegments", [n,s], UseExisting=UseExisting,
+ CompareMethod=self.CompareNumberOfSegments)
+ hyp.SetDistrType( 1 )
+ hyp.SetScaleFactor(s)
+ hyp.SetNumberOfSegments(n)
+ return hyp
+
+ ## Check if the given "NumberOfSegments" hypothesis has the same parameters as given arguments
+ def CompareNumberOfSegments(self, hyp, args):
+ if hyp.GetNumberOfSegments() == args[0]:
+ if len(args) == 1:
+ return True
+ else:
+ if hyp.GetDistrType() == 1:
+ if IsEqual(hyp.GetScaleFactor(), args[1]):
+ return True
+ return False
+
+ ## Define "Arithmetic1D" hypothesis to cut an edge in several segments with arithmetic length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def Arithmetic1D(self, start, end, UseExisting=0):
+ hyp = self.Hypothesis("Arithmetic1D", [start, end], UseExisting=UseExisting,
+ CompareMethod=self.CompareArithmetic1D)
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Check if the given "Arithmetic1D" hypothesis has the same parameters as given arguments
+ def CompareArithmetic1D(self, hyp, args):
+ if IsEqual(hyp.GetLength(1), args[0]):
+ if IsEqual(hyp.GetLength(0), args[1]):
+ return True
+ return False
+
+ ## Define "StartEndLength" hypothesis to cut an edge in several segments with geometric length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def StartEndLength(self, start, end, UseExisting=0):
+ hyp = self.Hypothesis("StartEndLength", [start, end], UseExisting=UseExisting,
+ CompareMethod=self.CompareStartEndLength)
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Check if the given "StartEndLength" hypothesis has the same parameters as given arguments
+ def CompareStartEndLength(self, hyp, args):
+ if IsEqual(hyp.GetLength(1), args[0]):
+ if IsEqual(hyp.GetLength(0), args[1]):
+ return True
+ return False
+
+ ## Define "Deflection1D" hypothesis
+ # @param d for the deflection
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def Deflection1D(self, d, UseExisting=0):
+ hyp = self.Hypothesis("Deflection1D", [d], UseExisting=UseExisting,
+ CompareMethod=self.CompareDeflection1D)
+ hyp.SetDeflection(d)
+ return hyp
+
+ ## Check if the given "Deflection1D" hypothesis has the same parameters as given arguments
+ def CompareDeflection1D(self, hyp, args):
+ return IsEqual(hyp.GetDeflection(), args[0])
+
+ ## Define "Propagation" hypothesis that propagate all other hypothesis on all others edges that are in
+ # the opposite side in the case of quadrangular faces
+ def Propagation(self):
+ return self.Hypothesis("Propagation", UseExisting=1, CompareMethod=self.CompareEqualHyp)
+
+ ## Define "AutomaticLength" hypothesis
+ # @param fineness for the fineness [0-1]
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def AutomaticLength(self, fineness=0, UseExisting=0):
+ hyp = self.Hypothesis("AutomaticLength",[fineness],UseExisting=UseExisting,
+ CompareMethod=self.CompareAutomaticLength)
+ hyp.SetFineness( fineness )
+ return hyp
+
+ ## Check if the given "AutomaticLength" hypothesis has the same parameters as given arguments
+ def CompareAutomaticLength(self, hyp, args):
+ return IsEqual(hyp.GetFineness(), args[0])
+
+ ## Define "SegmentLengthAroundVertex" hypothesis
+ # @param length for the segment length
+ # @param vertex for the length localization: vertex index [0,1] | vertex object.
+ # Any other integer value means what hypo will be set on the
+ # whole 1D shape, where Mesh_Segment algorithm is assigned.
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def LengthNearVertex(self, length, vertex=0, UseExisting=0):
+ import types
+ store_geom = self.geom
+ if type(vertex) is types.IntType:
+ if vertex == 0 or vertex == 1:
+ vertex = self.mesh.geompyD.SubShapeAllSorted(self.geom, geompyDC.ShapeType["VERTEX"])[vertex]
+ self.geom = vertex
+ pass
+ pass
+ else:
+ self.geom = vertex
+ pass
+ ### 0D algorithm
+ if self.geom is None:
+ raise RuntimeError, "Attemp to create SegmentAroundVertex_0D algoritm on None shape"
+ name = GetName(self.geom)
+ if name == NO_NAME:
+ piece = self.mesh.geom
+ name = self.mesh.geompyD.SubShapeName(self.geom, piece)
+ self.mesh.geompyD.addToStudyInFather(piece, self.geom, name)
+ algo = self.FindAlgorithm("SegmentAroundVertex_0D", self.mesh.smeshpyD)
+ if algo is None:
+ algo = self.mesh.smeshpyD.CreateHypothesis("SegmentAroundVertex_0D", "libStdMeshersEngine.so")
+ pass
+ status = self.mesh.mesh.AddHypothesis(self.geom, algo)
+ TreatHypoStatus(status, "SegmentAroundVertex_0D", name, True)
+ ###
+ hyp = self.Hypothesis("SegmentLengthAroundVertex", [length], UseExisting=UseExisting,
+ CompareMethod=self.CompareLengthNearVertex)
+ self.geom = store_geom
+ hyp.SetLength( length )
+ return hyp
+
+ ## Check if the given "LengthNearVertex" hypothesis has the same parameters as given arguments
+ def CompareLengthNearVertex(self, hyp, args):
+ return IsEqual(hyp.GetLength(), args[0])
+
+ ## Define "QuadraticMesh" hypothesis, forcing construction of quadratic edges.
+ # If the 2D mesher sees that all boundary edges are quadratic ones,
+ # it generates quadratic faces, else it generates linear faces using
+ # medium nodes as if they were vertex ones.
+ # The 3D mesher generates quadratic volumes only if all boundary faces
+ # are quadratic ones, else it fails.
+ def QuadraticMesh(self):
+ hyp = self.Hypothesis("QuadraticMesh", UseExisting=1, CompareMethod=self.CompareEqualHyp)
+ return hyp
+
+# Public class: Mesh_CompositeSegment
+# --------------------------
+
+## Class to define a segment 1D algorithm for discretization
+#
+# More details.
+class Mesh_CompositeSegment(Mesh_Segment):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ self.Create(mesh, geom, "CompositeSegment_1D")
+
+
+# Public class: Mesh_Segment_Python
+# ---------------------------------
+
+## Class to define a segment 1D algorithm for discretization with python function
+#
+# More details.
+class Mesh_Segment_Python(Mesh_Segment):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ import Python1dPlugin
+ self.Create(mesh, geom, "Python_1D", "libPython1dEngine.so")
+
+ ## Define "PythonSplit1D" hypothesis based on the Erwan Adam patch, awaiting equivalent SALOME functionality
+ # @param n for the number of segments that cut an edge
+ # @param func for the python function that calculate the length of all segments
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def PythonSplit1D(self, n, func, UseExisting=0):
+ hyp = self.Hypothesis("PythonSplit1D", [n], "libPython1dEngine.so",
+ UseExisting=UseExisting, CompareMethod=self.ComparePythonSplit1D)
+ hyp.SetNumberOfSegments(n)
+ hyp.SetPythonLog10RatioFunction(func)
+ return hyp
+
+ ## Check if the given "PythonSplit1D" hypothesis has the same parameters as given arguments
+ def ComparePythonSplit1D(self, hyp, args):
+ #if hyp.GetNumberOfSegments() == args[0]:
+ # if hyp.GetPythonLog10RatioFunction() == args[1]:
+ # return True
+ return False
+
+# Public class: Mesh_Triangle
+# ---------------------------
+
+## Class to define a triangle 2D algorithm
+#
+# More details.
+class Mesh_Triangle(Mesh_Algorithm):
+
+ # default values
+ algoType = 0
+ params = 0
+
+ _angleMeshS = 8
+ _gradation = 1.1
+
+ ## Private constructor.
+ def __init__(self, mesh, algoType, geom=0):
+ Mesh_Algorithm.__init__(self)
+
+ self.algoType = algoType
+ if algoType == MEFISTO:
+ self.Create(mesh, geom, "MEFISTO_2D")
+ pass
+ elif algoType == BLSURF:
+ import BLSURFPlugin
+ self.Create(mesh, geom, "BLSURF", "libBLSURFEngine.so")
+ self.SetPhysicalMesh()
+ elif algoType == NETGEN:
+ if noNETGENPlugin:
+ print "Warning: NETGENPlugin module unavailable"
+ pass
+ self.Create(mesh, geom, "NETGEN_2D", "libNETGENEngine.so")
+ pass
+ elif algoType == NETGEN_2D:
+ if noNETGENPlugin:
+ print "Warning: NETGENPlugin module unavailable"
+ pass
+ self.Create(mesh, geom, "NETGEN_2D_ONLY", "libNETGENEngine.so")
+ pass
+
+ ## Define "MaxElementArea" hypothesis to give the maximum area of each triangle
+ # @param area for the maximum area of each triangle
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ #
+ # Only for algoType == MEFISTO || NETGEN_2D
+ def MaxElementArea(self, area, UseExisting=0):
+ if self.algoType == MEFISTO or self.algoType == NETGEN_2D:
+ hyp = self.Hypothesis("MaxElementArea", [area], UseExisting=UseExisting,
+ CompareMethod=self.CompareMaxElementArea)
+ hyp.SetMaxElementArea(area)
+ return hyp
+ elif self.algoType == NETGEN:
+ print "Netgen 1D-2D algo doesn't support this hypothesis"
+ return None
+
+ ## Check if the given "MaxElementArea" hypothesis has the same parameters as given arguments
+ def CompareMaxElementArea(self, hyp, args):
+ return IsEqual(hyp.GetMaxElementArea(), args[0])
+
+ ## Define "LengthFromEdges" hypothesis to build triangles
+ # based on the length of the edges taken from the wire
+ #
+ # Only for algoType == MEFISTO || NETGEN_2D
+ def LengthFromEdges(self):
+ if self.algoType == MEFISTO or self.algoType == NETGEN_2D:
+ hyp = self.Hypothesis("LengthFromEdges", UseExisting=1, CompareMethod=self.CompareEqualHyp)
+ return hyp
+ elif self.algoType == NETGEN:
+ print "Netgen 1D-2D algo doesn't support this hypothesis"
+ return None
+
+ ## Set PhysicalMesh
+ # @param thePhysicalMesh is:
+ # DefaultSize or Custom
+ def SetPhysicalMesh(self, thePhysicalMesh=1):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetPhysicalMesh(thePhysicalMesh)
+
+ ## Set PhySize flag
+ def SetPhySize(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetPhySize(theVal)
+
+ ## Set GeometricMesh
+ # @param theGeometricMesh is:
+ # DefaultGeom or Custom
+ def SetGeometricMesh(self, theGeometricMesh=0):
+ if self.params == 0:
+ self.Parameters()
+ if self.params.GetPhysicalMesh() == 0: theGeometricMesh = 1
+ self.params.SetGeometricMesh(theGeometricMesh)
+
+ ## Set AngleMeshS flag
+ def SetAngleMeshS(self, theVal=_angleMeshS):
+ if self.params == 0:
+ self.Parameters()
+ if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS
+ self.params.SetAngleMeshS(theVal)
+
+ ## Set Gradation flag
+ def SetGradation(self, theVal=_gradation):
+ if self.params == 0:
+ self.Parameters()
+ if self.params.GetGeometricMesh() == 0: theVal = self._gradation
+ self.params.SetGradation(theVal)
+
+ ## Set QuadAllowed flag
+ #
+ # Only for algoType == NETGEN || NETGEN_2D
+ def SetQuadAllowed(self, toAllow=True):
+ if self.algoType == NETGEN_2D:
+ if toAllow: # add QuadranglePreference
+ self.Hypothesis("QuadranglePreference", UseExisting=1, CompareMethod=self.CompareEqualHyp)
+ else: # remove QuadranglePreference
+ for hyp in self.mesh.GetHypothesisList( self.geom ):
+ if hyp.GetName() == "QuadranglePreference":
+ self.mesh.RemoveHypothesis( self.geom, hyp )
+ pass
+ pass
+ pass
+ return
+ if self.params == 0:
+ self.Parameters()
+ if self.params:
+ self.params.SetQuadAllowed(toAllow)
+ return
+
+ ## Define "Netgen 2D Parameters" hypothesis
+ #
+ # Only for algoType == NETGEN
+ def Parameters(self):
+ if self.algoType == NETGEN:
+ self.params = self.Hypothesis("NETGEN_Parameters_2D", [],
+ "libNETGENEngine.so", UseExisting=0)
+ return self.params
+ elif self.algoType == MEFISTO:
+ print "Mefisto algo doesn't support NETGEN_Parameters_2D hypothesis"
+ return None
+ elif self.algoType == NETGEN_2D:
+ print "NETGEN_2D_ONLY algo doesn't support 'NETGEN_Parameters_2D' hypothesis"
+ print "NETGEN_2D_ONLY uses 'MaxElementArea' and 'LengthFromEdges' ones"
+ return None
+ elif self.algoType == BLSURF:
+ self.params = self.Hypothesis("BLSURF_Parameters", [],
+ "libBLSURFEngine.so", UseExisting=0)
+ return self.params
+ return None
+
+ ## Set MaxSize
+ #
+ # Only for algoType == NETGEN
+ def SetMaxSize(self, theSize):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetMaxSize(theSize)
+
+ ## Set SecondOrder flag
+ #
+ # Only for algoType == NETGEN
+ def SetSecondOrder(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetSecondOrder(theVal)
+
+ ## Set Optimize flag
+ #
+ # Only for algoType == NETGEN
+ def SetOptimize(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetOptimize(theVal)
+
+ ## Set Fineness
+ # @param theFineness is:
+ # VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
+ #
+ # Only for algoType == NETGEN
+ def SetFineness(self, theFineness):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetFineness(theFineness)
+
+ ## Set GrowthRate
+ #
+ # Only for algoType == NETGEN
+ def SetGrowthRate(self, theRate):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetGrowthRate(theRate)
+
+ ## Set NbSegPerEdge
+ #
+ # Only for algoType == NETGEN
+ def SetNbSegPerEdge(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetNbSegPerEdge(theVal)
+
+ ## Set NbSegPerRadius
+ #
+ # Only for algoType == NETGEN
+ def SetNbSegPerRadius(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ if self.params is not None:
+ self.params.SetNbSegPerRadius(theVal)
+
+ ## Set Decimesh flag
+ def SetDecimesh(self, toAllow=False):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetDecimesh(toAllow)
+
+ pass
+
+
+# Public class: Mesh_Quadrangle
+# -----------------------------
+
+## Class to define a quadrangle 2D algorithm
+#
+# More details.
+class Mesh_Quadrangle(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Quadrangle_2D")
+
+ ## Define "QuadranglePreference" hypothesis, forcing construction
+ # of quadrangles if the number of nodes on opposite edges is not the same
+ # in the case where the global number of nodes on edges is even
+ def QuadranglePreference(self):
+ hyp = self.Hypothesis("QuadranglePreference", UseExisting=1,
+ CompareMethod=self.CompareEqualHyp)
+ return hyp
+
+# Public class: Mesh_Tetrahedron
+# ------------------------------
+
+## Class to define a tetrahedron 3D algorithm
+#
+# More details.
+class Mesh_Tetrahedron(Mesh_Algorithm):
+
+ params = 0
+ algoType = 0
+
+ ## Private constructor.
+ def __init__(self, mesh, algoType, geom=0):
+ Mesh_Algorithm.__init__(self)
+
+ if algoType == NETGEN:
+ self.Create(mesh, geom, "NETGEN_3D", "libNETGENEngine.so")
+ pass
+
+ elif algoType == GHS3D:
+ import GHS3DPlugin
+ self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.so")
+ pass
+
+ elif algoType == FULL_NETGEN:
+ if noNETGENPlugin:
+ print "Warning: NETGENPlugin module has not been imported."
+ self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
+ pass
+
+ self.algoType = algoType
+
+ ## Define "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedral
+ # @param vol for the maximum volume of each tetrahedral
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def MaxElementVolume(self, vol, UseExisting=0):
+ hyp = self.Hypothesis("MaxElementVolume", [vol], UseExisting=UseExisting,
+ CompareMethod=self.CompareMaxElementVolume)
+ hyp.SetMaxElementVolume(vol)
+ return hyp
+
+ ## Check if the given "MaxElementVolume" hypothesis has the same parameters as given arguments
+ def CompareMaxElementVolume(self, hyp, args):
+ return IsEqual(hyp.GetMaxElementVolume(), args[0])
+
+ ## Define "Netgen 3D Parameters" hypothesis
+ def Parameters(self):
+ if (self.algoType == FULL_NETGEN):
+ self.params = self.Hypothesis("NETGEN_Parameters", [],
+ "libNETGENEngine.so", UseExisting=0)
+ return self.params
+ else:
+ print "Algo doesn't support this hypothesis"
+ return None
+
+ ## Set MaxSize
+ def SetMaxSize(self, theSize):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetMaxSize(theSize)
+
+ ## Set SecondOrder flag
+ def SetSecondOrder(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetSecondOrder(theVal)
+
+ ## Set Optimize flag
+ def SetOptimize(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetOptimize(theVal)
+
+ ## Set Fineness
+ # @param theFineness is:
+ # VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
+ def SetFineness(self, theFineness):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetFineness(theFineness)
+
+ ## Set GrowthRate
+ def SetGrowthRate(self, theRate):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetGrowthRate(theRate)
+
+ ## Set NbSegPerEdge
+ def SetNbSegPerEdge(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetNbSegPerEdge(theVal)
+
+ ## Set NbSegPerRadius
+ def SetNbSegPerRadius(self, theVal):
+ if self.params == 0:
+ self.Parameters()
+ self.params.SetNbSegPerRadius(theVal)
+
+# Public class: Mesh_Hexahedron
+# ------------------------------
+
+## Class to define a hexahedron 3D algorithm
+#
+# More details.
+class Mesh_Hexahedron(Mesh_Algorithm):
+
+ params = 0
+ algoType = 0
+
+ ## Private constructor.
+ def __init__(self, mesh, algoType=Hexa, geom=0):
+ Mesh_Algorithm.__init__(self)
+
+ self.algoType = algoType
+
+ if algoType == Hexa:
+ self.Create(mesh, geom, "Hexa_3D")
+ pass
+
+ elif algoType == Hexotic:
+ import HexoticPlugin
+ self.Create(mesh, geom, "Hexotic_3D", "libHexoticEngine.so")
+ pass
+
+ ## Define "MinMaxQuad" hypothesis to give the three hexotic parameters
+ def MinMaxQuad(self, min=3, max=8, quad=True):
+ self.params = self.Hypothesis("Hexotic_Parameters", [], "libHexoticEngine.so",
+ UseExisting=0)
+ self.params.SetHexesMinLevel(min)
+ self.params.SetHexesMaxLevel(max)
+ self.params.SetHexoticQuadrangles(quad)
+ return self.params
+
+# Deprecated, only for compatibility!
+# Public class: Mesh_Netgen
+# ------------------------------
+
+## Class to define a NETGEN-based 2D or 3D algorithm
+# that need no discrete boundary (i.e. independent)
+#
+# This class is deprecated, only for compatibility!
+#
+# More details.
+class Mesh_Netgen(Mesh_Algorithm):
+
+ is3D = 0
+
+ ## Private constructor.
+ def __init__(self, mesh, is3D, geom=0):
+ Mesh_Algorithm.__init__(self)
+
+ if noNETGENPlugin:
+ print "Warning: NETGENPlugin module has not been imported."
+
+ self.is3D = is3D
+ if is3D:
+ self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
+ pass
+
+ else:
+ self.Create(mesh, geom, "NETGEN_2D", "libNETGENEngine.so")
+ pass
+
+ ## Define hypothesis containing parameters of the algorithm
+ def Parameters(self):
+ if self.is3D:
+ hyp = self.Hypothesis("NETGEN_Parameters", [],
+ "libNETGENEngine.so", UseExisting=0)
+ else:
+ hyp = self.Hypothesis("NETGEN_Parameters_2D", [],
+ "libNETGENEngine.so", UseExisting=0)
+ return hyp
+
+# Public class: Mesh_Projection1D
+# ------------------------------
+
+## Class to define a projection 1D algorithm
+#
+# More details.
+class Mesh_Projection1D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Projection_1D")
+
+ ## Define "Source Edge" hypothesis, specifying a meshed edge to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source edge and a target one (where a hipothesis is assigned to)
+ # @param edge to take nodes distribution from
+ # @param mesh to take nodes distribution from (optional)
+ # @param srcV is vertex of \a edge to associate with \a tgtV (optional)
+ # @param tgtV is vertex of \a the edge where the algorithm is assigned,
+ # to associate with \a srcV (optional)
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def SourceEdge(self, edge, mesh=None, srcV=None, tgtV=None, UseExisting=0):
+ hyp = self.Hypothesis("ProjectionSource1D", [edge,mesh,srcV,tgtV],
+ UseExisting=0)
+ #UseExisting=UseExisting, CompareMethod=self.CompareSourceEdge)
+ hyp.SetSourceEdge( edge )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV, tgtV )
+ return hyp
+
+ ## Check if the given "SourceEdge" hypothesis has the same parameters as given arguments
+ #def CompareSourceEdge(self, hyp, args):
+ # # seems to be not really useful to reuse existing "SourceEdge" hypothesis
+ # return False
+
+
+# Public class: Mesh_Projection2D
+# ------------------------------
+
+## Class to define a projection 2D algorithm
+#
+# More details.
+class Mesh_Projection2D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Projection_2D")
+
+ ## Define "Source Face" hypothesis, specifying a meshed face to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source face and a target one (where a hipothesis is assigned to)
+ # @param face to take mesh pattern from
+ # @param mesh to take mesh pattern from (optional)
+ # @param srcV1 is vertex of \a face to associate with \a tgtV1 (optional)
+ # @param tgtV1 is vertex of \a the face where the algorithm is assigned,
+ # to associate with \a srcV1 (optional)
+ # @param srcV2 is vertex of \a face to associate with \a tgtV1 (optional)
+ # @param tgtV2 is vertex of \a the face where the algorithm is assigned,
+ # to associate with \a srcV2 (optional)
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ #
+ # Note: association vertices must belong to one edge of a face
+ def SourceFace(self, face, mesh=None, srcV1=None, tgtV1=None,
+ srcV2=None, tgtV2=None, UseExisting=0):
+ hyp = self.Hypothesis("ProjectionSource2D", [face,mesh,srcV1,tgtV1,srcV2,tgtV2],
+ UseExisting=0)
+ #UseExisting=UseExisting, CompareMethod=self.CompareSourceFace)
+ hyp.SetSourceFace( face )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
+ return hyp
+
+ ## Check if the given "SourceFace" hypothesis has the same parameters as given arguments
+ #def CompareSourceFace(self, hyp, args):
+ # # seems to be not really useful to reuse existing "SourceFace" hypothesis
+ # return False
+
+# Public class: Mesh_Projection3D
+# ------------------------------
+
+## Class to define a projection 3D algorithm
+#
+# More details.
+class Mesh_Projection3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Projection_3D")
+
+ ## Define "Source Shape 3D" hypothesis, specifying a meshed solid to
+ # take a mesh pattern from, and optionally association of vertices
+ # between the source solid and a target one (where a hipothesis is assigned to)
+ # @param solid to take mesh pattern from
+ # @param mesh to take mesh pattern from (optional)
+ # @param srcV1 is vertex of \a solid to associate with \a tgtV1 (optional)
+ # @param tgtV1 is vertex of \a the solid where the algorithm is assigned,
+ # to associate with \a srcV1 (optional)
+ # @param srcV2 is vertex of \a solid to associate with \a tgtV1 (optional)
+ # @param tgtV2 is vertex of \a the solid where the algorithm is assigned,
+ # to associate with \a srcV2 (optional)
+ # @param UseExisting - if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ #
+ # Note: association vertices must belong to one edge of a solid
+ def SourceShape3D(self, solid, mesh=0, srcV1=0, tgtV1=0,
+ srcV2=0, tgtV2=0, UseExisting=0):
+ hyp = self.Hypothesis("ProjectionSource3D",
+ [solid,mesh,srcV1,tgtV1,srcV2,tgtV2],
+ UseExisting=0)
+ #UseExisting=UseExisting, CompareMethod=self.CompareSourceShape3D)
+ hyp.SetSource3DShape( solid )
+ if not mesh is None and isinstance(mesh, Mesh):
+ mesh = mesh.GetMesh()
+ hyp.SetSourceMesh( mesh )
+ hyp.SetVertexAssociation( srcV1, srcV2, tgtV1, tgtV2 )
+ return hyp
+
+ ## Check if the given "SourceShape3D" hypothesis has the same parameters as given arguments
+ #def CompareSourceShape3D(self, hyp, args):
+ # # seems to be not really useful to reuse existing "SourceShape3D" hypothesis
+ # return False
+
+
+# Public class: Mesh_Prism
+# ------------------------
+
+## Class to define a 3D extrusion algorithm
+#
+# More details.
+class Mesh_Prism3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "Prism_3D")
+
+# Public class: Mesh_RadialPrism
+# -------------------------------
+
+## Class to define a Radial Prism 3D algorithm
+#
+# More details.
+class Mesh_RadialPrism3D(Mesh_Algorithm):
+
+ ## Private constructor.
+ def __init__(self, mesh, geom=0):
+ Mesh_Algorithm.__init__(self)
+ self.Create(mesh, geom, "RadialPrism_3D")
+
+ self.distribHyp = self.Hypothesis("LayerDistribution", UseExisting=0)
+ self.nbLayers = None
+
+ ## Return 3D hypothesis holding the 1D one
+ def Get3DHypothesis(self):
+ return self.distribHyp
+
+ ## Private method creating 1D hypothes and storing it in the LayerDistribution
+ # hypothes. Returns the created hypothes
+ def OwnHypothesis(self, hypType, args=[], so="libStdMeshersEngine.so"):
+ #print "OwnHypothesis",hypType
+ if not self.nbLayers is None:
+ self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers )
+ self.mesh.GetMesh().AddHypothesis( self.geom, self.distribHyp )
+ study = self.mesh.smeshpyD.GetCurrentStudy() # prevent publishing of own 1D hypothesis
+ hyp = self.mesh.smeshpyD.CreateHypothesis(hypType, so)
+ self.mesh.smeshpyD.SetCurrentStudy( study ) # anable publishing
+ self.distribHyp.SetLayerDistribution( hyp )
+ return hyp
+
+ ## Define "NumberOfLayers" hypothesis, specifying a number of layers of
+ # prisms to build between the inner and outer shells
+ # @param UseExisting if ==true - search existing hypothesis created with
+ # same parameters, else (default) - create new
+ def NumberOfLayers(self, n, UseExisting=0):
+ self.mesh.GetMesh().RemoveHypothesis( self.geom, self.distribHyp )
+ self.nbLayers = self.Hypothesis("NumberOfLayers", [n], UseExisting=UseExisting,
+ CompareMethod=self.CompareNumberOfLayers)
+ self.nbLayers.SetNumberOfLayers( n )
+ return self.nbLayers
+
+ ## Check if the given "NumberOfLayers" hypothesis has the same parameters as given arguments
+ def CompareNumberOfLayers(self, hyp, args):
+ return IsEqual(hyp.GetNumberOfLayers(), args[0])
+
+ ## Define "LocalLength" hypothesis, specifying segment length
+ # to build between the inner and outer shells
+ # @param l for the length of segments
+ # @param p for the precision of rounding
+ def LocalLength(self, l, p=1e-07):
+ hyp = self.OwnHypothesis("LocalLength", [l,p])
+ hyp.SetLength(l)
+ hyp.SetPrecision(p)
+ return hyp
+
+ ## Define "NumberOfSegments" hypothesis, specifying a number of layers of
+ # prisms to build between the inner and outer shells
+ # @param n for the number of segments
+ # @param s for the scale factor (optional)
+ def NumberOfSegments(self, n, s=[]):
+ if s == []:
+ hyp = self.OwnHypothesis("NumberOfSegments", [n])
+ else:
+ hyp = self.OwnHypothesis("NumberOfSegments", [n,s])
+ hyp.SetDistrType( 1 )
+ hyp.SetScaleFactor(s)
+ hyp.SetNumberOfSegments(n)
+ return hyp
+
+ ## Define "Arithmetic1D" hypothesis, specifying distribution of segments
+ # to build between the inner and outer shells as arithmetic length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ def Arithmetic1D(self, start, end ):
+ hyp = self.OwnHypothesis("Arithmetic1D", [start, end])
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Define "StartEndLength" hypothesis, specifying distribution of segments
+ # to build between the inner and outer shells as geometric length increasing
+ # @param start for the length of the first segment
+ # @param end for the length of the last segment
+ def StartEndLength(self, start, end):
+ hyp = self.OwnHypothesis("StartEndLength", [start, end])
+ hyp.SetLength(start, 1)
+ hyp.SetLength(end , 0)
+ return hyp
+
+ ## Define "AutomaticLength" hypothesis, specifying number of segments
+ # to build between the inner and outer shells
+ # @param fineness for the fineness [0-1]
+ def AutomaticLength(self, fineness=0):
+ hyp = self.OwnHypothesis("AutomaticLength")
+ hyp.SetFineness( fineness )
+ return hyp
+
+# Private class: Mesh_UseExisting
+# -------------------------------
+class Mesh_UseExisting(Mesh_Algorithm):
+
+ def __init__(self, dim, mesh, geom=0):
+ if dim == 1:
+ self.Create(mesh, geom, "UseExisting_1D")
+ else:
+ self.Create(mesh, geom, "UseExisting_2D")
+
+# Public class: Mesh
+# ==================
+
+## Class to define a mesh
+#
+# The class contains mesh shape, SMESH_Mesh, SMESH_MeshEditor
+# More details.
+class Mesh:
+
+ geom = 0
+ mesh = 0
+ editor = 0
+
+ ## Constructor
+ #
+ # Creates mesh on the shape \a geom(or the empty mesh if geom equal to 0),
+ # sets GUI name of this mesh to \a name.
+ # @param obj Shape to be meshed or SMESH_Mesh object
+ # @param name Study name of the mesh
+ def __init__(self, smeshpyD, geompyD, obj=0, name=0):
+ self.smeshpyD=smeshpyD
+ self.geompyD=geompyD
+ if obj is None:
+ obj = 0
+ if obj != 0:
+ if isinstance(obj, geompyDC.GEOM._objref_GEOM_Object):
+ self.geom = obj
+ self.mesh = self.smeshpyD.CreateMesh(self.geom)
+ elif isinstance(obj, SMESH._objref_SMESH_Mesh):
+ self.SetMesh(obj)
+ else:
+ self.mesh = self.smeshpyD.CreateEmptyMesh()
+ if name != 0:
+ SetName(self.mesh, name)
+ elif obj != 0:
+ SetName(self.mesh, GetName(obj))
+
+ self.editor = self.mesh.GetMeshEditor()
+
+ ## Method that inits the Mesh object from SMESH_Mesh interface
+ # @param theMesh is SMESH_Mesh object
+ def SetMesh(self, theMesh):
+ self.mesh = theMesh
+ self.geom = self.mesh.GetShapeToMesh()
+
+ ## Method that returns the mesh
+ # @return SMESH_Mesh object
+ def GetMesh(self):
+ return self.mesh
+
+ ## Get mesh name
+ def GetName(self):
+ name = GetName(self.GetMesh())
+ return name
+
+ ## Set name to mesh
+ def SetName(self, name):
+ SetName(self.GetMesh(), name)
+
+ ## Get the subMesh object associated to a subShape. The subMesh object
+ # gives access to nodes and elements IDs.
+ # \n SubMesh will be used instead of SubShape in a next idl version to
+ # adress a specific subMesh...
+ def GetSubMesh(self, theSubObject, name):
+ submesh = self.mesh.GetSubMesh(theSubObject, name)
+ return submesh
+
+ ## Method that returns the shape associated to the mesh
+ # @return GEOM_Object
+ def GetShape(self):
+ return self.geom
+
+ ## Method that associates given shape to the mesh(entails the mesh recreation)
+ # @param geom shape to be meshed(GEOM_Object)
+ def SetShape(self, geom):
+ self.mesh = self.smeshpyD.CreateMesh(geom)
+
+ ## Return true if hypotheses are defined well
+ # @param theMesh is an instance of Mesh class
+ # @param theSubObject subshape of a mesh shape
+ def IsReadyToCompute(self, theSubObject):
+ return self.smeshpyD.IsReadyToCompute(self.mesh, theSubObject)
+
+ ## Return errors of hypotheses definintion
+ # error list is empty if everything is OK
+ # @param theMesh is an instance of Mesh class
+ # @param theSubObject subshape of a mesh shape
+ # @return a list of errors
+ def GetAlgoState(self, theSubObject):
+ return self.smeshpyD.GetAlgoState(self.mesh, theSubObject)
+
+ ## Return geometrical object the given element is built on.
+ # The returned geometrical object, if not nil, is either found in the
+ # study or is published by this method with the given name
+ # @param theMesh is an instance of Mesh class
+ # @param theElementID an id of the mesh element
+ # @param theGeomName user defined name of geometrical object
+ # @return GEOM::GEOM_Object instance
+ def GetGeometryByMeshElement(self, theElementID, theGeomName):
+ return self.smeshpyD.GetGeometryByMeshElement( self.mesh, theElementID, theGeomName )
+
+ ## Returns mesh dimension depending on shape one
+ def MeshDimension(self):
+ shells = self.geompyD.SubShapeAllIDs( self.geom, geompyDC.ShapeType["SHELL"] )
+ if len( shells ) > 0 :
+ return 3
+ elif self.geompyD.NumberOfFaces( self.geom ) > 0 :
+ return 2
+ elif self.geompyD.NumberOfEdges( self.geom ) > 0 :
+ return 1
+ else:
+ return 0;
+ pass
+
+ ## Creates a segment discretization 1D algorithm.
+ # If the optional \a algo parameter is not sets, this algorithm is REGULAR.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param algo values are smesh.REGULAR or smesh.PYTHON for discretization via python function
+ # @param geom If defined, subshape to be meshed
+ def Segment(self, algo=REGULAR, geom=0):
+ ## if Segment(geom) is called by mistake
+ if isinstance( algo, geompyDC.GEOM._objref_GEOM_Object):
+ algo, geom = geom, algo
+ if not algo: algo = REGULAR
+ pass
+ if algo == REGULAR:
+ return Mesh_Segment(self, geom)
+ elif algo == PYTHON:
+ return Mesh_Segment_Python(self, geom)
+ elif algo == COMPOSITE:
+ return Mesh_CompositeSegment(self, geom)
+ else:
+ return Mesh_Segment(self, geom)
+
+ ## Enable creation of nodes and segments usable by 2D algoritms.
+ # Added nodes and segments must be bound to edges and vertices by
+ # SetNodeOnVertex(), SetNodeOnEdge() and SetMeshElementOnShape()
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom subshape to be manually meshed
+ # @return StdMeshers_UseExisting_1D algorithm that generates nothing
+ def UseExistingSegments(self, geom=0):
+ algo = Mesh_UseExisting(1,self,geom)
+ return algo.GetAlgorithm()
+
+ ## Enable creation of nodes and faces usable by 3D algoritms.
+ # Added nodes and faces must be bound to geom faces by SetNodeOnFace()
+ # and SetMeshElementOnShape()
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom subshape to be manually meshed
+ # @return StdMeshers_UseExisting_2D algorithm that generates nothing
+ def UseExistingFaces(self, geom=0):
+ algo = Mesh_UseExisting(2,self,geom)
+ return algo.GetAlgorithm()
+
+ ## Creates a triangle 2D algorithm for faces.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param algo values are: smesh.MEFISTO || smesh.NETGEN_1D2D || smesh.NETGEN_2D
+ # @param geom If defined, subshape to be meshed
+ def Triangle(self, algo=MEFISTO, geom=0):
+ ## if Triangle(geom) is called by mistake
+ if ( isinstance( algo, geompyDC.GEOM._objref_GEOM_Object)):
+ geom = algo
+ algo = MEFISTO
+
+ return Mesh_Triangle(self, algo, geom)
+
+ ## Creates a quadrangle 2D algorithm for faces.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Quadrangle(self, geom=0):
+ return Mesh_Quadrangle(self, geom)
+
+ ## Creates a tetrahedron 3D algorithm for solids.
+ # The parameter \a algo permits to choice the algorithm: NETGEN or GHS3D
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param algo values are: smesh.NETGEN, smesh.GHS3D, smesh.FULL_NETGEN
+ # @param geom If defined, subshape to be meshed
+ def Tetrahedron(self, algo=NETGEN, geom=0):
+ ## if Tetrahedron(geom) is called by mistake
+ if ( isinstance( algo, geompyDC.GEOM._objref_GEOM_Object)):
+ algo, geom = geom, algo
+ if not algo: algo = NETGEN
+ pass
+ return Mesh_Tetrahedron(self, algo, geom)
+
+ ## Creates a hexahedron 3D algorithm for solids.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # \n Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ ## def Hexahedron(self, geom=0):
+ ## return Mesh_Hexahedron(self, geom)
+ def Hexahedron(self, algo=Hexa, geom=0):
+ ## if Hexahedron(geom, algo) or Hexahedron(geom) is called by mistake
+ if ( isinstance(algo, geompyDC.GEOM._objref_GEOM_Object) ):
+ if geom in [Hexa, Hexotic]: algo, geom = geom, algo
+ elif geom == 0: algo, geom = Hexa, algo
+ return Mesh_Hexahedron(self, algo, geom)
+
+ ## Deprecated, only for compatibility!
+ def Netgen(self, is3D, geom=0):
+ return Mesh_Netgen(self, is3D, geom)
+
+ ## Creates a projection 1D algorithm for edges.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection1D(self, geom=0):
+ return Mesh_Projection1D(self, geom)
+
+ ## Creates a projection 2D algorithm for faces.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection2D(self, geom=0):
+ return Mesh_Projection2D(self, geom)
+
+ ## Creates a projection 3D algorithm for solids.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Projection3D(self, geom=0):
+ return Mesh_Projection3D(self, geom)
+
+ ## Creates a 3D extrusion (Prism 3D) or RadialPrism 3D algorithm for solids.
+ # If the optional \a geom parameter is not sets, this algorithm is global.
+ # Otherwise, this algorithm define a submesh based on \a geom subshape.
+ # @param geom If defined, subshape to be meshed
+ def Prism(self, geom=0):
+ shape = geom
+ if shape==0:
+ shape = self.geom
+ nbSolids = len( self.geompyD.SubShapeAll( shape, geompyDC.ShapeType["SOLID"] ))
+ nbShells = len( self.geompyD.SubShapeAll( shape, geompyDC.ShapeType["SHELL"] ))
+ if nbSolids == 0 or nbSolids == nbShells:
+ return Mesh_Prism3D(self, geom)
+ return Mesh_RadialPrism3D(self, geom)
+
+ ## Compute the mesh and return the status of the computation
+ def Compute(self, geom=0):
+ if geom == 0 or not isinstance(geom, geompyDC.GEOM._objref_GEOM_Object):
+ if self.geom == 0:
+ print "Compute impossible: mesh is not constructed on geom shape."
+ return 0
+ else:
+ geom = self.geom
+ ok = False
+ try:
+ ok = self.smeshpyD.Compute(self.mesh, geom)
+ except SALOME.SALOME_Exception, ex:
+ print "Mesh computation failed, exception caught:"
+ print " ", ex.details.text
+ except:
+ import traceback
+ print "Mesh computation failed, exception caught:"
+ traceback.print_exc()
+ if not ok:
+ errors = self.smeshpyD.GetAlgoState( self.mesh, geom )
+ allReasons = ""
+ for err in errors:
+ if err.isGlobalAlgo:
+ glob = "global"
+ else:
+ glob = "local"
+ pass
+ dim = err.algoDim
+ name = err.algoName
+ if len(name) == 0:
+ reason = '%s %sD algorithm is missing' % (glob, dim)
+ elif err.state == HYP_MISSING:
+ reason = ('%s %sD algorithm "%s" misses %sD hypothesis'
+ % (glob, dim, name, dim))
+ elif err.state == HYP_NOTCONFORM:
+ reason = 'Global "Not Conform mesh allowed" hypothesis is missing'
+ elif err.state == HYP_BAD_PARAMETER:
+ reason = ('Hypothesis of %s %sD algorithm "%s" has a bad parameter value'
+ % ( glob, dim, name ))
+ elif err.state == HYP_BAD_GEOMETRY:
+ reason = ('%s %sD algorithm "%s" is assigned to geometry mismatching'
+ 'its expectation' % ( glob, dim, name ))
+ else:
+ reason = "For unknown reason."+\
+ " Revise Mesh.Compute() implementation in smeshDC.py!"
+ pass
+ if allReasons != "":
+ allReasons += "\n"
+ pass
+ allReasons += reason
+ pass
+ if allReasons != "":
+ print '"' + GetName(self.mesh) + '"',"has not been computed:"
+ print allReasons
+ else:
+ print '"' + GetName(self.mesh) + '"',"has not been computed."
+ pass
+ pass
+ if salome.sg.hasDesktop():
+ smeshgui = salome.ImportComponentGUI("SMESH")
+ smeshgui.Init(salome.myStudyId)
+ smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), ok, (self.NbNodes()==0) )
+ salome.sg.updateObjBrowser(1)
+ pass
+ return ok
+
+ ## Compute tetrahedral mesh using AutomaticLength + MEFISTO + NETGEN
+ # The parameter \a fineness [0,-1] defines mesh fineness
+ def AutomaticTetrahedralization(self, fineness=0):
+ dim = self.MeshDimension()
+ # assign hypotheses
+ self.RemoveGlobalHypotheses()
+ self.Segment().AutomaticLength(fineness)
+ if dim > 1 :
+ self.Triangle().LengthFromEdges()
+ pass
+ if dim > 2 :
+ self.Tetrahedron(NETGEN)
+ pass
+ return self.Compute()
+
+ ## Compute hexahedral mesh using AutomaticLength + Quadrangle + Hexahedron
+ # The parameter \a fineness [0,-1] defines mesh fineness
+ def AutomaticHexahedralization(self, fineness=0):
+ dim = self.MeshDimension()
+ # assign hypotheses
+ self.RemoveGlobalHypotheses()
+ self.Segment().AutomaticLength(fineness)
+ if dim > 1 :
+ self.Quadrangle()
+ pass
+ if dim > 2 :
+ self.Hexahedron()
+ pass
+ return self.Compute()
+
+ ## Assign hypothesis
+ # @param hyp is a hypothesis to assign
+ # @param geom is subhape of mesh geometry
+ def AddHypothesis(self, hyp, geom=0):
+ if isinstance( hyp, Mesh_Algorithm ):
+ hyp = hyp.GetAlgorithm()
+ pass
+ if not geom:
+ geom = self.geom
+ pass
+ status = self.mesh.AddHypothesis(geom, hyp)
+ isAlgo = hyp._narrow( SMESH_Algo )
+ TreatHypoStatus( status, GetName( hyp ), GetName( geom ), isAlgo )
+ return status
+
+ ## Unassign hypothesis
+ # @param hyp is a hypothesis to unassign
+ # @param geom is subhape of mesh geometry
+ def RemoveHypothesis(self, hyp, geom=0):
+ if isinstance( hyp, Mesh_Algorithm ):
+ hyp = hyp.GetAlgorithm()
+ pass
+ if not geom:
+ geom = self.geom
+ pass
+ status = self.mesh.RemoveHypothesis(geom, hyp)
+ return status
+
+ ## Get the list of hypothesis added on a geom
+ # @param geom is subhape of mesh geometry
+ def GetHypothesisList(self, geom):
+ return self.mesh.GetHypothesisList( geom )
+
+ ## Removes all global hypotheses
+ def RemoveGlobalHypotheses(self):
+ current_hyps = self.mesh.GetHypothesisList( self.geom )
+ for hyp in current_hyps:
+ self.mesh.RemoveHypothesis( self.geom, hyp )
+ pass
+ pass
+
+ ## Create a mesh group based on geometric object \a grp
+ # and give a \a name, \n if this parameter is not defined
+ # the name is the same as the geometric group name \n
+ # Note: Works like GroupOnGeom().
+ # @param grp is a geometric group, a vertex, an edge, a face or a solid
+ # @param name is the name of the mesh group
+ # @return SMESH_GroupOnGeom
+ def Group(self, grp, name=""):
+ return self.GroupOnGeom(grp, name)
+
+ ## Deprecated, only for compatibility! Please, use ExportMED() method instead.
+ # Export the mesh in a file with the MED format and choice the \a version of MED format
+ # @param f is the file name
+ # @param version values are SMESH.MED_V2_1, SMESH.MED_V2_2
+ def ExportToMED(self, f, version, opt=0):
+ self.mesh.ExportToMED(f, opt, version)
+
+ ## Export the mesh in a file with the MED format
+ # @param f is the file name
+ # @param auto_groups boolean parameter for creating/not creating
+ # the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
+ # the typical use is auto_groups=false.
+ # @param version MED format version(MED_V2_1 or MED_V2_2)
+ def ExportMED(self, f, auto_groups=0, version=MED_V2_2):
+ self.mesh.ExportToMED(f, auto_groups, version)
+
+ ## Export the mesh in a file with the DAT format
+ # @param f is the file name
+ def ExportDAT(self, f):
+ self.mesh.ExportDAT(f)
+
+ ## Export the mesh in a file with the UNV format
+ # @param f is the file name
+ def ExportUNV(self, f):
+ self.mesh.ExportUNV(f)
+
+ ## Export the mesh in a file with the STL format
+ # @param f is the file name
+ # @param ascii defined the kind of file contents
+ def ExportSTL(self, f, ascii=1):
+ self.mesh.ExportSTL(f, ascii)
+
+
+ # Operations with groups:
+ # ----------------------
+
+ ## Creates an empty mesh group
+ # @param elementType is the type of elements in the group
+ # @param name is the name of the mesh group
+ # @return SMESH_Group
+ def CreateEmptyGroup(self, elementType, name):
+ return self.mesh.CreateGroup(elementType, name)
+
+ ## Creates a mesh group based on geometric object \a grp
+ # and give a \a name, \n if this parameter is not defined
+ # the name is the same as the geometric group name
+ # @param grp is a geometric group, a vertex, an edge, a face or a solid
+ # @param name is the name of the mesh group
+ # @return SMESH_GroupOnGeom
+ def GroupOnGeom(self, grp, name="", typ=None):
+ if name == "":
+ name = grp.GetName()
+
+ if typ == None:
+ tgeo = str(grp.GetShapeType())
+ if tgeo == "VERTEX":
+ typ = NODE
+ elif tgeo == "EDGE":
+ typ = EDGE
+ elif tgeo == "FACE":
+ typ = FACE
+ elif tgeo == "SOLID":
+ typ = VOLUME
+ elif tgeo == "SHELL":
+ typ = VOLUME
+ elif tgeo == "COMPOUND":
+ if len( self.geompyD.GetObjectIDs( grp )) == 0:
+ print "Mesh.Group: empty geometric group", GetName( grp )
+ return 0
+ tgeo = self.geompyD.GetType(grp)
+ if tgeo == geompyDC.ShapeType["VERTEX"]:
+ typ = NODE
+ elif tgeo == geompyDC.ShapeType["EDGE"]:
+ typ = EDGE
+ elif tgeo == geompyDC.ShapeType["FACE"]:
+ typ = FACE
+ elif tgeo == geompyDC.ShapeType["SOLID"]:
+ typ = VOLUME
+
+ if typ == None:
+ print "Mesh.Group: bad first argument: expected a group, a vertex, an edge, a face or a solid"
+ return 0
+ else:
+ return self.mesh.CreateGroupFromGEOM(typ, name, grp)
+
+ ## Create a mesh group by the given ids of elements
+ # @param groupName is the name of the mesh group
+ # @param elementType is the type of elements in the group
+ # @param elemIDs is the list of ids
+ # @return SMESH_Group
+ def MakeGroupByIds(self, groupName, elementType, elemIDs):
+ group = self.mesh.CreateGroup(elementType, groupName)
+ group.Add(elemIDs)
+ return group
+
+ ## Create a mesh group by the given conditions
+ # @param groupName is the name of the mesh group
+ # @param elementType is the type of elements in the group
+ # @param CritType is type of criterion( FT_Taper, FT_Area, FT_RangeOfIds, FT_LyingOnGeom etc. )
+ # @param Compare belong to {FT_LessThan, FT_MoreThan, FT_EqualTo}
+ # @param Treshold is threshold value (range of id ids as string, shape, numeric)
+ # @param UnaryOp is FT_LogicalNOT or FT_Undefined
+ # @return SMESH_Group
+ def MakeGroup(self,
+ groupName,
+ elementType,
+ CritType=FT_Undefined,
+ Compare=FT_EqualTo,
+ Treshold="",
+ UnaryOp=FT_Undefined):
+ aCriterion = self.smeshpyD.GetCriterion(elementType, CritType, Compare, Treshold, UnaryOp, FT_Undefined)
+ group = self.MakeGroupByCriterion(groupName, aCriterion)
+ return group
+
+ ## Create a mesh group by the given criterion
+ # @param groupName is the name of the mesh group
+ # @param Criterion is the instance of Criterion class
+ # @return SMESH_Group
+ def MakeGroupByCriterion(self, groupName, Criterion):
+ aFilterMgr = self.smeshpyD.CreateFilterManager()
+ aFilter = aFilterMgr.CreateFilter()
+ aCriteria = []
+ aCriteria.append(Criterion)
+ aFilter.SetCriteria(aCriteria)
+ group = self.MakeGroupByFilter(groupName, aFilter)
+ return group
+
+ ## Create a mesh group by the given criteria(list of criterions)
+ # @param groupName is the name of the mesh group
+ # @param Criteria is the list of criterions
+ # @return SMESH_Group
+ def MakeGroupByCriteria(self, groupName, theCriteria):
+ aFilterMgr = self.smeshpyD.CreateFilterManager()
+ aFilter = aFilterMgr.CreateFilter()
+ aFilter.SetCriteria(theCriteria)
+ group = self.MakeGroupByFilter(groupName, aFilter)
+ return group
+
+ ## Create a mesh group by the given filter
+ # @param groupName is the name of the mesh group
+ # @param Criterion is the instance of Filter class
+ # @return SMESH_Group
+ def MakeGroupByFilter(self, groupName, theFilter):
+ anIds = theFilter.GetElementsId(self.mesh)
+ anElemType = theFilter.GetElementType()
+ group = self.MakeGroupByIds(groupName, anElemType, anIds)
+ return group
+
+ ## Pass mesh elements through the given filter and return ids
+ # @param theFilter is SMESH_Filter
+ # @return list of ids
+ def GetIdsFromFilter(self, theFilter):
+ return theFilter.GetElementsId(self.mesh)
+
+ ## Verify whether 2D mesh element has free edges(edges connected to one face only)\n
+ # Returns list of special structures(borders).
+ # @return list of SMESH.FreeEdges.Border structure: edge id and two its nodes ids.
+ def GetFreeBorders(self):
+ aFilterMgr = self.smeshpyD.CreateFilterManager()
+ aPredicate = aFilterMgr.CreateFreeEdges()
+ aPredicate.SetMesh(self.mesh)
+ aBorders = aPredicate.GetBorders()
+ return aBorders
+
+ ## Remove a group
+ def RemoveGroup(self, group):
+ self.mesh.RemoveGroup(group)
+
+ ## Remove group with its contents
+ def RemoveGroupWithContents(self, group):
+ self.mesh.RemoveGroupWithContents(group)
+
+ ## Get the list of groups existing in the mesh
+ def GetGroups(self):
+ return self.mesh.GetGroups()
+
+ ## Get number of groups existing in the mesh
+ def NbGroups(self):
+ return self.mesh.NbGroups()
+
+ ## Get the list of names of groups existing in the mesh
+ def GetGroupNames(self):
+ groups = self.GetGroups()
+ names = []
+ for group in groups:
+ names.append(group.GetName())
+ return names
+
+ ## Union of two groups
+ # New group is created. All mesh elements that are
+ # present in initial groups are added to the new one
+ def UnionGroups(self, group1, group2, name):
+ return self.mesh.UnionGroups(group1, group2, name)
+
+ ## Intersection of two groups
+ # New group is created. All mesh elements that are
+ # present in both initial groups are added to the new one.
+ def IntersectGroups(self, group1, group2, name):
+ return self.mesh.IntersectGroups(group1, group2, name)
+
+ ## Cut of two groups
+ # New group is created. All mesh elements that are present in
+ # main group but do not present in tool group are added to the new one
+ def CutGroups(self, mainGroup, toolGroup, name):
+ return self.mesh.CutGroups(mainGroup, toolGroup, name)
+
+
+ # Get some info about mesh:
+ # ------------------------
+
+ ## Get the log of nodes and elements added or removed since previous
+ # clear of the log.
+ # @param clearAfterGet log is emptied after Get (safe if concurrents access)
+ # @return list of log_block structures:
+ # commandType
+ # number
+ # coords
+ # indexes
+ def GetLog(self, clearAfterGet):
+ return self.mesh.GetLog(clearAfterGet)
+
+ ## Clear the log of nodes and elements added or removed since previous
+ # clear. Must be used immediately after GetLog if clearAfterGet is false.
+ def ClearLog(self):
+ self.mesh.ClearLog()
+
+ def SetAutoColor(self, color):
+ self.mesh.SetAutoColor(color)
+
+ def GetAutoColor(self):
+ return self.mesh.GetAutoColor()
+
+ ## Get the internal Id
+ def GetId(self):
+ return self.mesh.GetId()
+
+ ## Get the study Id
+ def GetStudyId(self):
+ return self.mesh.GetStudyId()
+
+ ## Check group names for duplications.
+ # Consider maximum group name length stored in MED file.
+ def HasDuplicatedGroupNamesMED(self):
+ return self.mesh.HasDuplicatedGroupNamesMED()
+
+ ## Obtain instance of SMESH_MeshEditor
+ def GetMeshEditor(self):
+ return self.mesh.GetMeshEditor()
+
+ ## Get MED Mesh
+ def GetMEDMesh(self):
+ return self.mesh.GetMEDMesh()
+
+
+ # Get informations about mesh contents:
+ # ------------------------------------
+
+ ## Returns number of nodes in mesh
+ def NbNodes(self):
+ return self.mesh.NbNodes()
+
+ ## Returns number of elements in mesh
+ def NbElements(self):
+ return self.mesh.NbElements()
+
+ ## Returns number of edges in mesh
+ def NbEdges(self):
+ return self.mesh.NbEdges()
+
+ ## Returns number of edges with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbEdgesOfOrder(self, elementOrder):
+ return self.mesh.NbEdgesOfOrder(elementOrder)
+
+ ## Returns number of faces in mesh
+ def NbFaces(self):
+ return self.mesh.NbFaces()
+
+ ## Returns number of faces with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbFacesOfOrder(self, elementOrder):
+ return self.mesh.NbFacesOfOrder(elementOrder)
+
+ ## Returns number of triangles in mesh
+ def NbTriangles(self):
+ return self.mesh.NbTriangles()
+
+ ## Returns number of triangles with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbTrianglesOfOrder(self, elementOrder):
+ return self.mesh.NbTrianglesOfOrder(elementOrder)
+
+ ## Returns number of quadrangles in mesh
+ def NbQuadrangles(self):
+ return self.mesh.NbQuadrangles()
+
+ ## Returns number of quadrangles with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbQuadranglesOfOrder(self, elementOrder):
+ return self.mesh.NbQuadranglesOfOrder(elementOrder)
+
+ ## Returns number of polygons in mesh
+ def NbPolygons(self):
+ return self.mesh.NbPolygons()
+
+ ## Returns number of volumes in mesh
+ def NbVolumes(self):
+ return self.mesh.NbVolumes()
+
+ ## Returns number of volumes with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbVolumesOfOrder(self, elementOrder):
+ return self.mesh.NbVolumesOfOrder(elementOrder)
+
+ ## Returns number of tetrahedrons in mesh
+ def NbTetras(self):
+ return self.mesh.NbTetras()
+
+ ## Returns number of tetrahedrons with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbTetrasOfOrder(self, elementOrder):
+ return self.mesh.NbTetrasOfOrder(elementOrder)
+
+ ## Returns number of hexahedrons in mesh
+ def NbHexas(self):
+ return self.mesh.NbHexas()
+
+ ## Returns number of hexahedrons with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbHexasOfOrder(self, elementOrder):
+ return self.mesh.NbHexasOfOrder(elementOrder)
+
+ ## Returns number of pyramids in mesh
+ def NbPyramids(self):
+ return self.mesh.NbPyramids()
+
+ ## Returns number of pyramids with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbPyramidsOfOrder(self, elementOrder):
+ return self.mesh.NbPyramidsOfOrder(elementOrder)
+
+ ## Returns number of prisms in mesh
+ def NbPrisms(self):
+ return self.mesh.NbPrisms()
+
+ ## Returns number of prisms with given order in mesh
+ # @param elementOrder is order of elements:
+ # ORDER_ANY, ORDER_LINEAR or ORDER_QUADRATIC
+ def NbPrismsOfOrder(self, elementOrder):
+ return self.mesh.NbPrismsOfOrder(elementOrder)
+
+ ## Returns number of polyhedrons in mesh
+ def NbPolyhedrons(self):
+ return self.mesh.NbPolyhedrons()
+
+ ## Returns number of submeshes in mesh
+ def NbSubMesh(self):
+ return self.mesh.NbSubMesh()
+
+ ## Returns list of mesh elements ids
+ def GetElementsId(self):
+ return self.mesh.GetElementsId()
+
+ ## Returns list of ids of mesh elements with given type
+ # @param elementType is required type of elements
+ def GetElementsByType(self, elementType):
+ return self.mesh.GetElementsByType(elementType)
+
+ ## Returns list of mesh nodes ids
+ def GetNodesId(self):
+ return self.mesh.GetNodesId()
+
+ # Get informations about mesh elements:
+ # ------------------------------------
+
+ ## Returns type of mesh element
+ def GetElementType(self, id, iselem):
+ return self.mesh.GetElementType(id, iselem)
+
+ ## Returns list of submesh elements ids
+ # @param Shape is geom object(subshape) IOR
+ # Shape must be subshape of a ShapeToMesh()
+ def GetSubMeshElementsId(self, Shape):
+ if ( isinstance( Shape, geompyDC.GEOM._objref_GEOM_Object)):
+ ShapeID = Shape.GetSubShapeIndices()[0]
+ else:
+ ShapeID = Shape
+ return self.mesh.GetSubMeshElementsId(ShapeID)
+
+ ## Returns list of submesh nodes ids
+ # @param Shape is geom object(subshape) IOR
+ # Shape must be subshape of a ShapeToMesh()
+ def GetSubMeshNodesId(self, Shape, all):
+ if ( isinstance( Shape, geompyDC.GEOM._objref_GEOM_Object)):
+ ShapeID = Shape.GetSubShapeIndices()[0]
+ else:
+ ShapeID = Shape
+ return self.mesh.GetSubMeshNodesId(ShapeID, all)
+
+ ## Returns list of ids of submesh elements with given type
+ # @param Shape is geom object(subshape) IOR
+ # Shape must be subshape of a ShapeToMesh()
+ def GetSubMeshElementType(self, Shape):
+ if ( isinstance( Shape, geompyDC.GEOM._objref_GEOM_Object)):
+ ShapeID = Shape.GetSubShapeIndices()[0]
+ else:
+ ShapeID = Shape
+ return self.mesh.GetSubMeshElementType(ShapeID)
+
+ ## Get mesh description
+ def Dump(self):
+ return self.mesh.Dump()
+
+
+ # Get information about nodes and elements of mesh by its ids:
+ # -----------------------------------------------------------
+
+ ## Get XYZ coordinates of node as list of double
+ # \n If there is not node for given ID - returns empty list
+ def GetNodeXYZ(self, id):
+ return self.mesh.GetNodeXYZ(id)
+
+ ## For given node returns list of IDs of inverse elements
+ # \n If there is not node for given ID - returns empty list
+ def GetNodeInverseElements(self, id):
+ return self.mesh.GetNodeInverseElements(id)
+
+ ## @brief Return position of a node on shape
+ # @return SMESH::NodePosition
+ def GetNodePosition(self,NodeID):
+ return self.mesh.GetNodePosition(NodeID)
+
+ ## If given element is node returns IDs of shape from position
+ # \n If there is not node for given ID - returns -1
+ def GetShapeID(self, id):
+ return self.mesh.GetShapeID(id)
+
+ ## For given element returns ID of result shape after
+ # FindShape() from SMESH_MeshEditor
+ # \n If there is not element for given ID - returns -1
+ def GetShapeIDForElem(self,id):
+ return self.mesh.GetShapeIDForElem(id)
+
+ ## Returns number of nodes for given element
+ # \n If there is not element for given ID - returns -1
+ def GetElemNbNodes(self, id):
+ return self.mesh.GetElemNbNodes(id)
+
+ ## Returns ID of node by given index for given element
+ # \n If there is not element for given ID - returns -1
+ # \n If there is not node for given index - returns -2
+ def GetElemNode(self, id, index):
+ return self.mesh.GetElemNode(id, index)
+
+ ## Returns IDs of nodes of given element
+ def GetElemNodes(self, id):
+ return self.mesh.GetElemNodes(id)
+
+ ## Returns true if given node is medium node
+ # in given quadratic element
+ def IsMediumNode(self, elementID, nodeID):
+ return self.mesh.IsMediumNode(elementID, nodeID)
+
+ ## Returns true if given node is medium node
+ # in one of quadratic elements
+ def IsMediumNodeOfAnyElem(self, nodeID, elementType):
+ return self.mesh.IsMediumNodeOfAnyElem(nodeID, elementType)
+
+ ## Returns number of edges for given element
+ def ElemNbEdges(self, id):
+ return self.mesh.ElemNbEdges(id)
+
+ ## Returns number of faces for given element
+ def ElemNbFaces(self, id):
+ return self.mesh.ElemNbFaces(id)
+
+ ## Returns true if given element is polygon
+ def IsPoly(self, id):
+ return self.mesh.IsPoly(id)
+
+ ## Returns true if given element is quadratic
+ def IsQuadratic(self, id):
+ return self.mesh.IsQuadratic(id)
+
+ ## Returns XYZ coordinates of bary center for given element
+ # as list of double
+ # \n If there is not element for given ID - returns empty list
+ def BaryCenter(self, id):
+ return self.mesh.BaryCenter(id)
+
+
+ # Mesh edition (SMESH_MeshEditor functionality):
+ # ---------------------------------------------
+
+ ## Removes elements from mesh by ids
+ # @param IDsOfElements is list of ids of elements to remove
+ def RemoveElements(self, IDsOfElements):
+ return self.editor.RemoveElements(IDsOfElements)
+
+ ## Removes nodes from mesh by ids
+ # @param IDsOfNodes is list of ids of nodes to remove
+ def RemoveNodes(self, IDsOfNodes):
+ return self.editor.RemoveNodes(IDsOfNodes)
+
+ ## Add node to mesh by coordinates
+ def AddNode(self, x, y, z):
+ return self.editor.AddNode( x, y, z)
+
+
+ ## Create edge 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. \n 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.
+ def AddEdge(self, IDsOfNodes):
+ return self.editor.AddEdge(IDsOfNodes)
+
+ ## Create face 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. \n 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.
+ def AddFace(self, IDsOfNodes):
+ return self.editor.AddFace(IDsOfNodes)
+
+ ## Add polygonal face to mesh by list of nodes ids
+ def AddPolygonalFace(self, IdsOfNodes):
+ return self.editor.AddPolygonalFace(IdsOfNodes)
+
+ ## Create volume 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. \n 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.
+ def AddVolume(self, IDsOfNodes):
+ return self.editor.AddVolume(IDsOfNodes)
+
+ ## Create volume of many faces, giving nodes for each face.
+ # @param IdsOfNodes List of node IDs for volume creation face by face.
+ # @param Quantities List of integer values, Quantities[i]
+ # gives quantity of nodes in face number i.
+ def AddPolyhedralVolume (self, IdsOfNodes, Quantities):
+ return self.editor.AddPolyhedralVolume(IdsOfNodes, Quantities)
+
+ ## Create volume of many faces, giving IDs of existing faces.
+ # @param IdsOfFaces List of face IDs for volume creation.
+ #
+ # Note: The created volume will refer only to nodes
+ # of the given faces, not to the faces itself.
+ def AddPolyhedralVolumeByFaces (self, IdsOfFaces):
+ return self.editor.AddPolyhedralVolumeByFaces(IdsOfFaces)
+
+
+ ## @brief Bind a node to a vertex
+ # @param NodeID - node ID
+ # @param Vertex - vertex or vertex ID
+ # @return True if succeed else raise an exception
+ def SetNodeOnVertex(self, NodeID, Vertex):
+ if ( isinstance( Vertex, geompyDC.GEOM._objref_GEOM_Object)):
+ VertexID = Vertex.GetSubShapeIndices()[0]
+ else:
+ VertexID = Vertex
+ try:
+ self.editor.SetNodeOnVertex(NodeID, VertexID)
+ except SALOME.SALOME_Exception, inst:
+ raise ValueError, inst.details.text
+ return True
+
+
+ ## @brief Store node position on an edge
+ # @param NodeID - node ID
+ # @param Edge - edge or edge ID
+ # @param paramOnEdge - parameter on edge where the node is located
+ # @return True if succeed else raise an exception
+ def SetNodeOnEdge(self, NodeID, Edge, paramOnEdge):
+ if ( isinstance( Edge, geompyDC.GEOM._objref_GEOM_Object)):
+ EdgeID = Edge.GetSubShapeIndices()[0]
+ else:
+ EdgeID = Edge
+ try:
+ self.editor.SetNodeOnEdge(NodeID, EdgeID, paramOnEdge)
+ except SALOME.SALOME_Exception, inst:
+ raise ValueError, inst.details.text
+ return True
+
+ ## @brief Store node position on a face
+ # @param NodeID - node ID
+ # @param Face - face or face ID
+ # @param u - U parameter on face where the node is located
+ # @param v - V parameter on face where the node is located
+ # @return True if succeed else raise an exception
+ def SetNodeOnFace(self, NodeID, Face, u, v):
+ if ( isinstance( Face, geompyDC.GEOM._objref_GEOM_Object)):
+ FaceID = Face.GetSubShapeIndices()[0]
+ else:
+ FaceID = Face
+ try:
+ self.editor.SetNodeOnFace(NodeID, FaceID, u, v)
+ except SALOME.SALOME_Exception, inst:
+ raise ValueError, inst.details.text
+ return True
+
+ ## @brief Bind a node to a solid
+ # @param NodeID - node ID
+ # @param Solid - solid or solid ID
+ # @return True if succeed else raise an exception
+ def SetNodeInVolume(self, NodeID, Solid):
+ if ( isinstance( Solid, geompyDC.GEOM._objref_GEOM_Object)):
+ SolidID = Solid.GetSubShapeIndices()[0]
+ else:
+ SolidID = Solid
+ try:
+ self.editor.SetNodeInVolume(NodeID, SolidID)
+ except SALOME.SALOME_Exception, inst:
+ raise ValueError, inst.details.text
+ return True
+
+ ## @brief Bind an element to a shape
+ # @param ElementID - element ID
+ # @param Shape - shape or shape ID
+ # @return True if succeed else raise an exception
+ def SetMeshElementOnShape(self, ElementID, Shape):
+ if ( isinstance( Shape, geompyDC.GEOM._objref_GEOM_Object)):
+ ShapeID = Shape.GetSubShapeIndices()[0]
+ else:
+ ShapeID = Shape
+ try:
+ self.editor.SetMeshElementOnShape(ElementID, ShapeID)
+ except SALOME.SALOME_Exception, inst:
+ raise ValueError, inst.details.text
+ return True
+
+
+ ## Move node with given id
+ # @param NodeID id of the node
+ # @param x new X coordinate
+ # @param y new Y coordinate
+ # @param z new Z coordinate
+ def MoveNode(self, NodeID, x, y, z):
+ return self.editor.MoveNode(NodeID, x, y, z)
+
+ ## Find a node closest to a point
+ # @param x X coordinate of a point
+ # @param y Y coordinate of a point
+ # @param z Z coordinate of a point
+ # @return id of a node
+ def FindNodeClosestTo(self, x, y, z):
+ preview = self.mesh.GetMeshEditPreviewer()
+ return preview.MoveClosestNodeToPoint(x, y, z, -1)
+
+ ## Find a node closest to a point and move it to a point location
+ # @param x X coordinate of a point
+ # @param y Y coordinate of a point
+ # @param z Z coordinate of a point
+ # @return id of a moved node
+ def MeshToPassThroughAPoint(self, x, y, z):
+ return self.editor.MoveClosestNodeToPoint(x, y, z, -1)
+
+ ## Replace two neighbour triangles sharing Node1-Node2 link
+ # with ones built on the same 4 nodes but having other common link.
+ # @param NodeID1 first node id
+ # @param NodeID2 second node id
+ # @return false if proper faces not found
+ def InverseDiag(self, NodeID1, NodeID2):
+ return self.editor.InverseDiag(NodeID1, NodeID2)
+
+ ## Replace two neighbour triangles sharing Node1-Node2 link
+ # with a quadrangle built on the same 4 nodes.
+ # @param NodeID1 first node id
+ # @param NodeID2 second node id
+ # @return false if proper faces not found
+ def DeleteDiag(self, NodeID1, NodeID2):
+ return self.editor.DeleteDiag(NodeID1, NodeID2)
+
+ ## Reorient elements by ids
+ # @param IDsOfElements if undefined reorient all mesh elements
+ def Reorient(self, IDsOfElements=None):
+ if IDsOfElements == None:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.Reorient(IDsOfElements)
+
+ ## Reorient all elements of the object
+ # @param theObject is mesh, submesh or group
+ def ReorientObject(self, theObject):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.ReorientObject(theObject)
+
+ ## Fuse neighbour triangles into quadrangles.
+ # @param IDsOfElements The triangles to be fused,
+ # @param theCriterion is FT_...; used to choose a neighbour to fuse with.
+ # @param MaxAngle is a max angle between element normals at which fusion
+ # is still performed; theMaxAngle is mesured in radians.
+ # @return TRUE in case of success, FALSE otherwise.
+ def TriToQuad(self, IDsOfElements, theCriterion, MaxAngle):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.TriToQuad(IDsOfElements, self.smeshpyD.GetFunctor(theCriterion), MaxAngle)
+
+ ## Fuse neighbour triangles of the object into quadrangles
+ # @param theObject is mesh, submesh or group
+ # @param theCriterion is FT_...; used to choose a neighbour to fuse with.
+ # @param MaxAngle is a max angle between element normals at which fusion
+ # is still performed; theMaxAngle is mesured in radians.
+ # @return TRUE in case of success, FALSE otherwise.
+ def TriToQuadObject (self, theObject, theCriterion, MaxAngle):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.TriToQuadObject(theObject, self.smeshpyD.GetFunctor(theCriterion), MaxAngle)
+
+ ## Split quadrangles into triangles.
+ # @param IDsOfElements the faces to be splitted.
+ # @param theCriterion is FT_...; used to choose a diagonal for splitting.
+ # @return TRUE in case of success, FALSE otherwise.
+ def QuadToTri (self, IDsOfElements, theCriterion):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.QuadToTri(IDsOfElements, self.smeshpyD.GetFunctor(theCriterion))
+
+ ## Split quadrangles into triangles.
+ # @param theObject object to taking list of elements from, is mesh, submesh or group
+ # @param theCriterion is FT_...; used to choose a diagonal for splitting.
+ def QuadToTriObject (self, theObject, theCriterion):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.QuadToTriObject(theObject, self.smeshpyD.GetFunctor(theCriterion))
+
+ ## Split quadrangles into triangles.
+ # @param theElems The faces to be splitted
+ # @param the13Diag is used to choose a diagonal for splitting.
+ # @return TRUE in case of success, FALSE otherwise.
+ def SplitQuad (self, IDsOfElements, Diag13):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.SplitQuad(IDsOfElements, Diag13)
+
+ ## Split quadrangles into triangles.
+ # @param theObject is object to taking list of elements from, is mesh, submesh or group
+ def SplitQuadObject (self, theObject, Diag13):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.SplitQuadObject(theObject, Diag13)
+
+ ## Find better splitting of the given quadrangle.
+ # @param IDOfQuad ID of the quadrangle to be splitted.
+ # @param theCriterion is FT_...; a criterion to choose a diagonal for splitting.
+ # @return 1 if 1-3 diagonal is better, 2 if 2-4
+ # diagonal is better, 0 if error occurs.
+ def BestSplit (self, IDOfQuad, theCriterion):
+ return self.editor.BestSplit(IDOfQuad, self.smeshpyD.GetFunctor(theCriterion))
+
+ ## Split quafrangle faces near triangular facets of volumes
+ #
+ def SplitQuadsNearTriangularFacets(self):
+ faces_array = self.GetElementsByType(SMESH.FACE)
+ for face_id in faces_array:
+ if self.GetElemNbNodes(face_id) == 4: # quadrangle
+ quad_nodes = self.mesh.GetElemNodes(face_id)
+ node1_elems = self.GetNodeInverseElements(quad_nodes[1 -1])
+ isVolumeFound = False
+ for node1_elem in node1_elems:
+ if not isVolumeFound:
+ if self.GetElementType(node1_elem, True) == SMESH.VOLUME:
+ nb_nodes = self.GetElemNbNodes(node1_elem)
+ if 3 < nb_nodes and nb_nodes < 7: # tetra or penta, or prism
+ volume_elem = node1_elem
+ volume_nodes = self.mesh.GetElemNodes(volume_elem)
+ if volume_nodes.count(quad_nodes[2 -1]) > 0: # 1,2
+ if volume_nodes.count(quad_nodes[4 -1]) > 0: # 1,2,4
+ isVolumeFound = True
+ if volume_nodes.count(quad_nodes[3 -1]) == 0: # 1,2,4 & !3
+ self.SplitQuad([face_id], False) # diagonal 2-4
+ elif volume_nodes.count(quad_nodes[3 -1]) > 0: # 1,2,3 & !4
+ isVolumeFound = True
+ self.SplitQuad([face_id], True) # diagonal 1-3
+ elif volume_nodes.count(quad_nodes[4 -1]) > 0: # 1,4 & !2
+ if volume_nodes.count(quad_nodes[3 -1]) > 0: # 1,4,3 & !2
+ isVolumeFound = True
+ self.SplitQuad([face_id], True) # diagonal 1-3
+
+ ## @brief Split hexahedrons into tetrahedrons.
+ #
+ # Use pattern mapping functionality for splitting.
+ # @param theObject object to take list of hexahedrons from; is mesh, submesh or group.
+ # @param theNode000,theNode001 is in range [0,7]; give an orientation of the
+ # pattern relatively each hexahedron: the (0,0,0) key-point of pattern
+ # will be mapped into <theNode000>-th node of each volume, the (0,0,1)
+ # key-point will be mapped into <theNode001>-th node of each volume.
+ # The (0,0,0) key-point of used pattern corresponds to not split corner.
+ # @return TRUE in case of success, FALSE otherwise.
+ def SplitHexaToTetras (self, theObject, theNode000, theNode001):
+ # Pattern: 5.---------.6
+ # /|#* /|
+ # / | #* / |
+ # / | # * / |
+ # / | # /* |
+ # (0,0,1) 4.---------.7 * |
+ # |#* |1 | # *|
+ # | # *.----|---#.2
+ # | #/ * | /
+ # | /# * | /
+ # | / # * | /
+ # |/ #*|/
+ # (0,0,0) 0.---------.3
+ pattern_tetra = "!!! Nb of points: \n 8 \n\
+ !!! Points: \n\
+ 0 0 0 !- 0 \n\
+ 0 1 0 !- 1 \n\
+ 1 1 0 !- 2 \n\
+ 1 0 0 !- 3 \n\
+ 0 0 1 !- 4 \n\
+ 0 1 1 !- 5 \n\
+ 1 1 1 !- 6 \n\
+ 1 0 1 !- 7 \n\
+ !!! Indices of points of 6 tetras: \n\
+ 0 3 4 1 \n\
+ 7 4 3 1 \n\
+ 4 7 5 1 \n\
+ 6 2 5 7 \n\
+ 1 5 2 7 \n\
+ 2 3 1 7 \n"
+
+ pattern = self.smeshpyD.GetPattern()
+ isDone = pattern.LoadFromFile(pattern_tetra)
+ if not isDone:
+ print 'Pattern.LoadFromFile :', pattern.GetErrorCode()
+ return isDone
+
+ pattern.ApplyToHexahedrons(self.mesh, theObject.GetIDs(), theNode000, theNode001)
+ isDone = pattern.MakeMesh(self.mesh, False, False)
+ if not isDone: print 'Pattern.MakeMesh :', pattern.GetErrorCode()
+
+ # split quafrangle faces near triangular facets of volumes
+ self.SplitQuadsNearTriangularFacets()
+
+ return isDone
+
+ ## @brief Split hexahedrons into prisms.
+ #
+ # Use pattern mapping functionality for splitting.
+ # @param theObject object to take list of hexahedrons from; is mesh, submesh or group.
+ # @param theNode000,theNode001 is in range [0,7]; give an orientation of the
+ # pattern relatively each hexahedron: the (0,0,0) key-point of pattern
+ # will be mapped into <theNode000>-th node of each volume, the (0,0,1)
+ # key-point will be mapped into <theNode001>-th node of each volume.
+ # The edge (0,0,0)-(0,0,1) of used pattern connects two not split corners.
+ # @return TRUE in case of success, FALSE otherwise.
+ def SplitHexaToPrisms (self, theObject, theNode000, theNode001):
+ # Pattern: 5.---------.6
+ # /|# /|
+ # / | # / |
+ # / | # / |
+ # / | # / |
+ # (0,0,1) 4.---------.7 |
+ # | | | |
+ # | 1.----|----.2
+ # | / * | /
+ # | / * | /
+ # | / * | /
+ # |/ *|/
+ # (0,0,0) 0.---------.3
+ pattern_prism = "!!! Nb of points: \n 8 \n\
+ !!! Points: \n\
+ 0 0 0 !- 0 \n\
+ 0 1 0 !- 1 \n\
+ 1 1 0 !- 2 \n\
+ 1 0 0 !- 3 \n\
+ 0 0 1 !- 4 \n\
+ 0 1 1 !- 5 \n\
+ 1 1 1 !- 6 \n\
+ 1 0 1 !- 7 \n\
+ !!! Indices of points of 2 prisms: \n\
+ 0 1 3 4 5 7 \n\
+ 2 3 1 6 7 5 \n"
+
+ pattern = self.smeshpyD.GetPattern()
+ isDone = pattern.LoadFromFile(pattern_prism)
+ if not isDone:
+ print 'Pattern.LoadFromFile :', pattern.GetErrorCode()
+ return isDone
+
+ pattern.ApplyToHexahedrons(self.mesh, theObject.GetIDs(), theNode000, theNode001)
+ isDone = pattern.MakeMesh(self.mesh, False, False)
+ if not isDone: print 'Pattern.MakeMesh :', pattern.GetErrorCode()
+
+ # split quafrangle faces near triangular facets of volumes
+ self.SplitQuadsNearTriangularFacets()
+
+ return isDone
+
+ ## Smooth elements
+ # @param IDsOfElements list if ids of elements to smooth
+ # @param IDsOfFixedNodes list of ids of fixed nodes.
+ # Note that nodes built on edges and boundary nodes are always fixed.
+ # @param MaxNbOfIterations maximum number of iterations
+ # @param MaxAspectRatio varies in range [1.0, inf]
+ # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
+ def Smooth(self, IDsOfElements, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.Smooth(IDsOfElements, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method)
+
+ ## Smooth elements belong to given object
+ # @param theObject object to smooth
+ # @param IDsOfFixedNodes list of ids of fixed nodes.
+ # Note that nodes built on edges and boundary nodes are always fixed.
+ # @param MaxNbOfIterations maximum number of iterations
+ # @param MaxAspectRatio varies in range [1.0, inf]
+ # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
+ def SmoothObject(self, theObject, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxxAspectRatio, Method):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.SmoothObject(theObject, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxxAspectRatio, Method)
+
+ ## Parametric smooth the given elements
+ # @param IDsOfElements list if ids of elements to smooth
+ # @param IDsOfFixedNodes list of ids of fixed nodes.
+ # Note that nodes built on edges and boundary nodes are always fixed.
+ # @param MaxNbOfIterations maximum number of iterations
+ # @param MaxAspectRatio varies in range [1.0, inf]
+ # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
+ def SmoothParametric(self, IDsOfElements, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ return self.editor.SmoothParametric(IDsOfElements, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method)
+
+ ## Parametric smooth elements belong to given object
+ # @param theObject object to smooth
+ # @param IDsOfFixedNodes list of ids of fixed nodes.
+ # Note that nodes built on edges and boundary nodes are always fixed.
+ # @param MaxNbOfIterations maximum number of iterations
+ # @param MaxAspectRatio varies in range [1.0, inf]
+ # @param Method is Laplacian(LAPLACIAN_SMOOTH) or Centroidal(CENTROIDAL_SMOOTH)
+ def SmoothParametricObject(self, theObject, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ return self.editor.SmoothParametricObject(theObject, IDsOfFixedNodes,
+ MaxNbOfIterations, MaxAspectRatio, Method)
+
+ ## Converts all mesh to quadratic one, deletes old elements, replacing
+ # them with quadratic ones with the same id.
+ def ConvertToQuadratic(self, theForce3d):
+ self.editor.ConvertToQuadratic(theForce3d)
+
+ ## Converts all mesh from quadratic to ordinary ones,
+ # deletes old quadratic elements, \n replacing
+ # them with ordinary mesh elements with the same id.
+ def ConvertFromQuadratic(self):
+ return self.editor.ConvertFromQuadratic()
+
+ ## Renumber mesh nodes
+ def RenumberNodes(self):
+ self.editor.RenumberNodes()
+
+ ## Renumber mesh elements
+ def RenumberElements(self):
+ self.editor.RenumberElements()
+
+ ## Generate new elements by rotation of the elements around the axis
+ # @param IDsOfElements list of ids of elements to sweep
+ # @param Axix axis of rotation, AxisStruct or line(geom object)
+ # @param AngleInRadians angle of Rotation
+ # @param NbOfSteps number of steps
+ # @param Tolerance tolerance
+ # @param MakeGroups to generate new groups from existing ones
+ def RotationSweep(self, IDsOfElements, Axix, AngleInRadians, NbOfSteps, Tolerance, MakeGroups=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Axix, geompyDC.GEOM._objref_GEOM_Object)):
+ Axix = self.smeshpyD.GetAxisStruct(Axix)
+ if MakeGroups:
+ return self.editor.RotationSweepMakeGroups(IDsOfElements, Axix,
+ AngleInRadians, NbOfSteps, Tolerance)
+ self.editor.RotationSweep(IDsOfElements, Axix, AngleInRadians, NbOfSteps, Tolerance)
+ return []
+
+ ## Generate new elements by rotation of the elements of object around the axis
+ # @param theObject object wich elements should be sweeped
+ # @param Axix axis of rotation, AxisStruct or line(geom object)
+ # @param AngleInRadians angle of Rotation
+ # @param NbOfSteps number of steps
+ # @param Tolerance tolerance
+ # @param MakeGroups to generate new groups from existing ones
+ def RotationSweepObject(self, theObject, Axix, AngleInRadians, NbOfSteps, Tolerance, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( Axix, geompyDC.GEOM._objref_GEOM_Object)):
+ Axix = self.smeshpyD.GetAxisStruct(Axix)
+ if MakeGroups:
+ return self.editor.RotationSweepObjectMakeGroups(theObject, Axix, AngleInRadians,
+ NbOfSteps, Tolerance)
+ self.editor.RotationSweepObject(theObject, Axix, AngleInRadians, NbOfSteps, Tolerance)
+ return []
+
+ ## Generate new elements by extrusion of the elements with given ids
+ # @param IDsOfElements list of elements ids for extrusion
+ # @param StepVector vector, defining the direction and value of extrusion
+ # @param NbOfSteps the number of steps
+ # @param MakeGroups to generate new groups from existing ones
+ def ExtrusionSweep(self, IDsOfElements, StepVector, NbOfSteps, MakeGroups=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( StepVector, geompyDC.GEOM._objref_GEOM_Object)):
+ StepVector = self.smeshpyD.GetDirStruct(StepVector)
+ if MakeGroups:
+ return self.editor.ExtrusionSweepMakeGroups(IDsOfElements, StepVector, NbOfSteps)
+ self.editor.ExtrusionSweep(IDsOfElements, StepVector, NbOfSteps)
+ return []
+
+ ## Generate new elements by extrusion of the elements with given ids
+ # @param IDsOfElements is ids of elements
+ # @param StepVector vector, defining the direction and value of extrusion
+ # @param NbOfSteps the number of steps
+ # @param ExtrFlags set flags for performing extrusion
+ # @param SewTolerance uses for comparing locations of nodes if flag
+ # EXTRUSION_FLAG_SEW is set
+ # @param MakeGroups to generate new groups from existing ones
+ def AdvancedExtrusion(self, IDsOfElements, StepVector, NbOfSteps, ExtrFlags, SewTolerance, MakeGroups=False):
+ if ( isinstance( StepVector, geompyDC.GEOM._objref_GEOM_Object)):
+ StepVector = self.smeshpyD.GetDirStruct(StepVector)
+ if MakeGroups:
+ return self.editor.AdvancedExtrusionMakeGroups(IDsOfElements, StepVector, NbOfSteps,
+ ExtrFlags, SewTolerance)
+ self.editor.AdvancedExtrusion(IDsOfElements, StepVector, NbOfSteps,
+ ExtrFlags, SewTolerance)
+ return []
+
+ ## Generate new elements by extrusion of the elements belong to object
+ # @param theObject object wich elements should be processed
+ # @param StepVector vector, defining the direction and value of extrusion
+ # @param NbOfSteps the number of steps
+ # @param MakeGroups to generate new groups from existing ones
+ def ExtrusionSweepObject(self, theObject, StepVector, NbOfSteps, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( StepVector, geompyDC.GEOM._objref_GEOM_Object)):
+ StepVector = self.smeshpyD.GetDirStruct(StepVector)
+ if MakeGroups:
+ return self.editor.ExtrusionSweepObjectMakeGroups(theObject, StepVector, NbOfSteps)
+ self.editor.ExtrusionSweepObject(theObject, StepVector, NbOfSteps)
+ return []
+
+ ## Generate new elements by extrusion of the elements belong to object
+ # @param theObject object wich elements should be processed
+ # @param StepVector vector, defining the direction and value of extrusion
+ # @param NbOfSteps the number of steps
+ # @param MakeGroups to generate new groups from existing ones
+ def ExtrusionSweepObject1D(self, theObject, StepVector, NbOfSteps, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( StepVector, geompyDC.GEOM._objref_GEOM_Object)):
+ StepVector = self.smeshpyD.GetDirStruct(StepVector)
+ if MakeGroups:
+ return self.editor.ExtrusionSweepObject1DMakeGroups(theObject, StepVector, NbOfSteps)
+ self.editor.ExtrusionSweepObject1D(theObject, StepVector, NbOfSteps)
+ return []
+
+ ## Generate new elements by extrusion of the elements belong to object
+ # @param theObject object wich elements should be processed
+ # @param StepVector vector, defining the direction and value of extrusion
+ # @param NbOfSteps the number of steps
+ # @param MakeGroups to generate new groups from existing ones
+ def ExtrusionSweepObject2D(self, theObject, StepVector, NbOfSteps, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( StepVector, geompyDC.GEOM._objref_GEOM_Object)):
+ StepVector = self.smeshpyD.GetDirStruct(StepVector)
+ if MakeGroups:
+ return self.editor.ExtrusionSweepObject2DMakeGroups(theObject, StepVector, NbOfSteps)
+ self.editor.ExtrusionSweepObject2D(theObject, StepVector, NbOfSteps)
+ return []
+
+ ## Generate new elements by extrusion of the given elements
+ # A path of extrusion must be a meshed edge.
+ # @param IDsOfElements is ids of elements
+ # @param PathMesh mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion
+ # @param PathShape is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path
+ # @param NodeStart the first or the last node on the edge. It is used to define the direction of extrusion
+ # @param HasAngles allows the shape to be rotated around the path to get the resulting mesh in a helical fashion
+ # @param Angles list of angles
+ # @param HasRefPoint allows to use base point
+ # @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
+ # User can specify any point as the Base Point and the shape will be rotated with respect to this point.
+ # @param MakeGroups to generate new groups from existing ones
+ # @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
+ def ExtrusionAlongPath(self, IDsOfElements, PathMesh, PathShape, NodeStart,
+ HasAngles, Angles, HasRefPoint, RefPoint,
+ MakeGroups=False, LinearVariation=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( RefPoint, geompyDC.GEOM._objref_GEOM_Object)):
+ RefPoint = self.smeshpyD.GetPointStruct(RefPoint)
+ pass
+ if MakeGroups:
+ return self.editor.ExtrusionAlongPathMakeGroups(IDsOfElements, PathMesh.GetMesh(),
+ PathShape, NodeStart, HasAngles,
+ Angles, HasRefPoint, RefPoint)
+ return self.editor.ExtrusionAlongPath(IDsOfElements, PathMesh.GetMesh(), PathShape,
+ NodeStart, HasAngles, Angles, HasRefPoint, RefPoint)
+
+ ## Generate new elements by extrusion of the elements belong to object
+ # A path of extrusion must be a meshed edge.
+ # @param IDsOfElements is ids of elements
+ # @param PathMesh mesh containing a 1D sub-mesh on the edge, along which proceeds the extrusion
+ # @param PathShape is shape(edge); as the mesh can be complex, the edge is used to define the sub-mesh for the path
+ # @param NodeStart the first or the last node on the edge. It is used to define the direction of extrusion
+ # @param HasAngles allows the shape to be rotated around the path to get the resulting mesh in a helical fashion
+ # @param Angles list of angles
+ # @param HasRefPoint allows to use base point
+ # @param RefPoint point around which the shape is rotated(the mass center of the shape by default).
+ # User can specify any point as the Base Point and the shape will be rotated with respect to this point.
+ # @param MakeGroups to generate new groups from existing ones
+ # @param LinearVariation makes compute rotation angles as linear variation of given Angles along path steps
+ def ExtrusionAlongPathObject(self, theObject, PathMesh, PathShape, NodeStart,
+ HasAngles, Angles, HasRefPoint, RefPoint,
+ MakeGroups=False, LinearVariation=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( RefPoint, geompyDC.GEOM._objref_GEOM_Object)):
+ RefPoint = self.smeshpyD.GetPointStruct(RefPoint)
+ if MakeGroups:
+ return self.editor.ExtrusionAlongPathObjectMakeGroups(theObject, PathMesh.GetMesh(),
+ PathShape, NodeStart, HasAngles,
+ Angles, HasRefPoint, RefPoint)
+ return self.editor.ExtrusionAlongPathObject(theObject, PathMesh.GetMesh(), PathShape,
+ NodeStart, HasAngles, Angles, HasRefPoint,
+ RefPoint)
+
+ ## Symmetrical copy of mesh elements
+ # @param IDsOfElements list of elements ids
+ # @param Mirror is AxisStruct or geom object(point, line, plane)
+ # @param theMirrorType is POINT, AXIS or PLANE
+ # If the Mirror is geom object this parameter is unnecessary
+ # @param Copy allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0)
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def Mirror(self, IDsOfElements, Mirror, theMirrorType, Copy=0, MakeGroups=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Mirror, geompyDC.GEOM._objref_GEOM_Object)):
+ Mirror = self.smeshpyD.GetAxisStruct(Mirror)
+ if Copy and MakeGroups:
+ return self.editor.MirrorMakeGroups(IDsOfElements, Mirror, theMirrorType)
+ self.editor.Mirror(IDsOfElements, Mirror, theMirrorType, Copy)
+ return []
+
+ ## Create a new mesh by symmetrical copy of mesh elements
+ # @param IDsOfElements list of elements ids
+ # @param Mirror is AxisStruct or geom object(point, line, plane)
+ # @param theMirrorType is POINT, AXIS or PLANE
+ # If the Mirror is geom object this parameter is unnecessary
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def MirrorMakeMesh(self, IDsOfElements, Mirror, theMirrorType, MakeGroups=0, NewMeshName=""):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Mirror, geompyDC.GEOM._objref_GEOM_Object)):
+ Mirror = self.smeshpyD.GetAxisStruct(Mirror)
+ mesh = self.editor.MirrorMakeMesh(IDsOfElements, Mirror, theMirrorType,
+ MakeGroups, NewMeshName)
+ return Mesh(self.smeshpyD,self.geompyD,mesh)
+
+ ## Symmetrical copy of object
+ # @param theObject mesh, submesh or group
+ # @param Mirror is AxisStruct or geom object(point, line, plane)
+ # @param theMirrorType is POINT, AXIS or PLANE
+ # If the Mirror is geom object this parameter is unnecessary
+ # @param Copy allows to copy element(Copy is 1) or to replace with its mirroring(Copy is 0)
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def MirrorObject (self, theObject, Mirror, theMirrorType, Copy=0, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( Mirror, geompyDC.GEOM._objref_GEOM_Object)):
+ Mirror = self.smeshpyD.GetAxisStruct(Mirror)
+ if Copy and MakeGroups:
+ return self.editor.MirrorObjectMakeGroups(theObject, Mirror, theMirrorType)
+ self.editor.MirrorObject(theObject, Mirror, theMirrorType, Copy)
+ return []
+
+ ## Create a new mesh by symmetrical copy of object
+ # @param theObject mesh, submesh or group
+ # @param Mirror is AxisStruct or geom object(point, line, plane)
+ # @param theMirrorType is POINT, AXIS or PLANE
+ # If the Mirror is geom object this parameter is unnecessary
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def MirrorObjectMakeMesh (self, theObject, Mirror, theMirrorType,MakeGroups=0, NewMeshName=""):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if (isinstance(Mirror, geompyDC.GEOM._objref_GEOM_Object)):
+ Mirror = self.smeshpyD.GetAxisStruct(Mirror)
+ mesh = self.editor.MirrorObjectMakeMesh(theObject, Mirror, theMirrorType,
+ MakeGroups, NewMeshName)
+ return Mesh( self.smeshpyD,self.geompyD,mesh )
+
+ ## Translates the elements
+ # @param IDsOfElements list of elements ids
+ # @param Vector direction of translation(DirStruct or vector)
+ # @param Copy allows to copy the translated elements
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def Translate(self, IDsOfElements, Vector, Copy, MakeGroups=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Vector, geompyDC.GEOM._objref_GEOM_Object)):
+ Vector = self.smeshpyD.GetDirStruct(Vector)
+ if Copy and MakeGroups:
+ return self.editor.TranslateMakeGroups(IDsOfElements, Vector)
+ self.editor.Translate(IDsOfElements, Vector, Copy)
+ return []
+
+ ## Create a new mesh of translated elements
+ # @param IDsOfElements list of elements ids
+ # @param Vector direction of translation(DirStruct or vector)
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def TranslateMakeMesh(self, IDsOfElements, Vector, MakeGroups=False, NewMeshName=""):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Vector, geompyDC.GEOM._objref_GEOM_Object)):
+ Vector = self.smeshpyD.GetDirStruct(Vector)
+ mesh = self.editor.TranslateMakeMesh(IDsOfElements, Vector, MakeGroups, NewMeshName)
+ return Mesh ( self.smeshpyD, self.geompyD, mesh )
+
+ ## Translates the object
+ # @param theObject object to translate(mesh, submesh, or group)
+ # @param Vector direction of translation(DirStruct or geom vector)
+ # @param Copy allows to copy the translated elements
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def TranslateObject(self, theObject, Vector, Copy, MakeGroups=False):
+ if ( isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if ( isinstance( Vector, geompyDC.GEOM._objref_GEOM_Object)):
+ Vector = self.smeshpyD.GetDirStruct(Vector)
+ if Copy and MakeGroups:
+ return self.editor.TranslateObjectMakeGroups(theObject, Vector)
+ self.editor.TranslateObject(theObject, Vector, Copy)
+ return []
+
+ ## Create a new mesh from translated object
+ # @param theObject object to translate(mesh, submesh, or group)
+ # @param Vector direction of translation(DirStruct or geom vector)
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def TranslateObjectMakeMesh(self, theObject, Vector, MakeGroups=False, NewMeshName=""):
+ if (isinstance(theObject, Mesh)):
+ theObject = theObject.GetMesh()
+ if (isinstance(Vector, geompyDC.GEOM._objref_GEOM_Object)):
+ Vector = self.smeshpyD.GetDirStruct(Vector)
+ mesh = self.editor.TranslateObjectMakeMesh(theObject, Vector, MakeGroups, NewMeshName)
+ return Mesh( self.smeshpyD, self.geompyD, mesh )
+
+ ## Rotates the elements
+ # @param IDsOfElements list of elements ids
+ # @param Axis axis of rotation(AxisStruct or geom line)
+ # @param AngleInRadians angle of rotation(in radians)
+ # @param Copy allows to copy the rotated elements
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def Rotate (self, IDsOfElements, Axis, AngleInRadians, Copy, MakeGroups=False):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Axis, geompyDC.GEOM._objref_GEOM_Object)):
+ Axis = self.smeshpyD.GetAxisStruct(Axis)
+ if Copy and MakeGroups:
+ return self.editor.RotateMakeGroups(IDsOfElements, Axis, AngleInRadians)
+ self.editor.Rotate(IDsOfElements, Axis, AngleInRadians, Copy)
+ return []
+
+ ## Create a new mesh of rotated elements
+ # @param IDsOfElements list of element ids
+ # @param Axis axis of rotation(AxisStruct or geom line)
+ # @param AngleInRadians angle of rotation(in radians)
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def RotateMakeMesh (self, IDsOfElements, Axis, AngleInRadians, MakeGroups=0, NewMeshName=""):
+ if IDsOfElements == []:
+ IDsOfElements = self.GetElementsId()
+ if ( isinstance( Axis, geompyDC.GEOM._objref_GEOM_Object)):
+ Axis = self.smeshpyD.GetAxisStruct(Axis)
+ mesh = self.editor.RotateMakeMesh(IDsOfElements, Axis, AngleInRadians,
+ MakeGroups, NewMeshName)
+ return Mesh( self.smeshpyD, self.geompyD, mesh )
+
+ ## Rotates the object
+ # @param theObject object to rotate(mesh, submesh, or group)
+ # @param Axis axis of rotation(AxisStruct or geom line)
+ # @param AngleInRadians angle of rotation(in radians)
+ # @param Copy allows to copy the rotated elements
+ # @param MakeGroups to generate new groups from existing ones (if Copy)
+ def RotateObject (self, theObject, Axis, AngleInRadians, Copy, MakeGroups=False):
+ if (isinstance(theObject, Mesh)):
+ theObject = theObject.GetMesh()
+ if (isinstance(Axis, geompyDC.GEOM._objref_GEOM_Object)):
+ Axis = self.smeshpyD.GetAxisStruct(Axis)
+ if Copy and MakeGroups:
+ return self.editor.RotateObjectMakeGroups(theObject, Axis, AngleInRadians)
+ self.editor.RotateObject(theObject, Axis, AngleInRadians, Copy)
+ return []
+
+ ## Create a new mesh from a rotated object
+ # @param theObject object to rotate (mesh, submesh, or group)
+ # @param Axis axis of rotation(AxisStruct or geom line)
+ # @param AngleInRadians angle of rotation(in radians)
+ # @param MakeGroups to generate new groups from existing ones
+ # @param NewMeshName is a name of new mesh to create
+ def RotateObjectMakeMesh(self, theObject, Axis, AngleInRadians, MakeGroups=0,NewMeshName=""):
+ if (isinstance( theObject, Mesh )):
+ theObject = theObject.GetMesh()
+ if (isinstance(Axis, geompyDC.GEOM._objref_GEOM_Object)):
+ Axis = self.smeshpyD.GetAxisStruct(Axis)
+ mesh = self.editor.RotateObjectMakeMesh(theObject, Axis, AngleInRadians,
+ MakeGroups, NewMeshName)
+ return Mesh( self.smeshpyD, self.geompyD, mesh )
+
+ ## Find group of nodes close to each other within Tolerance.
+ # @param Tolerance tolerance value
+ # @param list of group of nodes
+ def FindCoincidentNodes (self, Tolerance):
+ return self.editor.FindCoincidentNodes(Tolerance)
+
+ ## Find group of nodes close to each other within Tolerance.
+ # @param Tolerance tolerance value
+ # @param SubMeshOrGroup SubMesh or Group
+ # @param list of group of nodes
+ def FindCoincidentNodesOnPart (self, SubMeshOrGroup, Tolerance):
+ return self.editor.FindCoincidentNodesOnPart(SubMeshOrGroup, Tolerance)
+
+ ## Merge nodes
+ # @param list of group of nodes
+ def MergeNodes (self, GroupsOfNodes):
+ self.editor.MergeNodes(GroupsOfNodes)
+
+ ## Find elements built on the same nodes.
+ # @param MeshOrSubMeshOrGroup Mesh or SubMesh, or Group of elements for searching
+ # @return a list of groups of equal elements
+ def FindEqualElements (self, MeshOrSubMeshOrGroup):
+ return self.editor.FindEqualElements(MeshOrSubMeshOrGroup)
+
+ ## Merge elements in each given group.
+ # @param GroupsOfElementsID groups of elements for merging
+ def MergeElements(self, GroupsOfElementsID):
+ self.editor.MergeElements(GroupsOfElementsID)
+
+ ## Remove all but one of elements built on the same nodes.
+ def MergeEqualElements(self):
+ self.editor.MergeEqualElements()
+
+ ## Sew free borders
+ def SewFreeBorders (self, FirstNodeID1, SecondNodeID1, LastNodeID1,
+ FirstNodeID2, SecondNodeID2, LastNodeID2,
+ CreatePolygons, CreatePolyedrs):
+ return self.editor.SewFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1,
+ FirstNodeID2, SecondNodeID2, LastNodeID2,
+ CreatePolygons, CreatePolyedrs)
+
+ ## Sew conform free borders
+ def SewConformFreeBorders (self, FirstNodeID1, SecondNodeID1, LastNodeID1,
+ FirstNodeID2, SecondNodeID2):
+ return self.editor.SewConformFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1,
+ FirstNodeID2, SecondNodeID2)
+
+ ## Sew border to side
+ def SewBorderToSide (self, FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
+ FirstNodeIDOnSide, LastNodeIDOnSide, CreatePolygons, CreatePolyedrs):
+ return self.editor.SewBorderToSide(FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
+ FirstNodeIDOnSide, LastNodeIDOnSide, CreatePolygons, CreatePolyedrs)
+
+ ## Sew two sides of a mesh. Nodes belonging to Side1 are
+ # merged with nodes of elements of Side2.
+ # Number of elements in theSide1 and in theSide2 must be
+ # equal and they should have similar node connectivity.
+ # The nodes to merge should belong to sides borders and
+ # the first node should be linked to the second.
+ def SewSideElements (self, IDsOfSide1Elements, IDsOfSide2Elements,
+ NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge,
+ NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge):
+ return self.editor.SewSideElements(IDsOfSide1Elements, IDsOfSide2Elements,
+ NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge,
+ NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge)
+
+ ## Set new nodes for given element.
+ # @param ide the element id
+ # @param newIDs nodes ids
+ # @return If number of nodes is not corresponded to type of element - returns false
+ def ChangeElemNodes(self, ide, newIDs):
+ return self.editor.ChangeElemNodes(ide, newIDs)
+
+ ## If during last operation of MeshEditor some nodes were
+ # created this method returns list of its IDs, \n
+ # if new nodes not created - returns empty list
+ def GetLastCreatedNodes(self):
+ return self.editor.GetLastCreatedNodes()
+
+ ## If during last operation of MeshEditor some elements were
+ # created this method returns list of its IDs, \n
+ # if new elements not creared - returns empty list
+ def GetLastCreatedElems(self):
+ return self.editor.GetLastCreatedElems()
--- /dev/null
+# Copyright (C) 2003 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
+# 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
+# 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
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+# File : Makefile.in
+# Author : Nicolas REJNERI, Paul RASCLE
+# Modified by : Alexander BORODIN (OCN) - autotools usage
+# Module : SMESH
+# $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+#
+# Step 1: build the wrapping source files with swig
+#
+# libSALOME_LifeCycleCORBA.i -- swig --> swig_wrap.cpp
+# libSALOME_Swig.py
+#
+# Step 2: build the dynamic library from cpp built source files and
+# dependant libraries.
+#
+# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libSALOME_Swig.la
+# + |
+# dependant libs |
+#
+# The file libSALOME_Swigcmodule.py will be installed in
+# <prefix>/lib/python<version>/site-package/salome.
+# The library will be installed in the same place.
+#
+
+# this option puts it to dist
+#BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS = \
+ @SWIG_FLAGS@ \
+ -I$(srcdir) \
+ -I$(srcdir)/../SMESHGUI
+
+SWIG_SOURCES = libSMESH_Swig.i
+
+# Libraries targets
+
+lib_LTLIBRARIES = libSMESH_Swigcmodule.la
+
+nodist_pkgpython_DATA = libSMESH_Swig.py
+libSMESH_Swig.py: swig_wrap.cpp
+
+libSMESH_Swigcmodule_la_SOURCES = \
+ $(BUILT_SOURCES) \
+ $(SWIG_SOURCES) \
+ ../SMESHGUI/SMESHGUI_Swig.cxx
+
+nodist_libSMESH_Swigcmodule_la_SOURCES = \
+ swig_wrap.cpp
+
+libSMESH_Swigcmodule_la_CPPFLAGS = \
+ $(QT_INCLUDES) \
+ $(PYTHON_INCLUDES) \
+ $(CAS_CPPFLAGS) \
+ $(VTK_INCLUDES) \
+ $(OGL_INCLUDES) \
+ $(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
+ $(MED_CXXFLAGS) \
+ $(GEOM_CXXFLAGS) \
+ $(CORBA_CXXFLAGS) \
+ $(CORBA_INCLUDES) \
+ $(BOOST_CPPFLAGS) \
+ -I$(srcdir)/../SMESHGUI \
+ -I$(top_builddir)/idl \
+ -I$(top_builddir)/salome_adm/unix
+
+libSMESH_Swigcmodule_la_LDFLAGS = \
+ ../SMESHGUI/libSMESH.la \
+ $(KERNEL_LDFLAGS) -lSalomeGenericObj -lSALOMELocalTrace \
+ $(GUI_LDFLAGS) -lCAM -lsuit -lqtx -lSalomeApp -lstd -lEvent \
+ $(PYTHON_LIBS) \
+ $(QT_MT_LIBS)
+
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+ $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = \
+ swig_wrap.cpp
+
+# Scripts to be installed.
+dist_salomescript_DATA= \
+ libSMESH_Swig.py
+
+install-exec-hook: $(libdir)/_libSMESH_Swig.so
+
+$(libdir)/_libSMESH_Swig.so:
+ ( cd $(libdir); ln -sf libSMESH_Swigcmodule.so _libSMESH_Swig.so; )
--- /dev/null
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : libGeometry_Swig.i
+// Author : Nicolas REJNERI, Paul RASCLE
+// Module : SMESH
+// $Header$
+
+%module libSMESH_Swig
+
+%include "SMESHGUI_Swig.i"
+
StdMeshers_RadialPrism_3D.hxx \
StdMeshers_ProjectionUtils.hxx \
StdMeshers_LayerDistribution.hxx \
- StdMeshers_CompositeSegment_1D.hxx \
- StdMeshers_FaceSide.hxx \
StdMeshers_SegmentAroundVertex_0D.hxx \
StdMeshers_SegmentLengthAroundVertex.hxx \
+ StdMeshers_FaceSide.hxx \
+ StdMeshers_CompositeSegment_1D.hxx \
+ StdMeshers_UseExisting_1D2D.hxx \
SMESH_StdMeshers.hxx
# Libraries targets
StdMeshers_RadialPrism_3D.cxx \
StdMeshers_ProjectionUtils.cxx \
StdMeshers_LayerDistribution.cxx \
- StdMeshers_CompositeSegment_1D.cxx \
- StdMeshers_FaceSide.cxx \
StdMeshers_SegmentAroundVertex_0D.cxx \
- StdMeshers_SegmentLengthAroundVertex.cxx
+ StdMeshers_SegmentLengthAroundVertex.cxx \
+ StdMeshers_FaceSide.cxx \
+ StdMeshers_CompositeSegment_1D.cxx \
+ StdMeshers_UseExisting_1D2D.cxx
# additionnal information to compil and link file
$(CAS_CPPFLAGS) \
$(BOOST_CPPFLAGS) \
$(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
-I$(srcdir)/../SMESHImpl \
-I$(srcdir)/../MEFISTO2 \
-I$(srcdir)/../SMESH \
eNext = TopoDS::Edge( ancestor );
}
if ( edgeCounter.Extent() < 3 && !eNext.IsNull() ) {
- GeomAbs_Shape cont = SMESH_Algo::Continuity( edge, eNext );
- if (cont >= GeomAbs_G1) {
+ if ( SMESH_Algo::IsContinuous( edge, eNext )) {
// care of orientation
bool reverse;
if ( forward )
return;
for ( int iE = 0; iE < side.NbEdges(); ++iE )
{
- // set listener and its data
+ // set listener and its data
EventListenerData * listenerData = new EventListenerData(true);
const TopoDS_Edge& edge = side.Edge( iE );
SMESH_subMesh * sm = side.GetMesh()->GetSubMesh( edge );
auto_ptr< BRepAdaptor_CompCurve > C3d ( side->GetCurve3d() );
double f = C3d->FirstParameter(), l = C3d->LastParameter();
list< double > params;
- if ( !computeInternalParameters ( *C3d, side->Length(), f, l, params, false ))
+ if ( !computeInternalParameters ( aMesh, *C3d, side->Length(), f, l, params, false ))
return false;
// Redistribute parameters near ends
const SMDS_MeshNode * nFirst = SMESH_Algo::VertexNode( VFirst, meshDS );
const SMDS_MeshNode * nLast = SMESH_Algo::VertexNode( VLast, meshDS );
- if (!nFirst)
+ if (!nFirst)
return error(COMPERR_BAD_INPUT_MESH, TComm("No node on vertex ")
<<meshDS->ShapeToIndex(VFirst));
if (!nLast)
return true;
}
-
#define _SMESH_CompositeSegment_1D_HXX_
#include "StdMeshers_Regular_1D.hxx"
+#include "SMESH_StdMeshers.hxx"
class SMESH_subMeshEventListener;
class SMESH_Mesh;
class TopoDS_Edge;
class TopoDS_Face;
-class StdMeshers_CompositeSegment_1D: public StdMeshers_Regular_1D
+class STDMESHERS_EXPORT StdMeshers_CompositeSegment_1D: public StdMeshers_Regular_1D
{
public:
StdMeshers_CompositeSegment_1D(int hypId, int studyId, SMESH_Gen* gen);
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
-#else
-#include "CASCatch.hxx"
#endif
Function::Function( const int conv )
{
bool ok = true;
if (myConv == 0) {
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
f = pow( 10., f );
-#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;
myValues( 1, 1 )
{
bool ok = true;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString )str );
-#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
-#else
- } CASCatch_CATCH(Standard_Failure) {
-#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
ok = false;
}
( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t;
bool ok = true;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
f = myExpr->Expression()->Evaluate( myVars, myValues );
-#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;
double FunctionExpr::integral( const double a, const double b ) const
{
double res = 0.0;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
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();
-#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
-#else
- } CASCatch_CATCH(Standard_Failure) {
-#endif
res = 0.0;
MESSAGE( "Exception in integral calculating" );
}
#include "SMDS_MeshNode.hxx"
#include "SMESHDS_Mesh.hxx"
#include "SMESHDS_SubMesh.hxx"
-#include "SMESH_Algo.hxx"
+//#include "SMESH_Algo.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_MeshEditor.hxx"
+#include "SMESH_ComputeError.hxx"
+#include "SMESH_Block.hxx"
#include <Adaptor2d_Curve2d.hxx>
#include <BRepAdaptor_CompCurve.hxx>
}
return gp_Pnt2d( 1e+100, 1e+100 );
}
+
+//================================================================================
+/*!
+ * \brief Return wires of a face as StdMeshers_FaceSide's
+ */
+//================================================================================
+
+TSideVector StdMeshers_FaceSide::GetFaceWires(const TopoDS_Face& theFace,
+ SMESH_Mesh & theMesh,
+ const bool theIgnoreMediumNodes,
+ TError & theError)
+{
+ TopoDS_Vertex V1;
+ list< TopoDS_Edge > edges;
+ list< int > nbEdgesInWires;
+ int nbWires = SMESH_Block::GetOrderedEdges (theFace, V1, edges, nbEdgesInWires);
+
+ // split list of all edges into separate wires
+ TSideVector wires( nbWires );
+ list< int >::iterator nbE = nbEdgesInWires.begin();
+ list< TopoDS_Edge >::iterator from, to;
+ from = to = edges.begin();
+ for ( int iW = 0; iW < nbWires; ++iW )
+ {
+ std::advance( to, *nbE++ );
+ list< TopoDS_Edge > wireEdges( from, to );
+ // assure that there is a node on the first vertex
+ // as StdMeshers_FaceSide::GetUVPtStruct() requires
+ while ( !SMESH_Algo::VertexNode( TopExp::FirstVertex( wireEdges.front(), true),
+ theMesh.GetMeshDS()))
+ {
+ wireEdges.splice(wireEdges.end(), wireEdges,
+ wireEdges.begin(), ++wireEdges.begin());
+ if ( from->IsSame( wireEdges.front() )) {
+ theError = TError
+ ( new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH,"No nodes on vertices"));
+ return TSideVector(0);
+ }
+ }
+ StdMeshers_FaceSide* wire = new StdMeshers_FaceSide( theFace, wireEdges, &theMesh,
+ true, theIgnoreMediumNodes);
+ wires[ iW ] = StdMeshers_FaceSidePtr( wire );
+ from = to;
+ }
+ return wires;
+}
+
+
#include <Geom2d_Curve.hxx>
#include <TopExp.hxx>
+#include "SMESH_StdMeshers.hxx"
+#include "SMESH_Algo.hxx"
+
#include <vector>
#include <list>
#include <boost/shared_ptr.hpp>
class Adaptor3d_Curve;
class BRepAdaptor_CompCurve;
class TopoDS_Face;
+class SMESH_ComputeError;
typedef struct uvPtStruct
{
class StdMeshers_FaceSide;
typedef boost::shared_ptr< StdMeshers_FaceSide > StdMeshers_FaceSidePtr;
typedef boost::shared_ptr< uvPtStruct > UVPtStructPtr;
+typedef std::vector< StdMeshers_FaceSidePtr > TSideVector;
+typedef boost::shared_ptr< SMESH_ComputeError > TError;
//================================================================================
/*!
*/
//================================================================================
-class StdMeshers_FaceSide
+class STDMESHERS_EXPORT StdMeshers_FaceSide
{
public:
/*!
SMESH_Mesh* theMesh,
const bool theIsForward,
const bool theIgnoreMediumNodes);
+
+ /*!
+ * \brief Return wires of a face as StdMeshers_FaceSide's
+ */
+ static TSideVector GetFaceWires(const TopoDS_Face& theFace,
+ SMESH_Mesh & theMesh,
+ const bool theIgnoreMediumNodes,
+ TError & theError);
+
/*!
* \brief Change orientation of side geometry
*/
*
* Missing nodes are allowed only on internal vertices
*/
- const vector<UVPtStruct>& GetUVPtStruct(bool isXConst, double constValue) const;
+ const vector<UVPtStruct>& GetUVPtStruct(bool isXConst =0, double constValue =0) const;
/*!
* \brief Simulates detailed data on nodes
* \param isXConst - true if normalized parameter X is constant
* \param constValue - constant parameter value
*/
const vector<UVPtStruct>& SimulateUVPtStruct(int nbSeg,
- bool isXConst,
- double constValue) const;
+ bool isXConst = 0,
+ double constValue = 0) const;
/*!
* \brief Return edge and parameter on edge by normalized parameter
*/
#include "SMDS_VolumeOfNodes.hxx"
#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TColStd_MapOfInteger.hxx>
-
-#include <BRep_Tool.hxx>
-#include <Geom_Surface.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopoDS.hxx>
#include <gp_Pnt2d.hxx>
#include "utilities.h"
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// check nb of faces in the shape
+/* PAL16229
aStatus = SMESH_Hypothesis::HYP_BAD_GEOMETRY;
int nbFaces = 0;
for (TopExp_Explorer exp(aShape, TopAbs_FACE); exp.More(); exp.Next())
if ( ++nbFaces > 6 )
- return false;
-
+ break;
+ if ( nbFaces != 6 )
+ return false;
+*/
aStatus = SMESH_Hypothesis::HYP_OK;
return true;
}
//=============================================================================
bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
- const TopoDS_Shape & aShape) throw(SALOME_Exception)
+ const TopoDS_Shape & aShape)// throw(SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
+ // PAL14921. Enable catching std::bad_alloc and Standard_OutOfMemory outside
+ //Unexpect aCatch(SalomeException);
MESSAGE("StdMeshers_Hexa_3D::Compute");
SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
meshFaces.push_back(aSubMesh);
}
if (meshFaces.size() != 6)
- return error(COMPERR_BAD_SHAPE, TComm(meshFaces.size())<<" instead of 6 faces in block");
+ return error(COMPERR_BAD_SHAPE, TComm(meshFaces.size())<<" instead of 6 faces in a block");
// 0.2 - is each face meshed with Quadrangle_2D? (so, with a wire of 4 edges)
ASSERT(quadAlgo);
try {
aQuads[i] = quadAlgo->CheckAnd2Dcompute(aMesh, aFace, _quadraticMesh);
+ if(!aQuads[i]) {
+ return error( quadAlgo->GetComputeError());
+ }
}
catch(SALOME_Exception & S_ex) {
return ClearAndReturn( aQuads, error(COMPERR_SLM_EXCEPTION,TComm(S_ex.what()) <<
virtual bool Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape)
- throw (SALOME_Exception);
+ /*throw (SALOME_Exception)*/;
static TopoDS_Vertex OppositeVertex(const TopoDS_Vertex& aVertex,
const TopTools_IndexedMapOfShape& aQuads0Vertices,
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
+#include <Precision.hxx>
using namespace std;
:SMESH_Hypothesis(hypId, studyId, gen)
{
_length = 1.;
+ _precision = Precision::Confusion();
_name = "LocalLength";
_param_algo_dim = 1; // is used by SMESH_Regular_1D
}
void StdMeshers_LocalLength::SetLength(double length) throw(SALOME_Exception)
{
- double oldLength = _length;
- if (length <= 0)
- throw SALOME_Exception(LOCALIZED("length must be positive"));
- _length = length;
- if (oldLength != _length)
- NotifySubMeshesHypothesisModification();
+ double oldLength = _length;
+ if (length <= 0)
+ throw SALOME_Exception(LOCALIZED("length must be positive"));
+ _length = length;
+ const double precision = 1e-7;
+ if (fabs(oldLength - _length) > precision)
+ NotifySubMeshesHypothesisModification();
}
//=============================================================================
double StdMeshers_LocalLength::GetLength() const
{
- return _length;
+ return _length;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void StdMeshers_LocalLength::SetPrecision (double thePrecision) throw(SALOME_Exception)
+{
+ double oldPrecision = _precision;
+ if (_precision < 0)
+ throw SALOME_Exception(LOCALIZED("precision cannot be negative"));
+ _precision = thePrecision;
+ const double precision = 1e-8;
+ if (fabs(oldPrecision - _precision) > precision)
+ NotifySubMeshesHypothesisModification();
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+double StdMeshers_LocalLength::GetPrecision() const
+{
+ return _precision;
}
//=============================================================================
ostream & StdMeshers_LocalLength::SaveTo(ostream & save)
{
- save << this->_length;
+ save << this->_length << " " << this->_precision;
return save;
}
{
bool isOK = true;
double a;
+
isOK = (load >> a);
if (isOK)
this->_length = a;
else
load.clear(ios::badbit | load.rdstate());
+
+ isOK = (load >> a);
+ if (isOK)
+ this->_precision = a;
+ else
+ {
+ load.clear(ios::badbit | load.rdstate());
+ // old format, without precision
+ _precision = 0.;
+ }
+
return load;
}
if ( nbEdges )
_length /= nbEdges;
+ _precision = Precision::Confusion();
+
return nbEdges;
}
#include "SMESH_Hypothesis.hxx"
#include "Utils_SALOME_Exception.hxx"
-class STDMESHERS_EXPORT StdMeshers_LocalLength:public SMESH_Hypothesis
+class STDMESHERS_EXPORT StdMeshers_LocalLength: public SMESH_Hypothesis
{
public:
StdMeshers_LocalLength(int hypId, int studyId, SMESH_Gen * gen);
virtual ~ StdMeshers_LocalLength();
void SetLength(double length) throw(SALOME_Exception);
+ void SetPrecision(double precision) throw(SALOME_Exception);
double GetLength() const;
+ double GetPrecision() const;
virtual std::ostream & SaveTo(std::ostream & save);
virtual std::istream & LoadFrom(std::istream & load);
protected:
double _length;
+ double _precision;
};
#endif
#include "utilities.h"
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Edge.hxx>
-#include <Geom_Surface.hxx>
-#include <Geom2d_Curve.hxx>
-#include <gp_Pnt2d.hxx>
-#include <BRep_Tool.hxx>
#include <BRepTools.hxx>
+#include <BRep_Tool.hxx>
+#include <Geom2d_Curve.hxx>
+#include <Geom_Surface.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Face.hxx>
+#include <TopoDS_Iterator.hxx>
+#include <gp_Pnt2d.hxx>
using namespace std;
const bool ignoreMediumNodes = _quadraticMesh;
// get all edges of a face
- TopoDS_Vertex V1;
- list< TopoDS_Edge > edges;
- list< int > nbEdgesInWires;
- int nbWires = SMESH_Block::GetOrderedEdges (F, V1, edges, nbEdgesInWires);
-
- if (_hypLengthFromEdges) _edgeLength = 0;
-
- // split list of all edges into separate wires
- TWireVector wires ( nbWires );
- list< int >::iterator nbE = nbEdgesInWires.begin();
- list< TopoDS_Edge >::iterator from, to;
- from = to = edges.begin();
- for ( int iW = 0; iW < nbWires; ++iW )
+ TError problem;
+ TWireVector wires = StdMeshers_FaceSide::GetFaceWires( F, aMesh, ignoreMediumNodes, problem );
+ int nbWires = wires.size();
+ if ( problem && !problem->IsOK() ) return error( problem );
+ if ( nbWires == 0 ) return error( "Problem in StdMeshers_FaceSide::GetFaceWires()");
+ if ( wires[0]->NbSegments() < 3 ) // ex: a circle with 2 segments
+ return error(COMPERR_BAD_INPUT_MESH,
+ SMESH_Comment("Too few segments: ")<<wires[0]->NbSegments());
+
+ // compute average edge length
+ if (_hypLengthFromEdges)
{
- std::advance( to, *nbE++ );
- list< TopoDS_Edge > wireEdges( from, to );
- // assure that there is a node on the first vertex
- // as StdMeshers_FaceSide::GetUVPtStruct() requires
- while ( !VertexNode( TopExp::FirstVertex( wireEdges.front(), true),
- aMesh.GetMeshDS()))
+ _edgeLength = 0;
+ int nbSegments = 0;
+ for ( int iW = 0; iW < nbWires; ++iW )
{
- wireEdges.splice(wireEdges.end(), wireEdges,
- wireEdges.begin(), ++wireEdges.begin());
- if ( from->IsSame( wireEdges.front() ))
- return error(COMPERR_BAD_INPUT_MESH,"No nodes on vertices");
+ StdMeshers_FaceSidePtr wire = wires[ iW ];
+ _edgeLength += wire->Length();
+ nbSegments += wire->NbSegments();
}
- StdMeshers_FaceSide* wire = new StdMeshers_FaceSide( F, wireEdges, &aMesh,
- true, ignoreMediumNodes);
- wires[ iW ] = StdMeshers_FaceSidePtr( wire );
- if (_hypLengthFromEdges && wire->NbSegments() )
- _edgeLength += wire->Length() / wire->NbSegments();
- from = to;
+ if ( nbSegments )
+ _edgeLength /= nbSegments;
}
- if ( wires[0]->NbSegments() < 3 ) // ex: a circle with 2 segments
- return error(COMPERR_BAD_INPUT_MESH,
- SMESH_Comment("Too few segments")<<wires[0]->NbSegments());
if (_hypLengthFromEdges && _edgeLength < DBL_MIN )
_edgeLength = 100;
VWMap.Clear(); // wires have no common vertices
}
- const bool isXConst = false; // meaningles here
- const double constValue = 0; // meaningles here
-
int m = 0;
list< int > mOnVertex;
for ( int iW = 0; iW < wires.size(); ++iW )
{
- const vector<UVPtStruct>& uvPtVec = wires[ iW ]->GetUVPtStruct(isXConst,constValue);
+ const vector<UVPtStruct>& uvPtVec = wires[ iW ]->GetUVPtStruct();
if ( uvPtVec.size() != wires[ iW ]->NbPoints() ) {
return error(COMPERR_BAD_INPUT_MESH,SMESH_Comment("Unexpected nb of points on wire ")
<< iW << uvPtVec.size()<<" != "<<wires[ iW ]->NbPoints());
}
if ( m + uvPtVec.size()-1 > mefistoToDS.size() ) {
MESSAGE("Wrong mefistoToDS.size: "<<mefistoToDS.size()<<" < "<<m + uvPtVec.size()-1);
- return error(dfltErr(),"Internal error");
+ return error("Internal error");
}
vector<UVPtStruct>::const_iterator uvPt = uvPtVec.begin();
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
-#else
-#include "CASCatch.hxx"
#endif
using namespace std;
*/
//=============================================================================
-StdMeshers_NumberOfSegments::StdMeshers_NumberOfSegments(int hypId, int studyId,
- SMESH_Gen * gen)
+StdMeshers_NumberOfSegments::StdMeshers_NumberOfSegments(int hypId,
+ int studyId,
+ SMESH_Gen * gen)
: SMESH_Hypothesis(hypId, studyId, gen),
_numberOfSegments(1),
_distrType(DT_Regular),
*
*/
//=============================================================================
-const std::vector<double>& StdMeshers_NumberOfSegments::BuildDistributionExpr( const char* expr, int nbSeg, int conv )
-throw ( SALOME_Exception )
+const vector<double>&
+StdMeshers_NumberOfSegments::BuildDistributionExpr( const char* expr,int nbSeg,int conv )
+ throw ( SALOME_Exception )
{
if( !buildDistribution( TCollection_AsciiString( ( Standard_CString )expr ), conv, 0.0, 1.0, nbSeg, _distr, 1E-4 ) )
_distr.resize( 0 );
return _distr;
}
-const std::vector<double>& StdMeshers_NumberOfSegments::BuildDistributionTab( const std::vector<double>& tab,
- int nbSeg, int conv )
-throw ( SALOME_Exception )
+const vector<double>&
+StdMeshers_NumberOfSegments::BuildDistributionTab( const vector<double>& tab,
+ int nbSeg,
+ int conv )
+ throw ( SALOME_Exception )
{
if( !buildDistribution( tab, conv, 0.0, 1.0, nbSeg, _distr, 1E-4 ) )
_distr.resize( 0 );
void StdMeshers_NumberOfSegments::SetNumberOfSegments(int segmentsNumber)
throw(SALOME_Exception)
{
- int oldNumberOfSegments = _numberOfSegments;
- if (segmentsNumber <= 0)
- throw
- SALOME_Exception(LOCALIZED("number of segments must be positive"));
- _numberOfSegments = segmentsNumber;
-
- if (oldNumberOfSegments != _numberOfSegments)
- NotifySubMeshesHypothesisModification();
+ int oldNumberOfSegments = _numberOfSegments;
+ if (segmentsNumber <= 0)
+ throw SALOME_Exception(LOCALIZED("number of segments must be positive"));
+ _numberOfSegments = segmentsNumber;
+
+ if (oldNumberOfSegments != _numberOfSegments)
+ NotifySubMeshesHypothesisModification();
}
//=============================================================================
int StdMeshers_NumberOfSegments::GetNumberOfSegments() const
{
- return _numberOfSegments;
+ return _numberOfSegments;
}
//================================================================================
throw(SALOME_Exception)
{
if (_distrType != DT_Scale)
- throw SALOME_Exception(LOCALIZED("not a scale distribution"));
+ _distrType = DT_Scale;
+ //throw SALOME_Exception(LOCALIZED("not a scale distribution"));
if (scaleFactor < PRECISION)
throw SALOME_Exception(LOCALIZED("scale factor must be positive"));
//if (fabs(scaleFactor - 1.0) < PRECISION)
*/
//================================================================================
-void StdMeshers_NumberOfSegments::SetTableFunction(const std::vector<double>& table)
+void StdMeshers_NumberOfSegments::SetTableFunction(const vector<double>& table)
throw(SALOME_Exception)
{
if (_distrType != DT_TabFunc)
- throw SALOME_Exception(LOCALIZED("not a table function distribution"));
+ _distrType = DT_TabFunc;
+ //throw SALOME_Exception(LOCALIZED("not a table function distribution"));
if ( (table.size() % 2) != 0 )
throw SALOME_Exception(LOCALIZED("odd size of vector of table function"));
double val = table[i*2+1];
if( _convMode==0 )
{
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
val = pow( 10.0, val );
-#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;
*/
//================================================================================
-const std::vector<double>& StdMeshers_NumberOfSegments::GetTableFunction() const
+const vector<double>& StdMeshers_NumberOfSegments::GetTableFunction() const
throw(SALOME_Exception)
{
if (_distrType != DT_TabFunc)
{
bool parsed_ok = true;
Handle( ExprIntrp_GenExp ) myExpr;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( str.ToCString() );
-#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
-#else
- } CASCatch_CATCH(Standard_Failure) {
-#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}
throw(SALOME_Exception)
{
if (_distrType != DT_ExprFunc)
- throw SALOME_Exception(LOCALIZED("not an expression function distribution"));
+ _distrType = DT_ExprFunc;
+ //throw SALOME_Exception(LOCALIZED("not an expression function distribution"));
// remove white spaces
TCollection_AsciiString str((Standard_CString)expr);
return;
}
- std::string func = expr;
+ string func = expr;
if( _func != func )
{
_func = func;
void StdMeshers_NumberOfSegments::SetConversionMode( int conv )
throw(SALOME_Exception)
{
- if (_distrType != DT_TabFunc && _distrType != DT_ExprFunc)
- throw SALOME_Exception(LOCALIZED("not a functional distribution"));
+// if (_distrType != DT_TabFunc && _distrType != DT_ExprFunc)
+// throw SALOME_Exception(LOCALIZED("not a functional distribution"));
if( conv != _convMode )
{
int StdMeshers_NumberOfSegments::ConversionMode() const
throw(SALOME_Exception)
{
- if (_distrType != DT_TabFunc && _distrType != DT_ExprFunc)
- throw SALOME_Exception(LOCALIZED("not a functional distribution"));
+// if (_distrType != DT_TabFunc && _distrType != DT_ExprFunc)
+// throw SALOME_Exception(LOCALIZED("not a functional distribution"));
return _convMode;
}
int nbEdges = 0;
TopTools_IndexedMapOfShape edgeMap;
TopExp::MapShapes( theShape, TopAbs_EDGE, edgeMap );
+ SMESHDS_Mesh* aMeshDS = const_cast< SMESH_Mesh* >( theMesh )->GetMeshDS();
for ( int i = 1; i <= edgeMap.Extent(); ++i )
{
// get current segment length
- SMESHDS_Mesh* aMeshDS = const_cast< SMESH_Mesh* >( theMesh )->GetMeshDS();
SMESHDS_SubMesh * eSubMesh = aMeshDS->MeshElements( edgeMap( i ));
if ( eSubMesh && eSubMesh->NbElements())
_numberOfSegments += eSubMesh->NbElements();
#include "SMESH_subMeshEventListener.hxx"
#include "SMESH_Comment.hxx"
-#include <BRepTools.hxx>
-#include <BRepTools_WireExplorer.hxx>
#include <BRep_Tool.hxx>
-#include <TopAbs_ShapeEnum.hxx>
#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
-#include <TopTools_MapOfShape.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Shell.hxx>
#include <TopoDS_Vertex.hxx>
#include <gp_Pnt.hxx>
-#include <BRepTools.hxx>
-#include <BRepTools_WireExplorer.hxx>
-#include <TopTools_MapOfShape.hxx>
#include <stdio.h>
#include <algorithm>
#include "utilities.h"
-#include <BRepAdaptor_Curve.hxx>
-#include <BRepAdaptor_Curve2d.hxx>
-#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <Geom2dAdaptor_Curve.hxx>
#include <Geom2d_Line.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopoDS.hxx>
using namespace std;
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
#define gpXYZ(n) gp_XYZ(n->X(),n->Y(),n->Z())
#define SHOWYXZ(msg, xyz) // {\
// gp_Pnt p (xyz); \
const SMDS_MeshNode* & node1,
const SMDS_MeshNode* & node2)
{
- if ( param == 1.0 || column->size() == 1) {
+ if ( param >= 1.0 || column->size() == 1) {
node1 = node2 = column->back();
return 0;
}
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// Check shape geometry
-
+/* PAL16229
aStatus = SMESH_Hypothesis::HYP_BAD_GEOMETRY;
// find not quadrangle faces
if ( nbFace != nbEdge + 2 )
RETURN_BAD_RESULT("Bad nb of faces: " << nbFace << " but must be " << nbEdge + 2);
}
-
+*/
// no hypothesis
aStatus = SMESH_Hypothesis::HYP_OK;
return true;
TNodeColumn& column = bot_column->second;
// bottom node parameters and coords
- gp_XYZ botParams = tBotNode.GetParams();
myShapeXYZ[ ID_BOT_FACE ] = tBotNode.GetCoords();
+ gp_XYZ botParams = tBotNode.GetParams();
// compute top node parameters
- gp_XYZ topParams;
myShapeXYZ[ ID_TOP_FACE ] = gpXYZ( column.back() );
- gp_Pnt topCoords = myShapeXYZ[ ID_TOP_FACE ];
- if ( !myBlock.ComputeParameters( topCoords, topParams, ID_TOP_FACE ))
- return error(dfltErr(),TCom("Can't compute normalized parameters ")
- << "for node " << column.back()->GetID()
- << " on the face #"<< column.back()->GetPosition()->GetShapeId() );
+ gp_XYZ topParams = botParams;
+ topParams.SetZ( 1 );
+ if ( column.size() > 2 ) {
+ gp_Pnt topCoords = myShapeXYZ[ ID_TOP_FACE ];
+ if ( !myBlock.ComputeParameters( topCoords, topParams, ID_TOP_FACE, topParams ))
+ return error(TCom("Can't compute normalized parameters ")
+ << "for node " << column.back()->GetID()
+ << " on the face #"<< column.back()->GetPosition()->GetShapeId() );
+ }
// vertical loop
TNodeColumn::iterator columnNodes = column.begin();
// compute coords for a new node
gp_XYZ coords;
if ( !SMESH_Block::ShellPoint( params, myShapeXYZ, coords ))
- return error(dfltErr(),"Can't compute coordinates by normalized parameters");
+ return error("Can't compute coordinates by normalized parameters");
+
+ SHOWYXZ("TOPFacePoint ",myShapeXYZ[ ID_TOP_FACE]);
+ SHOWYXZ("BOT Node "<< tBotNode.myNode->GetID(),gpXYZ(tBotNode.myNode));
+ SHOWYXZ("ShellPoint ",coords);
// create a node
node = meshDS->AddNode( coords.X(), coords.Y(), coords.Z() );
if ( n->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE ) {
bot_column = myBotToColumnMap.find( n );
if ( bot_column == myBotToColumnMap.end() )
- return error(dfltErr(),TCom("No nodes found above node ") << n->GetID() );
+ return error(TCom("No nodes found above node ") << n->GetID() );
columns[ i ] = & bot_column->second;
}
else {
columns[ i ] = myBlock.GetNodeColumn( n );
if ( !columns[ i ] )
- return error(dfltErr(),TCom("No side nodes found above node ") << n->GetID() );
+ return error(TCom("No side nodes found above node ") << n->GetID() );
}
}
// create prisms
int shapeID = helper->GetSubShapeID();
int nbNodes = columns.size();
+ int nbZ = columns[0]->size();
+ if ( nbZ < 2 ) return;
+
+ // find out orientation
+ bool isForward = true;
+ SMDS_VolumeTool vTool;
+ int z = 1;
+ switch ( nbNodes ) {
+ case 3: {
+ const SMDS_MeshNode* botNodes[3] = { (*columns[0])[z-1],
+ (*columns[1])[z-1],
+ (*columns[2])[z-1] };
+ const SMDS_MeshNode* topNodes[3] = { (*columns[0])[z],
+ (*columns[1])[z],
+ (*columns[2])[z] };
+ SMDS_VolumeOfNodes tmpVol ( botNodes[0], botNodes[1], botNodes[2],
+ topNodes[0], topNodes[1], topNodes[2]);
+ vTool.Set( &tmpVol );
+ isForward = vTool.IsForward();
+ break;
+ }
+ case 4: {
+ const SMDS_MeshNode* botNodes[4] = { (*columns[0])[z-1], (*columns[1])[z-1],
+ (*columns[2])[z-1], (*columns[3])[z-1] };
+ const SMDS_MeshNode* topNodes[4] = { (*columns[0])[z], (*columns[1])[z],
+ (*columns[2])[z], (*columns[3])[z] };
+ SMDS_VolumeOfNodes tmpVol ( botNodes[0], botNodes[1], botNodes[2], botNodes[3],
+ topNodes[0], topNodes[1], topNodes[2], topNodes[3]);
+ vTool.Set( &tmpVol );
+ isForward = vTool.IsForward();
+ break;
+ }
+ }
// vertical loop on columns
- for ( int z = 1; z < columns[0]->size(); ++z)
+ for ( z = 1; z < nbZ; ++z )
{
SMDS_MeshElement* vol = 0;
- SMDS_VolumeTool vTool;
switch ( nbNodes ) {
case 3: {
const SMDS_MeshNode* topNodes[3] = { (*columns[0])[z],
(*columns[1])[z],
(*columns[2])[z] };
- // assure good orientation
- SMDS_VolumeOfNodes tmpVol ( botNodes[0], botNodes[1], botNodes[2],
- topNodes[0], topNodes[1], topNodes[2]);
- vTool.Set( &tmpVol );
- if ( vTool.IsForward() )
+ if ( isForward )
vol = helper->AddVolume( botNodes[0], botNodes[1], botNodes[2],
topNodes[0], topNodes[1], topNodes[2]);
else
(*columns[2])[z-1], (*columns[3])[z-1] };
const SMDS_MeshNode* topNodes[4] = { (*columns[0])[z], (*columns[1])[z],
(*columns[2])[z], (*columns[3])[z] };
- // assure good orientation
- SMDS_VolumeOfNodes tmpVol ( botNodes[0], botNodes[1], botNodes[2], botNodes[3],
- topNodes[0], topNodes[1], topNodes[2], topNodes[3]);
- vTool.Set( &tmpVol );
- if ( vTool.IsForward() )
+ if ( isForward )
vol = helper->AddVolume( botNodes[0], botNodes[1], botNodes[2], botNodes[3],
topNodes[0], topNodes[1], topNodes[2], topNodes[3]);
else
SMESHDS_SubMesh * topSMDS = topSM->GetSubMeshDS();
if ( !botSMDS || botSMDS->NbElements() == 0 )
- return error(dfltErr(),TCom("No elememts on face #") << botSM->GetId());
+ return error(TCom("No elememts on face #") << botSM->GetId());
bool needProject = false;
if ( !topSMDS ||
botSMDS->NbNodes() != topSMDS->NbNodes())
{
if ( myBlock.HasNotQuadElemOnTop() )
- return error(dfltErr(),TCom("Mesh on faces #") << botSM->GetId()
+ return error(TCom("Mesh on faces #") << botSM->GetId()
<<" and #"<< topSM->GetId() << " seems different" );
needProject = true;
}
if ( 0/*needProject && !myProjectTriangles*/ )
- return error(dfltErr(),TCom("Mesh on faces #") << botSM->GetId()
+ return error(TCom("Mesh on faces #") << botSM->GetId()
<<" and #"<< topSM->GetId() << " seems different" );
///RETURN_BAD_RESULT("Need to project but not allowed");
if ( !TAssocTool::FindSubShapeAssociation( botFace, myBlock.Mesh(),
topFace, myBlock.Mesh(),
shape2ShapeMap) )
- return error(dfltErr(),TCom("Topology of faces #") << botSM->GetId()
+ return error(TCom("Topology of faces #") << botSM->GetId()
<<" and #"<< topSM->GetId() << " seems different" );
// Find matching nodes of top and bottom faces
if ( ! TAssocTool::FindMatchingNodesOnFaces( botFace, myBlock.Mesh(),
topFace, myBlock.Mesh(),
shape2ShapeMap, n2nMap ))
- return error(dfltErr(),TCom("Mesh on faces #") << botSM->GetId()
+ return error(TCom("Mesh on faces #") << botSM->GetId()
<<" and #"<< topSM->GetId() << " seems different" );
// Fill myBotToColumnMap
int zSize = myBlock.VerticalSize();
+ TNode prevTNode;
TNodeNodeMap::iterator bN_tN = n2nMap.begin();
for ( ; bN_tN != n2nMap.end(); ++bN_tN )
{
continue; // wall columns are contained in myBlock
// compute bottom node params
TNode bN( botNode );
- if ( !myBlock.ComputeParameters( bN.GetCoords(), bN.ChangeParams(), ID_BOT_FACE ))
- return error(dfltErr(),TCom("Can't compute normalized parameters ")
- << "for node " << botNode->GetID() << " on the face #"<< botSM->GetId() );
+ if ( zSize > 2 ) {
+ gp_XYZ paramHint(-1,-1,-1);
+ if ( prevTNode.IsNeighbor( bN ))
+ paramHint = prevTNode.GetParams();
+ if ( !myBlock.ComputeParameters( bN.GetCoords(), bN.ChangeParams(),
+ ID_BOT_FACE, paramHint ))
+ return error(TCom("Can't compute normalized parameters for node ")
+ << botNode->GetID() << " on the face #"<< botSM->GetId() );
+ prevTNode = bN;
+ }
// create node column
TNode2ColumnMap::iterator bN_col =
myBotToColumnMap.insert( make_pair ( bN, TNodeColumn() )).first;
// Fill myBotToColumnMap
int zSize = myBlock.VerticalSize();
+ TNode prevTNode;
SMDS_NodeIteratorPtr nIt = botSMDS->GetNodes();
while ( nIt->more() )
{
continue; // strange
// compute bottom node params
TNode bN( botNode );
- if ( !myBlock.ComputeParameters( bN.GetCoords(), bN.ChangeParams(), ID_BOT_FACE ))
- return error(dfltErr(),TCom("Can't compute normalized parameters ")
- << "for node " << botNode->GetID() << " on the face #"<< botSM->GetId() );
+ gp_XYZ paramHint(-1,-1,-1);
+ if ( prevTNode.IsNeighbor( bN ))
+ paramHint = prevTNode.GetParams();
+ if ( !myBlock.ComputeParameters( bN.GetCoords(), bN.ChangeParams(),
+ ID_BOT_FACE, paramHint ))
+ return error(TCom("Can't compute normalized parameters for node ")
+ << botNode->GetID() << " on the face #"<< botSM->GetId() );
+ prevTNode = bN;
// compute top node coords
gp_XYZ topXYZ; gp_XY topUV;
if ( !myBlock.FacePoint( ID_TOP_FACE, bN.GetParams(), topXYZ ) ||
!myBlock.FaceUV ( ID_TOP_FACE, bN.GetParams(), topUV ))
- return error(dfltErr(),TCom("Can't compute coordinates ")
- << "by normalized parameters on the face #"<< topSM->GetId() );
+ return error(TCom("Can't compute coordinates "
+ "by normalized parameters on the face #")<< topSM->GetId() );
SMDS_MeshNode * topNode = meshDS->AddNode( topXYZ.X(),topXYZ.Y(),topXYZ.Z() );
meshDS->SetNodeOnFace( topNode, topFaceID, topUV.X(), topUV.Y() );
// create node column
if ( n->GetPosition()->GetTypeOfPosition() == SMDS_TOP_FACE ) {
TNode2ColumnMap::iterator bot_column = myBotToColumnMap.find( n );
if ( bot_column == myBotToColumnMap.end() )
- return error(dfltErr(),TCom("No nodes found above node ") << n->GetID() );
+ return error(TCom("No nodes found above node ") << n->GetID() );
nodes[ i ] = bot_column->second.back();
}
else {
const TNodeColumn* column = myBlock.GetNodeColumn( n );
if ( !column )
- return error(dfltErr(),TCom("No side nodes found above node ") << n->GetID() );
+ return error(TCom("No side nodes found above node ") << n->GetID() );
nodes[ i ] = column->back();
}
}
return true;
}
+//================================================================================
+/*!
+ * \brief Return true if this node and other one belong to one face
+ */
+//================================================================================
+
+bool TNode::IsNeighbor( const TNode& other ) const
+{
+ if ( !other.myNode || !myNode ) return false;
+
+ SMDS_ElemIteratorPtr fIt = other.myNode->GetInverseElementIterator(SMDSAbs_Face);
+ while ( fIt->more() )
+ if ( fIt->next()->GetNodeIndex( myNode ) >= 0 )
+ return true;
+ return false;
+}
+
//================================================================================
/*!
* \brief Constructor. Initialization is needed
// detect bad cases
if ( nbNotQuad > 0 && nbNotQuad != 2 )
return error(COMPERR_BAD_SHAPE,
- TCom("More than 2 not quadrilateral faces")
+ TCom("More than 2 not quadrilateral faces: ")
<<nbNotQuad);
if ( nbNotQuadMeshed > 2 )
return error(COMPERR_BAD_INPUT_MESH,
- TCom("More then 2 faces meshed with not quadrangle elements")
+ TCom("More than 2 faces with not quadrangle elements: ")
<<nbNotQuadMeshed);
// get found submeshes
SMESH_Block::TFace& tFace = myFace[ fID - ID_FirstF ];
tFace.Set( fID, sideFace->Surface(), pcurves, isForward );
- SHOWYXZ( endl<<"F "<< iF << " id " << fID << " FRW " << sideFace->IsForward(), );
+ SHOWYXZ( endl<<"F "<< iF << " id " << fID << " FRW " << sideFace->IsForward(), sideFace->Value(0,0));
// edges 3D geometry
vector< int > edgeIdVec;
SMESH_Block::GetFaceEdgesIDs( fID, edgeIdVec );
gp_XYZ GetCoords() const { return gp_XYZ( myNode->X(), myNode->Y(), myNode->Z() ); }
gp_XYZ GetParams() const { return myParams; }
gp_XYZ& ChangeParams() { return myParams; }
+ bool HasParams() const { return myParams.X() >= 0.0; }
SMDS_TypeOfPosition GetPositionType() const
{ return myNode ? myNode->GetPosition()->GetTypeOfPosition() : SMDS_TOP_UNSPEC; }
+ bool IsNeighbor( const TNode& other ) const;
- TNode(const SMDS_MeshNode* node = 0): myNode(node) {}
+ TNode(const SMDS_MeshNode* node = 0): myNode(node), myParams(-1,-1,-1) {}
bool operator < (const TNode& other) const { return myNode < other.myNode; }
};
if ( edge.IsNull() )
throw SALOME_Exception(LOCALIZED("Null edge is not allowed"));
- if ( edge.ShapeType() != TopAbs_EDGE )
+ if ( edge.ShapeType() != TopAbs_EDGE && edge.ShapeType() != TopAbs_COMPOUND )
throw SALOME_Exception(LOCALIZED("Wrong shape type"));
if ( !_sourceEdge.IsSame( edge ) )
{
- _sourceEdge = TopoDS::Edge( edge );
+ _sourceEdge = edge;
NotifySubMeshesHypothesisModification();
}
const TopoDS_Shape& s3,
SMESH_Mesh* mesh)
{
- _sourceEdge = TopoDS::Edge( s1 );
+ _sourceEdge = s1;
_sourceVertex = TopoDS::Vertex( s2 );
_targetVertex = TopoDS::Vertex( s3 );
_sourceMesh = mesh;
#include "SMESH_Hypothesis.hxx"
#include "Utils_SALOME_Exception.hxx"
-#include <TopoDS_Edge.hxx>
#include <TopoDS_Vertex.hxx>
class SMESH_Gen;
throw ( SALOME_Exception );
/*!
- * Returns the source edge
+ * Returns the source edge or a group containing edges
*/
- TopoDS_Edge GetSourceEdge() const { return _sourceEdge; }
+ TopoDS_Shape GetSourceEdge() const { return _sourceEdge; }
+
+ /*!
+ * Returns true the source edge is a group of edges
+ */
+ bool IsCompoundSource() const
+ { return !_sourceEdge.IsNull() && _sourceEdge.ShapeType() == TopAbs_COMPOUND; }
/*!
* Sets source <mesh> to take a mesh pattern from
protected:
- TopoDS_Edge _sourceEdge;
+ TopoDS_Shape _sourceEdge;
SMESH_Mesh* _sourceMesh;
TopoDS_Vertex _sourceVertex;
TopoDS_Vertex _targetVertex;
if ( Face.IsNull() )
throw SALOME_Exception(LOCALIZED("Null Face is not allowed"));
- if ( Face.ShapeType() != TopAbs_FACE )
+ if ( Face.ShapeType() != TopAbs_FACE && Face.ShapeType() != TopAbs_COMPOUND )
throw SALOME_Exception(LOCALIZED("Wrong shape type"));
if ( !_sourceFace.IsSame( Face ) )
{
- _sourceFace = TopoDS::Face( Face );
+ _sourceFace = Face;
NotifySubMeshesHypothesisModification();
}
*/
//=============================================================================
-TopoDS_Face StdMeshers_ProjectionSource2D::GetSourceFace() const
+TopoDS_Shape StdMeshers_ProjectionSource2D::GetSourceFace() const
{
return _sourceFace;
}
const TopoDS_Shape& s5,
SMESH_Mesh* mesh)
{
- _sourceFace = TopoDS::Face( s1 );
+ _sourceFace = s1;
_sourceVertex1 = TopoDS::Vertex( s2 );
_sourceVertex2 = TopoDS::Vertex( s3 );
_targetVertex1 = TopoDS::Vertex( s4 );
#include "SMESH_Hypothesis.hxx"
#include "Utils_SALOME_Exception.hxx"
-#include <TopoDS_Face.hxx>
#include <TopoDS_Vertex.hxx>
class SMESH_Gen;
throw ( SALOME_Exception );
/*!
- * Returns the source face
+ * Returns the source face or a group containing faces
*/
- TopoDS_Face GetSourceFace() const;
+ TopoDS_Shape GetSourceFace() const;
+
+ /*!
+ * Returns true the source face is a group of faces
+ */
+ bool IsCompoundSource() const
+ { return !_sourceFace.IsNull() && _sourceFace.ShapeType() == TopAbs_COMPOUND; }
/*!
* Sets source <mesh> to take a mesh pattern from
protected:
- TopoDS_Face _sourceFace;
+ TopoDS_Shape _sourceFace;
SMESH_Mesh* _sourceMesh;
TopoDS_Vertex _sourceVertex1;
TopoDS_Vertex _sourceVertex2;
#include "utilities.h"
-#include <BRepAdaptor_Curve.hxx>
#include <BRepTools.hxx>
#include <BRepTools_WireExplorer.hxx>
+#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <Bnd_Box.hxx>
#include <TopAbs.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_Array1OfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_MapOfShape.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Compound.hxx>
#include <TopoDS_Shape.hxx>
-#include <gp_Ax3.hxx>
#include <gp_Pnt.hxx>
-#include <gp_Trsf.hxx>
#include <gp_Vec.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeShape.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
#define SHOW_VERTEX(v,msg) // { \
// if ( v.IsNull() ) cout << msg << " NULL SHAPE" << endl; \
// else if (v.ShapeType() == TopAbs_VERTEX) {\
* \param edges2 - matching edges of another face
* \param theMesh1 - mesh 1
* \param theMesh2 - mesh 2
+ * \retval bool - true if association was fixed
*/
//================================================================================
- void FixAssocByPropagation( const int nbEdges,
+ bool FixAssocByPropagation( const int nbEdges,
list< TopoDS_Edge > & edges1,
list< TopoDS_Edge > & edges2,
SMESH_Mesh* theMesh1,
{
list< TopoDS_Edge >::iterator eIt2 = ++edges2.begin(); // 2nd edge of the 2nd face
TopoDS_Edge edge2 =
- StdMeshers_ProjectionUtils::GetPropagationEdge( theMesh1, *eIt2, edges1.front() );
- if ( !edge2.IsNull() ) // propagation found for the second edge
+ StdMeshers_ProjectionUtils::GetPropagationEdge( theMesh1, *eIt2, edges1.front() ).second;
+ if ( !edge2.IsNull() ) { // propagation found for the second edge
Reverse( edges2, nbEdges );
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //================================================================================
+ /*!
+ * \brief Look for a group containing a target shape and similar to a source group
+ * \param tgtShape - target edge or face
+ * \param tgtMesh1 - target mesh
+ * \param srcGroup - source group
+ * \retval TopoDS_Shape - found target group
+ */
+ //================================================================================
+
+ TopoDS_Shape FindGroupContaining(const TopoDS_Shape& tgtShape,
+ const SMESH_Mesh* tgtMesh1,
+ const TopoDS_Shape& srcGroup)
+ {
+ list<SMESH_subMesh*> subMeshes = tgtMesh1->GetGroupSubMeshesContaining(tgtShape);
+ list<SMESH_subMesh*>::iterator sm = subMeshes.begin();
+ int type, last = TopAbs_SHAPE;
+ StdMeshers_ProjectionUtils util;
+ for ( ; sm != subMeshes.end(); ++sm ) {
+ const TopoDS_Shape & group = (*sm)->GetSubShape();
+ // check if group is similar to srcGroup
+ for ( type = srcGroup.ShapeType(); type < last; ++type)
+ if ( util.Count( srcGroup, (TopAbs_ShapeEnum)type, 0) !=
+ util.Count( group, (TopAbs_ShapeEnum)type, 0))
+ break;
+ if ( type == last )
+ return group;
}
+ return TopoDS_Shape();
}
}
SMESH_Mesh* theMesh2,
TShapeShapeMap & theMap)
{
- if ( theShape1.ShapeType() != theShape2.ShapeType() )
- RETURN_BAD_RESULT("Different shape types");
+ if ( theShape1.ShapeType() != theShape2.ShapeType() ) {
+ // is it the case of a group member -> another group? (PAL16202, 16203)
+ TopoDS_Shape group1, group2;
+ if ( theShape1.ShapeType() == TopAbs_COMPOUND ) {
+ group1 = theShape1;
+ group2 = FindGroupContaining( theShape2, theMesh2, group1 );
+ }
+ else if ( theShape2.ShapeType() == TopAbs_COMPOUND ) {
+ group2 = theShape2;
+ group1 = FindGroupContaining( theShape1, theMesh1, group2 );
+ }
+ if ( group1.IsNull() || group2.IsNull() )
+ RETURN_BAD_RESULT("Different shape types");
+ // Associate compounds
+ return FindSubShapeAssociation(group1, theMesh1, group2, theMesh2, theMap );
+ }
bool bidirect = ( !theShape1.IsSame( theShape2 ));
- if ( !theMap.IsEmpty())
+ if ( !theMap.IsEmpty() )
{
+ //======================================================================
+ // HAS initial vertex association
+ //======================================================================
switch ( theShape1.ShapeType() ) {
-
- case TopAbs_EDGE: {
+ // ----------------------------------------------------------------------
+ case TopAbs_EDGE: { // TopAbs_EDGE
// ----------------------------------------------------------------------
if ( theMap.Extent() != 2 )
RETURN_BAD_RESULT("Wrong map extent " << theMap.Extent() );
if ( theMap.IsBound( VV1[ i1 ] )) i1 = 1;
if ( theMap.IsBound( VV2[ i2 ] )) i2 = 1;
InsertAssociation( VV1[ i1 ], VV2[ i2 ], theMap, bidirect);
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true;
}
-
- case TopAbs_FACE: {
+ // ----------------------------------------------------------------------
+ case TopAbs_FACE: { // TopAbs_FACE
// ----------------------------------------------------------------------
TopoDS_Face face1 = TopoDS::Face( theShape1 );
TopoDS_Face face2 = TopoDS::Face( theShape2 );
VV2[0] = TopExp::FirstVertex( *eIt2, true );
InsertAssociation( VV1[0], VV2[0], theMap, bidirect);
}
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true;
}
-
- case TopAbs_SHELL:
+ // ----------------------------------------------------------------------
+ case TopAbs_SHELL: // TopAbs_SHELL, TopAbs_SOLID
case TopAbs_SOLID: {
// ----------------------------------------------------------------------
TopoDS_Vertex VV1[2], VV2[2];
if ( edge2.IsNull() )
RETURN_BAD_RESULT("GetEdgeByVertices() failed");
- // get a face sharing edge1
- TopoDS_Shape F1, F2, FF2[2];
- TopTools_ListIteratorOfListOfShape ancestIt = theMesh1->GetAncestors( edge1 );
- for ( ; F1.IsNull() && ancestIt.More(); ancestIt.Next() )
- if ( ancestIt.Value().ShapeType() == TopAbs_FACE )
- F1 = ancestIt.Value().Oriented( TopAbs_FORWARD );
+ // build map of edge to faces if shapes are not subshapes of main ones
+ bool isSubOfMain = false;
+ if ( SMESHDS_SubMesh * sm = theMesh1->GetMeshDS()->MeshElements( theShape1 ))
+ isSubOfMain = !sm->IsComplexSubmesh();
+ else
+ isSubOfMain = theMesh1->GetMeshDS()->ShapeToIndex( theShape1 );
+ TAncestorMap e2f1, e2f2;
+ const TAncestorMap& edgeToFace1 = isSubOfMain ? theMesh1->GetAncestorMap() : e2f1;
+ const TAncestorMap& edgeToFace2 = isSubOfMain ? theMesh2->GetAncestorMap() : e2f2;
+ if (!isSubOfMain) {
+ TopExp::MapShapesAndAncestors( theShape1, TopAbs_EDGE, TopAbs_FACE, e2f1 );
+ TopExp::MapShapesAndAncestors( theShape2, TopAbs_EDGE, TopAbs_FACE, e2f2 );
+ if ( !edgeToFace1.Contains( edge1 ))
+ RETURN_BAD_RESULT("edge1 does not belong to theShape1");
+ if ( !edgeToFace2.Contains( edge2 ))
+ RETURN_BAD_RESULT("edge2 does not belong to theShape2");
+ }
+ //
+ // Look for 2 corresponing faces:
+ //
+ TopoDS_Shape F1, F2;
+
+ // get a face sharing edge1 (F1)
+ TopoDS_Shape FF2[2];
+ TopTools_ListIteratorOfListOfShape ancestIt1( edgeToFace1.FindFromKey( edge1 ));
+ for ( ; F1.IsNull() && ancestIt1.More(); ancestIt1.Next() )
+ if ( ancestIt1.Value().ShapeType() == TopAbs_FACE )
+ F1 = ancestIt1.Value().Oriented( TopAbs_FORWARD );
if ( F1.IsNull() )
RETURN_BAD_RESULT(" Face1 not found");
- // get 2 faces sharing edge2
- ancestIt = theMesh2->GetAncestors( edge2 );
- for ( int i = 0; FF2[1].IsNull() && ancestIt.More(); ancestIt.Next() )
- if ( ancestIt.Value().ShapeType() == TopAbs_FACE )
- FF2[ i++ ] = ancestIt.Value().Oriented( TopAbs_FORWARD );
- if ( FF2[1].IsNull() )
- RETURN_BAD_RESULT("2 faces not found");
+ // get 2 faces sharing edge2 (one of them is F2)
+ TopTools_ListIteratorOfListOfShape ancestIt2( edgeToFace2.FindFromKey( edge2 ));
+ for ( int i = 0; FF2[1].IsNull() && ancestIt2.More(); ancestIt2.Next() )
+ if ( ancestIt2.Value().ShapeType() == TopAbs_FACE )
+ FF2[ i++ ] = ancestIt2.Value().Oriented( TopAbs_FORWARD );
// get oriented edge1 and edge2 from F1 and FF2[0]
for ( exp.Init( F1, TopAbs_EDGE ); exp.More(); exp.Next() )
edge1 = TopoDS::Edge( exp.Current() );
break;
}
-
for ( exp.Init( FF2[ 0 ], TopAbs_EDGE ); exp.More(); exp.Next() )
if ( edge2.IsSame( exp.Current() )) {
edge2 = TopoDS::Edge( exp.Current() );
// compare first vertices of edge1 and edge2
TopExp::Vertices( edge1, VV1[0], VV1[1], true );
TopExp::Vertices( edge2, VV2[0], VV2[1], true );
- F2 = FF2[ 0 ];
+ F2 = FF2[ 0 ]; // (F2 !)
if ( !VV1[ 0 ].IsSame( theMap( VV2[ 0 ]))) {
- F2 = FF2[ 1 ];
edge2.Reverse();
+ if ( FF2[ 1 ].IsNull() )
+ F2.Reverse();
+ else
+ F2 = FF2[ 1 ];
}
- TopTools_MapOfShape boundEdges;
+ TopTools_MapOfShape boundEdges;
// association of face subshapes and neighbour faces
list< pair < TopoDS_Face, TopoDS_Edge > > FE1, FE2;
list< TopoDS_Edge > edges1, edges2;
int nbE = FindFaceAssociation( face1, VV1, face2, VV2, edges1, edges2 );
if ( !nbE ) RETURN_BAD_RESULT("FindFaceAssociation() failed");
- FixAssocByPropagation( nbE, edges1, edges2, theMesh1, theMesh2 );
-
InsertAssociation( face1, face2, theMap, bidirect); // assoc faces
+ MESSAGE("Assoc FACE " << theMesh1->GetMeshDS()->ShapeToIndex( face1 )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( face2 ));
+ if ( nbE == 2 && (edge1.IsSame( edges1.front())) != (edge2.IsSame( edges2.front())))
+ {
+ Reverse( edges2, nbE );
+ }
list< TopoDS_Edge >::iterator eIt1 = edges1.begin();
list< TopoDS_Edge >::iterator eIt2 = edges2.begin();
for ( ; eIt1 != edges1.end(); ++eIt1, ++eIt2 )
{
if ( !boundEdges.Add( *eIt1 )) continue; // already associated
InsertAssociation( *eIt1, *eIt2, theMap, bidirect); // assoc edges
+ MESSAGE("Assoc edge " << theMesh1->GetMeshDS()->ShapeToIndex( *eIt1 )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( *eIt2 ));
VV1[0] = TopExp::FirstVertex( *eIt1, true );
VV2[0] = TopExp::FirstVertex( *eIt2, true );
InsertAssociation( VV1[0], VV2[0], theMap, bidirect); // assoc vertices
+ MESSAGE("Assoc vertex " << theMesh1->GetMeshDS()->ShapeToIndex( VV1[0] )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( VV2[0] ));
// add adjacent faces to process
- TopoDS_Face nextFace1 = GetNextFace( theMesh1, *eIt1, face1 );
- TopoDS_Face nextFace2 = GetNextFace( theMesh2, *eIt2, face2 );
+ TopoDS_Face nextFace1 = GetNextFace( edgeToFace1, *eIt1, face1 );
+ TopoDS_Face nextFace2 = GetNextFace( edgeToFace2, *eIt2, face2 );
if ( !nextFace1.IsNull() && !nextFace2.IsNull() ) {
FE1.push_back( make_pair( nextFace1, *eIt1 ));
FE2.push_back( make_pair( nextFace2, *eIt2 ));
}
}
}
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
+ return true;
+ }
+ // ----------------------------------------------------------------------
+ case TopAbs_COMPOUND: { // GROUP
+ // ----------------------------------------------------------------------
+ // Maybe groups contain only one member
+ TopoDS_Iterator it1( theShape1 ), it2( theShape2 );
+ TopAbs_ShapeEnum memberType = it1.Value().ShapeType();
+ int nbMembers = Count( theShape1, memberType, true );
+ if ( nbMembers == 0 ) return true;
+ if ( nbMembers == 1 ) {
+ return FindSubShapeAssociation( it1.Value(), theMesh1, it2.Value(), theMesh2, theMap );
+ }
+ // Try to make shells of faces
+ //
+ BRep_Builder builder;
+ TopoDS_Shell shell1, shell2;
+ builder.MakeShell(shell1); builder.MakeShell(shell2);
+ if ( memberType == TopAbs_FACE ) {
+ // just add faces of groups to shells
+ for (; it1.More(); it1.Next(), it2.Next() )
+ builder.Add( shell1, it1.Value() ), builder.Add( shell2, it2.Value() );
+ }
+ else if ( memberType == TopAbs_EDGE ) {
+ // Try to add faces sharing more than one edge of a group or
+ // sharing all its vertices with the group
+ TopTools_IndexedMapOfShape groupVertices[2];
+ TopExp::MapShapes( theShape1, TopAbs_VERTEX, groupVertices[0]);
+ TopExp::MapShapes( theShape2, TopAbs_VERTEX, groupVertices[1]);
+ //
+ TopTools_MapOfShape groupEdges[2], addedFaces[2];
+ bool hasInitAssoc = (!theMap.IsEmpty()), initAssocOK = !hasInitAssoc;
+ for (; it1.More(); it1.Next(), it2.Next() ) {
+ groupEdges[0].Add( it1.Value() );
+ groupEdges[1].Add( it2.Value() );
+ if ( !initAssocOK ) {
+ // for shell association there must be an edge with both vertices bound
+ TopoDS_Vertex v1, v2;
+ TopExp::Vertices( TopoDS::Edge( it1.Value()), v1, v2 );
+ initAssocOK = ( theMap.IsBound( v1 ) && theMap.IsBound( v2 ));
+ }
+ }
+ for (int is2ndGroup = 0; initAssocOK && is2ndGroup < 2; ++is2ndGroup) {
+ const TopoDS_Shape& group = is2ndGroup ? theShape2: theShape1;
+ SMESH_Mesh* mesh = is2ndGroup ? theMesh2 : theMesh1;
+ TopoDS_Shell& shell = is2ndGroup ? shell2 : shell1;
+ for ( TopoDS_Iterator it( group ); it.More(); it.Next() ) {
+ const TopoDS_Edge& edge = TopoDS::Edge( it.Value() );
+ TopoDS_Face face;
+ for ( int iF = 0; iF < 2; ++iF ) { // loop on 2 faces sharing edge
+ face = GetNextFace(mesh->GetAncestorMap(), edge, face);
+ if ( !face.IsNull() ) {
+ int nbGroupEdges = 0;
+ for ( TopExp_Explorer f( face, TopAbs_EDGE ); f.More(); f.Next())
+ if ( groupEdges[ is2ndGroup ].Contains( f.Current() ))
+ if ( ++nbGroupEdges > 1 )
+ break;
+ bool add = (nbGroupEdges > 1 || Count( face, TopAbs_EDGE, true ) == 1 );
+ if ( !add ) {
+ add = true;
+ for ( TopExp_Explorer v( face, TopAbs_VERTEX ); add && v.More(); v.Next())
+ add = groupVertices[ is2ndGroup ].Contains( v.Current() );
+ }
+ if ( add && addedFaces[ is2ndGroup ].Add( face ))
+ builder.Add( shell, face );
+ }
+ }
+ }
+ }
+ } else {
+ RETURN_BAD_RESULT("Unexpected group type");
+ }
+ // Associate shells
+ //
+ int nbFaces1 = Count( shell1, TopAbs_FACE, 0 );
+ int nbFaces2 = Count( shell2, TopAbs_FACE, 0 );
+ if ( nbFaces1 != nbFaces2 )
+ RETURN_BAD_RESULT("Different nb of faces found for shells");
+ if ( nbFaces1 > 0 ) {
+ bool ok = false;
+ if ( nbFaces1 == 1 ) {
+ TopoDS_Shape F1 = TopoDS_Iterator( shell1 ).Value();
+ TopoDS_Shape F2 = TopoDS_Iterator( shell2 ).Value();
+ ok = FindSubShapeAssociation( F1, theMesh1, F2, theMesh2, theMap );
+ }
+ else {
+ ok = FindSubShapeAssociation(shell1, theMesh1, shell2, theMesh2, theMap );
+ }
+ // Check if all members are mapped
+ if ( ok ) {
+ TopTools_MapOfShape boundMembers[2];
+ TopoDS_Iterator mIt;
+ for ( mIt.Initialize( theShape1 ); mIt.More(); mIt.Next())
+ if ( theMap.IsBound( mIt.Value() )) {
+ boundMembers[0].Add( mIt.Value() );
+ boundMembers[1].Add( theMap( mIt.Value() ));
+ }
+ if ( boundMembers[0].Extent() != nbMembers ) {
+ // make compounds of not bound members
+ TopoDS_Compound comp[2];
+ for ( int is2ndGroup = 0; is2ndGroup < 2; ++is2ndGroup ) {
+ builder.MakeCompound( comp[is2ndGroup] );
+ for ( mIt.Initialize( is2ndGroup ? theShape2:theShape1 ); mIt.More(); mIt.Next())
+ if ( ! boundMembers[ is2ndGroup ].Contains( mIt.Value() ))
+ builder.Add( comp[ is2ndGroup ], mIt.Value() );
+ }
+ // check if theMap contains initial association for the comp's
+ bool hasInitialAssoc = false;
+ if ( memberType == TopAbs_EDGE ) {
+ for ( TopExp_Explorer v( comp[0], TopAbs_VERTEX ); v.More(); v.Next())
+ if ( theMap.IsBound( v.Current() )) {
+ hasInitialAssoc = true;
+ break;
+ }
+ }
+ if ( hasInitialAssoc == bool( !theMap.IsEmpty() ))
+ ok = FindSubShapeAssociation( comp[0], theMesh1, comp[1], theMesh2, theMap );
+ else {
+ TShapeShapeMap tmpMap;
+ ok = FindSubShapeAssociation( comp[0], theMesh1, comp[1], theMesh2, tmpMap );
+ if ( ok ) {
+ TopTools_DataMapIteratorOfDataMapOfShapeShape mapIt( tmpMap );
+ for ( ; mapIt.More(); mapIt.Next() )
+ theMap.Bind( mapIt.Key(), mapIt.Value());
+ }
+ }
+ }
+ }
+ return ok;
+ }
+ // Each edge of an edge group is shared by own faces
+ // ------------------------------------------------------------------
+ //
+ // map vertices to edges sharing them, avoid doubling edges in lists
+ TopTools_DataMapOfShapeListOfShape v2e[2];
+ for (int isFirst = 0; isFirst < 2; ++isFirst ) {
+ const TopoDS_Shape& group = isFirst ? theShape1 : theShape2;
+ TopTools_DataMapOfShapeListOfShape& veMap = v2e[ isFirst ? 0 : 1 ];
+ TopTools_MapOfShape addedEdges;
+ for ( TopExp_Explorer e( group, TopAbs_EDGE ); e.More(); e.Next() ) {
+ const TopoDS_Shape& edge = e.Current();
+ if ( addedEdges.Add( edge )) {
+ for ( TopExp_Explorer v( edge, TopAbs_VERTEX ); v.More(); v.Next()) {
+ const TopoDS_Shape& vertex = v.Current();
+ if ( !veMap.IsBound( vertex )) {
+ TopTools_ListOfShape l;
+ veMap.Bind( vertex, l );
+ }
+ veMap( vertex ).Append( edge );
+ }
+ }
+ }
+ }
+ while ( !v2e[0].IsEmpty() )
+ {
+ // find a bound vertex
+ TopoDS_Vertex V[2];
+ TopTools_DataMapIteratorOfDataMapOfShapeListOfShape v2eIt( v2e[0] );
+ for ( ; v2eIt.More(); v2eIt.Next())
+ if ( theMap.IsBound( v2eIt.Key() )) {
+ V[0] = TopoDS::Vertex( v2eIt.Key() );
+ V[1] = TopoDS::Vertex( theMap( V[0] ));
+ break;
+ }
+ if ( V[0].IsNull() )
+ RETURN_BAD_RESULT("No more bound vertices");
+
+ while ( !V[0].IsNull() && v2e[0].IsBound( V[0] )) {
+ TopTools_ListOfShape& edges0 = v2e[0]( V[0] );
+ TopTools_ListOfShape& edges1 = v2e[1]( V[1] );
+ int nbE0 = edges0.Extent(), nbE1 = edges1.Extent();
+ if ( nbE0 != nbE1 )
+ RETURN_BAD_RESULT("Different nb of edges: "<< nbE0 << " != " << nbE1);
+
+ if ( nbE0 == 1 )
+ {
+ TopoDS_Edge e0 = TopoDS::Edge( edges0.First() );
+ TopoDS_Edge e1 = TopoDS::Edge( edges1.First() );
+ v2e[0].UnBind( V[0] );
+ v2e[1].UnBind( V[1] );
+ InsertAssociation( e0, e1, theMap, bidirect );
+ MESSAGE("Assoc edge " << theMesh1->GetMeshDS()->ShapeToIndex( e0 )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( e1 ));
+ V[0] = GetNextVertex( e0, V[0] );
+ V[1] = GetNextVertex( e1, V[1] );
+ if ( !V[0].IsNull() ) {
+ InsertAssociation( V[0], V[1], theMap, bidirect );
+ MESSAGE("Assoc vertex " << theMesh1->GetMeshDS()->ShapeToIndex( V[0] )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( V[1] ));
+ }
+ }
+ else if ( nbE0 == 2 )
+ {
+ // one of edges must have both ends bound
+ TopoDS_Vertex v0e0 = GetNextVertex( TopoDS::Edge( edges0.First() ), V[0] );
+ TopoDS_Vertex v1e0 = GetNextVertex( TopoDS::Edge( edges0.Last() ), V[0] );
+ TopoDS_Vertex v0e1 = GetNextVertex( TopoDS::Edge( edges1.First() ), V[1] );
+ TopoDS_Vertex v1e1 = GetNextVertex( TopoDS::Edge( edges1.Last() ), V[1] );
+ TopoDS_Shape e0b, e1b, e0n, e1n, v1b; // bound and not-bound
+ TopoDS_Vertex v0n, v1n;
+ if ( theMap.IsBound( v0e0 )) {
+ v0n = v1e0; e0b = edges0.First(); e0n = edges0.Last(); v1b = theMap( v0e0 );
+ } else if ( theMap.IsBound( v1e0 )) {
+ v0n = v0e0; e0n = edges0.First(); e0b = edges0.Last(); v1b = theMap( v1e0 );
+ } else {
+ RETURN_BAD_RESULT("None of vertices bound");
+ }
+ if ( v1b.IsSame( v1e1 )) {
+ v1n = v0e1; e1n = edges1.First(); e1b = edges1.Last();
+ } else {
+ v1n = v1e1; e1b = edges1.First(); e1n = edges1.Last();
+ }
+ InsertAssociation( e0b, e1b, theMap, bidirect );
+ InsertAssociation( e0n, e1n, theMap, bidirect );
+ InsertAssociation( v0n, v1n, theMap, bidirect );
+ MESSAGE("Assoc edge " << theMesh1->GetMeshDS()->ShapeToIndex( e0b )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( e1b ));
+ MESSAGE("Assoc edge " << theMesh1->GetMeshDS()->ShapeToIndex( e0n )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( e1n ));
+ MESSAGE("Assoc vertex " << theMesh1->GetMeshDS()->ShapeToIndex( v0n )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( v1n ));
+ v2e[0].UnBind( V[0] );
+ v2e[1].UnBind( V[1] );
+ V[0] = v0n;
+ V[1] = v1n;
+ }
+ else {
+ RETURN_BAD_RESULT("Not implemented");
+ }
+ }
+ } //while ( !v2e[0].IsEmpty() )
return true;
}
+
default:
RETURN_BAD_RESULT("Unexpected shape type");
} // end switch by shape type
} // end case of available initial vertex association
- //----------------------------------------------------------------------
+ //======================================================================
// NO INITIAL VERTEX ASSOCIATION
- //----------------------------------------------------------------------
+ //======================================================================
switch ( theShape1.ShapeType() ) {
TopoDS_Edge edge2 = TopoDS::Edge( theShape2 );
if ( IsPropagationPossible( theMesh1, theMesh2 ))
{
- TopoDS_Edge prpEdge = GetPropagationEdge( theMesh1, edge2, edge1 );
+ TopoDS_Edge prpEdge = GetPropagationEdge( theMesh1, edge2, edge1 ).second;
if ( !prpEdge.IsNull() )
{
TopoDS_Vertex VV1[2], VV2[2];
{
InsertAssociation( edge1, prpEdge, theMap, bidirect); // insert with a proper orientation
}
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true; // done
}
}
InsertAssociation( edge1, edge2, theMap, bidirect); // insert with a proper orientation
InsertAssociation( TopExp::FirstVertex(edge1), TopExp::FirstVertex(edge2),
theMap, bidirect);
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true; // done
}
break; // try by vertex closeness
{
TopoDS_Face face1 = TopoDS::Face(theShape1);
TopoDS_Face face2 = TopoDS::Face(theShape2);
+ TopoDS_Edge edge1, edge2;
// get outer edge of theShape1
- TopoDS_Edge edge1 = TopoDS::Edge( OuterShape( face1, TopAbs_EDGE ));
+ edge1 = TopoDS::Edge( OuterShape( face1, TopAbs_EDGE ));
// find out if any edge of face2 is a propagation edge of outer edge1
+ map<int,TopoDS_Edge> propag_edges; // use map to find the closest propagation edge
for ( TopExp_Explorer exp( face2, TopAbs_EDGE ); exp.More(); exp.Next() ) {
- TopoDS_Edge edge2 = TopoDS::Edge( exp.Current() );
- edge2 = GetPropagationEdge( theMesh1, edge2, edge1 );
- if ( !edge2.IsNull() ) // propagation found
+ edge2 = TopoDS::Edge( exp.Current() );
+ pair<int,TopoDS_Edge> step_edge = GetPropagationEdge( theMesh1, edge2, edge1 );
+ if ( !step_edge.second.IsNull() ) { // propagation found
+ propag_edges.insert( step_edge );
+ }
+ }
+ if ( !propag_edges.empty() ) // propagation found
+ {
+ edge2 = propag_edges.begin()->second;
+ TopoDS_Vertex VV1[2], VV2[2];
+ TopExp::Vertices( edge1, VV1[0], VV1[1], true );
+ TopExp::Vertices( edge2, VV2[0], VV2[1], true );
+ list< TopoDS_Edge > edges1, edges2;
+ int nbE = FindFaceAssociation( face1, VV1, face2, VV2, edges1, edges2 );
+ if ( !nbE ) RETURN_BAD_RESULT("FindFaceAssociation() failed");
+ if ( nbE == 2 ) // only 2 edges
{
- TopoDS_Vertex VV1[2], VV2[2];
- TopExp::Vertices( edge1, VV1[0], VV1[1], true );
- TopExp::Vertices( edge2, VV2[0], VV2[1], true );
- list< TopoDS_Edge > edges1, edges2;
- int nbE = FindFaceAssociation( face1, VV1, face2, VV2, edges1, edges2 );
- if ( !nbE ) RETURN_BAD_RESULT("FindFaceAssociation() failed");
- if ( nbE == 2 ) // only 2 edges
- {
- // take care of proper association of propagated edges
- bool same1 = edge1.IsSame( edges1.front() );
- bool same2 = edge2.IsSame( edges2.front() );
- if ( same1 != same2 )
- Reverse(edges2, nbE);
- }
- // store association
- list< TopoDS_Edge >::iterator eIt1 = edges1.begin();
- list< TopoDS_Edge >::iterator eIt2 = edges2.begin();
- for ( ; eIt1 != edges1.end(); ++eIt1, ++eIt2 )
- {
- InsertAssociation( *eIt1, *eIt2, theMap, bidirect);
- VV1[0] = TopExp::FirstVertex( *eIt1, true );
- VV2[0] = TopExp::FirstVertex( *eIt2, true );
- InsertAssociation( VV1[0], VV2[0], theMap, bidirect);
- }
- return true;
+ // take care of proper association of propagated edges
+ bool same1 = edge1.IsSame( edges1.front() );
+ bool same2 = edge2.IsSame( edges2.front() );
+ if ( same1 != same2 )
+ Reverse(edges2, nbE);
+ }
+ // store association
+ list< TopoDS_Edge >::iterator eIt1 = edges1.begin();
+ list< TopoDS_Edge >::iterator eIt2 = edges2.begin();
+ for ( ; eIt1 != edges1.end(); ++eIt1, ++eIt2 )
+ {
+ InsertAssociation( *eIt1, *eIt2, theMap, bidirect);
+ VV1[0] = TopExp::FirstVertex( *eIt1, true );
+ VV2[0] = TopExp::FirstVertex( *eIt2, true );
+ InsertAssociation( VV1[0], VV2[0], theMap, bidirect);
}
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
+ return true;
}
}
break; // try by vertex closeness
if ( vMap1.Extent() == 1 ) {
InsertAssociation( vMap1(1), vMap2(1), theMap, bidirect);
- if ( theShape1.ShapeType() == TopAbs_EDGE )
+ if ( theShape1.ShapeType() == TopAbs_EDGE ) {
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true;
+ }
return FindSubShapeAssociation( theShape1, theMesh1, theShape2, theMesh2, theMap);
}
// get 2 linked vertices of shape 1 not belonging to an inner wire of a face
TopoDS_Shape edge = theShape1;
TopExp_Explorer expF( theShape1, TopAbs_FACE ), expE;
- for ( ; expF.More(); expF.Next() ) {
+ if ( expF.More() ) {
+ for ( ; expF.More(); expF.Next() ) {
+ edge.Nullify();
+ TopoDS_Shape wire = OuterShape( TopoDS::Face( expF.Current() ), TopAbs_WIRE );
+ for ( expE.Init( wire, TopAbs_EDGE ); edge.IsNull() && expE.More(); expE.Next() )
+ if ( !IsClosedEdge( TopoDS::Edge( expE.Current() )))
+ edge = expE.Current();
+ if ( !edge.IsNull() )
+ break;
+ }
+ } else if (edge.ShapeType() != TopAbs_EDGE) { // no faces
edge.Nullify();
- TopoDS_Shape wire = OuterShape( TopoDS::Face( expF.Current() ), TopAbs_WIRE );
- for ( expE.Init( wire, TopAbs_EDGE ); edge.IsNull() && expE.More(); expE.Next() )
+ for ( expE.Init( theShape1, TopAbs_EDGE ); edge.IsNull() && expE.More(); expE.Next() )
if ( !IsClosedEdge( TopoDS::Edge( expE.Current() )))
edge = expE.Current();
- if ( !edge.IsNull() )
- break;
}
if ( edge.IsNull() || edge.ShapeType() != TopAbs_EDGE )
RETURN_BAD_RESULT("Edge not found");
}
}
- InsertAssociation( VV1[ 0 ], VV2 [ 0 ], theMap, bidirect);
- InsertAssociation( VV1[ 1 ], VV2 [ 1 ], theMap, bidirect);
- if ( theShape1.ShapeType() == TopAbs_EDGE )
+ InsertAssociation( VV1[ 0 ], VV2[ 0 ], theMap, bidirect);
+ InsertAssociation( VV1[ 1 ], VV2[ 1 ], theMap, bidirect);
+ MESSAGE("Initial assoc VERT " << theMesh1->GetMeshDS()->ShapeToIndex( VV1[ 0 ] )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( VV2[ 0 ] )<<
+ "\nand VERT " << theMesh1->GetMeshDS()->ShapeToIndex( VV1[ 1 ] )<<
+ " to " << theMesh2->GetMeshDS()->ShapeToIndex( VV2[ 1 ] ));
+ if ( theShape1.ShapeType() == TopAbs_EDGE ) {
+ InsertAssociation( theShape1, theShape2, theMap, bidirect );
return true;
+ }
return FindSubShapeAssociation( theShape1, theMesh1, theShape2, theMesh2, theMap );
}
list< TopoDS_Edge >::iterator eBackIt;
if ( !VV1[1].IsSame( TopExp::LastVertex( edges1.front(), true ))) {
+ reverse = true;
eBackIt = --edges1.end();
// check if the second vertex belongs to the first or last edge in the wire
if ( !VV1[1].IsSame( TopExp::FirstVertex( *eBackIt, true ))) {
if ( KO )
RETURN_BAD_RESULT("GetOrderedEdges() failed");
}
- reverse = true;
}
eBackIt = --edges2.end();
if ( !VV2[1].IsSame( TopExp::LastVertex( edges2.front(), true ))) {
+ reverse = !reverse;
// check if the second vertex belongs to the first or last edge in the wire
if ( !VV2[1].IsSame( TopExp::FirstVertex( *eBackIt, true ))) {
bool KO = true; // belongs to none
if ( KO )
RETURN_BAD_RESULT("GetOrderedEdges() failed");
}
- reverse = !reverse;
}
if ( reverse )
{
//=======================================================================
void StdMeshers_ProjectionUtils::InitVertexAssociation( const SMESH_Hypothesis* theHyp,
- TShapeShapeMap & theAssociationMap)
+ TShapeShapeMap & theAssociationMap,
+ const TopoDS_Shape& theTargetShape)
{
string hypName = theHyp->GetName();
if ( hypName == "ProjectionSource1D" ) {
const StdMeshers_ProjectionSource1D * hyp =
static_cast<const StdMeshers_ProjectionSource1D*>( theHyp );
- if ( hyp->HasVertexAssociation() ) {
+ if ( hyp->HasVertexAssociation() )
InsertAssociation( hyp->GetSourceVertex(),hyp->GetTargetVertex(),theAssociationMap);
- }
}
else if ( hypName == "ProjectionSource2D" ) {
const StdMeshers_ProjectionSource2D * hyp =
theAssociationMap.Bind( theShape2, theShape1 );
return isNew;
}
+ else {
+ throw SALOME_Exception("StdMeshers_ProjectionUtils: attempt to associate NULL shape");
+ }
return false;
}
{
if ( shape.IsNull() || !aMesh )
return false;
- return aMesh->GetMeshDS()->ShapeToIndex( shape );
+ return
+ aMesh->GetMeshDS()->ShapeToIndex( shape ) ||
+ // PAL16202
+ shape.ShapeType() == TopAbs_COMPOUND && aMesh->GetMeshDS()->IsGroupOfSubShapes( shape );
}
//=======================================================================
//================================================================================
/*!
* \brief Return another face sharing an edge
- * \param aMesh - mesh
+ * \param edgeToFaces - data map of descendants to ancestors
* \param edge - edge
* \param face - face
* \retval TopoDS_Face - found face
*/
//================================================================================
-TopoDS_Face StdMeshers_ProjectionUtils::GetNextFace( SMESH_Mesh* mesh,
- const TopoDS_Edge& edge,
- const TopoDS_Face& face)
+TopoDS_Face StdMeshers_ProjectionUtils::GetNextFace( const TAncestorMap& edgeToFaces,
+ const TopoDS_Edge& edge,
+ const TopoDS_Face& face)
{
- if ( mesh && !edge.IsNull() && !face.IsNull() )
+// if ( !edge.IsNull() && !face.IsNull() && edgeToFaces.Contains( edge ))
+ if ( !edge.IsNull() && edgeToFaces.Contains( edge )) // PAL16202
{
- TopTools_ListIteratorOfListOfShape ancestorIt( mesh->GetAncestors( edge ));
+ TopTools_ListIteratorOfListOfShape ancestorIt( edgeToFaces.FindFromKey( edge ));
for ( ; ancestorIt.More(); ancestorIt.Next() )
if ( ancestorIt.Value().ShapeType() == TopAbs_FACE &&
!face.IsSame( ancestorIt.Value() ))
return TopoDS::Face( ancestorIt.Value() );
}
return TopoDS_Face();
-
+}
+
+//================================================================================
+/*!
+ * \brief Return other vertex of an edge
+ */
+//================================================================================
+
+TopoDS_Vertex StdMeshers_ProjectionUtils::GetNextVertex(const TopoDS_Edge& edge,
+ const TopoDS_Vertex& vertex)
+{
+ TopoDS_Vertex vF,vL;
+ TopExp::Vertices(edge,vF,vL);
+ if ( vF.IsSame( vL ))
+ return TopoDS_Vertex();
+ return vertex.IsSame( vF ) ? vL : vF;
}
//================================================================================
* \param aMesh - mesh
* \param theEdge - edge to find by propagation
* \param fromEdge - start edge for propagation
- * \retval TopoDS_Edge - found edge
+ * \retval pair<int,TopoDS_Edge> - propagation step and found edge
*/
//================================================================================
-TopoDS_Edge StdMeshers_ProjectionUtils::GetPropagationEdge( SMESH_Mesh* aMesh,
- const TopoDS_Edge& theEdge,
- const TopoDS_Edge& fromEdge)
+pair<int,TopoDS_Edge>
+StdMeshers_ProjectionUtils::GetPropagationEdge( SMESH_Mesh* aMesh,
+ const TopoDS_Edge& theEdge,
+ const TopoDS_Edge& fromEdge)
{
SMESH_IndexedMapOfShape aChain;
- //aChain.Add(fromEdge);
+ int step = 0;
// List of edges, added to chain on the previous cycle pass
TopTools_ListOfShape listPrevEdges;
- listPrevEdges.Append(fromEdge/*.Oriented( TopAbs_FORWARD )*/);
+ listPrevEdges.Append(fromEdge);
// Collect all edges pass by pass
while (listPrevEdges.Extent() > 0) {
+ step++;
// List of edges, added to chain on this cycle pass
TopTools_ListOfShape listCurEdges;
ori = TopAbs::Reverse( ori );
anOppE.Orientation( ori );
if ( anOppE.IsSame( theEdge ))
- return TopoDS::Edge( anOppE );
+ return make_pair( step, TopoDS::Edge( anOppE ));
aChain.Add(anOppE);
listCurEdges.Append(anOppE);
}
listPrevEdges = listCurEdges;
} // while (listPrevEdges.Extent() > 0)
- return TopoDS_Edge();
+ return make_pair( INT_MAX, TopoDS_Edge());
}
//================================================================================
// 1. Nodes of corresponding links:
- // get 2 matching edges, not seam ones
- TopoDS_Edge edge1, edge2;
+ // get 2 matching edges, try to find not seam ones
+ TopoDS_Edge edge1, edge2, seam1, seam2;
TopExp_Explorer eE( OuterShape( face2, TopAbs_WIRE ), TopAbs_EDGE );
do {
- edge2 = TopoDS::Edge( eE.Current() );
+ // edge 2
+ TopoDS_Edge e2 = TopoDS::Edge( eE.Current() );
eE.Next();
- } while ( BRep_Tool::IsClosed( edge2, face2 ) && eE.More());
- if ( !assocMap.IsBound( edge2 ))
- RETURN_BAD_RESULT("Association not found for edge " << meshDS2->ShapeToIndex( edge2 ));
- edge1 = TopoDS::Edge( assocMap( edge2 ));
- if ( !IsSubShape( edge1, face1 ))
- RETURN_BAD_RESULT("Wrong association, edge " << meshDS1->ShapeToIndex( edge1 ) <<
- " isn't a subshape of face " << meshDS1->ShapeToIndex( face1 ));
+ // edge 1
+ if ( !assocMap.IsBound( e2 ))
+ RETURN_BAD_RESULT("Association not found for edge " << meshDS2->ShapeToIndex( e2 ));
+ TopoDS_Edge e1 = TopoDS::Edge( assocMap( e2 ));
+ if ( !IsSubShape( e1, face1 ))
+ RETURN_BAD_RESULT("Wrong association, edge " << meshDS1->ShapeToIndex( e1 ) <<
+ " isn't a subshape of face " << meshDS1->ShapeToIndex( face1 ));
+ // check that there are nodes on edges
+ SMESHDS_SubMesh * eSM1 = meshDS1->MeshElements( e1 );
+ SMESHDS_SubMesh * eSM2 = meshDS2->MeshElements( e2 );
+ bool nodesOnEdges = ( eSM1 && eSM2 && eSM1->NbNodes() && eSM2->NbNodes() );
+ // check that the nodes on edges belong to faces
+ bool nodesOfFaces = false;
+ if ( nodesOnEdges ) {
+ const SMDS_MeshNode* n1 = eSM1->GetNodes()->next();
+ const SMDS_MeshNode* n2 = eSM2->GetNodes()->next();
+ nodesOfFaces = ( n1->GetInverseElementIterator(SMDSAbs_Face)->more() &&
+ n2->GetInverseElementIterator(SMDSAbs_Face)->more() );
+ }
+ if ( nodesOfFaces )
+ {
+ if ( BRep_Tool::IsClosed( e2, face2 )) {
+ seam1 = e1; seam2 = e2;
+ }
+ else {
+ edge1 = e1; edge2 = e2;
+ }
+ }
+ } while ( edge2.IsNull() && eE.More() );
+ //
+ if ( edge2.IsNull() ) {
+ edge1 = seam1; edge2 = seam2;
+ }
+ if ( edge2.IsNull() ) RETURN_BAD_RESULT("No matching edges with nodes found");
// get 2 matching vertices
- TopoDS_Shape V2 = TopExp::FirstVertex( TopoDS::Edge( edge2 ));
+ TopoDS_Vertex V2 = TopExp::FirstVertex( TopoDS::Edge( edge2 ));
if ( !assocMap.IsBound( V2 ))
RETURN_BAD_RESULT("Association not found for vertex " << meshDS2->ShapeToIndex( V2 ));
- TopoDS_Shape V1 = assocMap( V2 );
+ TopoDS_Vertex V1 = TopoDS::Vertex( assocMap( V2 ));
// nodes on vertices
- SMESHDS_SubMesh * vSM1 = meshDS1->MeshElements( V1 );
- SMESHDS_SubMesh * vSM2 = meshDS2->MeshElements( V2 );
- if ( !vSM1 || !vSM2 || vSM1->NbNodes() != 1 || vSM2->NbNodes() != 1 )
- RETURN_BAD_RESULT("Bad node submesh");
- const SMDS_MeshNode* vNode1 = vSM1->GetNodes()->next();
- const SMDS_MeshNode* vNode2 = vSM2->GetNodes()->next();
+ const SMDS_MeshNode* vNode1 = SMESH_Algo::VertexNode( V1, meshDS1 );
+ const SMDS_MeshNode* vNode2 = SMESH_Algo::VertexNode( V2, meshDS2 );
+ if ( !vNode1 ) RETURN_BAD_RESULT("No node on vertex #" << meshDS1->ShapeToIndex( V1 ));
+ if ( !vNode2 ) RETURN_BAD_RESULT("No node on vertex #" << meshDS2->ShapeToIndex( V2 ));
// nodes on edges linked with nodes on vertices
const SMDS_MeshNode* nullNode = 0;
}
else
{
- // there is only seam edge in a face, i.e. it is a sphere.
+ // the only suitable edge is seam, i.e. it is a sphere.
// FindMatchingNodes() will not know which way to go from any edge.
// So we ignore all faces having nodes on edges or vertices except
// one of faces sharing current start nodes
if ( !onBnd )
elems.insert( f );
}
+ // add also faces adjacent to faceToKeep
+ int nbNodes = faceToKeep->NbNodes();
+ if ( faceToKeep->IsQuadratic() ) nbNodes /= 2;
+ notInSet.insert( f1 );
+ notInSet.insert( f2 );
+ for ( int i = 0; i < nbNodes; ++i ) {
+ const SMDS_MeshNode* n1 = faceToKeep->GetNode( i );
+ const SMDS_MeshNode* n2 = faceToKeep->GetNode( i+1 );
+ f1 = SMESH_MeshEditor::FindFaceInSet( n1, n2, inSet, notInSet );
+ if ( f1 )
+ elems.insert( f1 );
+ }
} // case on a sphere
} // loop on 2 faces
+ // int quadFactor = (*Elems1.begin())->IsQuadratic() ? 2 : 1;
+
node1To2Map.clear();
int res = SMESH_MeshEditor::FindMatchingNodes( Elems1, Elems2,
vNode1, vNode2,
if ( res != SMESH_MeshEditor::SEW_OK )
RETURN_BAD_RESULT("FindMatchingNodes() result " << res );
-
// On a sphere, add matching nodes on the edge
if ( helper1.IsSeamShape( edge1 ))
V2 = TopExp::LastVertex( TopoDS::Edge( edge2 ));
if ( !assocMap.IsBound( V2 ))
RETURN_BAD_RESULT("Association not found for vertex " << meshDS2->ShapeToIndex( V2 ));
- V1 = assocMap( V2 );
- vSM1 = meshDS1->MeshElements( V1 );
- vSM2 = meshDS2->MeshElements( V2 );
- if ( !vSM1 || !vSM2 || vSM1->NbNodes() != 1 || vSM2->NbNodes() != 1 )
- RETURN_BAD_RESULT("Bad node submesh");
- vNode1 = vSM1->GetNodes()->next();
- vNode2 = vSM2->GetNodes()->next();
+ V1 = TopoDS::Vertex( assocMap( V2 ));
+ vNode1 = SMESH_Algo::VertexNode( V1, meshDS1 );
+ vNode2 = SMESH_Algo::VertexNode( V2, meshDS2 );
+ if ( !vNode1 ) RETURN_BAD_RESULT("No node on vertex #" << meshDS1->ShapeToIndex( V1 ));
+ if ( !vNode2 ) RETURN_BAD_RESULT("No node on vertex #" << meshDS2->ShapeToIndex( V2 ));
node1To2Map.insert( make_pair( vNode1, vNode2 ));
}
+
+// don't know why this condition is usually true :(
+// if ( node1To2Map.size() * quadFactor < SM1->NbNodes() )
+// MESSAGE("FindMatchingNodes() found too few node pairs starting from nodes ("
+// << vNode1->GetID() << " - " << eNode1[0]->GetID() << ") ("
+// << vNode2->GetID() << " - " << eNode2[0]->GetID() << "):"
+// << node1To2Map.size() * quadFactor << " < " << SM1->NbNodes());
return true;
}
SMESH_subMesh* srcShapeSM = srcMesh->GetSubMesh( srcShape );
- if ( srcShapeSM != subMesh )
- subMesh->SetEventListener( GetSrcSubMeshListener(),
- SMESH_subMeshEventListenerData::MakeData( subMesh ),
- srcShapeSM );
+ if ( srcShapeSM != subMesh ) {
+ if ( srcShapeSM->GetSubMeshDS() &&
+ srcShapeSM->GetSubMeshDS()->IsComplexSubmesh() )
+ { // source shape is a group
+ TopExp_Explorer it(srcShapeSM->GetSubShape(), // explore the group into subshapes...
+ subMesh->GetSubShape().ShapeType()); // ...of target shape type
+ for (; it.More(); it.Next())
+ {
+ SMESH_subMesh* srcSM = srcMesh->GetSubMesh( it.Current() );
+ SMESH_subMeshEventListenerData* data =
+ srcSM->GetEventListenerData(GetSrcSubMeshListener());
+ if ( data )
+ data->mySubMeshes.push_back( subMesh );
+ else
+ data = SMESH_subMeshEventListenerData::MakeData( subMesh );
+ subMesh->SetEventListener ( GetSrcSubMeshListener(), data, srcSM );
+ }
+ }
+ else
+ {
+ subMesh->SetEventListener( GetSrcSubMeshListener(),
+ SMESH_subMeshEventListenerData::MakeData( subMesh ),
+ srcShapeSM );
+ }
+ }
}
}
class SMESH_Mesh;
class SMESH_Hypothesis;
class SMESH_subMesh;
+class TopTools_IndexedDataMapOfShapeListOfShape;
/*!
* \brief Class encapsulating methods common to Projection algorithms
*/
-class STDMESHERS_EXPORT StdMeshers_ProjectionUtils
+class StdMeshers_ProjectionUtils
{
public:
typedef TopTools_DataMapOfShapeShape TShapeShapeMap;
+ typedef TopTools_IndexedDataMapOfShapeListOfShape TAncestorMap;
typedef std::map<const SMDS_MeshNode*, const SMDS_MeshNode*> TNodeNodeMap;
/*!
* \brief Insert vertex association defined by a hypothesis into a map
* \param theHyp - hypothesis
* \param theAssociationMap - association map
+ * \param theTargetShape - the shape theHyp assigned to
*/
static void InitVertexAssociation( const SMESH_Hypothesis* theHyp,
- TShapeShapeMap & theAssociationMap);
+ TShapeShapeMap & theAssociationMap,
+ const TopoDS_Shape& theTargetShape);
/*!
* \brief Inserts association theShape1 <-> theShape2 to TShapeShapeMap
/*!
* \brief Finds an edge by its vertices in a main shape of the mesh
- * \param aMesh - the mesh
- * \param V1 - vertex 1
- * \param V2 - vertex 2
- * \retval TopoDS_Edge - found edge
*/
static TopoDS_Edge GetEdgeByVertices( SMESH_Mesh* aMesh,
const TopoDS_Vertex& V1,
/*!
* \brief Return another face sharing an edge
- * \param aMesh - mesh
- * \param edge - edge
- * \param face - face
- * \retval TopoDS_Face - found face
+ * \param edgeToFaces - data map of descendants to ancestors
+ */
+ static TopoDS_Face GetNextFace( const TAncestorMap& edgeToFaces,
+ const TopoDS_Edge& edge,
+ const TopoDS_Face& face);
+ /*!
+ * \brief Return other vertex of an edge
*/
- static TopoDS_Face GetNextFace( SMESH_Mesh* aMesh,
- const TopoDS_Edge& edge,
- const TopoDS_Face& face);
+ static TopoDS_Vertex GetNextVertex(const TopoDS_Edge& edge,
+ const TopoDS_Vertex& vertex);
/*!
* \brief Return an oriented propagation edge
* \param aMesh - mesh
* \param fromEdge - start edge for propagation
- * \retval TopoDS_Edge - found edge
+ * \retval pair<int,TopoDS_Edge> - propagation step and found edge
*/
- static TopoDS_Edge GetPropagationEdge( SMESH_Mesh* aMesh,
- const TopoDS_Edge& anEdge,
- const TopoDS_Edge& fromEdge);
+ static std::pair<int,TopoDS_Edge> GetPropagationEdge( SMESH_Mesh* aMesh,
+ const TopoDS_Edge& anEdge,
+ const TopoDS_Edge& fromEdge);
/*!
* \brief Find corresponding nodes on two faces
static void SetEventListener(SMESH_subMesh* subMesh,
TopoDS_Shape srcShape,
SMESH_Mesh* srcMesh);
+
};
#endif
#include <BRepAdaptor_Curve.hxx>
#include <BRep_Tool.hxx>
#include <GCPnts_AbscissaPoint.hxx>
+#include <TopExp.hxx>
#include <TopoDS.hxx>
#include <gp_Pnt.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
#include "utilities.h"
using namespace std;
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
typedef StdMeshers_ProjectionUtils TAssocTool;
const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape);
if ( hyps.size() == 0 )
{
- aStatus = SMESH_Hypothesis::HYP_MISSING;
+ aStatus = HYP_MISSING;
return false; // can't work with no hypothesis
}
if ( hyps.size() > 1 )
{
- aStatus = SMESH_Hypothesis::HYP_ALREADY_EXIST;
+ aStatus = HYP_ALREADY_EXIST;
return false;
}
string hypName = theHyp->GetName();
- aStatus = SMESH_Hypothesis::HYP_OK;
+ aStatus = HYP_OK;
if (hypName == "ProjectionSource1D")
{
// source and target vertices
if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh ) ||
!TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh ) ||
- !TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ) ||
!TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(),
_sourceHypo->GetSourceEdge() ))
{
- aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER;
+ aStatus = HYP_BAD_PARAMETER;
SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(), srcMesh )));
SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), tgtMesh )));
- SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape ) ));
SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetSourceVertex(),
_sourceHypo->GetSourceEdge() )));
}
+ // PAL16202
+ else
+ {
+ bool isSub = TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape );
+ if ( !_sourceHypo->IsCompoundSource() ) {
+ if ( !isSub ) {
+ aStatus = HYP_BAD_PARAMETER;
+ SCRUTE((TAssocTool::IsSubShape( _sourceHypo->GetTargetVertex(), aShape)));
+ }
+ }
+ else if ( isSub ) {
+ // is Ok provided that source vertex is shared only by one edge
+ // of the source group
+ TopoDS_Shape sharingEdge;
+ TopTools_ListIteratorOfListOfShape ancestIt
+ ( aMesh.GetAncestors( _sourceHypo->GetSourceVertex() ));
+ for ( ; ancestIt.More(); ancestIt.Next() )
+ {
+ const TopoDS_Shape& ancestor = ancestIt.Value();
+ if ( ancestor.ShapeType() == TopAbs_EDGE &&
+ TAssocTool::IsSubShape( ancestor, _sourceHypo->GetSourceEdge() ))
+ {
+ if ( sharingEdge.IsNull() || ancestor.IsSame( sharingEdge ))
+ sharingEdge = ancestor;
+ else {
+ // the second encountered
+ aStatus = HYP_BAD_PARAMETER;
+ MESSAGE("Source vertex is shared by several edges of a group");
+ break;
+ }
+ }
+ }
+ }
+ }
}
// check source edge
if ( !TAssocTool::IsSubShape( _sourceHypo->GetSourceEdge(), srcMesh ) ||
}
else
{
- aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+ aStatus = HYP_INCOMPATIBLE;
}
return ( aStatus == HYP_OK );
}
if ( !_sourceHypo )
return false;
- TopoDS_Edge tgtEdge = TopoDS::Edge( theShape.Oriented(TopAbs_FORWARD));
- TopoDS_Edge srcEdge = TopoDS::Edge( _sourceHypo->GetSourceEdge().Oriented(TopAbs_FORWARD));
-
- TopoDS_Vertex tgtV[2], srcV[2];
- TopExp::Vertices( tgtEdge, tgtV[0], tgtV[1] );
- TopExp::Vertices( srcEdge, srcV[0], srcV[1] );
-
SMESH_Mesh * srcMesh = _sourceHypo->GetSourceMesh();
SMESH_Mesh * tgtMesh = & theMesh;
if ( !srcMesh )
// Make subshapes association
// ---------------------------
+ TopoDS_Edge srcEdge, tgtEdge = TopoDS::Edge( theShape.Oriented(TopAbs_FORWARD));
+ TopoDS_Shape srcShape = _sourceHypo->GetSourceEdge().Oriented(TopAbs_FORWARD);
+
TAssocTool::TShapeShapeMap shape2ShapeMap;
- TAssocTool::InitVertexAssociation( _sourceHypo, shape2ShapeMap );
- if ( !TAssocTool::FindSubShapeAssociation( tgtEdge, tgtMesh, srcEdge, srcMesh,
- shape2ShapeMap) )
- return error(dfltErr(),SMESH_Comment("Vertices association failed" ));
+ TAssocTool::InitVertexAssociation( _sourceHypo, shape2ShapeMap, tgtEdge );
+ if ( !TAssocTool::FindSubShapeAssociation( tgtEdge, tgtMesh, srcShape, srcMesh,
+ shape2ShapeMap) ||
+ !shape2ShapeMap.IsBound( tgtEdge ))
+ return error("Vertices association failed" );
+
+ srcEdge = TopoDS::Edge( shape2ShapeMap( tgtEdge ).Oriented(TopAbs_FORWARD));
+// cout << " srcEdge #" << srcMesh->GetMeshDS()->ShapeToIndex( srcEdge )
+// << " tgtEdge #" << tgtMesh->GetMeshDS()->ShapeToIndex( tgtEdge ) << endl;
+
+ TopoDS_Vertex tgtV[2], srcV[2];
+ TopExp::Vertices( tgtEdge, tgtV[0], tgtV[1] );
+ TopExp::Vertices( srcEdge, srcV[0], srcV[1] );
// ----------------------------------------------
// Assure that mesh on a source edge is computed
}
bool reverse = ( srcV[0].IsSame( shape2ShapeMap( tgtV[1] )));
- if ( shape2ShapeMap.IsBound( tgtEdge )) // case of closed edge
+ if ( tgtV[0].IsSame( tgtV[1] )) // case of closed edge
reverse = ( shape2ShapeMap( tgtEdge ).Orientation() == TopAbs_REVERSED );
if ( reverse ) // reverse lengths of segments
std::reverse( lengths.begin(), lengths.end() );
// from the point at given parameter.
GCPnts_AbscissaPoint Discret( curveAdaptor, dl * lengths[ i-1 ], tgtParams[ i-1 ] );
if ( !Discret.IsDone() )
- return error(dfltErr(),"GCPnts_AbscissaPoint failed");
+ return error("GCPnts_AbscissaPoint failed");
tgtParams[ i ] = Discret.Parameter();
}
// make internal nodes
#include "utilities.h"
+#include <BRep_Tool.hxx>
#include <TopExp.hxx>
-#include <TopoDS.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <BRep_Tool.hxx>
-
+#include <TopoDS.hxx>
using namespace std;
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
typedef StdMeshers_ProjectionUtils TAssocTool;
// target vertices
edge = TAssocTool::GetEdgeByVertices
( tgtMesh, _sourceHypo->GetTargetVertex(1), _sourceHypo->GetTargetVertex(2) );
- if ( edge.IsNull() ||
- !TAssocTool::IsSubShape( edge, tgtMesh ) ||
- !TAssocTool::IsSubShape( edge, theShape ))
+ if ( edge.IsNull() || !TAssocTool::IsSubShape( edge, tgtMesh ))
{
theStatus = HYP_BAD_PARAMETER;
SCRUTE((edge.IsNull()));
SCRUTE((TAssocTool::IsSubShape( edge, tgtMesh )));
+ }
+ // PAL16203
+ else if ( !_sourceHypo->IsCompoundSource() &&
+ !TAssocTool::IsSubShape( edge, theShape ))
+ {
+ theStatus = HYP_BAD_PARAMETER;
SCRUTE((TAssocTool::IsSubShape( edge, theShape )));
}
}
{
// old nodes are shared by edges and new ones are shared
// only by faces created by mapper
- bool isOld = false;
- SMDS_ElemIteratorPtr invElem = node->GetInverseElementIterator();
- while ( !isOld && invElem->more() )
- isOld = ( invElem->next()->GetType() == SMDSAbs_Edge );
+ SMDS_ElemIteratorPtr invEdge = node->GetInverseElementIterator(SMDSAbs_Edge);
+ bool isOld = invEdge->more();
return isOld;
}
MeshCleaner( SMESH_subMesh* faceSubMesh ): sm(faceSubMesh) {}
~MeshCleaner() { Clean(sm); }
void Release() { sm = 0; } // mesh will not be removed
- static void Clean( SMESH_subMesh* sm )
+ static void Clean( SMESH_subMesh* sm, bool withSub=true )
{
if ( !sm ) return;
- switch ( sm->GetSubShape().ShapeType() ) {
- case TopAbs_VERTEX:
- case TopAbs_EDGE: {
+ // PAL16567, 18920. Remove face nodes as well
+// switch ( sm->GetSubShape().ShapeType() ) {
+// case TopAbs_VERTEX:
+// case TopAbs_EDGE: {
SMDS_NodeIteratorPtr nIt = sm->GetSubMeshDS()->GetNodes();
SMESHDS_Mesh* mesh = sm->GetFather()->GetMeshDS();
while ( nIt->more() ) {
mesh->RemoveNode( node );
}
// do not break but iterate over DependsOn()
- }
- default:
+// }
+// default:
+ if ( !withSub ) return;
SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(false,false);
while ( smIt->more() )
- Clean( smIt->next() );
- }
+ Clean( smIt->next(), false );
+// }
}
};
if ( !_sourceHypo )
return false;
- TopoDS_Face tgtFace = TopoDS::Face( theShape.Oriented(TopAbs_FORWARD));
- TopoDS_Face srcFace = TopoDS::Face( _sourceHypo->GetSourceFace().Oriented(TopAbs_FORWARD));
-
SMESH_Mesh * srcMesh = _sourceHypo->GetSourceMesh();
SMESH_Mesh * tgtMesh = & theMesh;
if ( !srcMesh )
SMESHDS_Mesh * meshDS = theMesh.GetMeshDS();
- SMESH_MesherHelper helper( theMesh );
- helper.SetSubShape( tgtFace );
-
// ---------------------------
// Make subshapes association
// ---------------------------
+ TopoDS_Face tgtFace = TopoDS::Face( theShape.Oriented(TopAbs_FORWARD));
+ TopoDS_Shape srcShape = _sourceHypo->GetSourceFace().Oriented(TopAbs_FORWARD);
+
TAssocTool::TShapeShapeMap shape2ShapeMap;
- TAssocTool::InitVertexAssociation( _sourceHypo, shape2ShapeMap );
- if ( !TAssocTool::FindSubShapeAssociation( tgtFace, tgtMesh, srcFace, srcMesh,
- shape2ShapeMap) )
+ TAssocTool::InitVertexAssociation( _sourceHypo, shape2ShapeMap, tgtFace );
+ if ( !TAssocTool::FindSubShapeAssociation( tgtFace, tgtMesh, srcShape, srcMesh,
+ shape2ShapeMap) ||
+ !shape2ShapeMap.IsBound( tgtFace ))
return error(COMPERR_BAD_SHAPE,"Topology of source and target faces seems different" );
+ TopoDS_Face srcFace = TopoDS::Face( shape2ShapeMap( tgtFace ).Oriented(TopAbs_FORWARD));
+
// ----------------------------------------------
// Assure that mesh on a source Face is computed
// ----------------------------------------------
if ( nbEdgesInWires.front() > 1 ) // possible to find out
{
TopoDS_Edge srcE1 = srcEdges.front(), tgtE1 = tgtEdges.front();
- reverse = ( ! srcE1.IsSame( shape2ShapeMap( tgtE1 )));
- if ( BRep_Tool::IsClosed( tgtE1, tgtFace )) {
- reverse = ( srcE1.Orientation() == tgtE1.Orientation() );
- if ( _sourceHypo->GetSourceFace().Orientation() != theShape.Orientation() )
- reverse = !reverse;
- }
+ TopoDS_Shape srcE1bis = shape2ShapeMap( tgtE1 );
+ reverse = ( ! srcE1.IsSame( srcE1bis ));
}
else if ( nbEdgesInWires.front() == 1 )
{
mapper.Apply( tgtFace, tgtV1, reverse );
if ( mapper.GetErrorCode() != SMESH_Pattern::ERR_OK )
- return error(dfltErr(),"Can't apply source mesh pattern to the face");
+ return error("Can't apply source mesh pattern to the face");
// Create the mesh
const bool toCreatePolygons = false, toCreatePolyedrs = false;
mapper.MakeMesh( tgtMesh, toCreatePolygons, toCreatePolyedrs );
if ( mapper.GetErrorCode() != SMESH_Pattern::ERR_OK )
- return error(dfltErr(),"Can't make mesh by source mesh pattern");
+ return error("Can't make mesh by source mesh pattern");
// it will remove mesh built by pattern mapper on edges and vertices
// in failure case
SMESH_MeshEditor editor( tgtMesh );
SMESH_MeshEditor::TListOfListOfNodes groupsOfNodes;
+ SMESH_MesherHelper helper( theMesh );
+ helper.SetSubShape( tgtFace );
+
// Make groups of nodes to merge
// loop on edge and vertex submeshes of a target face
bool isSeam = helper.IsSeamShape( sm->GetId() );
- enum { NEW_NODES, OLD_NODES };
+ enum { NEW_NODES = 0, OLD_NODES };
map< double, const SMDS_MeshNode* > u2nodesMaps[2], u2nodesOnSeam;
map< double, const SMDS_MeshNode* >::iterator u_oldNode, u_newNode, u_newOnSeam, newEnd;
set< const SMDS_MeshNode* > seamNodes;
}
// sort nodes on edges by its position
- map< double, const SMDS_MeshNode* > & pos2nodes = u2nodesMaps[ isOld ];
+ map< double, const SMDS_MeshNode* > & pos2nodes = u2nodesMaps[isOld ? OLD_NODES : NEW_NODES];
switch ( node->GetPosition()->GetTypeOfPosition() )
{
case SMDS_TOP_VERTEX: {
node->GetPosition()->GetTypeOfPosition());
}
}
- if ( u2nodesMaps[ OLD_NODES ].size() != u2nodesMaps[ NEW_NODES ].size() )
- RETURN_BAD_RESULT("Different nb of old and new nodes " <<
+ if ( u2nodesMaps[ NEW_NODES ].size() != u2nodesMaps[ OLD_NODES ].size() )
+ {
+ if ( u2nodesMaps[ NEW_NODES ].size() == 0 &&
+ sm->GetSubShape().ShapeType() == TopAbs_EDGE &&
+ BRep_Tool::Degenerated( TopoDS::Edge( sm->GetSubShape() )))
+ // NPAL15894 (tt88bis.py) - project mesh built by NETGEN_1d_2D that
+ // does not make segments/nodes on degenerated edges
+ continue;
+ RETURN_BAD_RESULT("Different nb of old and new nodes on shape #"<< sm->GetId() <<" "<<
u2nodesMaps[ OLD_NODES ].size() << " != " <<
u2nodesMaps[ NEW_NODES ].size());
- if ( isSeam && u2nodesMaps[ OLD_NODES ].size() != u2nodesOnSeam.size() )
+ }
+ if ( isSeam && u2nodesMaps[ OLD_NODES ].size() != u2nodesOnSeam.size() ) {
RETURN_BAD_RESULT("Different nb of old and seam nodes " <<
u2nodesMaps[ OLD_NODES ].size() << " != " << u2nodesOnSeam.size());
-
+ }
// Make groups of nodes to merge
u_oldNode = u2nodesMaps[ OLD_NODES ].begin();
u_newNode = u2nodesMaps[ NEW_NODES ].begin();
#include "utilities.h"
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
#define gpXYZ(n) gp_XYZ(n->X(),n->Y(),n->Z())
#define SHOWYXZ(msg, xyz) // {\
// gp_Pnt p (xyz); \
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// check aShape that must be a 6 faces block
+/* PAL16229
if ( TAssocTool::Count( aShape, TopAbs_SHELL, 1 ) != 1 ||
TAssocTool::Count( aShape, TopAbs_FACE , 1 ) != 6 ||
TAssocTool::Count( aShape, TopAbs_EDGE , 1 ) != 12 ||
aStatus = HYP_BAD_GEOMETRY;
return false;
}
-
+*/
list <const SMESHDS_Hypothesis * >::const_iterator itl;
const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape);
srcShell = TopoDS::Shell( exp.Current() );
if ( nbShell != 1 )
return error(COMPERR_BAD_SHAPE,
- SMESH_Comment("Shape must have 1 shell but not") << nbShell);
+ SMESH_Comment("Source shape must have 1 shell but not ") << nbShell);
exp.Init( aShape, TopAbs_SHELL );
for ( nbShell = 0; exp.More(); exp.Next(), ++nbShell )
tgtShell = TopoDS::Shell( exp.Current() );
if ( nbShell != 1 )
return error(COMPERR_BAD_SHAPE,
- SMESH_Comment("Shape must have 1 shell but not") << nbShell);
+ SMESH_Comment("Target shape must have 1 shell but not ") << nbShell);
+
+ // Check that shapes are blocks
+ if ( TAssocTool::Count( tgtShell, TopAbs_FACE , 1 ) != 6 ||
+ TAssocTool::Count( tgtShell, TopAbs_EDGE , 1 ) != 12 ||
+ TAssocTool::Count( tgtShell, TopAbs_WIRE , 1 ) != 6 )
+ return error(COMPERR_BAD_SHAPE, "Target shape is not a block");
+ if ( TAssocTool::Count( srcShell, TopAbs_FACE , 1 ) != 6 ||
+ TAssocTool::Count( srcShell, TopAbs_EDGE , 1 ) != 12 ||
+ TAssocTool::Count( srcShell, TopAbs_WIRE , 1 ) != 6 )
+ return error(COMPERR_BAD_SHAPE, "Source shape is not a block");
// Assure that mesh on a source shape is computed
TopExp::Vertices( TopoDS::Edge( exp.Current() ), tgtV000, tgtV100 );
if ( !shape2ShapeMap.IsBound( tgtV000 ) || !shape2ShapeMap.IsBound( tgtV100 ))
- return error(dfltErr(),"Association of subshapes failed" );
+ return error("Association of subshapes failed" );
srcV000 = TopoDS::Vertex( shape2ShapeMap( tgtV000 ));
srcV100 = TopoDS::Vertex( shape2ShapeMap( tgtV100 ));
if ( !TAssocTool::IsSubShape( srcV000, srcShell ) ||
!TAssocTool::IsSubShape( srcV100, srcShell ))
- return error(dfltErr(),"Incorrect association of subshapes" );
+ return error("Incorrect association of subshapes" );
}
// Load 2 SMESH_Block's with src and tgt shells
gp_Pnt srcCoord = gpXYZ( srcNode );
gp_XYZ srcParam;
if ( !srcBlock.ComputeParameters( srcCoord, srcParam ))
- return error(dfltErr(),SMESH_Comment("Can't compute normalized parameters ")
+ return error(SMESH_Comment("Can't compute normalized parameters ")
<< "for source node " << srcNode->GetID());
// compute coordinates of target node by srcParam
gp_XYZ tgtXYZ;
if ( !tgtBlock.ShellPoint( srcParam, tgtXYZ ))
- return error(dfltErr(),"Can't compute coordinates by normalized parameters");
+ return error("Can't compute coordinates by normalized parameters");
// add node
SMDS_MeshNode* newNode = tgtMeshDS->AddNode( tgtXYZ.X(), tgtXYZ.Y(), tgtXYZ.Z() );
tgtMeshDS->SetNodeInVolume( newNode, helper.GetSubShapeID() );
#include "utilities.h"
+#include "SMDS_SetIterator.hxx"
+#include "SMESH_Algo.hxx"
+#include "SMESH_HypoFilter.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_subMesh.hxx"
-#include "SMESH_HypoFilter.hxx"
-#include "SMDS_SetIterator.hxx"
+
+#include <BRepTools_WireExplorer.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
+#include <TopoDS.hxx>
+
+#define DBGMSG(txt) \
+// cout << txt << endl;
using namespace std;
namespace {
- enum SubMeshState { WAIT_PROPAG_HYP, // no propagation hyp in chain
+ enum SubMeshState { WAIT_PROPAG_HYP, // propagation hyp or local 1D hyp is missing
HAS_PROPAG_HYP, // propag hyp on this submesh
IN_CHAIN, // submesh is in propagation chain
LAST_IN_CHAIN, // submesh with local 1D hyp breaking a chain
struct PropagationMgrData : public EventListenerData
{
bool myForward; //!< true if a curve of edge in chain is codirected with one of source edge
- PropagationMgrData( SubMeshState state ): EventListenerData(true) {
- myType = state;
+ PropagationMgrData( SubMeshState state=WAIT_PROPAG_HYP ): EventListenerData(true) {
+ myType = state; myForward = true;
+ }
+ void Init() {
+ myType = WAIT_PROPAG_HYP; mySubMeshes.clear(); myForward = true;
}
SubMeshState State() const {
return (SubMeshState) myType;
}
+ void SetState(SubMeshState state) {
+ myType = state;
+ }
void SetSource(SMESH_subMesh* sm ) {
mySubMeshes.clear(); if ( sm ) mySubMeshes.push_back( sm );
}
+ void AddSource(SMESH_subMesh* sm ) {
+ if ( sm ) mySubMeshes.push_back( sm );
+ }
void SetChain(list< SMESH_subMesh* >& chain ) {
mySubMeshes.clear(); mySubMeshes.splice( mySubMeshes.end(), chain );
}
SMESH_subMesh* GetSource() const;
};
- //=============================================================================
- /*!
- * \brief return filter to find Propagation hypothesis
- */
- SMESH_HypoFilter & propagHypFilter()
- {
- static SMESH_HypoFilter propagHypFilter
- ( SMESH_HypoFilter::HasName( StdMeshers_Propagation::GetName ()));
- return propagHypFilter;
- }
//=============================================================================
/*!
* \brief return static PropagationMgr
}
//=============================================================================
/*!
- * \brief return PropagationMgrData
+ * \brief return PropagationMgrData found on a submesh
*/
- PropagationMgrData* getData(SMESH_subMesh* sm)
+ PropagationMgrData* findData(SMESH_subMesh* sm)
{
if ( sm )
return static_cast< PropagationMgrData* >( sm->GetEventListenerData( getListener() ));
}
//=============================================================================
/*!
- * \brief return PropagationMgrData
+ * \brief return PropagationMgrData found on theEdge submesh
*/
- PropagationMgrData* getData(SMESH_Mesh& theMesh, const TopoDS_Shape& theEdge)
+ PropagationMgrData* findData(SMESH_Mesh& theMesh, const TopoDS_Shape& theEdge)
{
if ( theEdge.ShapeType() == TopAbs_EDGE )
- return getData( theMesh.GetSubMeshContaining( theEdge ) );
+ return findData( theMesh.GetSubMeshContaining( theEdge ) );
return 0;
}
- //================================================================================
+ //=============================================================================
/*!
- * \brief Return an iterator on a chain
+ * \brief return existing or a new PropagationMgrData
*/
- SMESH_subMeshIteratorPtr PropagationMgrData::GetChain() const
+ PropagationMgrData* getData(SMESH_subMesh* sm)
{
- typedef SMESH_subMesh* TsubMesh;
- typedef SMDS_SetIterator< TsubMesh, list< TsubMesh >::const_iterator > TIterator;
- switch ( State() ) {
- case HAS_PROPAG_HYP:
- return SMESH_subMeshIteratorPtr
- ( new TIterator( mySubMeshes.begin(), mySubMeshes.end() ));
- case IN_CHAIN:
- case LAST_IN_CHAIN:
- if ( mySubMeshes.empty() ) break;
- return getData( mySubMeshes.front() )->GetChain();
- default:;
+ PropagationMgrData* data = findData( sm );
+ if ( !data && sm ) {
+ data = new PropagationMgrData();
+ sm->SetEventListener( getListener(), data, sm );
}
- return SMESH_subMeshIteratorPtr
- ( new TIterator( mySubMeshes.end(), mySubMeshes.end() ));
+ return data;
}
- //================================================================================
+ //=============================================================================
/*!
- * \brief Return a propagation source submesh
+ * \brief Returns a local 1D hypothesis used for theEdge
*/
- SMESH_subMesh* PropagationMgrData::GetSource() const
+ const SMESH_Hypothesis* getLocal1DHyp (SMESH_Mesh& theMesh,
+ const TopoDS_Shape& theEdge)
{
- if ( myType == IN_CHAIN || myType == LAST_IN_CHAIN )
- if ( !mySubMeshes.empty() )
- return mySubMeshes.front();
- return 0;
+ static SMESH_HypoFilter hypo;
+ hypo.Init( hypo.HasDim( 1 )).
+ AndNot ( hypo.IsAlgo() ).
+ AndNot ( hypo.IsAssignedTo( theMesh.GetMeshDS()->ShapeToMesh() ));
+ return theMesh.GetHypothesis( theEdge, hypo, true );
}
//=============================================================================
/*!
- * \brief Returns a local 1D hypothesis used for theEdge
+ * \brief Returns a propagation hypothesis assigned to theEdge
*/
- const SMESH_Hypothesis* isLocal1DHypothesis (SMESH_Mesh& theMesh,
- const TopoDS_Shape& theEdge)
+ const SMESH_Hypothesis* getProagationHyp (SMESH_Mesh& theMesh,
+ const TopoDS_Shape& theEdge)
{
- static SMESH_HypoFilter hypo ( SMESH_HypoFilter::HasDim( 1 ));
- hypo.AndNot( hypo.IsAlgo() ).AndNot( hypo.IsAssignedTo( theMesh.GetMeshDS()->ShapeToMesh() ));
-
- return theMesh.GetHypothesis( theEdge, hypo, true );
+ static SMESH_HypoFilter propagHypFilter
+ ( SMESH_HypoFilter::HasName( StdMeshers_Propagation::GetName ()));
+ return theMesh.GetHypothesis( theEdge, propagHypFilter, true );
+ }
+ //================================================================================
+ /*!
+ * \brief Return an iterator on a list of submeshes
+ */
+ SMESH_subMeshIteratorPtr iterate( list<SMESH_subMesh*>::const_iterator from,
+ list<SMESH_subMesh*>::const_iterator to)
+ {
+ typedef SMESH_subMesh* TsubMesh;
+ typedef SMDS_SetIterator< TsubMesh, list< TsubMesh >::const_iterator > TIterator;
+ return SMESH_subMeshIteratorPtr ( new TIterator( from, to ));
}
//================================================================================
/*!
*/
bool buildPropagationChain ( SMESH_subMesh* theMainSubMesh )
{
- // const TopoDS_Shape& theMainEdge = theMainSubMesh->GetSubShape();
-// if (theMainEdge.ShapeType() != TopAbs_EDGE) return true;
-
-// SMESH_Mesh* mesh = theMainSubMesh->GetFather();
-
-// EventListenerData* chainData = new PropagationMgrData(HAS_PROPAG_HYP);
-// theMainSubMesh->SetEventListener( getListener(), chainData, theMainSubMesh );
-
-// // Edges submeshes, on which the 1D hypothesis will be propagated from <theMainEdge>
-// list<SMESH_subMesh*> & chain = chainData->mySubMeshes;
-
-// // List of edges, added to chain on the previous cycle pass
-// TopTools_ListOfShape listPrevEdges;
-// listPrevEdges.Append(theMainEdge.Oriented( TopAbs_FORWARD ));
-
-// // 4____3____2____3____4____5
-// // | | | | | | Number in the each knot of
-// // | | | | | | grid indicates cycle pass,
-// // 3____2____1____2____3____4 on which corresponding edge
-// // | | | | | | (perpendicular to the plane
-// // | | | | | | of view) will be found.
-// // 2____1____0____1____2____3
-// // | | | | | |
-// // | | | | | |
-// // 3____2____1____2____3____4
-
-// // Collect all edges pass by pass
-// while (listPrevEdges.Extent() > 0) {
-// // List of edges, added to chain on this cycle pass
-// TopTools_ListOfShape listCurEdges;
-
-// // Find the next portion of edges
-// TopTools_ListIteratorOfListOfShape itE (listPrevEdges);
-// for (; itE.More(); itE.Next()) {
-// TopoDS_Shape anE = itE.Value();
-
-// // Iterate on faces, having edge <anE>
-// TopTools_ListIteratorOfListOfShape itA (mesh->GetAncestors(anE));
-// for (; itA.More(); itA.Next()) {
-// TopoDS_Shape aW = itA.Value();
-
-// // There are objects of different type among the ancestors of edge
-// if (aW.ShapeType() == TopAbs_WIRE) {
-// TopoDS_Shape anOppE;
-
-// BRepTools_WireExplorer aWE (TopoDS::Wire(aW));
-// Standard_Integer nb = 1, found = 0;
-// TopTools_Array1OfShape anEdges (1,4);
-// for (; aWE.More(); aWE.Next(), nb++) {
-// if (nb > 4) {
-// found = 0;
-// break;
-// }
-// anEdges(nb) = aWE.Current();
-// if (!_mapAncestors.Contains(anEdges(nb))) {
-// MESSAGE("WIRE EXPLORER HAVE GIVEN AN INVALID EDGE !!!");
-// break;
-// }
-// if (anEdges(nb).IsSame(anE)) found = nb;
-// }
-
-// if (nb == 5 && found > 0) {
-// // Quadrangle face found, get an opposite edge
-// Standard_Integer opp = ( found + 2 ) % 4;
-// anOppE = anEdges(opp);
-
-// // add anOppE to aChain if ...
-// PropagationMgrData* data = getData( *mesh, anOppE );
-// if ( !data || data->State() == WAIT_PROPAG_HYP ) { // ... anOppE is not in any chain
-// if ( !isLocal1DHypothesis( *mesh, anOppE )) { // ... no other 1d hyp on anOppE
-// // Add found edge to the chain oriented so that to
-// // have it co-directed with a forward MainEdge
-// TopAbs_Orientation ori = anE.Orientation();
-// if ( anEdges(opp).Orientation() == anEdges(found).Orientation() )
-// ori = TopAbs::Reverse( ori );
-// anOppE.Orientation( ori );
-// aChain.Add(anOppE);
-// listCurEdges.Append(anOppE);
-// }
-// else {
-// // Collision!
-// MESSAGE("Error: Collision between propagated hypotheses");
-// CleanMeshOnPropagationChain(theMainEdge);
-// aChain.Clear();
-// return ( aMainHyp == isLocal1DHypothesis(aMainEdgeForOppEdge) );
-// }
-// }
-// }
-// } // if (nb == 5 && found > 0)
-// } // if (aF.ShapeType() == TopAbs_WIRE)
-// } // for (; itF.More(); itF.Next())
-// } // for (; itE.More(); itE.Next())
-
-// listPrevEdges = listCurEdges;
-// } // while (listPrevEdges.Extent() > 0)
-
-// CleanMeshOnPropagationChain(theMainEdge);
+ DBGMSG( "buildPropagationChain from " << theMainSubMesh->GetId() );
+ const TopoDS_Shape& theMainEdge = theMainSubMesh->GetSubShape();
+ if (theMainEdge.ShapeType() != TopAbs_EDGE) return true;
+
+ SMESH_Mesh* mesh = theMainSubMesh->GetFather();
+
+ PropagationMgrData* chainData = getData( theMainSubMesh );
+ chainData->SetState( HAS_PROPAG_HYP );
+
+ // Edge submeshes, to which the 1D hypothesis will be propagated from theMainEdge
+ list<SMESH_subMesh*> & chain = chainData->mySubMeshes;
+ chain.clear();
+ chain.push_back( theMainSubMesh );
+
+ TopTools_MapOfShape checkedShapes;
+ checkedShapes.Add( theMainEdge );
+
+ list<SMESH_subMesh*>::iterator smIt = chain.begin();
+ for ( ; smIt != chain.end(); ++smIt )
+ {
+ const TopoDS_Edge& anE = TopoDS::Edge( (*smIt)->GetSubShape() );
+ PropagationMgrData* data = findData( *smIt );
+ if ( !data ) continue;
+
+ // Iterate on faces, having edge <anE>
+ TopTools_ListIteratorOfListOfShape itA (mesh->GetAncestors(anE));
+ for (; itA.More(); itA.Next())
+ {
+ // there are objects of different type among the ancestors of edge
+ if ( itA.Value().ShapeType() != TopAbs_WIRE || !checkedShapes.Add( itA.Value() ))
+ continue;
+
+ // Get ordered edges and find index of anE in a sequence
+ BRepTools_WireExplorer aWE (TopoDS::Wire(itA.Value()));
+ vector<TopoDS_Edge> edges;
+ edges.reserve(4);
+ int edgeIndex = 0;
+ for (; aWE.More(); aWE.Next()) {
+ TopoDS_Edge edge = aWE.Current();
+ edge.Orientation( aWE.Orientation() );
+ if ( edge.IsSame( anE ))
+ edgeIndex = edges.size();
+ edges.push_back( edge );
+ }
+
+ // Find an edge opposite to anE
+ TopoDS_Edge anOppE;
+ if ( edges.size() < 4 ) {
+ continue; // too few edges
+ }
+ else if ( edges.size() == 4 ) {
+ int oppIndex = edgeIndex + 2;
+ if ( oppIndex > 3 ) oppIndex -= 4;
+ anOppE = edges[ oppIndex ];
+ }
+ else {
+ // count nb sides
+ TopoDS_Edge prevEdge = anE;
+ int nbSide = 0, eIndex = edgeIndex + 1;
+ for ( int i = 0; i < edges.size(); ++i, ++eIndex )
+ {
+ if ( eIndex == edges.size() )
+ eIndex = 0;
+ if ( !SMESH_Algo::IsContinuous( prevEdge, edges[ eIndex ])) {
+ nbSide++;
+ }
+ else {
+ // check that anE is not a part of a composite side
+ if ( anE.IsSame( prevEdge ) || anE.IsSame( edges[ eIndex ])) {
+ anOppE.Nullify(); break;
+ }
+ }
+ if ( nbSide == 2 ) { // opposite side
+ if ( !anOppE.IsNull() ) {
+ // composite opposite side -> stop propagation
+ anOppE.Nullify(); break;
+ }
+ anOppE = edges[ eIndex ];
+ }
+ if ( nbSide == 5 ) {
+ anOppE.Nullify(); break; // too many sides
+ }
+ prevEdge = edges[ eIndex ];
+ }
+ if ( anOppE.IsNull() )
+ continue;
+ if ( nbSide != 4 ) {
+ DBGMSG( nbSide << " sides in wire #" << mesh->GetMeshDS()->ShapeToIndex( itA.Value() ) << " - SKIP" );
+ continue;
+ }
+ }
+ if ( anOppE.IsNull() || !checkedShapes.Add( anOppE ))
+ continue;
+ SMESH_subMesh* oppSM = mesh->GetSubMesh( anOppE );
+ PropagationMgrData* oppData = getData( oppSM );
+
+ // Add anOppE to aChain if ...
+ if ( oppData->State() == WAIT_PROPAG_HYP ) // ... anOppE is not in any chain
+ {
+ oppData->SetSource( theMainSubMesh );
+ if ( !getLocal1DHyp( *mesh, anOppE )) // ... no 1d hyp on anOppE
+ {
+ oppData->myForward = data->myForward;
+ if ( edges[ edgeIndex ].Orientation() == anOppE.Orientation() )
+ oppData->myForward = !oppData->myForward;
+ chain.push_back( oppSM );
+ oppSM->ComputeStateEngine( SMESH_subMesh::CLEAN );
+ oppData->SetState( IN_CHAIN );
+ DBGMSG( "set IN_CHAIN on " << oppSM->GetId() );
+ }
+ else {
+ oppData->SetState( LAST_IN_CHAIN );
+ DBGMSG( "set LAST_IN_CHAIN on " << oppSM->GetId() );
+ }
+ }
+ else if ( oppData->State() == LAST_IN_CHAIN ) // anOppE breaks other chain
+ {
+ DBGMSG( "encounters LAST_IN_CHAIN on " << oppSM->GetId() );
+ oppData->AddSource( theMainSubMesh );
+ }
+ } // loop on face ancestors
+ } // loop on the chain
+
+ // theMainSubMesh must not be in a chain
+ chain.pop_front();
+
return true;
}
//================================================================================
/*!
* \brief Clear propagation chain
*/
- //================================================================================
-
bool clearPropagationChain( SMESH_subMesh* subMesh )
{
- if ( PropagationMgrData* data = getData( subMesh )) {
- if ( data->State() == IN_CHAIN )
+ DBGMSG( "clearPropagationChain from " << subMesh->GetId() );
+ if ( PropagationMgrData* data = findData( subMesh ))
+ {
+ switch ( data->State() ) {
+ case IN_CHAIN:
return clearPropagationChain( data->GetSource() );
+
+ case HAS_PROPAG_HYP: {
+ SMESH_subMeshIteratorPtr smIt = data->GetChain();
+ while ( smIt->more() ) {
+ SMESH_subMesh* sm = smIt->next();
+ getData( sm )->Init();
+ sm->ComputeStateEngine( SMESH_subMesh::CLEAN );
+ }
+ data->Init();
+ break;
+ }
+ case LAST_IN_CHAIN: {
+ SMESH_subMeshIteratorPtr smIt = iterate( data->mySubMeshes.begin(),
+ data->mySubMeshes.end());
+ while ( smIt->more() )
+ clearPropagationChain( smIt->next() );
+ data->Init();
+ break;
+ }
+ default:;
+ }
return true;
}
return false;
- }
+ }
+
+
+ //================================================================================
+ /*!
+ * \brief Return an iterator on chain submeshes
+ */
+ //================================================================================
+
+ SMESH_subMeshIteratorPtr PropagationMgrData::GetChain() const
+ {
+ switch ( State() ) {
+ case HAS_PROPAG_HYP:
+ return iterate( mySubMeshes.begin(), mySubMeshes.end() );
+ case IN_CHAIN:
+ if ( mySubMeshes.empty() ) break;
+ return getData( mySubMeshes.front() )->GetChain();
+ default:;
+ }
+ return iterate( mySubMeshes.end(), mySubMeshes.end() );
+ }
+ //================================================================================
+ /*!
+ * \brief Return a propagation source submesh
+ */
+ //================================================================================
+
+ SMESH_subMesh* PropagationMgrData::GetSource() const
+ {
+ if ( myType == IN_CHAIN )
+ if ( !mySubMeshes.empty() )
+ return mySubMeshes.front();
+ return 0;
+ }
//================================================================================
/*!
* \brief Constructor
*/
+ //================================================================================
+
PropagationMgr::PropagationMgr()
: SMESH_subMeshEventListener( false ) // won't be deleted by submesh
{}
/*!
* \brief Set PropagationMgr on a submesh
*/
+ //================================================================================
+
void PropagationMgr::Set(SMESH_subMesh * submesh)
{
- EventListenerData* data = EventListenerData::MakeData(submesh,WAIT_PROPAG_HYP);
-
+ DBGMSG( "PropagationMgr::Set() on " << submesh->GetId() );
+ EventListenerData* data = new PropagationMgrData();
submesh->SetEventListener( getListener(), data, submesh );
const SMESH_Hypothesis * propagHyp =
- submesh->GetFather()->GetHypothesis( submesh->GetSubShape(), propagHypFilter(), true );
+ getProagationHyp( *submesh->GetFather(), submesh->GetSubShape() );
if ( propagHyp )
getListener()->ProcessEvent( SMESH_subMesh::ADD_HYP,
SMESH_subMesh::ALGO_EVENT,
data,
propagHyp);
}
+ //================================================================================
+ /*!
+ * \brief Return an edge from which hypotheses are propagated
+ */
+ //================================================================================
+ TopoDS_Edge PropagationMgr::GetSource(SMESH_subMesh * submesh)
+ {
+ if ( PropagationMgrData* data = findData( submesh )) {
+ if ( data->State() == IN_CHAIN ) {
+ if ( SMESH_subMesh* sm = data->GetSource() )
+ {
+ TopoDS_Shape edge = sm->GetSubShape();
+ edge = edge.Oriented( data->myForward ? TopAbs_FORWARD : TopAbs_REVERSED );
+ DBGMSG( " GetSource() = edge " << sm->GetId() << " REV = " << (!data->myForward));
+ if ( edge.ShapeType() == TopAbs_EDGE )
+ return TopoDS::Edge( edge );
+ }
+ }
+ }
+ return TopoDS_Edge();
+ }
//================================================================================
/*!
* \brief React on events on 1D submeshes
void PropagationMgr::ProcessEvent(const int event,
const int eventType,
SMESH_subMesh* subMesh,
- SMESH_subMeshEventListenerData* data,
+ SMESH_subMeshEventListenerData* listenerData,
const SMESH_Hypothesis* hyp)
{
- if ( !data )
+ if ( !listenerData )
return;
if ( !hyp || hyp->GetType() != SMESHDS_Hypothesis::PARAM_ALGO || hyp->GetDim() != 1 )
return;
if ( eventType != SMESH_subMesh::ALGO_EVENT )
return;
+ DBGMSG( "PropagationMgr::ProcessEvent() on " << subMesh->GetId() );
- bool isPropagHyp = ( StdMeshers_Propagation::GetName() != hyp->GetName() );
+ bool isPropagHyp = ( StdMeshers_Propagation::GetName() == hyp->GetName() );
- switch ( data->myType ) {
+ PropagationMgrData* data = static_cast<PropagationMgrData*>( listenerData );
+ switch ( data->State() ) {
- case WAIT_PROPAG_HYP: { // no propagation hyp in chain
+ case WAIT_PROPAG_HYP: { // propagation hyp or local 1D hyp is missing
// --------------------------------------------------------
- if ( !isPropagHyp )
+ bool hasPropagHyp = ( isPropagHyp ||
+ getProagationHyp( *subMesh->GetFather(), subMesh->GetSubShape()) );
+ if ( !hasPropagHyp )
return;
- if ( !isLocal1DHypothesis( *subMesh->GetFather(), subMesh->GetSubShape()))
+ bool hasLocal1DHyp = getLocal1DHyp( *subMesh->GetFather(), subMesh->GetSubShape());
+ if ( !hasLocal1DHyp )
return;
if ( event == SMESH_subMesh::ADD_HYP ||
- event == SMESH_subMesh::ADD_FATHER_HYP ) // add propagation hyp
+ event == SMESH_subMesh::ADD_FATHER_HYP ) // add local or propagation hyp
{
+ DBGMSG( "ADD_HYP propagation to WAIT_PROPAG_HYP " << subMesh->GetId() );
// build propagation chain
- clearPropagationChain( subMesh );
buildPropagationChain( subMesh );
}
return;
switch ( event ) {
case SMESH_subMesh::REMOVE_HYP:
case SMESH_subMesh::REMOVE_FATHER_HYP: // remove propagation hyp
- if ( isPropagHyp )
+ if ( isPropagHyp && !getProagationHyp( *subMesh->GetFather(), subMesh->GetSubShape()) )
{
+ DBGMSG( "REMOVE_HYP propagation from HAS_PROPAG_HYP " << subMesh->GetId() );
// clear propagation chain
+ clearPropagationChain( subMesh );
}
return;
case SMESH_subMesh::MODIF_HYP: // hyp modif
// clear mesh in a chain
+ DBGMSG( "MODIF_HYP on HAS_PROPAG_HYP " << subMesh->GetId() );
+ SMESH_subMeshIteratorPtr smIt = data->GetChain();
+ while ( smIt->more() ) {
+ SMESH_subMesh* smInChain = smIt->next();
+ smInChain->AlgoStateEngine( SMESH_subMesh::MODIF_HYP,
+ (SMESH_Hypothesis*) hyp );
+ }
return;
}
return;
}
case IN_CHAIN: { // submesh is in propagation chain
// --------------------------------------------------------
- if ( event == SMESH_subMesh::ADD_HYP ) // add local hypothesis
- if ( isPropagHyp )
- ; // collision
- else
- ; // rebuild propagation chain
- return;
+ if ( event == SMESH_subMesh::ADD_HYP ) { // add local hypothesis
+ if ( isPropagHyp ) { // propagation hyp added
+ DBGMSG( "ADD_HYP propagation on IN_CHAIN " << subMesh->GetId() );
+ // collision - do nothing
+ }
+ else { // 1D hyp added
+ // rebuild propagation chain
+ DBGMSG( "ADD_HYP 1D on IN_CHAIN " << subMesh->GetId() );
+ SMESH_subMesh* sourceSM = data->GetSource();
+ clearPropagationChain( sourceSM );
+ buildPropagationChain( sourceSM );
+ }
+ }
+ return;
}
case LAST_IN_CHAIN: { // submesh with local 1D hyp, breaking a chain
// --------------------------------------------------------
- if ( event == SMESH_subMesh::REMOVE_HYP ) // remove local hyp
- ; // rebuild propagation chain
+ if ( event == SMESH_subMesh::REMOVE_HYP ) { // remove local hyp
+ // rebuild propagation chain
+ DBGMSG( "REMOVE_HYP 1D from LAST_IN_CHAIN " << subMesh->GetId() );
+ list<SMESH_subMesh*> sourceSM = data->mySubMeshes;
+ clearPropagationChain( subMesh );
+ SMESH_subMeshIteratorPtr smIt = iterate( sourceSM.begin(), sourceSM.end());
+ while ( smIt->more() )
+ buildPropagationChain( smIt->next() );
+ }
return;
}
} // switch by SubMeshState
}
+
} // namespace
static void SetPropagationMgr(SMESH_subMesh* subMesh);
/*!
- * \brief Return an edge from which hypotheses are propagated from
+ * \brief Return an edge from which hypotheses are propagated
* \param theMesh - mesh
* \param theEdge - edge to which hypotheses are propagated
* \retval TopoDS_Edge - source edge, also passing orientation
:SMESH_Hypothesis(hypId, studyId, gen)
{
_name = "QuadranglePreference";
- _param_algo_dim = 2; // is used by StdMeshers_Quadrangle_2D
+ _param_algo_dim = -2; // auxiliary used by StdMeshers_Quadrangle_2D
}
//=============================================================================
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FacePosition.hxx"
-#include <BRepAdaptor_Curve.hxx>
-#include <BRep_Tool.hxx>
-#include <BRepLProp.hxx>
#include <BRepTools.hxx>
#include <BRepTools_WireExplorer.hxx>
+#include <BRep_Tool.hxx>
#include <Geom_Surface.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom2d_Curve.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <GCPnts_UniformAbscissa.hxx>
-#include <TopExp.hxx>
+#include <NCollection_DefineArray2.hxx>
#include <Precision.hxx>
-#include <gp_Pnt2d.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <TColStd_SequenceOfReal.hxx>
#include <TColgp_SequenceOfXY.hxx>
-#include <NCollection_DefineArray2.hxx>
+#include <TopExp.hxx>
+#include <TopoDS.hxx>
#include "utilities.h"
#include "Utils_ExceptHandlers.hxx"
aStatus = SMESH_Hypothesis::HYP_OK;
// there is only one compatible Hypothesis so far
- const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape);
+ const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape, false);
myQuadranglePreference = hyps.size() > 0;
return isOk;
//=============================================================================
bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
- const TopoDS_Shape& aShape) throw (SALOME_Exception)
+ const TopoDS_Shape& aShape)// throw (SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
+ // PAL14921. Enable catching std::bad_alloc and Standard_OutOfMemory outside
+ //Unexpect aCatchSalomeException);
SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
aMesh.GetSubMesh(aShape);
const vector<UVPtStruct>& uv_e2 = quad->side[2]->GetUVPtStruct(true,1 );
const vector<UVPtStruct>& uv_e3 = quad->side[3]->GetUVPtStruct(false,0);
+ if ( uv_e0.empty() || uv_e1.empty() || uv_e2.empty() || uv_e3.empty() )
+ return error( COMPERR_BAD_INPUT_MESH );
+
double eps = Precision::Confusion();
// Boundary quadrangles
FaceQuadStruct* StdMeshers_Quadrangle_2D::CheckNbEdges(SMESH_Mesh & aMesh,
const TopoDS_Shape & aShape)
- throw(SALOME_Exception)
+ //throw(SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
-
const TopoDS_Face & F = TopoDS::Face(aShape);
const bool ignoreMediumNodes = _quadraticMesh;
sideEdges.splice( sideEdges.end(), edges, edges.begin()); // edges.front() -> sideEdges.end()
bool sameSide = true;
while ( !edges.empty() && sameSide ) {
- GeomAbs_Shape cont = SMESH_Algo::Continuity( sideEdges.back(), edges.front() );
- sameSide = ( cont >= GeomAbs_G1 );
+ sameSide = SMESH_Algo::IsContinuous( sideEdges.back(), edges.front() );
if ( sameSide )
sideEdges.splice( sideEdges.end(), edges, edges.begin());
}
if ( nbSides == 0 ) { // go backward from the first edge
sameSide = true;
while ( !edges.empty() && sameSide ) {
- GeomAbs_Shape cont = SMESH_Algo::Continuity( sideEdges.front(), edges.back() );
- sameSide = ( cont >= GeomAbs_G1 );
+ sameSide = SMESH_Algo::IsContinuous( sideEdges.front(), edges.back() );
if ( sameSide )
sideEdges.splice( sideEdges.begin(), edges, --edges.end());
}
FaceQuadStruct *StdMeshers_Quadrangle_2D::CheckAnd2Dcompute
(SMESH_Mesh & aMesh,
const TopoDS_Shape & aShape,
- const bool CreateQuadratic) throw(SALOME_Exception)
+ const bool CreateQuadratic) //throw(SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
-
_quadraticMesh = CreateQuadratic;
FaceQuadStruct *quad = CheckNbEdges(aMesh, aShape);
if(!quad) return 0;
// set normalized grid on unit square in parametric domain
- SetNormalizedGrid(aMesh, aShape, quad);
+ bool stat = SetNormalizedGrid(aMesh, aShape, quad);
+ if(!stat) {
+ if(!quad)
+ delete quad;
+ quad = 0;
+ }
return quad;
}
bool StdMeshers_Quadrangle_2D::SetNormalizedGrid (SMESH_Mesh & aMesh,
const TopoDS_Shape& aShape,
- FaceQuadStruct* & quad) throw (SALOME_Exception)
+ FaceQuadStruct* & quad) //throw (SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
// Algorithme décrit dans "Génération automatique de maillages"
// P.L. GEORGE, MASSON, § 6.4.1 p. 84-85
// traitement dans le domaine paramétrique 2d u,v
const vector<UVPtStruct>& uv_e3 = GetUVPtStructIn( quad, 3, nbvertic - 1 );
if ( uv_e0.empty() || uv_e1.empty() || uv_e2.empty() || uv_e3.empty() )
- return error(dfltErr(), "Can't find nodes on sides");
+ //return error( "Can't find nodes on sides");
+ return error( COMPERR_BAD_INPUT_MESH );
// nodes Id on "in" edges
if (! quad->isEdgeOut[0]) {
bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh,
const TopoDS_Shape& aShape,
FaceQuadStruct* quad)
- throw (SALOME_Exception)
{
- Unexpect aCatch(SalomeException);
-
SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
const TopoDS_Face& F = TopoDS::Face(aShape);
Handle(Geom_Surface) S = BRep_Tool::Surface(F);
- const TopoDS_Wire& W = BRepTools::OuterWire(F);
+// const TopoDS_Wire& W = BRepTools::OuterWire(F);
bool WisF = true;
// if(W.Orientation()==TopAbs_FORWARD)
// WisF = true;
typedef uvPtStruct UVPtStruct;
typedef struct faceQuadStruct
{
- //int nbPts[4];
- //TopoDS_Edge edge[4];
vector< StdMeshers_FaceSide*> side;
- //double first[4];
- //double last[4];
- //bool isEdgeForward[4];
bool isEdgeOut[4]; // true, if an edge has more nodes, than the opposite
- //UVPtStruct* uv_edges[4];
UVPtStruct* uv_grid;
~faceQuadStruct();
} FaceQuadStruct;
SMESH_Hypothesis::Hypothesis_Status& aStatus);
virtual bool Compute(SMESH_Mesh& aMesh,
- const TopoDS_Shape& aShape)
- throw (SALOME_Exception);
+ const TopoDS_Shape& aShape);
FaceQuadStruct* CheckAnd2Dcompute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape,
- const bool CreateQuadratic)
- throw (SALOME_Exception);
+ const bool CreateQuadratic);
protected:
FaceQuadStruct* CheckNbEdges(SMESH_Mesh& aMesh,
- const TopoDS_Shape& aShape)
- throw (SALOME_Exception);
+ const TopoDS_Shape& aShape);
bool SetNormalizedGrid(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape,
- FaceQuadStruct*& quad)
- throw (SALOME_Exception);
+ FaceQuadStruct*& quad);
/**
* Special function for creation only quandrangle faces
*/
bool ComputeQuadPref(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape,
- FaceQuadStruct* quad)
- throw (SALOME_Exception);
+ FaceQuadStruct* quad);
UVPtStruct* LoadEdgePoints2(SMESH_Mesh& aMesh,
const TopoDS_Face& F, const TopoDS_Edge& E,
#include "utilities.h"
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Shell.hxx>
-#include <BRepTools.hxx>
#include <BRepAdaptor_Curve.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
+#include <BRepTools.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Shell.hxx>
+#include <TopoDS_Solid.hxx>
#include <gp.hxx>
#include <gp_Pnt.hxx>
using namespace std;
-#define RETURN_BAD_RESULT(msg) { MESSAGE(msg); return false; }
+#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
#define gpXYZ(n) gp_XYZ(n->X(),n->Y(),n->Z())
typedef StdMeshers_ProjectionUtils TAssocTool;
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// check aShape that must have 2 shells
+/* PAL16229
if ( TAssocTool::Count( aShape, TopAbs_SOLID, 0 ) != 1 ||
TAssocTool::Count( aShape, TopAbs_SHELL, 0 ) != 2 )
{
aStatus = HYP_BAD_GEOMETRY;
return false;
}
-
+*/
myNbLayerHypo = 0;
myDistributionHypo = 0;
// to delete helper at exit from Compute()
std::auto_ptr<SMESH_MesherHelper> helperDeleter( myHelper );
- // get 2 shells
+ // get 2 shells
TopoDS_Solid solid = TopoDS::Solid( aShape );
TopoDS_Shell outerShell = BRepTools::OuterShell( solid );
TopoDS_Shape innerShell;
if ( !outerShell.IsSame( It.Value() ))
innerShell = It.Value();
if ( nbShells != 2 )
- return error(COMPERR_BAD_SHAPE, SMESH_Comment("Must be 2 shells but not")<<nbShells);
+ return error(COMPERR_BAD_SHAPE, SMESH_Comment("Must be 2 shells but not ")<<nbShells);
// ----------------------------------
// Associate subshapes of the shells
TopoDS_Face outFace = TopoDS::Face( exp.Current() );
TopoDS_Face inFace;
if ( !shape2ShapeMap.IsBound( outFace )) {
- return error(dfltErr(),SMESH_Comment("Corresponding inner face not found for face #" )
+ return error(SMESH_Comment("Corresponding inner face not found for face #" )
<< meshDS->ShapeToIndex( outFace ));
} else {
inFace = TopoDS::Face( shape2ShapeMap( outFace ));
vector< const TNodeColumn* > columns( nbNodes );
for ( int i = 0; i < nbNodes; ++i )
{
- const SMDS_MeshNode* n = face->GetNode( i );
- TNode2ColumnMap::iterator n_col = node2columnMap.find( n );
- if ( n_col != node2columnMap.end() )
+ const SMDS_MeshNode* nIn = face->GetNode( i );
+ TNode2ColumnMap::iterator n_col = node2columnMap.find( nIn );
+ if ( n_col != node2columnMap.end() ) {
columns[ i ] = & n_col->second;
- else
- columns[ i ] = makeNodeColumn( node2columnMap, n, nodeIn2OutMap[ n ] );
+ }
+ else {
+ TNodeNodeMap::iterator nInOut = nodeIn2OutMap.find( nIn );
+ if ( nInOut == nodeIn2OutMap.end() )
+ RETURN_BAD_RESULT("No matching node for "<< nIn->GetID() <<
+ " in face "<< face->GetID());
+ columns[ i ] = makeNodeColumn( node2columnMap, nIn, nInOut->second );
+ }
}
StdMeshers_Prism_3D::AddPrisms( columns, myHelper );
const StdMeshers_LayerDistribution* hyp)
{
double len = pIn.Distance( pOut );
- if ( len <= DBL_MIN ) return error(dfltErr(),"Too close points of inner and outer shells");
+ if ( len <= DBL_MIN ) return error("Too close points of inner and outer shells");
if ( !hyp || !hyp->GetLayerDistribution() )
- return error(dfltErr(), "Invalid LayerDistribution hypothesis");
+ return error( "Invalid LayerDistribution hypothesis");
myUsedHyps.clear();
myUsedHyps.push_back( hyp->GetLayerDistribution() );
TopoDS_Edge edge = BRepBuilderAPI_MakeEdge( pIn, pOut );
SMESH_Hypothesis::Hypothesis_Status aStatus;
if ( !StdMeshers_Regular_1D::CheckHypothesis( aMesh, edge, aStatus ))
- return error(dfltErr(), "StdMeshers_Regular_1D::CheckHypothesis() failed"
- "with LayerDistribution hypothesis");
+ return error( "StdMeshers_Regular_1D::CheckHypothesis() failed "
+ "with LayerDistribution hypothesis");
BRepAdaptor_Curve C3D(edge);
double f = C3D.FirstParameter(), l = C3D.LastParameter();
list< double > params;
- if ( !StdMeshers_Regular_1D::computeInternalParameters( C3D, len, f, l, params, false ))
- return error(dfltErr(),"StdMeshers_Regular_1D failed to compute layers distribution");
+ if ( !StdMeshers_Regular_1D::computeInternalParameters( aMesh, C3D, len, f, l, params, false ))
+ return error("StdMeshers_Regular_1D failed to compute layers distribution");
positions.clear();
positions.reserve( params.size() );
#include "StdMeshers_Deflection1D.hxx"
#include "StdMeshers_AutomaticLength.hxx"
#include "StdMeshers_SegmentLengthAroundVertex.hxx"
+#include "StdMeshers_Propagation.hxx"
#include "SMESH_Gen.hxx"
#include "SMESH_Mesh.hxx"
#include <BRepAdaptor_Curve.hxx>
#include <BRep_Tool.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopExp_Explorer.hxx>
#include <GCPnts_AbscissaPoint.hxx>
#include <GCPnts_UniformAbscissa.hxx>
#include <GCPnts_UniformDeflection.hxx>
#include <Precision.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
#include <string>
_compatibleHypothesis.push_back("AutomaticLength");
_compatibleHypothesis.push_back("QuadraticMesh"); // auxiliary !!!
+ _compatibleHypothesis.push_back("Propagation"); // auxiliary !!!
}
//=============================================================================
const StdMeshers_LocalLength * hyp =
dynamic_cast <const StdMeshers_LocalLength * >(theHyp);
ASSERT(hyp);
- _value[ BEG_LENGTH_IND ] = _value[ END_LENGTH_IND ] = hyp->GetLength();
+ //_value[ BEG_LENGTH_IND ] = _value[ END_LENGTH_IND ] = hyp->GetLength();
+ _value[ BEG_LENGTH_IND ] = hyp->GetLength();
+ _value[ END_LENGTH_IND ] = hyp->GetPrecision();
ASSERT( _value[ BEG_LENGTH_IND ] > 0 );
_hypType = LOCAL_LENGTH;
aStatus = SMESH_Hypothesis::HYP_OK;
StdMeshers_AutomaticLength * hyp = const_cast<StdMeshers_AutomaticLength *>
(dynamic_cast <const StdMeshers_AutomaticLength * >(theHyp));
ASSERT(hyp);
- _value[ BEG_LENGTH_IND ] = _value[ END_LENGTH_IND ] = hyp->GetLength( &aMesh, aShape );
+ //_value[ BEG_LENGTH_IND ] = _value[ END_LENGTH_IND ] = hyp->GetLength( &aMesh, aShape );
+ _value[ BEG_LENGTH_IND ] = hyp->GetLength( &aMesh, aShape );
+ _value[ END_LENGTH_IND ] = Precision::Confusion(); // ?? or set to zero?
ASSERT( _value[ BEG_LENGTH_IND ] > 0 );
_hypType = LOCAL_LENGTH;
aStatus = SMESH_Hypothesis::HYP_OK;
}
static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last,
- double length, bool theReverse,
+ double length, bool theReverse,
int nbSeg, Function& func,
list<double>& theParams)
{
// never do this way
//OSD::SetSignal( true );
- if( nbSeg<=0 )
+ if (nbSeg <= 0)
return false;
MESSAGE( "computeParamByFunc" );
int nbPnt = 1 + nbSeg;
vector<double> x(nbPnt, 0.);
- if( !buildDistribution( func, 0.0, 1.0, nbSeg, x, 1E-4 ) )
+ if (!buildDistribution(func, 0.0, 1.0, nbSeg, x, 1E-4))
return false;
MESSAGE( "Points:\n" );
char buf[1024];
- for( int i=0; i<=nbSeg; i++ )
+ for ( int i=0; i<=nbSeg; i++ )
{
sprintf( buf, "%f\n", float(x[i] ) );
MESSAGE( buf );
}
-
+
// apply parameters in range [0,1] to the space of the curve
// while (smIt->more()) {
// subMesh->SetEventListener( &listener, 0, smIt->next() );
// }
+ StdMeshers_Propagation::SetPropagationMgr( subMesh );
}
//=============================================================================
std::swap( algo._value[ BEG_LENGTH_IND ], algo._value[ END_LENGTH_IND ]);
}
list<double> params;
- if ( algo.computeInternalParameters( theC3d, L, from, to, params, false ))
+ if ( algo.computeInternalParameters( theMesh, theC3d, L, from, to, params, false ))
{
if ( isEnd1 ) params.reverse();
while ( 1 + nHalf-- )
*
*/
//=============================================================================
-bool StdMeshers_Regular_1D::computeInternalParameters(Adaptor3d_Curve& theC3d,
+bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
+ Adaptor3d_Curve& theC3d,
double theLength,
double theFirstU,
double theLastU,
list<double> & theParams,
- const bool theReverse)
+ const bool theReverse,
+ bool theConsiderPropagation)
{
theParams.clear();
{
// Local Length hypothesis
double nbseg = ceil(theLength / _value[ BEG_LENGTH_IND ]); // integer sup
+
+ // NPAL17873:
+ bool isFound = false;
+ if (theConsiderPropagation && !_mainEdge.IsNull()) // propagated from some other edge
+ {
+ // Advanced processing to assure equal number of segments in case of Propagation
+ SMESH_subMesh* sm = theMesh.GetSubMeshContaining(_mainEdge);
+ if (sm) {
+ bool computed = sm->IsMeshComputed();
+ if (!computed) {
+ if (sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE) {
+ sm->ComputeStateEngine(SMESH_subMesh::COMPUTE);
+ computed = sm->IsMeshComputed();
+ }
+ }
+ if (computed) {
+ SMESHDS_SubMesh* smds = sm->GetSubMeshDS();
+ int nb_segments = smds->NbElements();
+ if (nbseg - 1 <= nb_segments && nb_segments <= nbseg + 1) {
+ isFound = true;
+ nbseg = nb_segments;
+ }
+ }
+ }
+ }
+ if (!isFound) // not found by meshed edge in the propagation chain, use precision
+ {
+ double aPrecision = _value[ END_LENGTH_IND ];
+ double nbseg_prec = ceil((theLength / _value[ BEG_LENGTH_IND ]) - aPrecision);
+ if (nbseg_prec == (nbseg - 1)) nbseg--;
+ }
+
if (nbseg <= 0)
nbseg = 1; // degenerated edge
eltSize = theLength / nbseg;
}
GCPnts_UniformAbscissa Discret(theC3d, eltSize, f, l);
if ( !Discret.IsDone() )
- return error( dfltErr(), "GCPnts_UniformAbscissa failed");
+ return error( "GCPnts_UniformAbscissa failed");
int NbPoints = Discret.NbPoints();
for ( int i = 2; i < NbPoints; i++ )
GCPnts_AbscissaPoint Discret( theC3d, eltSize, param );
if ( !Discret.IsDone() ) break;
param = Discret.Parameter();
- if ( param > f && param < l )
+ if ( f < param && param < l )
theParams.push_back( param );
else
break;
eltSize *= q;
}
compensateError( a1, an, U1, Un, theLength, theC3d, theParams );
+ if (theReverse) theParams.reverse(); // NPAL18025
return true;
}
eltSize += q;
}
compensateError( a1, an, U1, Un, theLength, theC3d, theParams );
+ if (theReverse) theParams.reverse(); // NPAL18025
return true;
}
theParams.push_back( param );
}
return true;
-
}
default:;
*/
//=============================================================================
-bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape)
+bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & theShape)
{
if ( _hypType == NONE )
return false;
- SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
+ SMESHDS_Mesh * meshDS = theMesh.GetMeshDS();
- const TopoDS_Edge & EE = TopoDS::Edge(aShape);
+ const TopoDS_Edge & EE = TopoDS::Edge(theShape);
TopoDS_Edge E = TopoDS::Edge(EE.Oriented(TopAbs_FORWARD));
int shapeID = meshDS->ShapeToIndex( E );
list< double > params;
bool reversed = false;
if ( !_mainEdge.IsNull() )
- reversed = aMesh.IsReversedInChain( EE, _mainEdge );
+ reversed = ( _mainEdge.Orientation() == TopAbs_REVERSED );
BRepAdaptor_Curve C3d( E );
double length = EdgeLength( E );
- if ( ! computeInternalParameters( C3d, length, f, l, params, reversed )) {
+ if ( ! computeInternalParameters( theMesh, C3d, length, f, l, params, reversed, true )) {
return false;
}
- redistributeNearVertices( aMesh, C3d, length, params, VFirst, VLast );
+ redistributeNearVertices( theMesh, C3d, length, params, VFirst, VLast );
// edge extrema (indexes : 1 & NbPoints) already in SMDS (TopoDS_Vertex)
// only internal nodes receive an edge position with param on curve
const SMDS_MeshNode * idPrev = idFirst;
double parPrev = f;
double parLast = l;
-
+
+ /* NPAL18025
+ if (reversed) {
+ idPrev = idLast;
+ idLast = idFirst;
+ idFirst = idPrev;
+ parPrev = l;
+ parLast = f;
+ }
+ */
+
for (list<double>::iterator itU = params.begin(); itU != params.end(); itU++) {
double param = *itU;
gp_Pnt P = Curve->Value(param);
meshDS->SetMeshElementOnShape(edge, shapeID);
}
}
- else {
+ else
+ {
+ //MESSAGE("************* Degenerated edge! *****************");
+
// Edge is a degenerated Edge : We put n = 5 points on the edge.
const int NbPoints = 5;
BRep_Tool::Range( E, f, l ); // PAL15185
double du = (l - f) / (NbPoints - 1);
- //MESSAGE("************* Degenerated edge! *****************");
gp_Pnt P = BRep_Tool::Pnt(VFirst);
// get non-auxiliary assigned to aShape
int nbHyp = aMesh.GetHypotheses( aShape, compatibleFilter, _usedHypList, false );
- if (nbHyp == 0)
+ if (nbHyp == 0 && aShape.ShapeType() == TopAbs_EDGE)
{
// Check, if propagated from some other edge
- if (aShape.ShapeType() == TopAbs_EDGE &&
- aMesh.IsPropagatedHypothesis(aShape, _mainEdge))
+ _mainEdge = StdMeshers_Propagation::GetPropagationSource( aMesh, aShape );
+ if ( !_mainEdge.IsNull() )
{
// Propagation of 1D hypothesis from <aMainEdge> on this edge;
// get non-auxiliary assigned to _mainEdge
protected:
- virtual bool computeInternalParameters (Adaptor3d_Curve & theC3d,
- double theLength,
- double theFirstU,
- double theLastU,
- std::list< double > & theParameters,
- const bool theReverse);
+ virtual bool computeInternalParameters (SMESH_Mesh & theMesh,
+ Adaptor3d_Curve & theC3d,
+ double theLength,
+ double theFirstU,
+ double theLastU,
+ std::list<double> & theParameters,
+ const bool theReverse,
+ bool theConsiderPropagation = false);
virtual void redistributeNearVertices (SMESH_Mesh & theMesh,
Adaptor3d_Curve & theC3d,
BEG_LENGTH_IND = 0,
END_LENGTH_IND = 1,
DEFLECTION_IND = 0
- };
+ };
enum IValueIndex {
NB_SEGMENTS_IND = 0,
DISTR_TYPE_IND = 1,
- CONV_MODE_IND = 2
+ CONV_MODE_IND = 2
};
enum VValueIndex {
#ifndef _SMESH_SegmentAroundVertex_0D_HXX_
#define _SMESH_SegmentAroundVertex_0D_HXX_
+#include "SMESH_StdMeshers.hxx"
+
#include "SMESH_0D_Algo.hxx"
/*!
* \brief Algorithm existing in order just to enable assignation of
* StdMeshers_SegmentLengthAroundVertex hypothesis
*/
-class StdMeshers_SegmentAroundVertex_0D: public SMESH_0D_Algo
+class STDMESHERS_EXPORT StdMeshers_SegmentAroundVertex_0D: public SMESH_0D_Algo
{
public:
StdMeshers_SegmentAroundVertex_0D(int hypId, int studyId, SMESH_Gen* gen);
#ifndef _SMESH_SegmentLengthAroundVertex_HXX_
#define _SMESH_SegmentLengthAroundVertex_HXX_
+#include "SMESH_StdMeshers.hxx"
+
#include "SMESH_Hypothesis.hxx"
#include "Utils_SALOME_Exception.hxx"
* \brief This hypothesis specifies length of segments adjacent to the vertex the
* hypothesis is assigned to
*/
-class StdMeshers_SegmentLengthAroundVertex:public SMESH_Hypothesis
+class STDMESHERS_EXPORT StdMeshers_SegmentLengthAroundVertex:public SMESH_Hypothesis
{
public:
StdMeshers_SegmentLengthAroundVertex(int hypId, int studyId, SMESH_Gen * gen);
--- /dev/null
+// SMESH SMESH : implementaion of SMESH idl descriptions
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : StdMeshers_UseExisting_1D2D.cxx
+// Module : SMESH
+// Created : Fri Oct 20 11:37:07 2006
+// Author : Edward AGAPOV (eap)
+
+
+#include "StdMeshers_UseExisting_1D2D.hxx"
+
+//=======================================================================
+//function : StdMeshers_UseExisting_1D
+//purpose :
+//=======================================================================
+
+StdMeshers_UseExisting_1D::StdMeshers_UseExisting_1D
+ (int hypId, int studyId, SMESH_Gen* gen)
+ :SMESH_1D_Algo(hypId, studyId, gen)
+{
+ _name = "UseExisting_1D";
+ _shapeType = (1 << TopAbs_EDGE); // 1 bit per shape type
+}
+
+//=======================================================================
+//function : CheckHypothesis
+//purpose :
+//=======================================================================
+
+bool StdMeshers_UseExisting_1D::CheckHypothesis(SMESH_Mesh& ,
+ const TopoDS_Shape& ,
+ Hypothesis_Status& aStatus)
+{
+ return (aStatus = HYP_OK) == HYP_OK;
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+
+bool StdMeshers_UseExisting_1D::Compute(SMESH_Mesh&, const TopoDS_Shape&)
+{
+ // This algorithm exists to allow mesh generation by mesh edition functions in TUI mode
+ return true;
+}
+
+//=======================================================================
+//function : StdMeshers_UseExisting_2D
+//purpose :
+//=======================================================================
+
+StdMeshers_UseExisting_2D::StdMeshers_UseExisting_2D
+ (int hypId, int studyId, SMESH_Gen* gen)
+ :SMESH_2D_Algo(hypId, studyId, gen)
+{
+ _name = "UseExisting_2D";
+ _shapeType = (1 << TopAbs_FACE); // 1 bit per shape type
+}
+
+//=======================================================================
+//function : CheckHypothesis
+//purpose :
+//=======================================================================
+
+bool StdMeshers_UseExisting_2D::CheckHypothesis(SMESH_Mesh& ,
+ const TopoDS_Shape& ,
+ Hypothesis_Status& aStatus)
+{
+ return (aStatus = HYP_OK) == HYP_OK;
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+
+bool StdMeshers_UseExisting_2D::Compute(SMESH_Mesh&, const TopoDS_Shape&)
+{
+ // This algorithm exists to allow mesh generation by mesh edition functions in TUI mode
+ return true;
+}
--- /dev/null
+// SMESH SMESH : implementaion of SMESH idl descriptions
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : StdMeshers_UseExisting_1D2D.hxx
+// Module : SMESH
+
+#ifndef _SMESH_UseExisting_1D2D_HXX_
+#define _SMESH_UseExisting_1D2D_HXX_
+
+#include "SMESH_StdMeshers.hxx"
+
+#include "SMESH_1D_Algo.hxx"
+#include "SMESH_2D_Algo.hxx"
+
+/*!
+ * \brief 1D and 2D algorithms doing nothing to allow mesh generation
+ * by mesh edition functions in TUI mode
+ */
+class STDMESHERS_EXPORT StdMeshers_UseExisting_2D: public SMESH_2D_Algo
+{
+public:
+ StdMeshers_UseExisting_2D(int hypId, int studyId, SMESH_Gen* gen);
+
+ virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus);
+
+ virtual bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape);
+
+};
+
+class StdMeshers_UseExisting_1D: public SMESH_1D_Algo
+{
+public:
+ StdMeshers_UseExisting_1D(int hypId, int studyId, SMESH_Gen* gen);
+
+ virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus);
+
+ virtual bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape);
+
+};
+
+#endif
#define STDMESHERSGUI_EXPORT
#endif
-#endif
\ No newline at end of file
+#endif
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
-#else
-#include "CASCatch.hxx"
#endif
StdMeshersGUI_DistrPreview::StdMeshersGUI_DistrPreview( QWidget* p, StdMeshers::StdMeshers_NumberOfSegments_ptr h )
delete[] y;
x = y = 0;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
replot();
-#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
-#else
- } CASCatch_CATCH(Standard_Failure) {
-#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
}
}
bool StdMeshersGUI_DistrPreview::init( const QString& str )
{
bool parsed_ok = true;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString ) str.latin1() );
-#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
-#else
- } CASCatch_CATCH(Standard_Failure) {
-#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}
double res = 0.0;
ok = true;
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
OCC_CATCH_SIGNALS;
-#else
- CASCatch_TRY {
#endif
res = myExpr->Expression()->Evaluate( myVars, myValues );
-#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;
{
case EXPONENT:
{
-#ifdef NO_CAS_CATCH
try {
+#ifdef NO_CAS_CATCH
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 );
-#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;
*/
//================================================================================
-StdMeshersGUI_LayerDistributionParamWdg::StdMeshersGUI_LayerDistributionParamWdg
-( SMESH::SMESH_Hypothesis_ptr hyp,
- QDialog* dlg ): QHGroupBox(), myDlg( dlg )
+StdMeshersGUI_LayerDistributionParamWdg
+::StdMeshersGUI_LayerDistributionParamWdg(SMESH::SMESH_Hypothesis_ptr hyp,
+ const QString& theName,
+ QDialog* dlg):
+ QHGroupBox(), myName(theName), myDlg( dlg )
{
init();
set( hyp );
// Add to pop-up hypotheses of "Regular_1D" algo
myHypTypePopup->clear();
HypothesisData* algoData = SMESH::GetHypothesisData( "Regular_1D" );
- myHypTypes = SMESH::GetAvailableHypotheses( false, 0 );
+ myHypTypes = SMESH::GetAvailableHypotheses( false, 1 );
QStringList::const_iterator anIter = myHypTypes.begin();
for ( ; anIter != myHypTypes.end(); ++anIter )
{
try {
QWidget* parent = this;
if ( myDlg ) parent = myDlg->parentWidget();
- editor->edit( myHyp, parent );
+ editor->edit( myHyp, myName, parent );
}
catch(...) {
}
public:
StdMeshersGUI_LayerDistributionParamWdg(SMESH::SMESH_Hypothesis_ptr hyp,
- QDialog* dlg);
+ const QString& theName,
+ QDialog* dlg);
~StdMeshersGUI_LayerDistributionParamWdg();
SMESH::SMESH_Hypothesis_var GetHypothesis() { return myHyp; }
QPushButton* myEditButton;
QPopupMenu* myHypTypePopup;
QDialog* myDlg;
+ QString myName;
QString myParamValue;
QStringList myHypTypes;
StdMeshers::StdMeshers_NumberOfSegments_var h =
StdMeshers::StdMeshers_NumberOfSegments::_narrow( initParamsHypothesis() );
- HypothesisData* data = SMESH::GetHypothesisData( hypType() );
- h_data.myName = isCreation() && data ? data->Label : "";
+ h_data.myName = hypName();
h_data.myNbSeg = (int) h->GetNumberOfSegments();
int distr = (int) h->GetDistrType();
*/
//================================================================================
- SUIT_SelectionFilter* filterForShapeOfDim(const int dim,
- const int nbSubShapes = 0,
- const TopAbs_ShapeEnum subShapeType = TopAbs_SHAPE,
- const bool closed = false)
+ SUIT_SelectionFilter* filterForShapeOfDim(const int dim,
+ TopAbs_ShapeEnum subShapeType = TopAbs_SHAPE,
+ const int nbSubShapes = 0,
+ bool closed = false)
{
TColStd_MapOfInteger shapeTypes;
switch ( dim ) {
case 0: shapeTypes.Add( TopAbs_VERTEX ); break;
- case 1: shapeTypes.Add( TopAbs_EDGE ); break;
- case 2: shapeTypes.Add( TopAbs_FACE ); break;
+ case 1:
+ if ( subShapeType == TopAbs_SHAPE ) subShapeType = TopAbs_EDGE;
+ shapeTypes.Add( TopAbs_EDGE );
+ shapeTypes.Add( TopAbs_COMPOUND ); // for a group
+ break;
+ case 2:
+ if ( subShapeType == TopAbs_SHAPE ) subShapeType = TopAbs_FACE;
+ shapeTypes.Add( TopAbs_FACE );
+ shapeTypes.Add( TopAbs_COMPOUND ); // for a group
+ break;
case 3:
shapeTypes.Add( TopAbs_SHELL );
shapeTypes.Add( TopAbs_SOLID );
StdMeshers::StdMeshers_LocalLength::_narrow( hypothesis() );
h->SetLength( params[0].myValue.toDouble() );
+ h->SetPrecision( params[1].myValue.toDouble() );
}
else if( hypType()=="SegmentLengthAroundVertex" )
{
{
HypothesisData* data = SMESH::GetHypothesisData( hypType() );
item.myName = tr( "SMESH_NAME" );
- item.myValue = data ? data->Label : QString();
+ item.myValue = data ? hypName() : QString();
p.append( item );
customWidgets()->append(0);
}
item.myName = tr("SMESH_LOCAL_LENGTH_PARAM");
item.myValue = h->GetLength();
p.append( item );
+ item.myName = tr("SMESH_LOCAL_LENGTH_PRECISION");
+ item.myValue = h->GetPrecision();
+ p.append( item );
}
else if( hypType()=="SegmentLengthAroundVertex" )
{
item.myName = tr( "SMESH_LAYERS_DISTRIBUTION" ); p.append( item );
customWidgets()->append
- ( new StdMeshersGUI_LayerDistributionParamWdg( h->GetLayerDistribution(), dlg()));
+ ( new StdMeshersGUI_LayerDistributionParamWdg( h->GetLayerDistribution(), hypName(), dlg()));
}
else if( hypType()=="ProjectionSource1D" )
{
StdMeshers::StdMeshers_ProjectionSource3D::_narrow( hyp );
item.myName = tr( "SMESH_SOURCE_3DSHAPE" ); p.append( item );
- customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 3 , 6, TopAbs_FACE, true ),
+ customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 3, TopAbs_FACE, 6, true ),
h->GetSource3DShape()));
item.myName = tr( "SMESH_SOURCE_MESH" ); p.append( item );
customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( MESH ),
*/
//================================================================================
-void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget( QWidget* w, const int ) const
+void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget (QWidget* w, const int) const
{
SMESHGUI_SpinBox* sb = w->inherits( "SMESHGUI_SpinBox" ) ? ( SMESHGUI_SpinBox* )w : 0;
if( hypType()=="LocalLength" && sb )
{
- sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 );
+ if (sb->name() == tr("SMESH_LOCAL_LENGTH_PARAM"))
+ sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, 6 );
+ else if (sb->name() == tr("SMESH_LOCAL_LENGTH_PRECISION"))
+ sb->RangeStepAndValidator( 0.0, 1.0, 0.05, 6 );
}
else if( hypType()=="Arithmetic1D" && sb )
{
msgid "SMESH_LOCAL_LENGTH_PARAM"
msgstr "Length"
+msgid "SMESH_LOCAL_LENGTH_PRECISION"
+msgstr "Precision"
+
msgid "SMESH_LOCAL_LENGTH_TITLE"
msgstr "Hypothesis Construction"
StdMeshers_LayerDistribution_i.cxx \
StdMeshers_CompositeSegment_1D_i.cxx \
StdMeshers_SegmentAroundVertex_0D_i.cxx \
- StdMeshers_SegmentLengthAroundVertex_i.cxx
+ StdMeshers_SegmentLengthAroundVertex_i.cxx \
+ StdMeshers_UseExisting_1D2D_i.cxx
# additionnal information to compil and link file
libStdMeshersEngine_la_CPPFLAGS = \
//=============================================================================
StdMeshers_LocalLength_i::StdMeshers_LocalLength_i( PortableServer::POA_ptr thePOA,
- int theStudyId,
- ::SMESH_Gen* theGenImpl )
- : SALOME::GenericObj_i( thePOA ),
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl )
+ : SALOME::GenericObj_i( thePOA ),
SMESH_Hypothesis_i( thePOA )
{
MESSAGE( "StdMeshers_LocalLength_i::StdMeshers_LocalLength_i" );
myBaseImpl = new ::StdMeshers_LocalLength( theGenImpl->GetANewId(),
- theStudyId,
- theGenImpl );
+ theStudyId,
+ theGenImpl );
}
//=============================================================================
* Set length
*/
//=============================================================================
-
void StdMeshers_LocalLength_i::SetLength( CORBA::Double theLength )
throw ( SALOME::SALOME_Exception )
{
SMESH::TPythonDump() << _this() << ".SetLength( " << theLength << " )";
}
+//=============================================================================
+/*!
+ * StdMeshers_LocalLength_i::SetPrecision
+ *
+ * Set length
+ */
+//=============================================================================
+void StdMeshers_LocalLength_i::SetPrecision( CORBA::Double thePrecision )
+ throw ( SALOME::SALOME_Exception )
+{
+ MESSAGE( "StdMeshers_LocalLength_i::SetPrecision" );
+ ASSERT( myBaseImpl );
+ try {
+ this->GetImpl()->SetPrecision( thePrecision );
+ }
+ catch ( SALOME_Exception& S_ex ) {
+ THROW_SALOME_CORBA_EXCEPTION( S_ex.what(),
+ SALOME::BAD_PARAM );
+ }
+
+ // Update Python script
+ SMESH::TPythonDump() << _this() << ".SetPrecision( " << thePrecision << " )";
+}
+
//=============================================================================
/*!
* StdMeshers_LocalLength_i::GetLength
* Get length
*/
//=============================================================================
-
CORBA::Double StdMeshers_LocalLength_i::GetLength()
{
MESSAGE( "StdMeshers_LocalLength_i::GetLength" );
return this->GetImpl()->GetLength();
}
+//=============================================================================
+/*!
+ * StdMeshers_LocalLength_i::GetPrecision
+ *
+ * Get precision
+ */
+//=============================================================================
+CORBA::Double StdMeshers_LocalLength_i::GetPrecision()
+{
+ MESSAGE( "StdMeshers_LocalLength_i::GetPrecision" );
+ ASSERT( myBaseImpl );
+ return this->GetImpl()->GetPrecision();
+}
+
//=============================================================================
/*!
* StdMeshers_LocalLength_i::GetImpl
* Get implementation
*/
//=============================================================================
-
::StdMeshers_LocalLength* StdMeshers_LocalLength_i::GetImpl()
{
MESSAGE( "StdMeshers_LocalLength_i::GetImpl" );
{
return type == SMESH::DIM_1D;
}
-
// Set length
void SetLength( CORBA::Double theLength )
throw ( SALOME::SALOME_Exception );
+ // Set precision
+ void SetPrecision( CORBA::Double thePrecision )
+ throw ( SALOME::SALOME_Exception );
+
// Get length
CORBA::Double GetLength();
+ // Get precision
+ CORBA::Double GetPrecision();
// Get implementation
::StdMeshers_LocalLength* GetImpl();
// Module : SMESH
// $Header$
+using namespace std;
#include "StdMeshers_NumberOfSegments_i.hxx"
#include "SMESH_Gen_i.hxx"
#include "SMESH_Gen.hxx"
#include <TCollection_AsciiString.hxx>
-using namespace std;
-
//=============================================================================
/*!
* StdMeshers_NumberOfSegments_i::StdMeshers_NumberOfSegments_i
CORBA::Long conv )
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::BuildDistribution" );
ASSERT( myBaseImpl );
try
{
CORBA::Long conv )
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::BuildDistribution" );
ASSERT( myBaseImpl );
std::vector<double> tbl( func.length() );
void StdMeshers_NumberOfSegments_i::SetNumberOfSegments( CORBA::Long theSegmentsNumber )
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetNumberOfSegments" );
ASSERT( myBaseImpl );
try {
this->GetImpl()->SetNumberOfSegments( theSegmentsNumber );
CORBA::Long StdMeshers_NumberOfSegments_i::GetNumberOfSegments()
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetNumberOfSegments" );
ASSERT( myBaseImpl );
return this->GetImpl()->GetNumberOfSegments();
}
void StdMeshers_NumberOfSegments_i::SetDistrType(CORBA::Long typ)
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetDistrType" );
ASSERT( myBaseImpl );
try {
this->GetImpl()->SetDistrType( (::StdMeshers_NumberOfSegments::DistrType) typ );
CORBA::Long StdMeshers_NumberOfSegments_i::GetDistrType()
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetDistrType" );
ASSERT( myBaseImpl );
return this->GetImpl()->GetDistrType();
}
void StdMeshers_NumberOfSegments_i::SetScaleFactor( CORBA::Double theScaleFactor )
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetScaleFactor" );
ASSERT( myBaseImpl );
try {
this->GetImpl()->SetScaleFactor( theScaleFactor );
CORBA::Double StdMeshers_NumberOfSegments_i::GetScaleFactor()
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetScaleFactor" );
ASSERT( myBaseImpl );
double scale;
try {
void StdMeshers_NumberOfSegments_i::SetTableFunction(const SMESH::double_array& table)
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetTableFunction" );
ASSERT( myBaseImpl );
std::vector<double> tbl( table.length() );
for (int i = 0; i < table.length(); i++)
SMESH::double_array* StdMeshers_NumberOfSegments_i::GetTableFunction()
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetTableFunction" );
ASSERT( myBaseImpl );
const std::vector<double>* tbl;
try {
void StdMeshers_NumberOfSegments_i::SetExpressionFunction(const char* expr)
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetExpressionFunction" );
ASSERT( myBaseImpl );
try {
this->GetImpl()->SetExpressionFunction( expr );
char* StdMeshers_NumberOfSegments_i::GetExpressionFunction()
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetExpressionFunction" );
ASSERT( myBaseImpl );
const char* expr;
try {
void StdMeshers_NumberOfSegments_i::SetConversionMode(CORBA::Long conv )
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::SetConversionMode" );
ASSERT( myBaseImpl );
try {
this->GetImpl()->SetConversionMode( conv );
CORBA::Long StdMeshers_NumberOfSegments_i::ConversionMode()
throw ( SALOME::SALOME_Exception )
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::ConversionMode" );
ASSERT( myBaseImpl );
int conv;
try {
::StdMeshers_NumberOfSegments* StdMeshers_NumberOfSegments_i::GetImpl()
{
- MESSAGE( "StdMeshers_NumberOfSegments_i::GetImpl" );
return ( ::StdMeshers_NumberOfSegments* )myBaseImpl;
}
// Module : SMESH
// $Header$
+using namespace std;
+
#include "StdMeshers_ProjectionSource1D_i.hxx"
#include "SMESH_Gen_i.hxx"
#include "StdMeshers_ObjRefUlils.hxx"
-using namespace std;
-
//=============================================================================
/*!
* StdMeshers_ProjectionSource1D_i::StdMeshers_ProjectionSource1D_i
//=============================================================================
/*!
- * Sets source <edge> to take a mesh pattern from
+ * Sets source <edge> or a group containing edges to take a mesh pattern from
*/
//=============================================================================
//=============================================================================
/*!
- * Returns the source edge
+ * Returns the source edge or a group containing edge
*/
//=============================================================================
virtual ~StdMeshers_ProjectionSource1D_i();
/*!
- * Sets source <edge> to take a mesh pattern from
+ * Sets source <edge> or a group containing edges to take a mesh pattern from
*/
void SetSourceEdge(GEOM::GEOM_Object_ptr edge)
throw ( SALOME::SALOME_Exception );
/*!
- * Returns the source edge
+ * Returns the source edge or a group containing edges
*/
GEOM::GEOM_Object_ptr GetSourceEdge();
--- /dev/null
+// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : StdMeshers_Projection_3D_i.cxx
+// Moved here from SMESH_Projection_3D_i.cxx
+// Author : Paul RASCLE, EDF
+// Module : SMESH
+// $Header$
+
+#include "StdMeshers_UseExisting_1D2D_i.hxx"
+
+#include "SMESH_Gen.hxx"
+
+#include "utilities.h"
+
+//=============================================================================
+/*!
+ * StdMeshers_UseExisting_1D_i::StdMeshers_UseExisting_1D_i
+ */
+//=============================================================================
+
+StdMeshers_UseExisting_1D_i::StdMeshers_UseExisting_1D_i
+ ( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl )
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA ),
+ SMESH_Algo_i( thePOA ),
+ SMESH_1D_Algo_i( thePOA )
+{
+ MESSAGE( "StdMeshers_UseExisting_1D_i::StdMeshers_UseExisting_1D_i" );
+ myBaseImpl = new ::StdMeshers_UseExisting_1D( theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl );
+}
+//-----------------------------------------------------------------------------
+
+StdMeshers_UseExisting_1D_i::~StdMeshers_UseExisting_1D_i()
+{
+ MESSAGE( "StdMeshers_UseExisting_1D_i::~StdMeshers_UseExisting_1D_i" );
+}
+//-----------------------------------------------------------------------------
+
+::StdMeshers_UseExisting_1D* StdMeshers_UseExisting_1D_i::GetImpl()
+{
+ MESSAGE( "StdMeshers_UseExisting_1D_i::GetImpl" );
+ return ( ::StdMeshers_UseExisting_1D* )myBaseImpl;
+}
+
+
+//=============================================================================
+/*!
+ * StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i
+ */
+//=============================================================================
+
+StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i
+ ( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl )
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA ),
+ SMESH_Algo_i( thePOA ),
+ SMESH_2D_Algo_i( thePOA )
+{
+ MESSAGE( "StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i" );
+ myBaseImpl = new ::StdMeshers_UseExisting_2D( theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl );
+}
+//-----------------------------------------------------------------------------
+
+StdMeshers_UseExisting_2D_i::~StdMeshers_UseExisting_2D_i()
+{
+ MESSAGE( "StdMeshers_UseExisting_2D_i::~StdMeshers_UseExisting_2D_i" );
+}
+//-----------------------------------------------------------------------------
+
+::StdMeshers_UseExisting_2D* StdMeshers_UseExisting_2D_i::GetImpl()
+{
+ MESSAGE( "StdMeshers_UseExisting_2D_i::GetImpl" );
+ return ( ::StdMeshers_UseExisting_2D* )myBaseImpl;
+}
--- /dev/null
+// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+//
+// Copyright (C) 2003 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
+// 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
+// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+// File : StdMeshers_UseExisting_1D2D.hxx
+// Module : SMESH
+// $Header$
+
+#ifndef _SMESH_UseExisting_1D2D_I_HXX_
+#define _SMESH_UseExisting_1D2D_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
+
+#include "SMESH_1D_Algo_i.hxx"
+#include "SMESH_2D_Algo_i.hxx"
+#include "StdMeshers_UseExisting_1D2D.hxx"
+
+class SMESH_Gen;
+
+/*!
+ * \brief 1D and 2D algorithms doing nothing to allow mesh generation
+ * by mesh edition functions in TUI mode
+ */
+
+class StdMeshers_UseExisting_1D_i:
+ public virtual POA_StdMeshers::StdMeshers_UseExisting_1D,
+ public virtual SMESH_1D_Algo_i
+{
+public:
+ // Constructor
+ StdMeshers_UseExisting_1D_i( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl );
+
+ // Destructor
+ virtual ~StdMeshers_UseExisting_1D_i();
+
+ // Get implementation
+ ::StdMeshers_UseExisting_1D* GetImpl();
+};
+
+class StdMeshers_UseExisting_2D_i:
+ public virtual POA_StdMeshers::StdMeshers_UseExisting_2D,
+ public virtual SMESH_2D_Algo_i
+{
+public:
+ // Constructor
+ StdMeshers_UseExisting_2D_i( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl );
+
+ // Destructor
+ virtual ~StdMeshers_UseExisting_2D_i();
+
+ // Get implementation
+ ::StdMeshers_UseExisting_2D* GetImpl();
+};
+
+
+#endif
#include "StdMeshers_Prism_3D_i.hxx"
#include "StdMeshers_SegmentAroundVertex_0D_i.hxx"
#include "StdMeshers_CompositeSegment_1D_i.hxx"
+#include "StdMeshers_UseExisting_1D2D_i.hxx"
template <class T> class StdHypothesisCreator_i:public HypothesisCreator_i<T>
aCreator = new StdHypothesisCreator_i<StdMeshers_SegmentAroundVertex_0D_i>;
else if (strcmp(aHypName, "CompositeSegment_1D") == 0)
aCreator = new StdHypothesisCreator_i<StdMeshers_CompositeSegment_1D_i>;
+ else if (strcmp(aHypName, "UseExisting_1D") == 0)
+ aCreator = new StdHypothesisCreator_i<StdMeshers_UseExisting_1D_i>;
+ else if (strcmp(aHypName, "UseExisting_2D") == 0)
+ aCreator = new StdHypothesisCreator_i<StdMeshers_UseExisting_2D_i>;
else ;
return aCreator;