#
fi
-if test -f ${GEOM_DIR}/bin/salome/libGEOM_Swig.py ; then
+if test -f ${GEOM_DIR}/bin/salome/geompy.py ; then
Geom_ok=yes
AC_MSG_RESULT(Using Geom module distribution in ${GEOM_DIR})
ORIG_DIR=`pwd`
CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
+GEOM_WITH_GUI="yes"
########################################################################
# Test if the KERNEL_ROOT_DIR is set correctly
# echo "failed : KERNEL_SRC variable is not correct !"
# exit
#fi
+
+for option
+do
+ case $option in
+ -with-ihm | --with-ihm)
+ GEOM_WITH_GUI="yes"
+ break;;
+ -without-ihm | --without-ihm | -with-ihm=no | --with-ihm=no)
+ GEOM_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 ${GEOM_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 NETGENPLUGIN_WITH_GUI variable
+sed -e s/GEOM_WITH_GUI=[a-z]*/GEOM_WITH_GUI=${GEOM_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 ${GUI_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 ${GEOM_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 || exit 1
+else
+ aclocal -I adm_local/unix/config_files \
+ -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files || exit 1
+fi
# ____________________________________________________________________
# libtoolize creates some configuration files (ltmain.sh,
CORBA=adm_local/unix/$corba
fi
-echo
-echo ---------------------------------------------
-echo testing openGL
-echo ---------------------------------------------
-echo
-CHECK_OPENGL
+GEOM_WITH_GUI=yes
-echo
-echo ---------------------------------------------
-echo testing QT
-echo ---------------------------------------------
-echo
+AM_CONDITIONAL(GEOM_ENABLE_GUI, [test "${GEOM_WITH_GUI}" = "yes"])
-CHECK_QT
+if test "${GEOM_WITH_GUI}" = "yes"; then
+ echo
+ echo ---------------------------------------------
+ echo testing openGL
+ echo ---------------------------------------------
+ echo
-echo
-echo ---------------------------------------------
-echo testing VTK
-echo ---------------------------------------------
-echo
+ CHECK_OPENGL
+
+ echo
+ echo ---------------------------------------------
+ echo testing QT
+ echo ---------------------------------------------
+ echo
+
+ CHECK_QT
+
+ 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 GEOM module necessary full GUI !"
+ exit
+ fi
+fi
echo
echo ---------------------------------------------
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 GEOM module necessary full GUI !"
- exit
-fi
-
-echo
-echo ---------------------------------------------
-echo Testing SALOME KERNEL module
+echo Testing Kernel
echo ---------------------------------------------
echo
CHECK_KERNEL
-echo
-echo ---------------------------------------------
-echo Testing SALOME GUI module
-echo ---------------------------------------------
-echo
-
-CHECK_SALOME_GUI
-
echo
echo ---------------------------------------------
echo Summary
echo
echo Configure
+
+if test "${GEOM_WITH_GUI}" = "yes"; then
variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok Kernel_ok SalomeGUI_ok"
+fi
+if test "${GEOM_WITH_GUI}" = "no"; then
+variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok hdf5_ok omniORB_ok boost_ok occ_ok doxygen_ok graphviz_ok Kernel_ok"
+fi
for var in $variables
do
./doc/Makefile \
./doc/salome/Makefile \
./doc/salome/gui/Makefile \
+ ./doc/salome/gui/GEOM/doxyfile \
+ ./doc/salome/gui/GEOM/doxyfile_py \
./doc/salome/tui/Makefile \
./doc/salome/tui/GEOM/doxyfile \
./doc/salome/tui/GEOM/sources/static/tree.js \
./src/GEOM_I/Makefile \
./src/GEOM_I_Superv/Makefile \
./src/GEOM_SWIG/Makefile \
+ ./src/GEOM_SWIG_WITHIHM/Makefile \
./src/GenerationGUI/Makefile \
./src/GroupGUI/Makefile \
./src/IGESExport/Makefile \
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Add Point on Edge</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:22px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { margin-left:40px; font-size:12pt; font-weight:bold; }
-img_whs4 { border:none; width:312px; height:388px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; margin-left:40px; text-indent:-40px; }
-p.whs6 { font-size:12pt; margin-left:40px; text-indent:-40px; font-weight:bold; }
-p.whs7 { margin-left:80px; font-size:12pt; text-indent:-40px; }
-img_whs8 { border:none; width:200px; height:231px; border-style:none; }
-img_whs9 { border:none; width:185px; height:231px; border-style:none; }
-p.whs10 { font-size:12pt; text-indent:-68px; margin-left:72px; }
-p.whs11 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs5 {text-indent:1pt; }";
- strNSS += "p.whs6 {text-indent:1pt; }";
- strNSS += "p.whs7 {text-indent:1pt; }";
- strNSS += "p.whs10 {text-indent: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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nAdd Point on Edge");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image42.gif" width="22px" height="22px" border="0" class="img_whs1"></font></span>Add Point on Edge</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span
- style="font-weight: bold;"><B>Add Point on Edge</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Repair - > Add Point on Edge.</B></span></p>
-
-<p> </p>
-
-<p class="whs2">This operation splits an edge in two in accordance
- with the specified mode (by length or by parameter) and a value specifying
- the position of the point on edge (for example val =0.5; mode = Length).
- This operation is available in <span style="font-weight: bold;"><B>OCC Viewer</B></span>
- only. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><b><span
- style="font-weight: normal;">T</b>he</span> Result <span style="font-weight: normal;">will
- be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object. </B></span></b></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i>
- </i><span style="font-style: italic;"><I>geompy.DivideEdge(Shape, EdgeID,
- Value, IsByParameter)</I></span>, where Shape is a shape which contains an
- edge to be divided, EdgeID is the ID of the edge to be divided, if it
- = -1, then Shape is an edge, Value is a paramter on the edge or a length.
- IsByParameter if it is True then Value is the edge parameter in the range
- [0:1] otherwise it is a length of the edge in the range [0:1]</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 Edge + 1 value setting the position of the point according to
- one of the selected modes</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/repair8.png" x-maintain-ratio="TRUE" width="312px" height="388px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6">Example:</p>
-
-<p class="whs5"> </p>
-
-<p class="whs7"><img src="image167.jpg" width="200px" height="231px" border="0" class="img_whs8"> <img src="image168.jpg" width="185px" height="231px" border="0" class="img_whs9"></p>
-
-<p class="whs10"> </p>
-
-<p class="whs11"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark7">Repairing
- Operations</a>. </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>Arc</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:normal; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:359px; float:none; border-style:none; }
-p.whs6 { color:#808080; font-size:12pt; }
-p.whs7 { font-size:12pt; color:#000000; font-weight:normal; }
-img_whs8 { border:none; width:400px; height:385px; float:none; border-style:none; }
-p.whs9 { font-size:12pt; color:#000000; }
-table.whs10 { x-cell-content-align:top; width:86.687%; border-spacing:0px; }
-col.whs11 { width:38.452%; }
-col.whs12 { width:28.09%; }
-col.whs13 { width:16.729%; }
-tr.whs14 { x-cell-content-align:top; }
-td.whs15 { width:38.452%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
-td.whs16 { width:28.09%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-top-style:none; }
-td.whs17 { width:16.729%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
-td.whs18 { width:38.452%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
-img_whs19 { border:none; float:none; width:316px; height:270px; border-style:none; }
-td.whs20 { width:28.09%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
-img_whs21 { border:none; width:212px; height:270px; float:none; border-style:none; }
-td.whs22 { width:16.729%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
-table.whs23 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs24 { width:100%; }
-tr.whs25 { x-cell-content-align:top; height:40px; }
-td.whs26 { width:100%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-left-style:none; border-top-style:none; border-right-style:none; }
-p.whs27 { margin-right:-6px; }
-tr.whs28 { x-cell-content-align:top; height:22px; }
-td.whs29 { width:100%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-left-style:none; border-right-style:none; }
-tr.whs30 { x-cell-content-align:top; height:41px; }
-tr.whs31 { x-cell-content-align:top; height:30px; }
-td.whs32 { width:100%; padding-right:10px; padding-left:10px; border-left-style:none; border-bottom-style:none; border-right-style:none; }
-p.whs33 { margin-left:0px; }
-img_whs34 { border:none; float:none; border-style:none; width:318px; height:269px; }
-p.whs35 { color:#808080; font-size:12pt; margin-left:40px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs27 {margin-right:1pt; }";
- strNSS += "p.whs33 {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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nArc");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Arc</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create an <span
- style="font-weight: bold;"><B>Arc</B></span> in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>New Entity - >
- Basic - > Arc</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><span
- style="font-weight: normal;">There are 2 algorithms to create an </span><span
- style="font-weight: bold;"><B>Arc</B></span><span style="font-weight: normal;">
- in the 3D space. </span></b></p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The Result
- of each operation will be a</span></b><b> <span style="font-weight: normal;">GEOM_Object
- (edge).</span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Firstly,
- you can define an</span> Arc <span style="font-weight: normal;">by</span>
- <span style="font-weight: normal;">three</span><span style="font-weight: bold;"><B>
- Points </B></span><span style="font-weight: normal;">that lie on it, where
- </span></b>Point1
- is the starting point, Point2
- is a middle point of the arc and Point3
- is the ending point of the arc.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-style: italic;"><I>geompy.MakeArc(Point1,
- Point2, Point3)</I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 3 vertices.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/arc.png" x-maintain-ratio="TRUE" width="312px" height="359px" border="0" class="img_whs5"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs7"><b style="font-weight: normal;">Secondly,
- you can define an <span style="font-weight: bold;"><B>Arc</B></span> by </b><span
- style="font-weight: bold;"><B>Center, Start</B></span> and <span style="font-weight: bold;"><B>End</B></span>
- points. The arc is built from the <span style="font-weight: bold;"><B>Start</B></span>
- point to the <span style="font-weight: bold;"><B>End</B></span> point. The radius
- of the arc is defined by the distance between the <span style="font-weight: bold;"><B>Center</B></span>
- point and the <span style="font-weight: bold;"><B>Start</B></span> point. The
- <span style="font-weight: bold;"><B>End</B></span> point defines the angle of
- the arc. If the distance between the <span style="font-weight: bold;"><B>Center</B></span>
- point and the <span style="font-weight: bold;"><B>End</B></span> point is not
- equal to the radius, the arc will be built anyway.</p>
-
-<p class="whs7"><span style="font-weight: bold;"><B>Reverse</B></span>
- radio button allows to change the direction of the arc.</p>
-
-<p class="whs7"><b style="font-weight: bold;">TUI Command:</b>
- <span style="font-style: italic;"><I>geompy.MakeArcCenter(Center Point, Start
- Point, End Point, boolean Sense)</I></span></p>
-
-<p class="whs7"><span style="font-style: italic;"><I><b
- style="font-weight: bold;">A</I></span>rguments:</b> Name + 3 vertices + Boolean.</p>
-
-<p class="whs7"> </p>
-
-<p class="whs4"><img src="pics/arc2.png" x-maintain-ratio="TRUE" width="400px" height="385px" border="0" class="img_whs8"></p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs9"> </p>
-
-<table x-use-null-cells cellspacing="0" width="86.687%" class="whs10">
-<col class="whs11">
-<col class="whs12">
-<col class="whs13">
-<col class="whs13">
-
-<tr valign="top" class="whs14">
-<td width="38.452%" class="whs15">
-<p>Arc by three points lying on it.</td>
-<td width="28.09%" class="whs16">
-<p>Arc by Start, End and Center.</td>
-<td colspan="1" rowspan="1" width="16.729%" class="whs17">
-<p> </td>
-<td width="16.729%" class="whs17">
-<p>Reversed arc.</td></tr>
-
-<tr valign="top" class="whs14">
-<td width="38.452%" class="whs18">
-<p class="whs6"><img src="pics/arcsn.png" x-maintain-ratio="TRUE" width="316px" height="270px" border="0" class="img_whs19"></td>
-<td width="28.09%" class="whs20">
-<p><img src="pics/arcsn1.png" x-maintain-ratio="TRUE" width="212px" height="270px" border="0" class="img_whs21"></td>
-<td colspan="1" rowspan="1" width="16.729%" class="whs22">
-<table x-use-null-cells cellspacing="0" width="100%" class="whs23">
-<col class="whs24">
-
-<tr valign="top" class="whs25">
-<td width="100%" class="whs26">
-<p class="whs27">Start Point</td></tr>
-
-<tr valign="top" class="whs28">
-<td width="100%" class="whs29">
-<p> </td></tr>
-
-<tr valign="top" class="whs30">
-<td width="100%" class="whs29">
-<p> </td></tr>
-
-<tr valign="top" class="whs25">
-<td width="100%" class="whs29">
-<p>Center Point</td></tr>
-
-<tr valign="top" class="whs31">
-<td width="100%" class="whs29">
-<p> </td></tr>
-
-<tr valign="top" class="whs25">
-<td width="100%" class="whs32">
-<p>End Point</td></tr>
-</table>
-<p class="whs33"> </p>
-<p> </td>
-<td width="16.729%" class="whs22">
-<p><img src="pics/arcsn2.png" x-maintain-ratio="TRUE" width="318px" height="269px" border="0" class="img_whs34"></td></tr>
-</table>
-
-<p class="whs35"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="basic_geometrical_objects.htm">Basic Geometric
- Objects</a>. </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>Archimede</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-family:'Times New Roman' , serif; font-size:12pt; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:367px; float:none; border-style:none; }
-img_whs6 { border:none; float:none; width:200px; height:180px; border-style:none; }
-img_whs7 { border:none; float:none; width:185px; height:180px; border-style:none; }
-img_whs8 { border:none; float:none; width:180px; height:180px; 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("Geometry module\nTransforming geometrical objects\nBasic Operations\nArchimede");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Archimede</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- an <span style="font-weight: bold;"><B>Archimede</B></span> operation in the
- Main Menu select <span style="font-weight: bold;"><B>Operations - > Archimede</B></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3">This
- operation creates a plane corresponding to the modeled water-line of the
- object plunged into the water (in Z direction).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result<span style="font-weight: normal;"> will be any</span></b> GEOM_Object.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:
- </b><span style="font-style: italic;"><I>geompy.Archimede(Shape,Weight,WaterDensity,MeshingDeflection)</I></span>,
- where Shape is a shape to put into the water, Weight is a weight of the
- shape, WaterDensity is
- density of water, MeshingDeflection is a deflection of the mesh, using
- to compute the section.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape +
- 3 values (Weight, Water Density & Meshing Deflection).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/archimede.png" x-maintain-ratio="TRUE" width="312px" height="367px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/archimedesn1.png" x-maintain-ratio="TRUE" width="200px" height="180px" border="0" class="img_whs6"> <img src="pics/archimedesn2.png" x-maintain-ratio="TRUE" width="185px" height="180px" border="0" class="img_whs7"> <img src="pics/archimedesn3.png" x-maintain-ratio="TRUE" 1height=180 1border=0 width="180px" height="180px" border="0" class="img_whs8"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of the use of <a href="basic_operations.htm#bookmark1">Basic Operations</a>.
- </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>Basic Geometrical Objects</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nBasic Geometrical Objects");
-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>Basic Geometrical Objects</h1>
-
-<h3><a name=bookmark>Creation of a Point</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.,
- 0., 0.)</p>
-
-<p class="whs1">p100 = geompy.MakeVertexWithRef(p0,
- 100., 100., 100.)</p>
-
-<p class="whs1">px = geompy.MakeVertex(100.,
- 0., 0.)</p>
-
-<p class="whs1">py = geompy.MakeVertex(0.,
- 100., 0.)</p>
-
-<p class="whs1">pz = geompy.MakeVertex(0.,
- 0., 100.)</p>
-
-<p> </p>
-
-<p># create a curve and a vertex on it</p>
-
-<p class="whs1">Arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs1">p_on_arc = geompy.MakeVertexOnCurve(Arc,
- 0.25)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_p0 =
- geompy.addToStudy(p0, "Vertex
- 0")</p>
-
-<p class="whs1">id_p100 =
- geompy.addToStudy(p100, "Vertex 100")</p>
-
-<p class="whs1">id_px =
- geompy.addToStudy(px, "Vertex
- X")</p>
-
-<p class="whs1">id_py =
- geompy.addToStudy(py, "Vertex
- Y")</p>
-
-<p class="whs1">id_pz =
- geompy.addToStudy(pz, "Vertex
- Z")</p>
-
-<p class="whs1">id_Arc =
- geompy.addToStudy(Arc, "Arc")</p>
-
-<p class="whs1">id_p_on_arc = geompy.addToStudy(p_on_arc,
- "Vertex on Arc")</p>
-
-<p> </p>
-
-<p># display vertices</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p0)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p100)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_Arc)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_p_on_arc)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark1>Creation of a Line</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.,
- 0., 0.)</p>
-
-<p class="whs1">p100 = geompy.MakeVertexWithRef(p0,
- 100., 100., 100.)</p>
-
-<p class="whs1">px = geompy.MakeVertex(100.,
- 0. , 0.
- )</p>
-
-<p class="whs1">py = geompy.MakeVertex(0.
- , 100.,
- 0. )</p>
-
-<p class="whs1">pz = geompy.MakeVertex(0.
- , 0. ,
- 100.)</p>
-
-<p> </p>
-
-<p># create a vector from two points</p>
-
-<p class="whs1">vxy =
- geompy.MakeVector(px, py)</p>
-
-<p> </p>
-
-<p># create a line from a point and a vector</p>
-
-<p class="whs1">line1 = geompy.MakeLine(pz,
- vxy)</p>
-
-<p> </p>
-
-<p>#create a line from two points</p>
-
-<p class="whs1">line2 = geompy.MakeLineTwoPnt(p0,
- p100)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_vxy =
- geompy.addToStudy(vxy, "Vector")</p>
-
-<p class="whs1">id_line1 =
- geompy.addToStudy(line1,"Line1")</p>
-
-<p class="whs1">id_line2 =
- geompy.addToStudy(line2,"Line2")</p>
-
-<p> </p>
-
-<p># display lines</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vxy)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_line1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_line2)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark2>Creation of a
- Circle</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.,
- 0., 0.)</p>
-
-<p class="whs1">px = geompy.MakeVertex(100.,
- 0. , 0.
- )</p>
-
-<p class="whs1">py = geompy.MakeVertex(0.
- , 100.,
- 0. )</p>
-
-<p class="whs1">pz = geompy.MakeVertex(0.
- , 0. ,
- 100.)</p>
-
-<p> </p>
-
-<p># create a vector on two points</p>
-
-<p class="whs1">vxy =
- geompy.MakeVector(px, py)</p>
-
-<p> </p>
-
-<p># create a circle from a point, a vector and a radius</p>
-
-<p class="whs1">circle1 = geompy.MakeCircle(pz,
- vxy, 30)</p>
-
-<p> </p>
-
-<p>#create a circle from three points</p>
-
-<p class="whs1">circle2 = geompy.MakeCircleThreePnt(p0,
- px, py)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_vxy =
- geompy.addToStudy(vxy, "Vector")</p>
-
-<p class="whs1">id_circle1 =
- geompy.addToStudy(circle1,"Circle1")</p>
-
-<p class="whs1">id_circle2 =
- geompy.addToStudy(circle2,"Circle2")</p>
-
-<p> </p>
-
-<p># display circles</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vxy)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_circle1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_circle2)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Creation of an Ellipse</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.,
- 0., 0.)</p>
-
-<p class="whs1">p50 = geompy.MakeVertex(50.,
- 50., 50.)</p>
-
-<p> </p>
-
-<p># create a vector from two points</p>
-
-<p class="whs1">vector =
- geompy.MakeVector(p0, p50)</p>
-
-<p> </p>
-
-<p># create an ellipse from a point, a vector and radiuses</p>
-
-<p class="whs1">ellipse = geompy.MakeEllipse(p50,
- vector, 50, 25)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_vector =
- geompy.addToStudy(vector, "Vector")</p>
-
-<p class="whs1">id_ellipse = geompy.addToStudy(ellipse,"Ellipse")</p>
-
-<p> </p>
-
-<p># display the ellipse and its normal vector</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vector)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_ellipse)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark4>Creation of a Curve</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.
- , 0. ,
- 0. )</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(50.
- , 100., 200.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(150.,
- 50., 100.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(100.,
- 150., 170.)</p>
-
-<p class="whs1">p4 = geompy.MakeVertex(200.,
- 200., 150.)</p>
-
-<p> </p>
-
-<p># create a polyline from a list of points</p>
-
-<p class="whs1">polyline = geompy.MakePolyline([p0,
- p1, p2, p3, p4])</p>
-
-<p> </p>
-
-<p># create a bezier curve from a list of points</p>
-
-<p class="whs1">bezier = geompy.MakeBezier([p0,
- p1, p2, p3, p4])</p>
-
-<p> </p>
-
-<p>#create a b-spline curve from a list of points</p>
-
-<p class="whs1">interpol = geompy.MakeInterpol([p0,
- p1, p2, p3, p4])</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_p0 =
- geompy.addToStudy(p0, "Point1")</p>
-
-<p class="whs1">id_p1 =
- geompy.addToStudy(p1, "Point2")</p>
-
-<p class="whs1">id_p2 =
- geompy.addToStudy(p2, "Point3")</p>
-
-<p class="whs1">id_p3 =
- geompy.addToStudy(p3, "Point4")</p>
-
-<p class="whs1">id_p4 =
- geompy.addToStudy(p4, "Point5")</p>
-
-<p class="whs1">id_polyline = geompy.addToStudy(polyline,
- "Polyline")</p>
-
-<p class="whs1">id_bezier =
- geompy.addToStudy(bezier, "Bezier")</p>
-
-<p class="whs1">id_interpol = geompy.addToStudy(interpol,
- "Interpol")</p>
-
-<p class="whs1"> </p>
-
-<p># display the points and the curves</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p0)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p3)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p4)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_polyline)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_bezier)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_interpol)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark5>Creation of a Vector</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(10.,
- 50., 20.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(70.,
- 70., 70.)</p>
-
-<p> </p>
-
-<p># create a vector from two points</p>
-
-<p class="whs1">vector1 = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a vector from the given components</p>
-
-<p class="whs1">vector2 = geompy.MakeVectorDXDYDZ(30,
- 30, 100)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_p1 =
- geompy.addToStudy(p1, "Point1")</p>
-
-<p class="whs1">id_p2 =
- geompy.addToStudy(p2, "Point2")</p>
-
-<p class="whs1">id_vector1 = geompy.addToStudy(vector1,"Vector1")</p>
-
-<p class="whs1">id_vector2 = geompy.addToStudy(vector2,"Vector2")</p>
-
-<p> </p>
-
-<p># display the points and the vectors</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vector1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_vector2)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark6>Creation of a Plane</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- 0., 0.,
- 100.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(100.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p class="whs1">p4 = geompy.MakeVertex(100.,
- 100., 0.)</p>
-
-<p class="whs1">p5 = geompy.MakeVertex(0.
- , 100.,
- 0.)</p>
-
-<p> </p>
-
-<p># create a vector from the given components</p>
-
-<p class="whs1">vector = geompy.MakeVectorDXDYDZ(100.,
- 100., 100.)</p>
-
-<p> </p>
-
-<p># create a vector from two points</p>
-
-<p class="whs1">vector_arc = geompy.MakeVector(p2,
- p5)</p>
-
-<p> </p>
-
-<p># create an arc from three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(p2,
- p4, p5)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vector_arc,
- arc])</p>
-
-<p> </p>
-
-<p># create a face</p>
-
-<p class="whs1">isPlanarWanted = 1</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- isPlanarWanted)</p>
-
-<p class="whs1">trimsize = 1000.</p>
-
-<p> </p>
-
-<p># create a plane from a point, a vector and a trimsize</p>
-
-<p class="whs1">plane1 = geompy.MakePlane(p1,
- vector, trimsize)</p>
-
-<p> </p>
-
-<p># create a plane from three points and a trimsize</p>
-
-<p class="whs1">plane2 = geompy.MakePlaneThreePnt(p1,
- p2, p3, trimsize)</p>
-
-<p> </p>
-
-<p># create a plane from the given face</p>
-
-<p class="whs1">plane3 = geompy.MakePlaneFace(face,
- trimsize)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_face =
- geompy.addToStudy(face, "Face")</p>
-
-<p class="whs1">id_plane1 = geompy.addToStudy(plane1,"Plane1")</p>
-
-<p class="whs1">id_plane2 = geompy.addToStudy(plane2,"Plane2")</p>
-
-<p class="whs1">id_plane3 = geompy.addToStudy(plane3,"Plane3")</p>
-
-<p> </p>
-
-<p># display the points and the vectors</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_plane1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_plane2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_plane3)</p>
-
-<p class="whs1">gg.setDisplayMode(id_plane1,1)</p>
-
-<p class="whs1">gg.setTransparency(id_plane1,0.5)</p>
-
-<p class="whs1">gg.setDisplayMode(id_plane2,1)</p>
-
-<p class="whs1">gg.setTransparency(id_plane2,0.5)</p>
-
-<p class="whs1">gg.setDisplayMode(id_plane3,1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setTransparency(id_plane3,0.5)</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>Basic Operations</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nTransformation\nBasic Operations");
-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>Basic Operations</h1>
-
-<h3><a name=bookmark>Partition</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p200 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0.,
- 0.,
- 100.)</p>
-
-<p> </p>
-
-<p># create a vector</p>
-
-<p class="whs1">vxyz = geompy.MakeVectorDXDYDZ(100.,
- 100., 100.)</p>
-
-<p> </p>
-
-<p># create a box from two points</p>
-
-<p class="whs1">box = geompy.MakeBoxTwoPnt(p0,
- p200)</p>
-
-<p> </p>
-
-<p># create a plane</p>
-
-<p class="whs1">trimsize =
- 500.</p>
-
-<p class="whs1">plane = geompy.MakePlane(pz,
- vxyz, trimsize)</p>
-
-<p> </p>
-
-<p># create partition objects</p>
-
-<p class="whs1">partition1 = geompy.MakePartition([box],
- [plane])</p>
-
-<p class="whs1">partition2 = geompy.Partition([box],
- [plane])</p>
-
-<p class="whs1">partition3 = geompy.MakeHalfPartition(box,
- plane)</p>
-
-<p class="whs1"> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,"Box")</p>
-
-<p class="whs1">id_plane = geompy.addToStudy(plane,"Plane")</p>
-
-<p class="whs1">id_partition1 = geompy.addToStudy(partition1,"MakePartition")</p>
-
-<p class="whs1">id_partition2 = geompy.addToStudy(partition2,"Partition")</p>
-
-<p class="whs1">id_partition3 = geompy.addToStudy(partition3,"MakeHalfPartition")</p>
-
-<p> </p>
-
-<p># display the partition objects and the plane</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_plane)</p>
-
-<p class="whs1">gg.setDisplayMode(id_plane,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_partition1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_partition2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_partition3)</span>
- </p>
-
-<h3><a name=bookmark1>Archimede</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p200 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p> </p>
-
-<p># create a box from two points</p>
-
-<p class="whs1">box = geompy.MakeBoxTwoPnt(p0,
- p200)</p>
-
-<p> </p>
-
-<p># perform an Archimede operation on the selected shape with selected
- parameters</p>
-
-<p class="whs1">weight =
- 1000000.</p>
-
-<p class="whs1">waterdensity = 1.</p>
-
-<p class="whs1">meshingdeflection
- = 0.01</p>
-
-<p class="whs1">archimede =
- geompy.Archimede(box, weight, waterdensity, meshingdeflection)</p>
-
-<p class="whs1"> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,"Box")</p>
-
-<p class="whs1">id_archimede = geompy.addToStudy(archimede,"Archimede")</p>
-
-<p> </p>
-
-<p># display the box and the result of Archimede operation</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_archimede)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_archimede,1)</span>
- </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>Blocks Operations</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nTransformation\nBlocks Operations");
-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>Blocks Operations</h1>
-
-<h3><a name=bookmark4>Multi Transformation</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create vertices</p>
-
-<p class="whs1">p_25_25_50 = geompy.MakeVertex(25.,
- 25., 50.)</p>
-
-<p class="whs1">p_50_25_25 = geompy.MakeVertex(50.,
- 25., 25.)</p>
-
-<p class="whs1">p_25_50_25 = geompy.MakeVertex(25.,
- 50., 25.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(50,
- 50, 50)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">top_face = geompy.GetFaceNearPoint(box,
- p_25_25_50)</p>
-
-<p class="whs1">yz_face = geompy.GetFaceNearPoint(box,
- p_50_25_25)</p>
-
-<p class="whs1">xz_face = geompy.GetFaceNearPoint(box,
- p_25_50_25)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">top_face_ind = geompy.GetSubShapeID(box,
- top_face)</p>
-
-<p class="whs1">yz_face_ind = geompy.GetSubShapeID(box,
- yz_face)</p>
-
-<p class="whs1">xz_face_ind = geompy.GetSubShapeID(box,
- xz_face)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># Multi-transformate
- block and glue the result</p>
-
-<p class="whs1">box_tr1 = geompy.MakeMultiTransformation1D(box,
- yz_face_ind, top_face_ind, 3)</p>
-
-<p class="whs1">box_tr2 = geompy.MakeMultiTransformation2D(box,
- xz_face_ind, yz_face_ind, 3, top_face_ind, 0, 2)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs1">id_box_tr1 = geompy.addToStudy(box_tr1,
- "Multi-transformed Block 1D")</p>
-
-<p class="whs1">id_box_tr2 = geompy.addToStudy(box_tr2,
- "Multi-transformed Block 2D")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box_tr1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box_tr2)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark5>Explode on Blocks</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box and a
- sphere</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p class="whs1">sphere = geompy.MakeSphereR(100)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># make a compound</p>
-
-<p class="whs1">compound = geompy.MakeCompound([box,
- sphere])</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># get all the blocks
- of the given compound, by criteria: min_nb_faces <= nb. of faces <=
- max_nb_faces</p>
-
-<p class="whs1">min_nb_faces = 6</p>
-
-<p class="whs1">max_nb_faces = 6</p>
-
-<p class="whs1">make_block_explode
- = geompy.MakeBlockExplode(compound, min_nb_faces, max_nb_faces)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_compound = geompy.addToStudy(compound,
- "Compound")</p>
-
-<p class="whs1">id_make_block_explode
- = geompy.addToStudyInFather(compound, make_block_explode[0], "MakeBlockExplode")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_compound)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_make_block_explode)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_make_block_explode,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark6>Propagate</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># build all possible
- propagation groups</p>
-
-<p class="whs1">listChains = geompy.Propagate(check_box)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">geompy.addToStudy(check_box,
- "Box")</p>
-
-<p class="whs1">ii = 1</p>
-
-<p class="whs1">for chain in listChains:</p>
-
-<p class="whs1"> geompy.addToStudyInFather(check_box,
- chain, "propagation chain " + `ii`)</p>
-
-<p class="whs1"> ii
- = ii + 1</p>
-
-<p class="whs1"> pass</p>
-
-<p> </p>
-
-<p><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">
-
-<html>
-
-<head>
-<title>Boolean Operations</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nTransformation\nBoolean Operations");
-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>Boolean Operations</h1>
-
-<h3><a name=bookmark>Fuse</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(25,
- 55, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a sphere</p>
-
-<p class="whs1">sphere = geompy.MakeSphereR(40)</p>
-
-<p> </p>
-
-<p># fuse</p>
-
-<p class="whs1">fuse = geompy.MakeFuse(cylinder,
- sphere)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cylinder = geompy.addToStudy(cylinder,
- "Cylinder")</p>
-
-<p class="whs1">id_sphere = geompy.addToStudy(sphere,
- "Sphere")</p>
-
-<p class="whs1">id_fuse = geompy.addToStudy(fuse,
- "Fuse")</p>
-
-<p> </p>
-
-<p># display results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cylinder)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cylinder,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sphere)</p>
-
-<p class="whs1">gg.setDisplayMode(id_sphere,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_fuse)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_fuse,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark1>Common</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(25,
- 55, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a sphere</p>
-
-<p class="whs1">sphere = geompy.MakeSphereR(40)</p>
-
-<p> </p>
-
-<p># make common</p>
-
-<p class="whs1">common = geompy.MakeCommon(cylinder,
- sphere)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_common = geompy.addToStudy(common,
- "Common")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_common)</p>
-
-<p class="whs1">gg.setDisplayMode(id_common,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark2>Cut </a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(25,
- 55, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a sphere</p>
-
-<p class="whs1">sphere = geompy.MakeSphereR(40)</p>
-
-<p> </p>
-
-<p>#cut</p>
-
-<p class="whs1">cut = geompy.MakeCut(cylinder,
- sphere)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cut = geompy.addToStudy(cut,
- "Cut")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cut)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cut,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Section</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(25,
- 55, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a sphere</p>
-
-<p class="whs1">sphere = geompy.MakeSphereR(40)</p>
-
-<p> </p>
-
-<p># make a section</p>
-
-<p class="whs1">section = geompy.MakeSection(cylinder,
- sphere)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_section = geompy.addToStudy(section,
- "Section")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_section)</p>
-
-<p class="whs1">gg.setDisplayMode(id_section,1)
- </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>Box</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-style:italic; }
-p.whs4 { margin-left:40px; }
-img_whs5 { border:none; width:312px; height:324px; float:none; border-style:none; }
-p.whs6 { font-weight:normal; }
-p.whs7 { font-size:12pt; margin-left:40px; }
-img_whs8 { border:none; width:312px; height:332px; float:none; border-style:none; }
-p.whs9 { font-size:12pt; font-weight:bold; }
-p.whs10 { font-size:12pt; font-weight:bold; font-style:normal; }
-p.whs11 { font-size:12pt; font-style:normal; font-weight:bold; }
-img_whs12 { border:none; width:267px; height:280px; 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("Geometry module\nCreating geometrical objects\nCreating Primitives\nBox");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><b style="font-weight: bold;"><img src="files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif" width="20px" height="20px" border="0" class="img_whs1"> </b></font></span>Box</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create a <span style="font-weight: bold;"><B>Box</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Primitives - > Box</B></span></p>
-
-<p> </p>
-
-<p>There are 2 algorithms for creation of a <span style="font-weight: bold;"><B>Box</B></span>.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (SOLID).</p>
-
-<p> </p>
-
-<p>Firstly, you can define a <span style="font-weight: bold;"><B>Box</B></span>
- by two specified <span style="font-weight: bold;"><B>Vertices </B></span>(its
- opposite corners). The edges of the box will be parallel to the coordinate
- axes.</p>
-
-<p><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI Command
- :</b> </B></span><span style="font-style: italic;"><I>geompy.MakeBoxTwoPnt(Point1,
- Point2)</I></span></p>
-
-<p><b style="font-weight: bold;">Arguments: </b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name
- + </font></span>2 vertices (opposite corners of the box).</p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><b style="font-weight: bold;"><img src="pics/box1.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs5"></b></p>
-
-<p> </p>
-
-<p class="whs6"><b style="font-weight: normal;"><span style="font-weight: normal;">Secondly,
- you can define a </span><span style="font-weight: bold;"><B>Box</B></span><span
- style="font-weight: normal;"> by </b>specified dimensions along the coordinate
- axes</span> and with edges, parallel to them. The
- center of the box will be at point (DX/2, DY/2, DZ/2). </p>
-
-<p><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI Command
- :</b> </B></span><span style="font-style: italic;"><I>geompy.MakeBoxDXDYDZ(DX,
- DY, DZ)</I></span></p>
-
-<p><span><b style="font-weight: bold;">Arguments: </b></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name
- + 3 values (dimensions at origin).</font></span></p>
-
-<p class="whs7"><b style="font-weight: bold;"><img src="pics/box2.png" x-maintain-ratio="TRUE" width="312px" height="332px" border="0" class="img_whs8"></b></p>
-
-<p> </p>
-
-<p><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>NB! </B></font></span>There is
- a third way to create a Box, which is currently accessible only via<span
- style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B> TUI </B></font></span>commands.</p>
-
-<p class="whs9"><span style="font-weight: normal;">You
- can define a </span>Box<span style="font-weight: normal;"> by the coordinates
- of two </span>Vertices<span style="font-weight: normal;"> (in this way
- you don't need to create them in advance). </span></p>
-
-<p class="whs10"><b style="font-weight: bold;">TUI Command:</b>
- <span style="font-weight: normal; font-style: italic;"><I>geompy.MakeBox(x1,y1,z1,x2,y2,z2)</I></span>
- </p>
-
-<span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Arguments: </B></font></span>Name
- + X, Y and Z coordinates of both points.
-
-<p> </p>
-
-<p class="whs11">Example:</p>
-
-<p class="whs7"><img src="pics/boxes.png" x-maintain-ratio="TRUE" width="267px" height="280px" border="0" class="img_whs12"></p>
-
-<p> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="primitives.htm#bookmark">Primitives</a>.
- </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>Building by Blocks</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nBuilding by Blocks");
-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>Building by Blocks</h1>
-
-<h3>Quadrangle Face</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- 0., 0.,
- 0.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(150.,
- 30., 0.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- 0., 120.,
- 50.)</p>
-
-<p class="whs1">p4 = geompy.MakeVertex(
- 0., 40.,
- 70.)</p>
-
-<p> </p>
-
-<p># create edges</p>
-
-<p class="whs1">edge1 = geompy.MakeEdge(p1,
- p2)</p>
-
-<p class="whs1">edge2 = geompy.MakeEdge(p2,
- p3)</p>
-
-<p class="whs1">edge3 = geompy.MakeEdge(p3,
- p4)</p>
-
-<p class="whs1">edge4 = geompy.MakeEdge(p4,
- p1)</p>
-
-<p> </p>
-
-<p># create a quadrangle face from four edges</p>
-
-<p class="whs1">qface1 = geompy.MakeQuad(edge1,
- edge2, edge3, edge4)</p>
-
-<p> </p>
-
-<p># create a quadrangle face from two edges</p>
-
-<p class="whs1">qface2 = geompy.MakeQuad2Edges(edge1,
- edge3)</p>
-
-<p> </p>
-
-<p># create a quadrangle from four points in its corners</p>
-
-<p class="whs1">qface3 = geompy.MakeQuad4Vertices(p1,
- p2, p3, p4)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_p1 = geompy.addToStudy(p1,"Point1")</p>
-
-<p class="whs1">id_p2 = geompy.addToStudy(p2,"Point2")</p>
-
-<p class="whs1">id_p3 = geompy.addToStudy(p3,"Point3")</p>
-
-<p class="whs1">id_p4 = geompy.addToStudy(p4,"Point4")</p>
-
-<p class="whs1">id_edge1 = geompy.addToStudy(edge1,"Edge1")</p>
-
-<p class="whs1">id_edge2 = geompy.addToStudy(edge2,"Edge2")</p>
-
-<p class="whs1">id_edge3 = geompy.addToStudy(edge3,"Edge3")</p>
-
-<p class="whs1">id_edge4 = geompy.addToStudy(edge4,"Edge4")</p>
-
-<p class="whs1">id_qface1 = geompy.addToStudy(qface1,"Qface1")</p>
-
-<p class="whs1">id_qface2 = geompy.addToStudy(qface2,"Qface2")</p>
-
-<p class="whs1">id_qface3 = geompy.addToStudy(qface3,"Qface3")</p>
-
-<p> </p>
-
-<p># display the vertices, the edges and the quadrangle faces</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p3)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p4)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge3)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge4)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_qface1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_qface1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_qface2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_qface2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_qface3)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_qface3,1)</span>
- </p>
-
-<h3>Hexagonal Solid</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create vertices</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p1 =
- geompy.MakeVertex( 0.,
- 0.,
- 40.)</p>
-
-<p class="whs1">p2 =
- geompy.MakeVertex( 70., -15., 0.)</p>
-
-<p class="whs1">p3 =
- geompy.MakeVertex( 70., -15., 70.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">p4 =
- geompy.MakeVertex( 0.,
- 70., 0.)</p>
-
-<p class="whs1">p5 =
- geompy.MakeVertex( 0.,
- 70., 40.)</p>
-
-<p class="whs1">p6 =
- geompy.MakeVertex( 70., 70.,
- 0.)</p>
-
-<p class="whs1">p7 =
- geompy.MakeVertex( 70., 70.,
- 70.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">p8 =
- geompy.MakeVertex( 0.,
- -50., 0.)</p>
-
-<p class="whs1">p9 =
- geompy.MakeVertex( 0.,
- -50., 40.)</p>
-
-<p class="whs1">p10 = geompy.MakeVertex(
- 70., -35., 0.)</p>
-
-<p class="whs1">p11 = geompy.MakeVertex(
- 70., -35., 70.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create faces</p>
-
-<p class="whs1">qface1 = geompy.MakeQuad4Vertices(p0,
- p1, p2, p3)</p>
-
-<p class="whs1">qface2 = geompy.MakeQuad4Vertices(p4,
- p5, p6, p7)</p>
-
-<p class="whs1">qface3 = geompy.MakeQuad4Vertices(p0,
- p1, p4, p5)</p>
-
-<p class="whs1">qface4 = geompy.MakeQuad4Vertices(p2,
- p3, p6, p7)</p>
-
-<p class="whs1">qface5 = geompy.MakeQuad4Vertices(p0,
- p2, p4, p6)</p>
-
-<p class="whs1">qface6 = geompy.MakeQuad4Vertices(p1,
- p3, p5, p7)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">qface7 = geompy.MakeQuad4Vertices(p8,
- p9, p10, p11)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a hexahedral
- solid between two given faces</p>
-
-<p class="whs1">solid1 = geompy.MakeHexa2Faces(qface1,
- qface7)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a hexahedral
- solid, bounded by six given faces</p>
-
-<p class="whs1">solid2 = geompy.MakeHexa(qface1,
- qface2, qface3, qface4, qface5, qface6)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">geompy.addToStudy(qface1,"qface1")</p>
-
-<p class="whs1">geompy.addToStudy(qface2,"qface2")</p>
-
-<p class="whs1">geompy.addToStudy(qface3,"qface3")</p>
-
-<p class="whs1">geompy.addToStudy(qface4,"qface4")</p>
-
-<p class="whs1">geompy.addToStudy(qface5,"qface5")</p>
-
-<p class="whs1">geompy.addToStudy(qface6,"qface6")</p>
-
-<p class="whs1">geompy.addToStudy(qface7,"qface7")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">id_solid1 = geompy.addToStudy(solid1,"Solid1")</p>
-
-<p class="whs1">id_solid2 = geompy.addToStudy(solid2,"Solid2")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display solids</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_solid1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_solid1,
- 1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_solid2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_solid2,
- 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">
-
-<html>
-
-<head>
-<title>Chamfer</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:319px; float:none; border-style:none; }
-img_whs5 { border:none; width:225px; height:239px; float:none; border-style:none; }
-img_whs6 { border:none; width:312px; height:381px; float:none; border-style:none; }
-img_whs7 { border:none; width:230px; height:245px; float:none; border-style:none; }
-img_whs8 { border:none; width:221px; height:238px; float:none; border-style:none; }
-p.whs9 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs9 {margin-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nChamfer");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Chamfer</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Chamfer</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Operations - > Transformation - >
- Chamfer</B></span> </p>
-
-<p> </p>
-
-<p>This operation allows you to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">make chamfer
- of the edges of a Shape.</font></span></p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">The</span> Result <span style="font-weight: normal;">will
- be a</span></b> GEOM_Object.</font></span></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- chamfer on all edges of the given shape, you need to define the <span
- style="font-weight: bold;"><B>Main Object</B></span> to create a chamfer on and
- the <span style="font-weight: bold;"><B>Dimension</B></span> (radius) of the
- chamfer. </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeChamferAll(Shape, D)</I></span>
- </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 SHAPE + 1 value (Chamfer dimension).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/chamfer1.png" x-maintain-ratio="TRUE" width="312px" height="319px" border="0" class="img_whs4"> <img src="pics/chamfer_all.png" x-maintain-ratio="TRUE" width="225px" height="239px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create chamfer on the specified edges of
- the given shape, you
- need to define the <span style="font-weight: bold;"><B>Main Object</B></span>
- to create a fillet on, select the two faces to which belongs the <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">necessary common edge in the viewer and define
- the </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Dimension</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> of the Chamfer.</font></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeChamferEdge(Shape, D1,
- D2, Face1, Face2)</I></span>, where Shape is a shape to create a chamfer on,
- D1 is a chamfer size along Face1, D2 is a chamfer size along Face2, Face1
- and Face2 are indices of faces in Shape.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/chamfer2.png" x-maintain-ratio="TRUE" width="312px" height="381px" border="0" class="img_whs6"> <img src="pics/chamfer_edge.png" x-maintain-ratio="TRUE" width="230px" height="245px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create chamfer on the specified faces of
- the given shape, you
- need to define the <span style="font-weight: bold;"><B>Main Object</B></span>
- to create a fillet on, select the necessary faces the OCC Viewer and define
- the <span style="font-weight: bold;"><B>Dimension</B></span> of the Chamfer.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeChamferFaces(Shape, D1,
- D2, ListOfFaceID)</I></span>, where Shape is a shape to create chamfer on,
- D1 is a chamfer size along a face from ListOfFaceID,
- D2 is a
- chamfer size along two faces connected to the edge to which the chamfer
- is applied, ListOfFaceID is a list of indices of faces in Shape.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/chamfer3.png" x-maintain-ratio="TRUE" width="312px" height="381px" border="0" class="img_whs6"> <img src="pics/chamfer_faces.png" x-maintain-ratio="TRUE" width="221px" height="238px" border="0" class="img_whs8"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs9"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark4">Transformation
- Operations</a>. </font></span></p>
-
-<p> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </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>Change Orientation</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">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-img_whs1 { border:none; width:23px; height:24px; }\r
-p.whs2 { font-size:12pt; }\r
-p.whs3 { font-size:12pt; font-weight:bold; }\r
-p.whs4 { font-size:12pt; margin-left:40px; }\r
-img_whs5 { border:none; width:400px; height:315px; float:none; border-style:none; }\r
-table.whs6 { x-cell-content-align:top; border-spacing:0px; width:46.327%; }\r
-col.whs7 { width:52.644%; }\r
-col.whs8 { width:47.356%; }\r
-tr.whs9 { x-cell-content-align:top; }\r
-td.whs10 { width:52.644%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }\r
-img_whs11 { border:none; width:138px; height:143px; border-style:none; }\r
-td.whs12 { width:47.356%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }\r
-img_whs13 { border:none; width:139px; height:144px; border-style:none; }\r
-td.whs14 { width:52.644%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }\r
-td.whs15 { width:47.356%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nChange Orientation");\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><img src="image43.gif" width="23px" height="24px" border="0" class="img_whs1"> Change Orientation</h1>\r
-\r
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span \r
- style="font-weight: bold;"><B>Change Orientation</B></span> in the Main Menu \r
- select <span style="font-weight: bold;"><B>Repair - > Change Orientation</B></span>.</p>\r
-\r
-<p class="whs2">This operation reverses the normals of faces \r
- composing the selected shell. </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i><span \r
- style="font-style: italic;"><I> geompy.ChangeOrientation(shape)</I></span></i></p>\r
-\r
-<p class="whs2"><b style="font-weight: bold;">Arguments: <span \r
- style="font-weight: normal;">Name + 1 shape (shell) </span></b></p>\r
-\r
-<p class="whs3"><span style="font-weight: normal;">Uncheck</span> \r
- Create a copy<span style="font-weight: normal;"> checkbox if you don't \r
- wish to leave the initial object in the project (</span>Result name<span \r
- style="font-weight: normal;"> field will be locked).</span></p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs4"><img src="pics/changeorientation.png" x-maintain-ratio="TRUE" width="400px" height="315px" border="0" class="img_whs5"></p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"><span style="font-weight: bold;"><B>Example:</B></span> \r
- </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<table x-use-null-cells cellspacing="0" width="46.327%" class="whs6">\r
-<col class="whs7">\r
-<col class="whs8">\r
-\r
-<tr valign="top" class="whs9">\r
-<td width="52.644%" class="whs10">\r
-<p><img src="image38.gif" width="138px" height="143px" border="0" class="img_whs11"></td>\r
-<td width="47.356%" class="whs12">\r
-<p><img src="image40.gif" width="139px" height="144px" border="0" class="img_whs13"></td></tr>\r
-\r
-<tr valign="top" class="whs9">\r
-<td width="52.644%" class="whs14">\r
-<p>Inward orientation. </td>\r
-<td width="47.356%" class="whs15">\r
-<p>Outward orientation</td></tr>\r
-</table>\r
-\r
-<p class="whs2"> </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>Changing Display Parameters</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nViewing Geometrical Objects");
-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 Geometrical Objects</h1>
-
-<h3><a name=bookmark>Changing Display Mode</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">box = geompy.MakeBox(0,0,0,
- 50,50,50)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">sphere = geompy.MakeSphere(50,50,50,
- 30)</p>
-
-<p class="whs1">fuse = geompy.MakeBoolean(box,sphere,3)</p>
-
-<p class="whs1">fuse_id = geompy.addToStudy(fuse,"Fuse")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">gg.createAndDisplayGO(fuse_id)</p>
-
-<p class="whs1">gg.setDisplayMode(fuse_id,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark1>Changing Color</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">box = geompy.MakeBox(0,0,0,
- 50,50,50)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">sphere = geompy.MakeSphere(50,50,50,
- 30)</p>
-
-<p class="whs1">fuse = geompy.MakeBoolean(box,sphere,3)</p>
-
-<p class="whs1">fuse_id = geompy.addToStudy(fuse,"Fuse")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">gg.createAndDisplayGO(fuse_id)</p>
-
-<p class="whs1">gg.setDisplayMode(fuse_id,1)</p>
-
-<p class="whs1">gg.setColor(fuse_id,218,165,31)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark2>Changing Transparency</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">box = geompy.MakeBox(0,0,0,
- 50,50,50)</p>
-
-<p class="whs1">sphere = geompy.MakeSphere(50,50,50,
- 30)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">fuse = geompy.MakeBoolean(box,sphere,3)</p>
-
-<p class="whs1">fuse_id = geompy.addToStudy(fuse,"Fuse")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">gg.createAndDisplayGO(fuse_id)</p>
-
-<p class="whs1">gg.setDisplayMode(fuse_id,1)</p>
-
-<p class="whs1">gg.setColor(fuse_id,218,165,31)</p>
-
-<p class="whs1">gg.setTransparency(fuse_id,0.5)
- </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>Check Free Boundaries</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:22px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; font-weight:bold; }
-img_whs4 { border:none; width:243px; height:203px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; margin-left:0px; }
-p.whs6 { font-size:12pt; margin-left:40px; }
-img_whs7 { border:none; width:436px; height:339px; float:none; border-style:none; }
-img_whs8 { border:none; width:442px; height:336px; float:none; border-style:none; }
-p.whs9 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs5 {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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nCheck Free Boundaries");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image44.gif" width="22px" height="22px" border="0" class="img_whs1"> </font></span>Check Free Boundaries</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span
- style="font-weight: bold;"><B>Check Free Boundaries</B></span> in the Main Menu
- select <span style="font-weight: bold;"><B>Repair - > Check Free Boundaries</B></span>.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation detects wires and edges that
- correspond to the shape's boundary, and highlights it</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b><b> <span
- style="font-weight: bold;"><B>GEOM_Object. </B></span></b></font></span></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i><span
- style="font-style: italic;"> <I></i>(NoError, ClosedWires, OpenWires) = geompy.GetFreeBoundary(Shape)</I></span>,
- where Shape is a shape to be checked, NoError is false if an error occurred
- while checking free boundaries, ClosedWires is a list of closed free boundary
- wires, OpenWires is a list of open free boundary wires.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/repair9.png" x-maintain-ratio="TRUE" width="243px" height="203px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6"><img src="pics/free_boudaries1.png" x-maintain-ratio="TRUE" width="436px" height="339px" border="0" class="img_whs7"> <img src="pics/free_boudaries2.png" x-maintain-ratio="TRUE" width="442px" height="336px" border="0" class="img_whs8"> </p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark8">Repairing
- Operations</a>. </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>Check Free Faces</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:23px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:normal; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:322px; height:163px; float:none; border-style:none; }
-p.whs6 { font-size:12pt; margin-left:40px; text-indent:-40px; }
-p.whs7 { font-size:12pt; margin-left:40px; text-indent:-40px; font-weight:bold; }
-p.whs8 { font-size:12pt; text-indent:-40px; margin-left:80px; }
-img_whs9 { border:none; float:none; width:234px; height:281px; border-style:none; }
-img_whs10 { border:none; width:248px; height:283px; float:none; border-style:none; }
-p.whs11 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs6 {text-indent:1pt; }";
- strNSS += "p.whs7 {text-indent:1pt; }";
- strNSS += "p.whs8 {text-indent: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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nCheck Free Faces");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image10.gif" width="23px" height="22px" border="0" class="img_whs1"> </font></span>Check Free Faces</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span
- style="font-weight: bold;"><B>Check Free Faces</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Repair - > Check Free Faces.</B></span></p>
-
-<p class="whs2">This operation retrieves all free faces from
- a given shape. A free face is a face not shared between two shells of
- the shape. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b><b> <span
- style="font-weight: bold;"><B>GEOM_Object</B></span><span style="font-weight: normal;">
- (a list of IDs of all free faces, containing in the shape)</span><span
- style="font-weight: bold;"><B>. </B></span></b></p>
-
-<p class="whs2"><b>TUI Command :</b><i><span style="font-style: italic;">
- <I></i>GetFreeFacesIDs(Shape)</I></span>, where Shape is a shape to be checked.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/repair10.png" x-maintain-ratio="TRUE" width="322px" height="163px" border="0" class="img_whs5"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs7">Examples: </p>
-
-<p class="whs6"> </p>
-
-<p class="whs8"><img src="pics/free_faces1.png" x-maintain-ratio="TRUE" width="234px" height="281px" border="0" class="img_whs9"> <img src="pics/free_faces2.png" x-maintain-ratio="TRUE" width="248px" height="283px" border="0" class="img_whs10"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs11"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark9">Repairing
- Operations</a>. </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>Circle</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:346px; float:none; border-style:none; }
-img_whs6 { border:none; width:312px; height:359px; float:none; border-style:none; }
-img_whs7 { border:none; width:348px; height:321px; 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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nCircle");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Circle</h1>
-
-<p><b><span style="font-weight: normal;">T</span></b>o create a <span style="font-weight: bold;"><B>Circle</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Basic - > Circle</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">There
- are 2 algorithms to create a</span> Circle <span style="font-weight: normal;">in
- the 3D space.</span> </b></p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (edge).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Firstly,
- you can define a </span><span style="font-weight: bold;"><B>Circle</B></span><span
- style="font-weight: normal;"> by a</span> Center Point, <span style="font-weight: normal;">a</span>
- Vector <span style="font-weight: normal;">giving the </b>circl</span>e\92s
- normal and a <span style="font-weight: bold;"><B>Radius</B></span>.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b>
- <span style="font-style: italic;"><I>geompy.MakeCircle(Point, Vector, Radius)</I></span></p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- </b><span style="font-weight: normal;">Name + 1 vertex (for the center)
- + 1 edge (for the direction) + Radius.</span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/circle1.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs5"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><span style="font-weight: normal;">Secondly,
- you can define a</span> Circle<span style="font-weight: normal;"> by three</span>
- Points <span style="font-weight: normal;">that lie on it.</span> </p>
-
-<p class="whs3"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakeCircleThreePnt(Point1,
- Point2, Point3)</I></span> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- </b><span style="font-weight: normal;">Name + 3 points which will form
- the circle.</span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><b style="font-weight: bold;"><img src="pics/circle2.png" x-maintain-ratio="TRUE" width="312px" height="359px" border="0" class="img_whs6"></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><b style="font-weight: bold;"><img src="pics/circles.png" x-maintain-ratio="TRUE" width="348px" height="321px" border="0" class="img_whs7"></b></p>
-
-<p> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="basic_geometrical_objects.htm#bookmark2">Basic
- Geometric Objects</a>. </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>Close Contour</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-ul.whs3 { list-style:disc; }
-p.whs4 { font-size:12pt; margin-left:40px; font-weight:bold; }
-img_whs5 { border:none; width:312px; height:397px; float:none; border-style:none; }
-p.whs6 { font-size:12pt; font-weight:bold; }
-p.whs7 { 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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nClose Contour");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Close Contour</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Close Contour</B></span> operation in the
- Main Menu select <span style="font-weight: bold;"><B>Repair - > Close
- Contour.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation closes an open contour and modifies
- the underlying face (if needed) in accordance with user specified mode:</p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs2">By common vertex \96 a
- vertex is created between the end points of the contour and its tolerance
- is increased to a value of the gap between the ends of the contour;</p></li>
-
- <li class=kadov-p><p class="whs2">By new edge \96 a new edge
- is inserted between the end points of the contour.</p></li>
-</ul>
-
-<p class="whs2">This operation is available in <span style="font-weight: bold;"><B>OCC
- Viewer</B></span> only. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><b><span
- style="font-weight: normal;">T</b>he</span> Result <span style="font-weight: normal;">will
- be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object</B></span></b><span
- style="font-weight: bold;"><B>.</B></span></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.CloseContour(Shape, Wires,
- IsCommonVertex)</I></span>, where Shape is a shape to be processed, Wires
- is a list of edges or wires ID\92s which has to be closed within the shape
- (if the list contains only one element = -1, the shape itself is considered
- as a wire), IsCommonVertex
- if this parameter is True a closure has to be done by creation of a common
- vertex, otherwise an edge is added between the end vertices.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: <span
- style="font-weight: normal;">Name + 1 shape + contour</span> <span style="font-weight: normal;">(</span></b>Wire,
- or a set of Edges) + mode of closure (by vertex or by edge)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/repair3.png" x-maintain-ratio="TRUE" width="312px" height="397px" border="0" class="img_whs5"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs7"><span style="font-weight: normal;">Our</span>
- TUI Scripts <span style="font-weight: normal;">provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark2">Repairing
- Operations</a>. </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>Color</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-size:12pt; }
-p.whs2 { margin-left:40px; }
-img_whs3 { border:none; width:492px; height:392px; 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("Geometry module\nViewing geometrical objects\nColor");
-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>Color</h1>
-
-<p>You can change the filling color of your object in the standard <span
- style="font-weight: bold;"><B>Select Color</B></span> menu accessible by right-clicking
- on an object and selecting <span style="font-weight: bold;"><B>Color</B></span>
- in the pop-up menu box. </p>
-
-<p> </p>
-
-<p class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">TUI
- Command:</b><i> gg.setColor(ID, Short, Short, Short)</i></font></span></p>
-
-<p> </p>
-
-<p class="whs2"><img src="selectcolor.png" x-maintain-ratio="TRUE" width="492px" height="392px" border="0" class="img_whs3"></p>
-
-<p> </p>
-
-<p class="whs1">Our TUI Scripts provide you with useful examples
- of <a href="changing_display_parameters.htm#bookmark1">Changing Display
- Parameters</a>. </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>Common</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
-p.whs4 { font-size:12pt; margin-right:0in; margin-top:0px; margin-bottom:0px; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs6 { border:none; border-style:none; width:253px; height:266px; float:none; }
-img_whs7 { border:none; border-style:none; float:none; width:234px; height:266px; }
--->
-</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;margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs4 {margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nBoolean Operations\nCommon");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><b style="font-weight: bold;"><img src="files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif" width="20px" height="20px" border="0" class="img_whs1"> </b></font></span>Common</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Common</B></span> operation in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Boolean
- - > Common</B></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><span style="font-weight: normal;">This
- operation</span> </b>cuts the common part of two shapes and transforms
- it into an independent geometrical object.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object
- (COMPOUND).</p>
-
-<p class="whs3"><span style="font-weight: bold;"><B>TUI Command:</B></span>
- <span style="font-style: italic;"><I>geompy.MakeCommon(s1,
- s2)</I></span> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 shapes.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/bool2.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs5"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"><img src="pics/fusesn1.png" x-maintain-ratio="TRUE" width="253px" height="266px" border="0" class="img_whs6"> <img src="pics/commonsn.png" x-maintain-ratio="TRUE" width="234px" height="266px" border="0" class="img_whs7"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of the use of <a href="boolean_operations.htm#bookmark1">Boolean Operations</a>.
- </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>Complex Objects</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nComplex Objects");
-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>Complex Objects</h1>
-
-<h3><a name=bookmark>Creation of a Prism</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 100., 0.,
- 0.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- 100., 100., 0.)</p>
-
-<p class="whs1">p4 = geompy.MakeVertex(
- 0.,
- 100., 0.)</p>
-
-<p class="whs1">p5 = geompy.MakeVertex(
- 0.,
- 0.,
- 60.)</p>
-
-<p class="whs1">p6 = geompy.MakeVertex(-100.,
- 0.,
- 0.)</p>
-
-<p class="whs1">p7 = geompy.MakeVertex(-100.,-100.,
- 0.)</p>
-
-<p class="whs1">p8 = geompy.MakeVertex(
- 0.,-100.,
- 0.)</p>
-
-<p> </p>
-
-<p># create a vector from the given components</p>
-
-<p class="whs1">vector = geompy.MakeVectorDXDYDZ(50.,
- 50., 50.)</p>
-
-<p> </p>
-
-<p>#create vectors from two points</p>
-
-<p class="whs1">vector1_arc1 = geompy.MakeVector(p1,
- p2)</p>
-
-<p class="whs1">vector2_arc1 = geompy.MakeVector(p1,
- p4)</p>
-
-<p class="whs1">vector1_arc2 = geompy.MakeVector(p1,
- p6)</p>
-
-<p class="whs1">vector2_arc2 = geompy.MakeVector(p1,
- p8)</p>
-
-<p> </p>
-
-<p># create arcs from three points</p>
-
-<p class="whs1">arc1 = geompy.MakeArc(p2,
- p3, p4)</p>
-
-<p class="whs1">arc2 = geompy.MakeArc(p6,
- p7, p8)</p>
-
-<p> </p>
-
-<p># create wires</p>
-
-<p class="whs1">wire1 = geompy.MakeWire([vector1_arc1,
- arc1, vector2_arc1])</p>
-
-<p class="whs1">wire2 = geompy.MakeWire([vector1_arc2,
- arc2, vector2_arc2])</p>
-
-<p> </p>
-
-<p># create faces</p>
-
-<p class="whs1">isPlanarWanted = 1</p>
-
-<p class="whs1">face1 = geompy.MakeFace(wire1,
- isPlanarWanted)</p>
-
-<p class="whs1">face2 = geompy.MakeFace(wire2,
- isPlanarWanted)</p>
-
-<p> </p>
-
-<p># create prisms</p>
-
-<p class="whs1">prism1 = geompy.MakePrism(face2,
- p1, p5)</p>
-
-<p class="whs1">prism2 = geompy.MakePrismVecH(face1,
- vector, 50)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_face1 =
- geompy.addToStudy(face1,"Face1")</p>
-
-<p class="whs1">id_face2 =
- geompy.addToStudy(face2,"Face2")</p>
-
-<p class="whs1">id_prism1 = geompy.addToStudy(prism1,"Prism1")</p>
-
-<p class="whs1">id_prism2 = geompy.addToStudy(prism2,"Prism2")</p>
-
-<p> </p>
-
-<p># display cylinders</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_prism1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_prism2,1)</span>
- </p>
-
-<h3><a name=bookmark1>Creation of a Revolution</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- 10., 10.,
- 10.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 15., 15.,
- 50.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- 40., 40.,
- 0.)</p>
-
-<p> </p>
-
-<p>#create vectors from two points</p>
-
-<p class="whs1">vector1 = geompy.MakeVector(p1,
- p2)</p>
-
-<p class="whs1">vector2 = geompy.MakeVector(p1,
- p3)</p>
-
-<p> </p>
-
-<p># create a vector from the given components</p>
-
-<p class="whs1">vector3 = geompy.MakeVectorDXDYDZ(-20.,
- -20., 100.)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vector1,
- vector2])</p>
-
-<p> </p>
-
-<p># create a revolution</p>
-
-<p class="whs1">revolution = geompy.MakeRevolution(wire,
- vector3, 2.3)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_vector3 =
- geompy.addToStudy(vector3,"Axis")</p>
-
-<p class="whs1">id_wire =
- geompy.addToStudy(wire,"Wire")</p>
-
-<p class="whs1">id_revolution = geompy.addToStudy(revolution,"Revolution")</p>
-
-<p> </p>
-
-<p># display the vector, the wire and the revolution</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vector3)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_wire)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_revolution)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_revolution,1)</span>
- </p>
-
-<h3><a name=bookmark2>Creation of a Filling</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">mindeg = 2</p>
-
-<p class="whs1">maxdeg = 5</p>
-
-<p class="whs1">tol3d =
- 0.0001</p>
-
-<p class="whs1">tol2d =
- 0.0001</p>
-
-<p class="whs1">nbiter = 5</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- -30., -30.,
- 50.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- -60., -60.,
- 30.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- -30., -30.,
- 10.)</p>
-
-<p> </p>
-
-<p># create an arc from three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(p1,
- p2, p3)</p>
-
-<p class="whs1">ShapeListCompound
- = []</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">while i <= 3 :</p>
-
-<p class="whs1"> S
- = geompy.MakeTranslation(arc, i * 50., 0., 0.)</p>
-
-<p class="whs1"> ShapeListCompound.append(S)</p>
-
-<p class="whs1"> i
- = i + 1</p>
-
-<p class="whs1">compound = geompy.MakeCompound(ShapeListCompound)</p>
-
-<p> </p>
-
-<p># create a filling</p>
-
-<p class="whs1">filling = geompy.MakeFilling(compound,
- mindeg, maxdeg, tol3d, tol2d, nbiter)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_compound = geompy.addToStudy(compound,"Compound")</p>
-
-<p class="whs1">id_filling = geompy.addToStudy(filling,"Filling")</p>
-
-<p> </p>
-
-<p># display the compound and the filling</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_compound)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_filling)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_filling,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Creation of a Pipe</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex(0. ,
- 0. , 0.
- )</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0. ,
- 0. )</p>
-
-<p class="whs1">py =
- geompy.MakeVertex(0. ,
- 100., 0. )</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex(0. ,
- 0. , 100.)</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(100.,
- 100., 100.)</p>
-
-<p> </p>
-
-<p># create a vector from two points</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p> </p>
-
-<p># create an arc from three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># create an edge</p>
-
-<p class="whs1">edge = geompy.MakeEdge(p0,
- pxyz)</p>
-
-<p> </p>
-
-<p># create a pipe</p>
-
-<p class="whs1">pipe = geompy.MakePipe(wire,
- edge)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_wire = geompy.addToStudy(wire,"Wire")</p>
-
-<p class="whs1">id_edge = geompy.addToStudy(edge,"Edge")</p>
-
-<p class="whs1">id_pipe = geompy.addToStudy(pipe,"Pipe")</p>
-
-<p> </p>
-
-<p># display the wire, the edge (path) and the pipe</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_wire)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_pipe)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_pipe,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">
-
-<html>
-
-<head>
-<title>Compound</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:289px; float:none; border-style:none; }
-img_whs5 { border:none; width:195px; height:174px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nCompound");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span>Compound</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- a <span style="font-weight: bold;"><B>Compound </B></span>in the Main Menu select
- New Entity - > Build - > <span style="font-weight: bold;"><B>Compound.</B></span></p>
-
-<p> </p>
-
-<p class="whs2">You can create a compound from a list of shells.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span> </b>GEOM_Object
- (COMPOUND).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeCompound(ListOfShape)</I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + List of shapes.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-obj7.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/compoundsn.png" x-maintain-ratio="TRUE" width="195px" height="174px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#bookmark4">Advanced Geometric
- Objects</a>. </p>
-
-<p> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> </p>
-
-<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">
-
-<html>
-
-<head>
-<title>Cone</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-weight:bold; }
-p.whs4 { margin-left:40px; }
-img_whs5 { border:none; width:312px; height:402px; float:none; border-style:none; }
-p.whs6 { font-weight:bold; margin-left:40px; }
-img_whs7 { border:none; width:312px; height:402px; float:none; border-style:none; }
-p.whs8 { font-size:12pt; margin-left:40px; }
-img_whs9 { border:none; width:276px; height:282px; 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("Geometry module\nCreating geometrical objects\nCreating Primitives\nCone");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Cone</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create a <span style="font-weight: bold;"><B>Cone</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Primitives - > Cone</B></span></p>
-
-<p> </p>
-
-<p>There are two algorithms for creation of a <span style="font-weight: bold;"><B>Cone</B></span>.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (SOLID).</p>
-
-<p> </p>
-
-<p>Firstly, you can define a <span style="font-weight: bold;"><B>Cone</B></span>
- by the <span style="font-weight: bold;"><B>Base Point</B></span> (the central
- point of the cone base), the <span style="font-weight: bold;"><B>Axis</B></span>,
- the <span style="font-weight: bold;"><B>Height</B></span> and the first and the
- second <span style="font-weight: bold;"><B>Radiuses</B></span>. </p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> <span style="font-style: italic;"><I>geompy.MakeCone(Point,
- Axis, Radius1, Radius2)</I></span></p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- </b><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Name + 1 vertex
- + 1 vector (for direction) + 3 values (Radius of the base part, radius
- of the upper part, height).</font></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/cone1.png" x-maintain-ratio="TRUE" width="312px" height="402px" border="0" class="img_whs5"></p>
-
-<p> </p>
-
-<p>Secondly, you can define a <span style="font-weight: bold;"><B>Cone</B></span>
- with the center at the origin of coordinates by its <span style="font-weight: bold;"><B>Height</B></span>
- and <span style="font-weight: bold;"><B>Radiuses</B></span>. The <span style="font-weight: bold;"><B>Axis</B></span>
- of the <span style="font-weight: bold;"><B>Cone</B></span> will be collinear
- to the OZ axis of the coordinate system. </p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> <span style="font-style: italic;"><I>geompy.MakeConeR1R2H(Radius1,
- Radius2, Height)</I></span> </p>
-
-<p class="whs3"><b>Arguments: </b><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Name
- + 3 values (Radius of the base part, radius of the upper part, height).</font></span></p>
-
-<p class="whs6"><img src="pics/cone2.png" x-maintain-ratio="TRUE" width="312px" height="402px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p><span style="font-weight: bold;"><B>Note:</B></span> If both radiuses are non-zero,
- the <span style="font-weight: bold;"><B>Cone</B></span> will be truncated. If
- the radiuses are equal, a <span style="font-weight: bold;"><B>Cylinder</B></span>
- will be created instead. </p>
-
-<p> </p>
-
-<p><b style="font-weight: bold;">Example:</b></p>
-
-<p> </p>
-
-<p class="whs8"><img src="pics/cones.png" x-maintain-ratio="TRUE" width="276px" height="282px" border="0" class="img_whs9"></p>
-
-<p class="whs8"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="primitives.htm#bookmark4">Primitives</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<html>
-<head>
-<title>Geometry 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>Geometry 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
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Curve</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:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-ul.whs3 { list-style:disc; }
-p.whs4 { font-size:12pt; font-style:italic; }
-p.whs5 { font-size:12pt; font-style:italic; margin-left:40px; }
-img_whs6 { border:none; width:312px; height:289px; float:none; border-style:none; }
-p.whs7 { font-size:12pt; font-style:normal; font-weight:bold; }
-p.whs8 { font-size:12pt; font-weight:bold; font-style:italic; x-text-underline:off; text-decoration:none; }
-img_whs9 { border:none; float:none; width:310px; height:308px; border-style:none; }
-img_whs10 { border:none; width:313px; height:310px; float:none; border-style:none; }
-img_whs11 { border:none; float:none; width:291px; height:313px; border-style:none; }
-p.whs12 { font-size:12pt; margin-left:40px; }
--->
-</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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nCurve");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><b style="font-weight: bold;"><img src="image32.gif" width="20px" height="20px" border="0" class="img_whs1"> </b></font></span>Curve</h1>
-
-<p>To create a <span style="font-weight: bold;"><B>Curve</B></span> in the <span
- style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Basic - > Curve</B></span></p>
-
-<p> </p>
-
-<p>There are three algorithms to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">create
- a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Curve</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the 3D space. Each time you define it by
- a list of </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Points</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> through which the curve passes. The three </font></span><span
- style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Curve Construction</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> menu choices correspond to three possible types
- of curves: Polyline, Besier or B-spline (Interpolated). </font></span></p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">The</span> Result <span style="font-weight: normal;">of
- each operation will be a</span></b> GEOM_Object (edge).</font></span></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Commands:</b>
- </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs2"><span style="font-style: italic;"><I>geompy.MakePolyline(ListOfShapes)</I></span></p></li>
-
- <li class=kadov-p><p class="whs2"><span style="font-style: italic;"><I>geompy.MakeBezier(ListOfShapes)</I></span></p></li>
-
- <li class=kadov-p><p class="whs2"><span style="font-style: italic;"><I>geompy.MakeInterpol(ListOfShapes)</I></span></p></li>
-</ul>
-
-<p class="whs2">ListOfShape is a list of points through which
- the curve passes.</p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments:</b>
- Name + at least 2 points which will serve as nodes on the curve.</font></span></p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"><img src="pics/curve.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs6"> </p>
-
-<p class="whs4"> </p>
-
-<p class="whs7">Examples:</p>
-
-<p class="whs2"> </p>
-
-<p class="whs8">Polyline
- <span
- style="font-size: 12pt;
- font-weight: bold;
- font-style: italic;
- x-text-underline: off;
- /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ "><font size=3 style="font-size:12pt;"><I><B> Bezier
- B-Spline</B></I></font></span></p>
-
-<p class="whs2"><img src="pics/polyline.png" x-maintain-ratio="TRUE" width="310px" height="308px" border="0" class="img_whs9"> <img src="pics/bezier.png" x-maintain-ratio="TRUE" width="313px" height="310px" border="0" class="img_whs10"> <img src="pics/interpol.png" x-maintain-ratio="TRUE" width="291px" height="313px" border="0" class="img_whs11"></p>
-
-<p class="whs12"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="basic_geometrical_objects.htm#bookmark4">Basic
- Geometric Objects</a>. </p>
-
-<p> </p>
-
-<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">
-
-<html>
-
-<head>
-<title>Cut</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
-p.whs4 { font-size:12pt; margin-right:0in; margin-top:0px; margin-bottom:0px; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs6 { border:none; border-style:none; width:253px; height:266px; float:none; }
-img_whs7 { border:none; width:231px; height:267px; float:none; 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.whs3 {margin-left:1pt;margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs4 {margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nBoolean Operations\nCut");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Cut</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Cut</B></span> operation in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Boolean - >
- Cut</B></span></p>
-
-<p> </p>
-
-<p class="whs3">This operation cuts a shape with another
- one.</p>
-
-<p class="whs3"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span> </b> GEOM_Object
- (COMPOUND).</p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 shapes.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/bool3.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs5"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/fusesn1.png" x-maintain-ratio="TRUE" width="253px" height="266px" border="0" class="img_whs6"> <img src="pics/cutsn.png" x-maintain-ratio="TRUE" width="231px" height="267px" border="0" class="img_whs7"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of the use of <a href="boolean_operations.htm#bookmark3">Boolean Operations</a>.
- </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>Cylinder</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-weight:bold; }
-p.whs4 { margin-left:40px; }
-img_whs5 { border:none; width:312px; height:376px; float:none; border-style:none; }
-img_whs6 { border:none; width:312px; height:376px; border-style:none; float:none; }
-p.whs7 { margin-left:0px; }
-img_whs8 { border:none; width:287px; height:272px; float:none; 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.whs7 {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("Geometry module\nCreating geometrical objects\nCreating Primitives\nCylinder");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Cylinder</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create a <span style="font-weight: bold;"><B>Cylinder</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Primitives - > Cylinder</B></span></p>
-
-<p> </p>
-
-<p>There are 2 algorithms for creation of a <span style="font-weight: bold;"><B>Cylinder</B></span>.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (SOLID).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Firstly, you can define a <span style="font-weight: bold;"><B>Cylinder</B></span>
- by the <span style="font-weight: bold;"><B>Base Point</B></span> (the central
- point of the cylinder base), the <span style="font-weight: bold;"><B>Vector</B></span>
- (the axis of the cylinder), and its dimensions: the Radius and the Height.</p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> <span style="font-style: italic;"><I>geompy.MakeCylinder(Point,
- Axis, Radius, Height)</I></span>, </p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- <span style="font-weight: normal;"> </span></b><span
- style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Name
- + 1 vertex + 1 vector + 2 values (Dimensions: radius and height).</font></span></p>
-
-<p class="whs4"><b style="font-weight: bold;"><img src="pics/cylinder1.png" x-maintain-ratio="TRUE" width="312px" height="376px" border="0" class="img_whs5"></b></p>
-
-<p> </p>
-
-<p><b><span style="font-weight: normal;">Secondly, you can define</b> a
- </span><span style="font-weight: bold;"><B>Cylinder</B></span> by the given radius
- and the height at the
- origin of coordinate system. The axis of the cylinder will be collinear
- to the OZ axis of the coordinate system. </p>
-
-<p><b style="font-weight: bold;">TUI Command: </b><span style="font-style: italic;"><I>geompy.MakeCylinderRH(Radius,
- Height)</I></span></p>
-
-<p><b>Arguments: </b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name + </font></span>2 values
- (Dimensions at origin: radius and height).</p>
-
-<p> </p>
-
-<p class="whs4"><img src="pics/cylinder2.png" x-maintain-ratio="TRUE" width="312px" height="376px" border="0" class="img_whs6"></p>
-
-<p class="whs7"> </p>
-
-<p><b style="font-weight: bold;">Example:</b></p>
-
-<p> </p>
-
-<p class="whs4"><img src="pics/cylinders.png" x-maintain-ratio="TRUE" width="287px" height="272px" border="0" class="img_whs8"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="primitives.htm#bookmark1">Primitives</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</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
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "Geometry 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
+
+#---------------------------------------------------------------------------
+#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 = geompy_doc.tag=./geompy_doc
\ No newline at end of file
--- /dev/null
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "Geometry 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 = YES
+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/GEOM_SWIG
+FILE_PATTERNS = geompyDC.py
+IMAGE_PATH = @srcdir@/images
+RECURSIVE = NO
+
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = ./geompy_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 = geompy_doc.tag
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Edge</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs5 { border:none; width:195px; height:202px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nEdge");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Edge</h1>
-
-<p class="whs2"><b><span style="font-weight: normal;">T</b>o</span>
- create an <span style="font-weight: bold;"><B>Edge</B></span> in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>New Entity - >
- Build - > Edge</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">You can create an <span style="font-weight: bold;"><B>Edge</B></span>
- from two points (<span style="font-weight: bold;"><B>Point1</B></span> and <span
- style="font-weight: bold;"><B>Point2</B></span>), being the first and the last
- vertices of the edge.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;"> will
- be a</span></b> GEOM_Object (EDGE).</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeEdge(Vertex1, Vertex2)</I></span>,
- where Vertex1 and Vertex2 are correspondingly the first and the last vertex
- of the edge.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 vertices.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-obj2.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/edgesn.png" x-maintain-ratio="TRUE" width="195px" height="202px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#bookmark">Advanced Geometric
- Objects</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE SYSTEM "ehelpopt.dtd">
-<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="a306ebd6_4870_4c36_a066_58c07171acf6">
-</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>Ellipse</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:376px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; margin-left:0px; }
-p.whs6 { font-size:12pt; color:#000000; }
-p.whs7 { color:#808080; font-size:12pt; }
-p.whs8 { color:#808080; font-size:12pt; margin-left:40px; }
-img_whs9 { border:none; width:354px; height:323px; float:none; 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.whs5 {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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nEllipse");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span></b>Ellipse</h1>
-
-<p><b><span style="font-weight: normal;">T</span></b>o create an <span
- style="font-weight: bold;"><B>Ellipse</B></span> in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>New Entity - >
- Basic - > Ellipse</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">You
- can define an</span> Ellipse <span style="font-weight: normal;">by its</span>
- Center Point, <span style="font-weight: normal;">a</span> Vector <span
- style="font-weight: normal;">giving its normal, and its</span> Major &
- Minor Radiuses.</b></p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b><b>
- <span style="font-weight: normal;">GEOM_Object (edge).</span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><span
- style="font-style: italic;"><I> geompy.MakeEllipse(Point, Vector, RadiusMajor,
- RadiusMinor)</I></span>, </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 vertex (for the center) + 1 edge (for the direction) + 1 X Radius
- + 1 Y Radius.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/ellipse.png" x-maintain-ratio="TRUE" width="312px" height="376px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs7"> </p>
-
-<p class="whs8"><img src="pics/ellipsesn.png" x-maintain-ratio="TRUE" width="354px" height="323px" border="0" class="img_whs9"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="basic_geometrical_objects.htm#bookmark3">Basic
- Geometric Objects</a>. </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>Explode</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { margin-left:0px; }
-p.whs3 { font-family:'Times New Roman' , serif; font-size:12pt; font-weight:normal; }
-p.whs4 { font-family:'Times New Roman' , serif; font-size:14pt; }
-p.whs5 { font-size:12pt; }
-ul.whs6 { list-style:disc; }
-p.whs7 { font-size:12pt; font-style:italic; }
-p.whs8 { font-size:12pt; font-style:normal; }
-p.whs9 { font-size:12pt; margin-left:40px; }
-img_whs10 { border:none; width:312px; height:283px; float:none; 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.whs2 {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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nExplode");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Explode</h1>
-
-<p class="whs2">To<span style="font-weight: bold;"><B> Explode</B></span>
- an object into subshapes, in the main menu select <span style="font-weight: bold;"><B>New
- Entity > Explode</B></span>.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To create a list of subshapes
- (vertices, edges, wires etc.) of the given shape using the </font></span><span
- style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Explode</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- operation, you need to define the </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Main
- Object,</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> which will be exploded and
- the </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Type of Subshapes</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> you wish to obtain from it</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.</font></span></p>
-
-<p class="whs5"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a List</span>
- of</b> GEOM_Objects (edges, faces, solids or compsolids).</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;"><span style="font-weight: normal;">Using</span>
- TUI Commands<span style="font-weight: normal;"> you can perform this operation
- in a variety of ways:</span> </b></p>
-
-<ul type="disc" class="whs6">
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.SubShapeAll(Shape,
- Type)</I></span> explodes a Shape on subshapes of a given Type and returns
- a <span style="font-weight: bold;"><B>List</B></span> of sub-shapes. </p></li>
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.SubShapeAllIDs(Shape,
- Type)</I></span> explodes
- a Shape on subshapes of a given Type and returns a List of IDs of sub-shapes.
- </p></li>
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.SubShapeAllSorted(Shape,
- Type)</I></span> explodes
- a shape on subshapes of a given type and <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">sorts
- them by coordinates of their gravity centers, returning a
- list of sub-shapes. </font></span></p></li>
-
- <li class=kadov-p><p class="whs7">geompy.SubShapeAllSortedIDs(Shape,
- Type) <span style="font-style: normal;">explodes
- a shape on subshapes of a given type</span> <span style="font-style: normal;">and
- sorts them by coordinates of their gravity centers, returning
- a List of IDs of sub-shapes.</span></p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-style: normal;">g</span>eompy.SubShape(Shape, Type, ListOfInd)
- <span style="font-style: normal;">allows
- to obtain a compound of sub-shapes of the
- Shape, selected
- by they indices in a list of all sub-shapes of the given Type. Each index
- is in the range [1, Nb_Sub-Shapes_Of_Given_Type].</span> </p></li>
-
- <li class=kadov-p><p class="whs8"><span
- style="font-size: 12pt; font-style: normal;"><font size=3 style="font-size:12pt;">geompy.SubShapeSorted(Shape,
- Type, ListOfInd) allows to obtain a compound of sub-shapes of the Shape,
- selected by they indices in sorted list of all sub-shapes of the given
- Type. Each index is in the range [1, Nb_Sub-Shapes_Of_Given_Type] </font></span></p></li>
-</ul>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Arguments:</b>
- 1 SHAPE + 1 type of SubShape.</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"> </p>
-
-<p class="whs9"><img src="pics/neo-obj1.png" x-maintain-ratio="TRUE" width="312px" height="283px" border="0" class="img_whs10"></p>
-
-<p class="whs4"> </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>Explode on Blocks</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:23px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:372px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; margin-left:0px; }
-p.whs6 { font-size:12pt; margin-left:0px; font-weight:bold; }
-p.whs7 { margin-left:40px; font-size:12pt; }
-img_whs8 { border:none; width:316px; height:278px; float:none; border-style:none; }
-p.whs9 { font-size:12pt; margin-left:36px; text-indent:-36px; }
-p.whs10 { font-size:12pt; text-indent:-36px; margin-left:40px; font-weight:bold; }
-p.whs11 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs5 {margin-left:1pt; }";
- strNSS += "p.whs6 {margin-left:1pt; }";
- strNSS += "p.whs9 {text-indent:1pt; }";
- strNSS += "p.whs10 {text-indent: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("Geometry module\nTransforming geometrical objects\nBlocks Operations\nExplode on Blocks");
-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="image53.gif" width="23px" height="22px" border="0" class="img_whs1"> Explode on Blocks</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- an <span style="font-weight: bold;"><B>Explode on Blocks</B></span> operation
- in the Main Menu select <span style="font-weight: bold;"><B>Operations -
- > Blocks - > Explode on Blocks.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: normal;">This operation</b>
- returns blocks of the given compound. The user may define the type of
- blocks to be extracted by setting the minimum and maximum number of faces
- in the target block. By checking the corresponding box the user may also
- interactively choose the blocks from a compound .</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeBlockExplode(Compound,
- MinNbFaces, MaxNbFaces)</I></span>, where Compound is a compound to be exploded
- into the blocks, MinNbFaces, MaxNbFaces are correspondingly the minimal
- and the
- maximal number of faces of the resulting blocks.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: <span
- style="font-weight: normal;">1 compound + 2 integers (min. and max. number
- of faces in the block to be extracted).</span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/mtransf3.png" x-maintain-ratio="TRUE" width="312px" height="372px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6">Example:</p>
-
-<p class="whs5"> </p>
-
-<p class="whs7"><img src="pics/block_explodesn.png" x-maintain-ratio="TRUE" width="316px" height="278px" border="0" class="img_whs8"></p>
-
-<p class="whs9"> </p>
-
-<p class="whs10"> </p>
-
-<p class="whs11"> <span
- style="font-weight: normal;">Our</span> TUI
- Scripts <span style="font-weight: normal;">provide you with useful examples
- of the use of</span> <a href="blocks_operations.htm#bookmark5">Blocks
- Operations</a>. </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</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:400px; height:350px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; }
-p.whs6 { font-size:12pt; margin-left:40px; font-weight:normal; font-style:italic; }
-img_whs7 { border:none; width:400px; height:359px; float:none; border-style:none; }
-p.whs8 { font-size:12pt; font-style:italic; margin-left:40px; }
-img_whs9 { border:none; float:none; width:300px; height:175px; border-style:none; }
-img_whs10 { border:none; width:350px; height:175px; 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("Geometry module\nCreating geometrical objects\nCreating Complex Objects\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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><b style="font-weight: bold;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif" width="20px" height="20px" border="0" class="img_whs1"> </b></font></span>Extrusion</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> generate an <span
- style="font-weight: bold;"><B>Extrusion</B></span> on an object in the <span
- style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Generation -
- > Extrusion</B></span></p>
-
-<p class="whs2"> </p>
-
-<p>There are 2 algorithms for creation of <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">an
- Extrusion (Prism)</font></span>. </p>
-
-<p class="whs2">Firstly, you can define the <span style="font-weight: bold;"><B>Base
- Shape </B></span>(a basis of the extrusion)<span style="font-weight: bold;"><B>,
- </B></span>the <span style="font-weight: bold;"><B>Vector</B></span> (a direction
- of the extrusion) and the <span style="font-weight: bold;"><B>Height</B></span>
- of extrusion. </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b>
- GEOM_Object (edge, face, solid or compsolid).</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI
- Command :</b><i> </i></B></span><span style="font-style: italic;"><I>geompy.MakePrismVecH(Base,
- Vector, Height)</I></span></p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape (vertex, edge, wire, face or shell) serving as base object
- + 1 vector (for direction of the extrusion) + 1 value (dimension).</font></span></p>
-
-<p> </p>
-
-<p class="whs3"><img src="pics/extrusion1.png" x-maintain-ratio="TRUE" width="400px" height="350px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><span style="font-weight: normal;">Secondly,
- you can define the</span> Extrusion <span style="font-weight: normal;">by
- the </span>Base Shape<span style="font-weight: normal;"> and the </span>Start<span
- style="font-weight: normal;"> and </span>End Point<span style="font-weight: normal;">
- of the </span>Vector<span style="font-weight: normal;"> (in
- this way you don't need to create it in advance).</span> </p>
-
-<p class="whs5"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakePrism(Base,
- Point1, Point2) </I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape (vertex, edge, wire, face or shell) serving as base object
- + 2 vertices.</p>
-
-<p> </p>
-
-<p class="whs6"><img src="pics/extrusion2.png" x-maintain-ratio="TRUE" width="400px" height="359px" border="0" class="img_whs7"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Examples:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs8">Base Shape Prisms</p>
-
-<p class="whs3"><img src="pics/prisms_basessn.png" x-maintain-ratio="TRUE" width="300px" height="175px" border="0" class="img_whs9"> <img src="pics/prismssn.png" x-maintain-ratio="TRUE" width="350px" height="175px" border="0" class="img_whs10"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="complex_objects.htm#bookmark">Complex
- Geometric Objects</a>. </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>Face</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:315px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-style:italic; }
-img_whs6 { border:none; width:180px; height:180px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:180px; height:180px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nFace");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Face</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- a <span style="font-weight: bold;"><B>Face</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>New Entity - > Build - > Face</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">To
- create a </span><span style="font-weight: bold;"><B>Face</B></span><span style="font-weight: normal;">
- you need to select a wire, whose elements will be connected so that the
- surface of the resulting object was minimal. Check </span><span style="font-weight: bold;"><B>Try
- to create a planar face</B></span><span style="font-weight: normal;"> to create
- a planar face or nothing if it is impossible.</span></b></p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result<span style="font-weight: normal;"> will be a</span></b> GEOM_Object
- (FACE).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeFace(Wire, isPlanarWanted</I></span>)</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 wire.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-obj4.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">There are some advanced possibilities accessible
- only via<span style="font-weight: bold;"><B> TUI commands</B></span>.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-style: italic;"><I>geompy.MakeFaceWires(Wires,
- isPlanarWanted)</I></span> - Creates a face on the given wires set. The argument
- is not a single wire, but a list of wires. </p>
-
-<p class="whs2"><span style="font-style: italic;"><I>geompy.MakeFaces(Wires,
- isPlanarWanted)</I></span> is a shortcut to <span style="font-style: italic;"><I>MakeFaceWires().
- </I></span></p>
-
-<p class="whs5"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/facesn1.png" x-maintain-ratio="TRUE" width="180px" height="180px" border="0" class="img_whs6"> <img src="pics/facesn2.png" x-maintain-ratio="TRUE" width="180px" height="180px" border="0" class="img_whs6"> <img src="pics/facesn3.png" x-maintain-ratio="TRUE" width="180px" height="180px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#bookmark1">Advanced Geometric
- Objects</a>. </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>Fillet</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:315px; float:none; border-style:none; }
-img_whs5 { border:none; width:312px; height:346px; float:none; border-style:none; }
-p.whs6 { font-size:12pt; font-style:italic; margin-left:40px; }
-img_whs7 { border:none; width:226px; height:250px; float:none; border-style:none; }
-img_whs8 { border:none; float:none; width:208px; height:250px; border-style:none; }
-img_whs9 { border:none; width:220px; height:250px; float:none; border-style:none; }
-p.whs10 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nFillet");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Fillet</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Fillet</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Operations - > Transformation - >
- Fillet</B></span> </p>
-
-<p> </p>
-
-<p class="whs2">This operation creates<span style="font-weight: bold;">
- <B></B></span>fillets on the edges of a shape.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create fillets on all edges of the given
- shape, you need to define the <span style="font-weight: bold;"><B>Main Object</B></span>
- to create a fillet on and the <span style="font-weight: bold;"><B>Radius</B></span>
- of the Fillet. </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i>geompy.MakeFilletAll(Shape, R) </p>
-
-<p class="whs2"><span style="font-style: italic;"><I><b style="font-weight: bold;">A</I></span><span
- style="font-weight: bold;"><B>rguments: </B></span></b>Name + 1 shape + 1 value
- (fillet radius).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/fillet1.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create fillets on the specified edges or
- faces of the given shape, you
- need to define the <span style="font-weight: bold;"><B>Main Object</B></span>
- to create a fillet on, select the necessary edges or faces in the OCC
- Viewer and define the <span style="font-weight: bold;"><B>Radius</B></span>
- of the Fillet. </p>
-
-<p class="whs2"><span style="font-style: italic;"><I><b style="font-weight: bold; font-style: normal;">TUI
- Command:</b><i> </i>geompy.MakeFillet(Shape, R, ShapeType, ListShapes)
- </I></span></p>
-
-<p class="whs2"><span style="font-style: italic;"><I><b style="font-weight: bold;">A</I></span><span
- style="font-weight: bold;"><B>rguments: </B></span></b>Name + 1 shape + 1 Selection
- of edges (or faces) + 1 value (Fillet radius).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/fillet2.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs5"> <img src="pics/fillet3.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs6">Fillet on all Fillet
- on an edge Fillet
- on a Face</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/fillet_all.png" x-maintain-ratio="TRUE" width="226px" height="250px" border="0" class="img_whs7"> <img src="pics/fillet_edge.png" x-maintain-ratio="TRUE" width="208px" height="250px" border="0" class="img_whs8"><span style="font-size: 12pt; margin-left: 40px;"> <font size=3 style="font-size:12pt;"> <img src="pics/fillet_prism.png" x-maintain-ratio="TRUE" width="220px" height="250px" border="0" class="img_whs9"></font></span></p>
-
-<p class="whs10"> </p>
-
-<p class="whs10"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark3">Transformation
- Operations</a>. </font></span></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>Filling</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:400px; height:367px; border-style:none; float:none; }
-img_whs5 { border:none; float:none; width:260px; height:230px; 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("Geometry module\nCreating geometrical objects\nCreating Complex Objects\nFilling");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Filling
- Surface with Edges</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">generate
- a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Filling</B></font></span><span
- style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>New Entity - >
- Generation -
- > Filling</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create a curving face using several edges
- you need to define the <span style="font-weight: bold;"><B>Edges Compound,</B></span>
- <span style="font-weight: bold;"><B>Minimum</B></span>
- and <span style="font-weight: bold;"><B>Maximum Degree</B></span>, <span style="font-weight: bold;"><B>Tolerance
- </B></span>for<span style="font-weight: bold;"><B> 2D</B></span> and for <span style="font-weight: bold;"><B>3D
- </B></span> and
- the <span style="font-weight: bold;"><B>Number of Iterations</B></span>. </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b>
- GEOM_Object (face).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeFilling(Shape, MinDegree,
- MaxDegree, Tol2D, Tol3D, NbIter)</I></span>,</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 List of edges + 5 Parameters (Min. degree, Max. degree, Number
- of iterations, 2D tolerance, 3D tolerance).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/filling.png" x-maintain-ratio="TRUE" width="400px" height="367px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/filling_compoundsn.png" x-maintain-ratio="TRUE" width="260px" height="230px" border="0" class="img_whs5"> <img src="pics/fillingsn.png" x-maintain-ratio="TRUE" width="260px" height="230px" border="0" class="img_whs5"> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="complex_objects.htm#bookmark2">Complex Geometric
- Objects</a>. </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>Fuse</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
-p.whs4 { font-size:12pt; margin-right:0in; margin-top:0px; margin-bottom:0px; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:324px; float:none; border-style:none; }
-p.whs6 { list-style:disc; margin-right:0in; margin-top:0px; margin-bottom:0px; margin-left:40px; }
-img_whs7 { border:none; float:none; width:252px; height:265px; 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.whs3 {margin-left:1pt;margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs4 {margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs6 {margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nBoolean Operations\nFuse");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Fuse</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Fuse</B></span> operation in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Boolean - >
- Fuse</B></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">This operation creates a shape from two</span>
- </b>shapes.</font></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">The</span> Result<span style="font-weight: normal;">
- will be a</span></b> GEOM_Object (COMPOUND).</font></span></p>
-
-<p class="whs3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 shapes.</font></span></p>
-
-<p class="whs3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><span style="font-weight: bold;"><B>TUI
- Command:</B></span> <span style="font-style: italic;"><I>geompy.MakeFuse(s1,
- s2)</I></span> </font></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="pics/bool1.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs5"></font></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Example:</b></font></span></p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="pics/fusesn1.png" x-maintain-ratio="TRUE" width="252px" height="265px" border="0" class="img_whs7"> <img src="pics/fusesn2.png" x-maintain-ratio="TRUE" width="252px" height="265px" border="0" class="img_whs7"></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of the use of <a href="boolean_operations.htm#bookmark">Boolean
- Operations</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
+++ /dev/null
-|SourceProjectName:GEOM.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
-add_point_on_edge.htm
-arc.htm
-archimede.htm
-basic_geometrical_objects.htm
-basic_operations.htm
-blocks_operations.htm
-boolean_operations.htm
-box.htm
-building_by_blocks.htm
-chamfer.htm
-change_orientation.htm
-changing_display_parameters.htm
-check_free_boundaries.htm
-check_free_faces.htm
-circle.htm
-close_contour.htm
-color.htm
-common.htm
-complex_objects.htm
-compound.htm
-cone.htm
-curve.htm
-cut.htm
-cylinder.htm
-edge.htm
-ellipse.htm
-explode.htm
-explode_on_blocks.htm
-extrusion.htm
-face.htm
-files\introduction_to_geom.htm
-files\salome2_sp3_booleangui_functions.htm
-files\salome2_sp3_geomtoolsgui_functions.htm
-files\salome2_sp3_measuregui_functions.htm
-fillet.htm
-filling.htm
-fuse.htm
-geometrical_objects.htm
-geometry.htm
-glue_faces.htm
-groups.htm
-isos.htm
-line.htm
-local_coordinate_system.htm
-measurement_tools.htm
-mirror_image.htm
-modify_the_location.htm
-multi_rotation.htm
-multi_transformation.htm
-multi_translation.htm
-newentity_blocks.htm
-occ_viewer.htm
-offset_surface.htm
-partition.htm
-pipe_creation.htm
-plane.htm
-point.htm
-primitives.htm
-propagate.htm
-repairing_operations.htm
-revolution.htm
-rotation.htm
-scale_transform.htm
-section.htm
-sewing.htm
-shape_processing.htm
-shell.htm
-sketcher.htm
-sketcher_tui.htm
-solid.htm
-sphere.htm
-suppress_faces.htm
-suppress_holes.htm
-suppress_internal_wires.htm
-transformation_operations.htm
-translation.htm
-transparency.htm
-turus.htm
-vector.htm
-viewing_geometrical_objects.htm
-wire.htm
-wireframe_and_shading.htm
-working_plane.htm
-working_with_groups.htm
-ehelp.xml
-index.glo
-default.css
-pics\image86.gif
-pics\image103.gif
-pics\image97.gif
-pics\chamfer_all.png
-pics\edgesn.png
-pics\boxes.png
-pics\mtrans1.png
-pics\transformation3.png
-pics\mtransf2.png
-image15.jpg
-image204.jpg
-image56.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image73.gif
-files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif
-pics\view_rotation_point.png
-pics\clipping.png
-pics\image98.gif
-pics\archimedesn1.png
-pics\neo-basicprop.png
-pics\mtrans2.png
-pics\transformation4.png
-pics\mtransf3.png
-pics\plane1.png
-image16.jpg
-image57.gif
-image35.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image74.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif
-pics\image105.gif
-pics\image99.gif
-pics\image88.gif
-pics\image77.gif
-pics\suppress_faces1.png
-pics\mirror_axissn1.png
-pics\archimedesn2.png
-pics\revolutionsn.png
-pics\ellipsesn.png
-pics\transformation10.png
-pics\transformation5.png
-pics\mtransf4.png
-pics\plane2.png
-image206.jpg
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image75.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image30.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image19.gif
-image26.gif
-image1.jpg
-pics\image106.gif
-pics\image89.gif
-pics\suppress_faces2.png
-pics\multi_translation1dsn.png
-pics\mirror_axissn2.png
-pics\multi_transformationsn2d.png
-pics\archimedesn3.png
-pics\wiresn.png
-pics\transformation11.png
-pics\transformation6.png
-pics\block1.png
-pics\pipe.png
-pics\torus1.png
-pics\plane3.png
-image59.gif
-image37.gif
-files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image76.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image31.gif
-image38.gif
-pics\multi_transformationsn1d.png
-pics\fillingsn.png
-pics\spheres.png
-pics\polyline.png
-pics\neo-obj1.png
-pics\repair1.png
-pics\transformation7.png
-pics\block2.png
-pics\torus2.png
-image27.gif
-image180.jpg
-image49.gif
-image109.jpg
-files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif
-files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif
-files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image88.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image77.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif
-image28.gif
-selectcolor.png
-pics\glue_faces1.png
-pics\supp_int_wires1.png
-pics\fusesn1.png
-pics\transparencysn.png
-pics\arcsn.png
-pics\points.png
-pics\neo-obj2.png
-pics\neo-localcs1.png
-pics\measures10.png
-pics\repair2.png
-pics\transformation8.png
-pics\block3.png
-image181.jpg
-files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif
-files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image89.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image78.gif
-image3.jpg
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif
-image18.gif
-image1.gif
-pics\geomimport.png
-pics\neo-isos.png
-pics\glue_faces2.png
-pics\supp_int_wires2.png
-pics\sectionsn.png
-pics\fusesn2.png
-pics\toruses.png
-pics\circles.png
-pics\neo-obj3.png
-pics\neo-localcs2.png
-pics\measures1.png
-pics\repair3.png
-pics\transformation9.png
-pics\bool1.png
-pics\partition1.png
-pics\block4.png
-pics\sphere1.png
-image193.jpg
-image29.gif
-image160.jpg
-files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif
-pics\partition2.png
-pics\changeorientation.png
-pics\pipesn.png
-pics\pipe_wire_edgesn.png
-image2.gif
-pics\chamfer_faces.png
-pics\fillet_prism.png
-pics\rotationsn1.png
-pics\disp_mode1sn.png
-pics\cones.png
-pics\planes1.png
-pics\lines.png
-pics\neo-obj4.png
-pics\neo-localcs3.png
-pics\repair4.png
-pics\bool2.png
-pics\block5.png
-pics\sphere2.png
-pics\point1.png
-pics\rotationsn2.png
-pics\disp_mode2sn.png
-pics\neo-detect2.png
-pics\neo-section.png
-pics\neo-obj5.png
-pics\measures3.png
-pics\repair5.png
-pics\bool3.png
-pics\chamfer1.png
-pics\filling.png
-pics\revolution.png
-pics\arc.png
-pics\ellipse.png
-pics\circle1.png
-image3.gif
-files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image56.gif
-pics\set_rotation_point_dialog1.png
-pics\extrusion1.png
-image4.gif
-pics\isos_u12_v12sn.png
-pics\free_boudaries1.png
-pics\multi_rotation1d1.png
-pics\multi_translation2dsn.png
-pics\offsetsn.png
-pics\compoundsn.png
-pics\prisms_basessn.png
-pics\cylinders.png
-pics\vectors.png
-pics\neo-obj6.png
-pics\measures4.png
-pics\repair6.png
-pics\chamfer2.png
-pics\cone1.png
-pics\circle2.png
-pics\point3.png
-image185.jpg
-files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif
-pics\set_rotation_point_dialog2.png
-pics\extrusion2.png
-image5.gif
-pics\free_boudaries2.png
-pics\multi_rotation2d1.png
-pics\multi_rotation1d2.png
-pics\mirror_pointsn1.png
-pics\new-tolerance.png
-pics\neo-obj7.png
-pics\neo-point2.png
-pics\measures5.png
-pics\repair7.png
-pics\chamfer3.png
-pics\cone2.png
-files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image58.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif
-pics\image91.gif
-pics\chamfer_edge.png
-pics\fillet_edge.png
-pics\multi_rotation2d2.png
-pics\scale_transformsn1.png
-pics\mirror_pointsn2.png
-pics\cutsn.png
-pics\shellsn.png
-pics\filling_compoundsn.png
-pics\prismssn.png
-pics\neo-mrot1.png
-pics\repair8.png
-pics\cylinder1.png
-pics\vector1.png
-image61.gif
-image154.jpg
-image110.jpg
-files\salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif
-image40.gif
-pics\scale_transformsn2.png
-pics\translationsn1.png
-pics\facesn1.png
-pics\neo-mrot2.png
-pics\repair9.png
-pics\cylinder2.png
-pics\vector2.png
-image51.gif
-files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif
-files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif
-files\salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image90.gif
-files\salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image29.gif
-i_blue.jpg
-image30.gif
-pics\free_faces1.png
-pics\fillet_all.png
-pics\translationsn2.png
-pics\partitionsn1.png
-pics\colorsn.png
-pics\facesn2.png
-pics\interpol.png
-pics\measures8.png
-pics\fillet1.png
-pics\archimede.png
-pics\workplane4.png
-image52.gif
-image167.jpg
-image156.jpg
-image41.gif
-image145.jpg
-image112.jpg
-files\salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif
-files\salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif
-files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image100.gif
-files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image99.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image13.gif
-pics\transformation4a.png
-pics\image100.gif
-pics\geomcreategroup.png
-pics\commonsn.png
-pics\free_faces2.png
-pics\mirror_planesn1.png
-pics\block_explodesn.png
-pics\partitionsn2.png
-pics\solidsn.png
-pics\facesn3.png
-pics\distance.png
-pics\neo-scetcher1.png
-pics\neo-transparency.png
-pics\measures9.png
-pics\fillet2.png
-pics\workplane5.png
-image53.gif
-image168.jpg
-image42.gif
-image113.jpg
-files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif
-files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image1.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image14.gif
-image43.gif
-pics\image95.gif
-pics\mirror_planesn2.png
-pics\neo-scetcher2.png
-pics\transformation1.png
-pics\fillet3.png
-pics\box1.png
-pics\workplane6.png
-pics\curve.png
-pics\line.png
-image10.gif
-image32.gif
-files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image71.gif
-files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image2.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif
-image33.gif
-pics\image102.gif
-pics\image96.gif
-pics\geomexport.png
-pics\multi_translation_initialsn.png
-pics\plane_on_face.png
-pics\bezier.png
-pics\repair10.png
-pics\transformation2.png
-pics\mtransf1.png
-pics\editgroup.png
-pics\box2.png
-image44.gif
-files\salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image103.gif
-files\salome2_sp3_measuregui_functions_salome2_sp3_measuregui_functions_image72.gif
-files\salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image3.gif
-salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image16.gif
-ehlpdhtm.js
-index.ppf
-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\whlstt11.htm
-whgdata\whlstt12.htm
-whgdata\whlstt13.htm
-whgdata\whlstt14.htm
-whgdata\whlstt15.htm
-whgdata\whlstt16.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">
-
-<html>
-
-<head>
-<title>Geometrical Objects</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nAdvanced Geometrical Objects");
-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>Advanced Geometrical Objects</h1>
-
-<h3><a name=bookmark>Creation of an Edge</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex(0. ,
- 0. , 0.
- )</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(100.,
- 100., 100.)</p>
-
-<p> </p>
-
-<p># create an edge</p>
-
-<p class="whs1">edge = geompy.MakeEdge(p0,
- pxyz)</p>
-
-<p> </p>
-
-<p># add object in the study</p>
-
-<p class="whs1">id_edge = geompy.addToStudy(edge,"Edge")</p>
-
-<p> </p>
-
-<p># display an edge</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_edge)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=Creation>Creation of a Wire</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create vertices</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0. ,
- 0. )</p>
-
-<p class="whs1">py =
- geompy.MakeVertex(0. ,
- 100., 0. )</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex(0. ,
- 0. , 100.)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a vector from
- two points</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an arc from
- three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># add an object in the
- study</p>
-
-<p class="whs1">id_wire = geompy.addToStudy(wire,"Wire")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># display the wire</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_wire)
- </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark1>Creation of a Face</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create vertices</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex(0. ,
- 0. , 0.
- )</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0. ,
- 0. )</p>
-
-<p class="whs1">py =
- geompy.MakeVertex(0. ,
- 100., 0. )</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex(0. ,
- 0. , 100.)</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(100.,
- 100., 100.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a vector from
- two points</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an arc from
- three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create sketchers</p>
-
-<p class="whs1">sketcher1 = geompy.MakeSketcher("Sketcher:F
- -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW",</p>
-
-<p class="whs1"> [100,0,0,
- 1,1,1, -1,1,0])</p>
-
-<p class="whs1">sketcher2 = geompy.MakeSketcher("Sketcher:F
- 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
-
-<p class="whs1">sketcher3 = geompy.MakeSketcher("Sketcher:F
- 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
-
-<p class="whs1">isPlanarFace = 1</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a face from
- the wire</p>
-
-<p class="whs1">face1 = geompy.MakeFace(wire,
- isPlanarFace)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create faces from two
- wires</p>
-
-<p class="whs1">face2 = geompy.MakeFaceWires([wire,
- sketcher1],isPlanarFace)</p>
-
-<p class="whs1">face3 = geompy.MakeFaces([sketcher2,
- sketcher3],isPlanarFace)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_face1 = geompy.addToStudy(face1,"Face1")</p>
-
-<p class="whs1">id_face2 = geompy.addToStudy(face2,"Face2")</p>
-
-<p class="whs1">id_face3 = geompy.addToStudy(face3,"Face3")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the faces</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face1,1)</p>
-
-<p class="whs1">gg.setTransparency(id_face1,0.2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face2,1)</p>
-
-<p class="whs1">gg.setTransparency(id_face2,0.2)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face3)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face3,1)</p>
-
-<p class="whs1">gg.setTransparency(id_face3,0.2)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark2>Creation of a Shell</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2">#create vertices</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0., 0.,
- 0.)</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(
- 5., 5.,
- 40.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create sketchers</p>
-
-<p class="whs1">sketcher1 = geompy.MakeSketcher("Sketcher:F
- 0 0:TT 70 0:TT 70 70:TT 0 70:WW")</p>
-
-<p class="whs1">sketcher2 = geompy.MakeSketcher("Sketcher:F
- 20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
-
-<p class="whs1">isPlanarFace = 1</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a face from
- two wires</p>
-
-<p class="whs1">face = geompy.MakeFaces([sketcher1,
- sketcher2],isPlanarFace)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrism(face,
- p0, pxyz)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># explode the prism into
- faces</p>
-
-<p class="whs1">prism_faces = geompy.SubShapeAllSorted(prism,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a shell from
- a set of faces</p>
-
-<p class="whs1">shell = geompy.MakeShell([prism_faces[0],
- prism_faces[2], prism_faces[3],</p>
-
-<p class="whs1"> prism_faces[7],
- prism_faces[9]])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_shell = geompy.addToStudy(shell,"Shell")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the shell</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_shell)</p>
-
-<p class="whs1">gg.setDisplayMode(id_shell,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark3>Creation of a Solid</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2">#create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(
- 0., 0.,
- 0.)</p>
-
-<p class="whs1">pz = geompy.MakeVertex(
- 0., 0.,
- 40.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create sketchers</p>
-
-<p class="whs1">sketcher = geompy.MakeSketcher("Sketcher:F
- -50 -50:TT 100 -50:R 0:C 50 70:R 0:L 100:WW")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create faces from two
- wires</p>
-
-<p class="whs1">face = geompy.MakeFace(sketcher,1)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrism(face,
- p0, pz)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># explode the prism into
- faces</p>
-
-<p class="whs1">prism_faces = geompy.SubShapeAllSorted(prism,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a shell from
- a set of faces</p>
-
-<p class="whs1">shell = geompy.MakeShell([prism_faces[0],
- prism_faces[1],</p>
-
-<p class="whs1"> prism_faces[3],
- prism_faces[4],</p>
-
-<p class="whs1"> prism_faces[5],
- prism_faces[2]])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a solid, bounded
- by the given shells</p>
-
-<p class="whs1">solid = geompy.MakeSolid([shell])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_solid = geompy.addToStudy(solid,"Solid")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the solid</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_solid)</p>
-
-<p class="whs1">gg.setDisplayMode(id_solid,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark4>Creation of a Compound</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a vertex and
- a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- -30., -30.,
- 50.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- -60., -60.,
- 30.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- -30., -30.,
- 10.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create an arc from
- three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(p1,
- p2, p3)</p>
-
-<p class="whs1">ShapeListCompound
- = []</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">while i <= 3 :</p>
-
-<p class="whs1"> S
- = geompy.MakeTranslation(arc, i * 50., 0., 0.)</p>
-
-<p class="whs1"> ShapeListCompound.append(S)</p>
-
-<p class="whs1"> i
- = i + 1</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a compund of
- the given shapes</p>
-
-<p class="whs1">compound = geompy.MakeCompound(ShapeListCompound)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add object in the study</p>
-
-<p class="whs1">id_compound = geompy.addToStudy(compound,"Compound")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the compound</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_compound)
- </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>geometry</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; }
-ul.whs2 { list-style:disc; }
-table.whs3 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs4 { width:50%; }
-tr.whs5 { x-cell-content-align:top; }
-td.whs6 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-td.whs7 { width:50%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs8 { border:none; width:400px; height:292px; 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("Geometry module\nIntroduction to Geometry");
-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>Introduction to Geometry</h1>
-
-<p><img src="i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"><span style="font-weight: bold;"><B>Geometry </B></span>module
- of SALOME is destined for: </p>
-
-<p> </p>
-
-<ul type="disc" class="whs2">
-
- <li class=kadov-p><p>Import and export of geometrical models in IGES,
- BREP and STEP formats.</p></li>
-
- <li class=kadov-p><p>Construction and optimization of geometrical models
- using a wide range of CAD
- functions:</p></li>
-</ul>
-
-<p> </p>
-
-<table x-use-null-cells cellspacing="0" width="100%" class="whs3">
-<col class="whs4">
-<col class="whs4">
-
-<tr valign="top" class="whs5">
-<td width="50%" class="whs6">
-<ul type="disc" class="whs2">
-
- <li class=kadov-p><p>Creation of basic geometrical objects</p></li>
-
- <li class=kadov-p><p>Construction of primitives</p></li>
-
- <li class=kadov-p><p>Building shapes</p></li>
-
- <li class=kadov-p><p>Generation of complex shapes</p></li>
-
- <li class=kadov-p><p>Working with groups</p></li>
-
- <li class=kadov-p><p>Geometrical repairing of objects</p></li>
-
- <li class=kadov-p><p>Geometrical boolean operations</p></li>
-
- <li class=kadov-p><p>Geometrical transformations</p></li>
-
- <li class=kadov-p><p>Building by blocks</p></li>
-</ul>
-<p> </td>
-<td width="50%" class="whs7">
-<p><img src="image3.jpg" width="400px" height="292px" border="0" class="img_whs8"></td></tr>
-</table>
-
-<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 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="namespacegeompyDC.html">geompyDC</a>.<a class="el" href="classgeompyDC_1_1geompyDC.html">geompyDC</a></div>
+<h1>geompyDC.geompyDC Class Reference</h1><!-- doxytag: class="geompyDC::geompyDC" --><!-- doxytag: inherits="GEOM::_objref_GEOM_Gen" -->Inheritance diagram for geompyDC.geompyDC:<p><center><img src="classgeompyDC_1_1geompyDC__inherit__graph.jpg" border="0" usemap="#geompyDC_8geompyDC__inherit__map" alt="Inheritance graph"></center>
+<map name="geompyDC_8geompyDC__inherit__map">
+<area href="classGEOM_1_1__objref__GEOM__Gen.html" shape="rect" coords="8,9,202,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="classgeompyDC_1_1geompyDC.html#af8ddd61672905dce7b92a9a743663ff">__init__</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#25ea0aecb6d8820d25978244778ca819">init_geom</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1949a3db14d23baada3e1841e0baa5ae">SubShapeName</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name for sub-shape aSubObj of shape aMainObj. <a href="#1949a3db14d23baada3e1841e0baa5ae"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7db0dfa66baae9698555a059b1aba887">addToStudy</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Publish in study aShape with name aName. <a href="#7db0dfa66baae9698555a059b1aba887"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ee026f3fcb1fa99e51c655533cf2c1ef">addToStudyInFather</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Publish in study aShape with name aName as sub-object of previously published aFather. <a href="#ee026f3fcb1fa99e51c655533cf2c1ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d10907eea3fcd77b5c0616314c8c0cf8">MakeVertex</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create point by three coordinates. <a href="#d10907eea3fcd77b5c0616314c8c0cf8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a234e4855a340079db1f4106799fb97c">MakeVertexWithRef</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a point, distant from the referenced point on the given distances along the coordinate axes. <a href="#a234e4855a340079db1f4106799fb97c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#60990e3d531796d90776bb3bfba9f1e0">MakeVertexOnCurve</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a point, corresponding to the given parameter on the given curve. <a href="#60990e3d531796d90776bb3bfba9f1e0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#696c7e5a4c1ea2a7c99202e55ed90629">MakeTangentOnCurve</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a tangent, corresponding to the given parameter on the given curve. <a href="#696c7e5a4c1ea2a7c99202e55ed90629"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d63565ee22d104df4c7d4f6bfe60f2b5">MakeVectorDXDYDZ</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector with the given components. <a href="#d63565ee22d104df4c7d4f6bfe60f2b5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a555df198725426a1dd01b332767d131">MakeVector</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector between two points. <a href="#a555df198725426a1dd01b332767d131"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#aa0cc8bfc8b0459e1553744b3d1cd967">MakeLine</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a line, passing through the given point and parrallel to the given direction. <a href="#aa0cc8bfc8b0459e1553744b3d1cd967"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#dd8cf59821f38e96cf4649f8a6f542bb">MakeLineTwoPnt</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a line, passing through the given points. <a href="#dd8cf59821f38e96cf4649f8a6f542bb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ca603ee3632caf15e8a67c84e53d260e">MakePlane</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, passing through the given point and normal to the given vector. <a href="#ca603ee3632caf15e8a67c84e53d260e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#34df128a5c5b1cf1d17a8d908f504109">MakePlaneThreePnt</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, passing through the three given points. <a href="#34df128a5c5b1cf1d17a8d908f504109"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a485bef0e5de72c0a9def2be78a8f5dc">MakePlaneFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, similar to the existing one, but with another size of representing face. <a href="#a485bef0e5de72c0a9def2be78a8f5dc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#50cfea162620f440c57035f185e86be8">MakeMarker</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a local coordinate system. <a href="#50cfea162620f440c57035f185e86be8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d20661db76229799278b218fe8876b9c">MakeMarkerPntTwoVec</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a local coordinate system. <a href="#d20661db76229799278b218fe8876b9c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5ec980592e1667a038e73e33c897dc8a">MakeArc</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an arc of circle, passing through three given points. <a href="#5ec980592e1667a038e73e33c897dc8a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#9235be0a43fa6a3530cde2f2a178c6a1">MakeArcCenter</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an arc of circle from a center and 2 points. <a href="#9235be0a43fa6a3530cde2f2a178c6a1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a8c53f522639686427623ef671680a69">MakeCircle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a circle with given center, normal vector and radius. <a href="#a8c53f522639686427623ef671680a69"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#174e1bf2c1ca1a1385fdadbef4498a71">MakeCircleThreePnt</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a circle, passing through three given points. <a href="#174e1bf2c1ca1a1385fdadbef4498a71"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8a6255b5b91a1b4d3662eeba16fb181e">MakeEllipse</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an ellipse with given center, normal vector and radiuses. <a href="#8a6255b5b91a1b4d3662eeba16fb181e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ba71e6507ea026a9a583af92e86a4abe">MakePolyline</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a polyline on the set of points. <a href="#ba71e6507ea026a9a583af92e86a4abe"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1bc25a4b112a7d0c835f95548c059fee">MakeBezier</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create bezier curve on the set of points. <a href="#1bc25a4b112a7d0c835f95548c059fee"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#0779d8a2ca8b62f171cbde07224abe61">MakeInterpol</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create B-Spline curve on the set of points. <a href="#0779d8a2ca8b62f171cbde07224abe61"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ebd8e665d93f32edc49caf185bd679d5">MakeSketcher</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sketcher (wire or face), following the textual description, passed through <em>theCommand</em> argument. <a href="#ebd8e665d93f32edc49caf185bd679d5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cb2d962f65e8b2e44c290cc8f9b1394d">MakeSketcherOnPlane</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sketcher (wire or face), following the textual description, passed through <em>theCommand</em> argument. <a href="#cb2d962f65e8b2e44c290cc8f9b1394d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7f67b75d315b058a9dbfd0fcae8436c3">MakeBox</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box by coordinates of two opposite vertices. <a href="#7f67b75d315b058a9dbfd0fcae8436c3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#26a427a3ad940830e2edb3fa5505cb36">MakeBoxDXDYDZ</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box with specified dimensions along the coordinate axes and with edges, parallel to the coordinate axes. <a href="#26a427a3ad940830e2edb3fa5505cb36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b337e6c6ab478f0d793954be1bd9cb2c">MakeBoxTwoPnt</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box with two specified opposite vertices, and with edges, parallel to the coordinate axes. <a href="#b337e6c6ab478f0d793954be1bd9cb2c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#bc2fe5ba9c9c88249580b50209100433">MakeCylinder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cylinder with given base point, axis, radius and height. <a href="#bc2fe5ba9c9c88249580b50209100433"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b3df1c40baa03e45ec7094d146e8b963">MakeCylinderRH</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cylinder with given radius and height at the origin of coordinate system. <a href="#b3df1c40baa03e45ec7094d146e8b963"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#81579f2f47da0cc1d6097e1faadf2dd5">MakeSpherePntR</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given center and radius. <a href="#81579f2f47da0cc1d6097e1faadf2dd5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#07a746f0b76020bbb7282c2e838bd409">MakeSphere</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given center and radius. <a href="#07a746f0b76020bbb7282c2e838bd409"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#fb3e149785a70bf4203f477afc0c835e">MakeSphereR</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given radius at the origin of coordinate system. <a href="#fb3e149785a70bf4203f477afc0c835e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e30b53da3c95b228eb8c834b5854ef14">MakeCone</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cone with given base point, axis, height and radiuses. <a href="#e30b53da3c95b228eb8c834b5854ef14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#0fd12dd339d9640f7ffa0917b8532bb0">MakeConeR1R2H</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cone with given height and radiuses at the origin of coordinate system. <a href="#0fd12dd339d9640f7ffa0917b8532bb0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3626eac4fedc7273364e21221fa88788">MakeTorus</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a torus with given center, normal vector and radiuses. <a href="#3626eac4fedc7273364e21221fa88788"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ee9c1c4391a974f97558960e90e7bb58">MakeTorusRR</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a torus with given radiuses at the origin of coordinate system. <a href="#ee9c1c4391a974f97558960e90e7bb58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#235c3c3893cd30d3fd2d6c75df0b9b85">MakePrism</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along a vector, defined by two points. <a href="#235c3c3893cd30d3fd2d6c75df0b9b85"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ed885f2bf6c39f0aba6f7773b36acceb">MakePrismVecH</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along the vector, i.e. <a href="#ed885f2bf6c39f0aba6f7773b36acceb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ea1248fca4762d449c8f623df461dc1b">MakePipe</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along the path shape. <a href="#ea1248fca4762d449c8f623df461dc1b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f1e4818545a58c6fca5917f4f2600d9c">MakeRevolution</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by revolution of the base shape around the axis on the given angle, i.e. <a href="#f1e4818545a58c6fca5917f4f2600d9c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#2cebf57322ef8812857c0e18935b2e50">MakeThruSections</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices. <a href="#2cebf57322ef8812857c0e18935b2e50"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#9614d962ed7d981dd795367500e932e4">MakePipeWithDifferentSections</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the profile shape along the path shape. <a href="#9614d962ed7d981dd795367500e932e4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f0be52d1562df21a8c8d1c5e19cfd986">MakePipeWithShellSections</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the profile shape along the path shape. <a href="#f0be52d1562df21a8c8d1c5e19cfd986"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#28931fb5811e065bca98d33c72ae3bcd">MakeEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a linear edge with specified ends. <a href="#28931fb5811e065bca98d33c72ae3bcd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a8bbbcb09ca5166b32cfca437388ce53">MakeWire</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a wire from the set of edges and wires. <a href="#a8bbbcb09ca5166b32cfca437388ce53"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cdb6873ee6002347bb02cc3a58282609">MakeFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a face on the given wire. <a href="#cdb6873ee6002347bb02cc3a58282609"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e29525e7b4291b7068a540a6849e958e">MakeFaceWires</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a face on the given wires set. <a href="#e29525e7b4291b7068a540a6849e958e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a0c086da24dc52a36e393403e67fb602">MakeFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#e29525e7b4291b7068a540a6849e958e">MakeFaceWires()</a>. <a href="#a0c086da24dc52a36e393403e67fb602"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f05fc666dd12c4c3b9d9e24ea6bb8e4c">MakeShell</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shell from the set of faces and shells. <a href="#f05fc666dd12c4c3b9d9e24ea6bb8e4c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#46ac42b6d0801facaf94f0219a98519d">MakeSolid</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a solid, bounded by the given shells. <a href="#46ac42b6d0801facaf94f0219a98519d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#4291d93976b7ce6dd54e50bae3f0f2a7">MakeCompound</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a compound of the given shapes. <a href="#4291d93976b7ce6dd54e50bae3f0f2a7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#38f585da48e36d0111edb5855a55cbfb">NumberOfFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Gives quantity of faces in the given shape. <a href="#38f585da48e36d0111edb5855a55cbfb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7e3d02b87d35cce98b8cf9ae0fe6b8ef">NumberOfEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Gives quantity of edges in the given shape. <a href="#7e3d02b87d35cce98b8cf9ae0fe6b8ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#030b12f8bf19341b7fb19c8b6f78560c">ChangeOrientation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Reverses an orientation the given shape. <a href="#030b12f8bf19341b7fb19c8b6f78560c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#07154c139fe6ed7035fdea3e4eeecf7a">OrientationChange</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#030b12f8bf19341b7fb19c8b6f78560c">ChangeOrientation()</a>. <a href="#07154c139fe6ed7035fdea3e4eeecf7a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f17be89e3cd53f3c0f39c2edd65b0fac">GetFreeFacesIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieve all free faces from the given shape. <a href="#f17be89e3cd53f3c0f39c2edd65b0fac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#9fd58edacf404f79755e7dc844252afd">GetSharedShapes</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get all sub-shapes of theShape1 of the given type, shared with theShape2. <a href="#9fd58edacf404f79755e7dc844252afd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f9b62ee841439c13d856a2278133d685">GetShapesOnPlane</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified plane by the certain way, defined through <em>theState</em> parameter. <a href="#f9b62ee841439c13d856a2278133d685"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#68097cda152e42c34570c91205247290">GetShapesOnPlaneIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#68097cda152e42c34570c91205247290"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#651b14d212b23eaa194cb8cc1e4a92df">GetShapesOnPlaneWithLocation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified plane by the certain way, defined through <em>theState</em> parameter. <a href="#651b14d212b23eaa194cb8cc1e4a92df"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ef1c337288dd469d08c6491a1bf1902c">GetShapesOnPlaneWithLocationIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#ef1c337288dd469d08c6491a1bf1902c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#efbe51fb2bab5123c12b233285393066">GetShapesOnCylinder</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified cylinder by the certain way, defined through <em>theState</em> parameter. <a href="#efbe51fb2bab5123c12b233285393066"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#da671d7d2fa64f3fe87df7c055b83825">GetShapesOnCylinderIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#da671d7d2fa64f3fe87df7c055b83825"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ae6c2f5224df29424ca077575eabd736">GetShapesOnSphere</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified sphere by the certain way, defined through <em>theState</em> parameter. <a href="#ae6c2f5224df29424ca077575eabd736"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3987180dd23e4c175ed948a58a6cf660">GetShapesOnSphereIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#3987180dd23e4c175ed948a58a6cf660"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ea27e6fad8151ea201e4f723c4a428a8">GetShapesOnQuadrangle</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified quadrangle by the certain way, defined through <em>theState</em> parameter. <a href="#ea27e6fad8151ea201e4f723c4a428a8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1fab06e08781150f37917ac559cc2aa4">GetShapesOnQuadrangleIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#1fab06e08781150f37917ac559cc2aa4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1ea715c4d4e4d0f4c5e7919f2d83d4e6">GetShapesOnBox</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified <em>theBox</em> by the certain way, defined through <em>theState</em> parameter. <a href="#1ea715c4d4e4d0f4c5e7919f2d83d4e6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#73015991fea1f7bb78c7436d7ec2ebb0">GetShapesOnBoxIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#73015991fea1f7bb78c7436d7ec2ebb0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#67ae7cef36629d18c93c5a102dee00c3">GetInPlace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get sub-shape(s) of theShapeWhere, which are coincident with <em>theShapeWhat</em> or could be a part of it. <a href="#67ae7cef36629d18c93c5a102dee00c3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#eed964a4cd665e5e26b9becd7c260d7b">GetSame</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get sub-shape of theShapeWhere, which is equal to <em>theShapeWhat</em>. <a href="#eed964a4cd665e5e26b9becd7c260d7b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#83963a360d309689ba837d8e316466c1">GetSubShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a composite sub-shape of <aShape>, composed from sub-shapes of <aShape>, selected by their unique IDs inside <aShape>. <a href="#83963a360d309689ba837d8e316466c1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b3cf4c129a0316ffbe7904021762549c">GetSubShapeID</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain unique ID of sub-shape <aSubShape> inside <aShape>. <a href="#b3cf4c129a0316ffbe7904021762549c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#78fa5a06b26d7d924c08892e963f3457">SubShapeAll</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#78fa5a06b26d7d924c08892e963f3457"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c08bbd0e4324de005e144b0bd71a62fd">SubShapeAllIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#c08bbd0e4324de005e144b0bd71a62fd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f6bf69ac9180b0ae6c782445d56f2c59">SubShapeAllSorted</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#f6bf69ac9180b0ae6c782445d56f2c59"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5e36eda3a11edc37146e5e73dd118e81">SubShapeAllSortedIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#5e36eda3a11edc37146e5e73dd118e81"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#0092ca7fbc9ed8d824f6a0f932793e47">SubShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a compound of sub-shapes of <aShape>, selected by they indices in list of all sub-shapes of type <aType>. <a href="#0092ca7fbc9ed8d824f6a0f932793e47"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#bdacf7906482aacc2d5db144847f2d89">SubShapeSorted</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a compound of sub-shapes of <aShape>, selected by they indices in sorted list of all sub-shapes of type <aType>. <a href="#bdacf7906482aacc2d5db144847f2d89"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cd3999b10bc598e794c72f5d0100fce5">ProcessShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply a sequence of Shape Healing operators to the given object. <a href="#cd3999b10bc598e794c72f5d0100fce5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#bbaee711561a402bdd0741ec11471278">SuppressFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove faces from the given object (shape). <a href="#bbaee711561a402bdd0741ec11471278"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#036ad990f98656d408899bfcd5ece429">MakeSewing</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sewing of some shapes into single shape. <a href="#036ad990f98656d408899bfcd5ece429"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8d560be7edd550c5d99efa7d5500983d">Sew</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Sewing of the given object. <a href="#8d560be7edd550c5d99efa7d5500983d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#32d8bab454d23c5081af3cf351da2dbc">SuppressInternalWires</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove internal wires and edges from the given object (face). <a href="#32d8bab454d23c5081af3cf351da2dbc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3bb048fd0a24d95d5477d315f06613ff">SuppressHoles</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove internal closed contours (holes) from the given object. <a href="#3bb048fd0a24d95d5477d315f06613ff"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#68a586d816212080969fe6ee4f19462d">CloseContour</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Close an open wire. <a href="#68a586d816212080969fe6ee4f19462d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7d5999f697974ede4dc7e2bd8bda35a9">DivideEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a point to a given edge object. <a href="#7d5999f697974ede4dc7e2bd8bda35a9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#28ff08bd5c4bc952201dc0cef7402d9b">ChangeOrientationShell</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change orientation of the given object. <a href="#28ff08bd5c4bc952201dc0cef7402d9b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#41fb7f3129e0cd4dd7fe464d18fba515">ChangeOrientationShellCopy</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Change orientation of the given object. <a href="#41fb7f3129e0cd4dd7fe464d18fba515"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#4ed122bb69d03337a8660f1a550916d8">GetFreeBoundary</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a list of wires (wrapped in GEOM_Object-s), that constitute a free boundary of the given shape. <a href="#4ed122bb69d03337a8660f1a550916d8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e9bfb58d56f250fd0cb515e3523ac64e">MakeCopy</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a copy of the given object. <a href="#e9bfb58d56f250fd0cb515e3523ac64e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3f2195ae25913232c21e0b9fe4d14645">MakeFilling</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a filling from the given compound of contours. <a href="#3f2195ae25913232c21e0b9fe4d14645"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8b789fb1eac91f08fed5643735ef82f2">MakeGlueFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace coincident faces in theShape by one face. <a href="#8b789fb1eac91f08fed5643735ef82f2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#34bb9c3bfcf52999473f8ed6849d8226">GetGlueFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find coincident faces in theShape for possible gluing. <a href="#34bb9c3bfcf52999473f8ed6849d8226"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a025213e01e49556bccf2b98e67597a8">MakeGlueFacesByList</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace coincident faces in theShape by one face in compliance with given list of faces. <a href="#a025213e01e49556bccf2b98e67597a8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f867726a40416a5a56c61016cc973a6d">MakeBoolean</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform one of boolean operations on two given shapes. <a href="#f867726a40416a5a56c61016cc973a6d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e8233b6151298410ca8a0a27f938de31">MakeCommon</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 1). <a href="#e8233b6151298410ca8a0a27f938de31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1811661330f4b7497d231898153623e1">MakeCut</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 2). <a href="#1811661330f4b7497d231898153623e1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#91cedb6151173844ea4774b2594d3ede">MakeFuse</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 3). <a href="#91cedb6151173844ea4774b2594d3ede"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#db309b5427f795aa4468380a319cf13b">MakeSection</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 4). <a href="#db309b5427f795aa4468380a319cf13b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#693e98c94226019c732c577f4e2bae08">MakePartition</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition operation. <a href="#693e98c94226019c732c577f4e2bae08"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#91a00e9db2eaa9bde1b8d2c34c92b299">MakePartitionNonSelfIntersectedShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition operation. <a href="#91a00e9db2eaa9bde1b8d2c34c92b299"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a48ac8ff0e107f4d8e93bd664ca8bf15">Partition</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#693e98c94226019c732c577f4e2bae08">MakePartition()</a>. <a href="#a48ac8ff0e107f4d8e93bd664ca8bf15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8cc6a68037fff53d6d525a96df5fa669">MakeHalfPartition</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition of the Shape with the Plane. <a href="#8cc6a68037fff53d6d525a96df5fa669"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ae13dcb7c8887b5a041fb6db9132bf49">MakeTranslationTwoPoints</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the vector, specified by its end points, creating its copy before the translation. <a href="#ae13dcb7c8887b5a041fb6db9132bf49"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7ad489d0ca9d6105742129bb18b9b949">MakeTranslation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the vector, specified by its components, creating its copy before the translation. <a href="#7ad489d0ca9d6105742129bb18b9b949"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d9d5fd17912e5f49ba4b9eccef1cfeaf">MakeTranslationVector</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the given vector, creating its copy before the translation. <a href="#d9d5fd17912e5f49ba4b9eccef1cfeaf"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#dd060f21b775de207551c4b6e435e56c">MakeRotation</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis on the given angle, creating its copy before the rotatation. <a href="#dd060f21b775de207551c4b6e435e56c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#607eb745f4538c19eb12ae3517d39007">MakeRotationThreePoints</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate given object around vector perpendicular to plane containing three points, creating its copy before the rotatation. <a href="#607eb745f4538c19eb12ae3517d39007"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#56de5cb4e4835ec2d52a226e392ebb15">MakeScaleTransform</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Scale the given object by the factor, creating its copy before the scaling. <a href="#56de5cb4e4835ec2d52a226e392ebb15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#24217f6fdddd62d6539c1b964f175b38">MakeMirrorByPlane</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given plane. <a href="#24217f6fdddd62d6539c1b964f175b38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#17fbac698ec8c33d93b1de51ac4874cb">MakeMirrorByAxis</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given axis. <a href="#17fbac698ec8c33d93b1de51ac4874cb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8655b456f413267ed78a3c309b6304f9">MakeMirrorByPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given point. <a href="#8655b456f413267ed78a3c309b6304f9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e56618159887843f81359c4481bf7406">MakePosition</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Modify the Location of the given object by LCS, creating its copy before the setting. <a href="#e56618159887843f81359c4481bf7406"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#981351eeef1b763896c836cc7f253312">MakeOffset</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create new object as offset of the given one. <a href="#981351eeef1b763896c836cc7f253312"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c9a473ec03e5c63896685b0e34481fd2">MakeMultiTranslation1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the given vector a given number times. <a href="#c9a473ec03e5c63896685b0e34481fd2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ab32f56d90ecb1a6b2298dbfbdd7d83c">MakeMultiTranslation2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Conseqently apply two specified translations to theObject specified number of times. <a href="#ab32f56d90ecb1a6b2298dbfbdd7d83c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#38982348093ee6fab2c9a4583a2ca511">MultiRotate1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis a given number times. <a href="#38982348093ee6fab2c9a4583a2ca511"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#616f750a1eeda26ce7277f18f6247693">MultiRotate2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis on the given angle a given number times and multi-translate each rotation result. <a href="#616f750a1eeda26ce7277f18f6247693"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#eedbceb1c3dda0840de2b0eb4181c359">MakeMultiRotation1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The same, as <a class="el" href="classgeompyDC_1_1geompyDC.html#38982348093ee6fab2c9a4583a2ca511">MultiRotate1D()</a>, but axis is given by direction and point. <a href="#eedbceb1c3dda0840de2b0eb4181c359"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8316876f521e705a923d1269a9a8e7f3">MakeMultiRotation2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">The same, as <a class="el" href="classgeompyDC_1_1geompyDC.html#616f750a1eeda26ce7277f18f6247693">MultiRotate2D()</a>, but axis is given by direction and point. <a href="#8316876f521e705a923d1269a9a8e7f3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#63bda9af6c88695354bcff0b367fbe1b">MakeFilletAll</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a fillet on all edges of the given shape. <a href="#63bda9af6c88695354bcff0b367fbe1b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#974837854699fa8b1a8745527f51873a">MakeFillet</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a fillet on the specified edges/faces of the given shape. <a href="#974837854699fa8b1a8745527f51873a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3e51747789c633e2f971cb4b607dbf73">MakeChamferAll</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a symmetric chamfer on all edges of the given shape. <a href="#3e51747789c633e2f971cb4b607dbf73"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#fdfd03b730f47776a40d153c11f7128c">MakeChamferEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a chamfer on edges, common to the specified faces, with distance D1 on the Face1. <a href="#fdfd03b730f47776a40d153c11f7128c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#15f9862deb40103a8b910d66d13391e5">MakeChamferFaces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a chamfer on all edges of the specified faces, with distance D1 on the first specified face (if several for one edge). <a href="#15f9862deb40103a8b910d66d13391e5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#27c2e095df94471a5cee3edf005f527f">MakeChamfer</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#fdfd03b730f47776a40d153c11f7128c">MakeChamferEdge()</a> and <a class="el" href="classgeompyDC_1_1geompyDC.html#15f9862deb40103a8b910d66d13391e5">MakeChamferFaces()</a>. <a href="#27c2e095df94471a5cee3edf005f527f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d71461f31b4b633f1ae8ecf19d2026c6">Archimede</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform an Archimde operation on the given shape with given parameters. <a href="#d71461f31b4b633f1ae8ecf19d2026c6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#9238e5dbb4bc2295e25b8a1c1becc569">PointCoordinates</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get point coordinates. <a href="#9238e5dbb4bc2295e25b8a1c1becc569"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#07b3380d65462c2473d817ba9ba93732">BasicProperties</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get summarized length of all wires, area of surface and volume of the given shape. <a href="#07b3380d65462c2473d817ba9ba93732"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#56e1764834e88b2fff2e341474c5b2a8">BoundingBox</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get parameters of bounding box of the given shape. <a href="#56e1764834e88b2fff2e341474c5b2a8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b0c0c06d7ccf5e768cb68b90ef2063bb">Inertia</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get inertia matrix and moments of inertia of theShape. <a href="#b0c0c06d7ccf5e768cb68b90ef2063bb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#0dd7dc10f4871d5a6ef5e1024c3847ea">MinDistance</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get minimal distance between the given shapes. <a href="#0dd7dc10f4871d5a6ef5e1024c3847ea"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#216d622cb1e479c6b50b974363881e24">Tolerance</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get min and max tolerances of sub-shapes of theShape. <a href="#216d622cb1e479c6b50b974363881e24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#81dcea9d11cd1e7e2a6fc7fc82c9747b">WhatIs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain description of the given shape (number of sub-shapes of each type). <a href="#81dcea9d11cd1e7e2a6fc7fc82c9747b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#bcfbd3959bf92bd7e8db4dd646d8d49d">MakeCDG</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a point, situated at the centre of mass of theShape. <a href="#bcfbd3959bf92bd7e8db4dd646d8d49d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#63d7e6c328b2864bcba0d61809ea8fa9">CheckShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Check a topology of the given shape. <a href="#63d7e6c328b2864bcba0d61809ea8fa9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#ed127e0ebf2001c61b9b4faed95313cb">GetPosition</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get position (LCS) of theShape. <a href="#ed127e0ebf2001c61b9b4faed95313cb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a29a8ae880663ba09edb8b35688646be">KindOfShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get kind of theShape. <a href="#a29a8ae880663ba09edb8b35688646be"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#57106a55755e9b303464b3f416ca94f3">Import</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Import a shape from the BREP or IGES or STEP file (depends on given format) with given name. <a href="#57106a55755e9b303464b3f416ca94f3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#68da55be4e4b99fd7ddf22ce58b9cefc">ImportBREP</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#57106a55755e9b303464b3f416ca94f3">Import()</a> for BREP format. <a href="#68da55be4e4b99fd7ddf22ce58b9cefc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#113c78a060c34a5ca7b72f526a08b247">ImportIGES</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#57106a55755e9b303464b3f416ca94f3">Import()</a> for IGES format. <a href="#113c78a060c34a5ca7b72f526a08b247"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#35b653ecb3349e0b5835802064ed5792">ImportSTEP</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#57106a55755e9b303464b3f416ca94f3">Import()</a> for STEP format. <a href="#35b653ecb3349e0b5835802064ed5792"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#97cf9d2c6b169c617297bcb0ff360d80">Export</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the given shape into a file with given name. <a href="#97cf9d2c6b169c617297bcb0ff360d80"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b98e62e986537d6dbcf09db82268133f">ExportBREP</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#97cf9d2c6b169c617297bcb0ff360d80">Export()</a> for BREP format. <a href="#b98e62e986537d6dbcf09db82268133f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#58cabb942475e87acfe20cf64789d09f">ExportIGES</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#97cf9d2c6b169c617297bcb0ff360d80">Export()</a> for IGES format. <a href="#58cabb942475e87acfe20cf64789d09f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b90ced1bdda21fd895146ecbef93c5b1">ExportSTEP</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="classgeompyDC_1_1geompyDC.html#97cf9d2c6b169c617297bcb0ff360d80">Export()</a> for STEP format. <a href="#b90ced1bdda21fd895146ecbef93c5b1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#438ffa67d7e23027c7ffc5e783648a99">MakeQuad</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face from four edges. <a href="#438ffa67d7e23027c7ffc5e783648a99"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5859f858dddc4697da0a54650a89c630">MakeQuad2Edges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face on two edges. <a href="#5859f858dddc4697da0a54650a89c630"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d22d10791fbe72e26d95c790f4b12f97">MakeQuad4Vertices</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face with specified corners. <a href="#d22d10791fbe72e26d95c790f4b12f97"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#011d7b1e772d37e07b0db4e2c5480865">MakeHexa</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a hexahedral solid, bounded by the six given faces. <a href="#011d7b1e772d37e07b0db4e2c5480865"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d1d440df311f95e73311279e6c7f4b3e">MakeHexa2Faces</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a hexahedral solid between two given faces. <a href="#d1d440df311f95e73311279e6c7f4b3e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#2f8102f4db31a9b15d605b8b644c1e1d">GetPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a vertex, found in the given shape by its coordinates. <a href="#2f8102f4db31a9b15d605b8b644c1e1d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5a135eed8efccf5a21d19376faf3f51f">GetEdge</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get an edge, found in the given shape by two given vertices. <a href="#5a135eed8efccf5a21d19376faf3f51f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5cd9a2e1962945ad63435accccb04532">GetEdgeNearPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find an edge of the given shape, which has minimal distance to the given point. <a href="#5cd9a2e1962945ad63435accccb04532"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#6825dde156e5fa007276494e1474d1a7">GetFaceByPoints</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a face, found in the given shape by four given corner vertices. <a href="#6825dde156e5fa007276494e1474d1a7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#8a87c9c4cfae32e37ed255b0a325952a">GetFaceByEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a face of block, found in the given shape by two given edges. <a href="#8a87c9c4cfae32e37ed255b0a325952a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#3a78ade4a5640a76a6bc14a3205516aa">GetOppositeFace</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face, opposite to the given one in the given block. <a href="#3a78ade4a5640a76a6bc14a3205516aa"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#fd4db71d0d90143094fb9461be1345da">GetFaceNearPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face of the given shape, which has minimal distance to the given point. <a href="#fd4db71d0d90143094fb9461be1345da"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#712db7946c95195cc4e21b04ccfd1e51">GetFaceByNormale</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face of block, whose outside normale has minimal angle with the given vector. <a href="#712db7946c95195cc4e21b04ccfd1e51"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c3ebd44de8eaa8b35e21120c01130c28">CheckCompoundOfBlocks</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Check, if the compound of blocks is given. <a href="#c3ebd44de8eaa8b35e21120c01130c28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#719a37bde6e44c537845fc95bd4171ef">RemoveExtraEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all seam and degenerated edges from <em>theShape</em>. <a href="#719a37bde6e44c537845fc95bd4171ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cb8e3a5d2a9b43ad0a061d98a5adf066">CheckAndImprove</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Check, if the given shape is a blocks compound. <a href="#cb8e3a5d2a9b43ad0a061d98a5adf066"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c9f139e013728ca4b9e9176cc270dc9c">MakeBlockExplode</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get all the blocks, contained in the given compound. <a href="#c9f139e013728ca4b9e9176cc270dc9c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#84908160eb9c556e90fc56482c78b3d6">GetBlockNearPoint</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find block, containing the given point inside its volume or on boundary. <a href="#84908160eb9c556e90fc56482c78b3d6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c1a9fb16ff249201e79c5c3ff44dd0bb">GetBlockByParts</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Find block, containing all the elements, passed as the parts, or maximum quantity of them. <a href="#c1a9fb16ff249201e79c5c3ff44dd0bb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#069fdba39a027adf8abbae169fd47ab2">GetBlocksByParts</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Return all blocks, containing all the elements, passed as the parts. <a href="#069fdba39a027adf8abbae169fd47ab2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5344840833d7500e7823b9ab19927d33">MakeMultiTransformation1D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Multi-transformate block and glue the result. <a href="#5344840833d7500e7823b9ab19927d33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#967f8f3080541525e772700ed30af9eb">MakeMultiTransformation2D</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Multi-transformate block and glue the result. <a href="#967f8f3080541525e772700ed30af9eb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e386685281c22ea9fa42abf0faba0fd0">Propagate</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Build all possible propagation groups. <a href="#e386685281c22ea9fa42abf0faba0fd0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#a9d7a73c8d03d5b448e70e0990ad0b67">CreateGroup</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new group which will store sub shapes of theMainShape. <a href="#a9d7a73c8d03d5b448e70e0990ad0b67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#42c0d3bfe8dcc8398da6fe79ddf8e866">AddObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a sub object with ID theSubShapeId to the group. <a href="#42c0d3bfe8dcc8398da6fe79ddf8e866"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#f1ebbc44f8811fbeb71cffc9abd23985">RemoveObject</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a sub object with ID <em>theSubShapeId</em> from the group. <a href="#f1ebbc44f8811fbeb71cffc9abd23985"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#952c89c431a7d8b80d7f60030bb7fe26">UnionList</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds to the group all the given shapes. <a href="#952c89c431a7d8b80d7f60030bb7fe26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#feb077c171bca22d724adce47a576c51">UnionIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but argument theSubShapes here is a list of sub-shapes indices. <a href="#feb077c171bca22d724adce47a576c51"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#7d131e5368d0cbef869dc8f7e625943f">DifferenceList</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes from the group all the given shapes. <a href="#7d131e5368d0cbef869dc8f7e625943f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#09dcc7102fc5cf6ba7582b027dcaf8c4">DifferenceIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but argument theSubShapes here is a list of sub-shapes indices. <a href="#09dcc7102fc5cf6ba7582b027dcaf8c4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#1f882d77f36782aec9552b4091e72fa2">GetObjectIDs</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a list of sub objects ID stored in the group. <a href="#1f882d77f36782aec9552b4091e72fa2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#89a5674df0edb6bc0d10fe2327b6dd69">GetType</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a type of sub objects stored in the group. <a href="#89a5674df0edb6bc0d10fe2327b6dd69"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#4cb71ccbb6ce142438dac7ab8b1bfbcd">GetMainShape</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a main shape associated with the group. <a href="#4cb71ccbb6ce142438dac7ab8b1bfbcd"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#b7c0fb87c91fbdc021c72b58b56c73f4">GetEdgesByLength</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create group of edges of theShape, whose length is in range [min_length, max_length]. <a href="#b7c0fb87c91fbdc021c72b58b56c73f4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#2c911eb0c53d1c4e22dedd2196055d18">SelectEdges</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Create group of edges of selected shape, whose length is in range [min_length, max_length]. <a href="#2c911eb0c53d1c4e22dedd2196055d18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#fdd468507a5639f23702618029a42f5e">addPath</a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Add Path to load python scripts from. <a href="#fdd468507a5639f23702618029a42f5e"></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="classgeompyDC_1_1geompyDC.html#9485018bf453de77f19cfddb21d3db7d">myBuilder</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#bbaafac224de10f47a6ade537922d0e1">myStudyId</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#6d683d934b8329fdbb475d9c6e61fc55">father</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cb9f574a04df268d2ac3dad4084a501a">BasicOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#4e6874f535a360865d46651d158008a4">CurvesOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#e83f2aa2b03d2fa22da016445792a38d">PrimOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#808040354de98ebe2da91b260acdebc3">ShapesOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#4ffc95e51898e9fb01ddd6f81b5b4d8a">HealOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#399bd9f35bcbba929ce14514bff80172">InsertOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#c0937479ddda039044ef8a77b3856589">BoolOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#71257bf08344eb67180476997550faa4">TrsfOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#70088920b0ecf7c2f91752773076d10a">LocalOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#5553df463eb205a7d8d129984330f570">MeasuOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#79bef537fb16d86a07700b14d66cfabd">BlocksOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#d456a011f482dbd6f98505b6c4f5624d">GroupOp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html#cc738d95c175885b16443c9476218ffb">myStudy</a></td></tr>
+
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="af8ddd61672905dce7b92a9a743663ff"></a><!-- doxytag: member="geompyDC::geompyDC::__init__" ref="af8ddd61672905dce7b92a9a743663ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.__init__ </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="25ea0aecb6d8820d25978244778ca819"></a><!-- doxytag: member="geompyDC::geompyDC::init_geom" ref="25ea0aecb6d8820d25978244778ca819" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.init_geom </td>
+ <td>(</td>
+ <td class="paramtype"> </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="1949a3db14d23baada3e1841e0baa5ae"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeName" ref="1949a3db14d23baada3e1841e0baa5ae" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeName </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aSubObj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aMainObj</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="7db0dfa66baae9698555a059b1aba887"></a><!-- doxytag: member="geompyDC::geompyDC::addToStudy" ref="7db0dfa66baae9698555a059b1aba887" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.addToStudy </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aName</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ee026f3fcb1fa99e51c655533cf2c1ef"></a><!-- doxytag: member="geompyDC::geompyDC::addToStudyInFather" ref="ee026f3fcb1fa99e51c655533cf2c1ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.addToStudyInFather </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aFather</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aName</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="d10907eea3fcd77b5c0616314c8c0cf8"></a><!-- doxytag: member="geompyDC::geompyDC::MakeVertex" ref="d10907eea3fcd77b5c0616314c8c0cf8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeVertex </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theZ</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>theX</em> </td><td>The X coordinate of the point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theY</em> </td><td>The Y coordinate of the point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theZ</em> </td><td>The Z coordinate of the point. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a234e4855a340079db1f4106799fb97c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeVertexWithRef" ref="a234e4855a340079db1f4106799fb97c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeVertexWithRef </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theReference</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theZ</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>theReference</em> </td><td>The referenced point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theX</em> </td><td>Displacement from the referenced point along OX axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theY</em> </td><td>Displacement from the referenced point along OY axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theZ</em> </td><td>Displacement from the referenced point along OZ axis. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="60990e3d531796d90776bb3bfba9f1e0"></a><!-- doxytag: member="geompyDC::geompyDC::MakeVertexOnCurve" ref="60990e3d531796d90776bb3bfba9f1e0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeVertexOnCurve </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRefCurve</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theParameter</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>theRefCurve</em> </td><td>The referenced curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theParameter</em> </td><td>Value of parameter on the referenced curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="696c7e5a4c1ea2a7c99202e55ed90629"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTangentOnCurve" ref="696c7e5a4c1ea2a7c99202e55ed90629" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTangentOnCurve </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRefCurve</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theParameter</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>theRefCurve</em> </td><td>The referenced curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theParameter</em> </td><td>Value of parameter on the referenced curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created tangent. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d63565ee22d104df4c7d4f6bfe60f2b5"></a><!-- doxytag: member="geompyDC::geompyDC::MakeVectorDXDYDZ" ref="d63565ee22d104df4c7d4f6bfe60f2b5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeVectorDXDYDZ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDZ</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>theDX</em> </td><td>X component of the vector. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDY</em> </td><td>Y component of the vector. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDZ</em> </td><td>Z component of the vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created vector.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a555df198725426a1dd01b332767d131"></a><!-- doxytag: member="geompyDC::geompyDC::MakeVector" ref="a555df198725426a1dd01b332767d131" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeVector </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</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>thePnt1</em> </td><td>Start point for the vector. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>End point for the vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created vector. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="aa0cc8bfc8b0459e1553744b3d1cd967"></a><!-- doxytag: member="geompyDC::geompyDC::MakeLine" ref="aa0cc8bfc8b0459e1553744b3d1cd967" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeLine </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDir</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>thePnt</em> </td><td>Point. The resulting line will pass through it. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDir</em> </td><td>Direction. The resulting line will be parallel to it. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created line.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="dd8cf59821f38e96cf4649f8a6f542bb"></a><!-- doxytag: member="geompyDC::geompyDC::MakeLineTwoPnt" ref="dd8cf59821f38e96cf4649f8a6f542bb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeLineTwoPnt </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</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>thePnt1</em> </td><td>First of two points, defining the line. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of two points, defining the line. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created line.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ca603ee3632caf15e8a67c84e53d260e"></a><!-- doxytag: member="geompyDC::geompyDC::MakePlane" ref="ca603ee3632caf15e8a67c84e53d260e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePlane </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTrimSize</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>thePnt</em> </td><td>Point, the plane has to pass through. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, defining the plane normal direction. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>Half size of a side of quadrangle face, representing the plane. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="34df128a5c5b1cf1d17a8d908f504109"></a><!-- doxytag: member="geompyDC::geompyDC::MakePlaneThreePnt" ref="34df128a5c5b1cf1d17a8d908f504109" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePlaneThreePnt </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTrimSize</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>thePnt1</em> </td><td>First of three points, defining the plane. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of three points, defining the plane. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt3</em> </td><td>Fird of three points, defining the plane. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>Half size of a side of quadrangle face, representing the plane. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a485bef0e5de72c0a9def2be78a8f5dc"></a><!-- doxytag: member="geompyDC::geompyDC::MakePlaneFace" ref="a485bef0e5de72c0a9def2be78a8f5dc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePlaneFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFace</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTrimSize</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>theFace</em> </td><td>Referenced plane or LCS(Marker). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>New half size of a side of quadrangle face, representing the plane. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="50cfea162620f440c57035f185e86be8"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMarker" ref="50cfea162620f440c57035f185e86be8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMarker </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>OX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>OY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>OZ</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>XDX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>XDY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>XDZ</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>YDX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>YDY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>YDZ</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>OX,OY,OZ</em> </td><td>Three coordinates of coordinate system origin. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>XDX,XDY,XDZ</em> </td><td>Three components of OX direction </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>YDX,YDY,YDZ</em> </td><td>Three components of OY direction </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created coordinate system.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="d20661db76229799278b218fe8876b9c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMarkerPntTwoVec" ref="d20661db76229799278b218fe8876b9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMarkerPntTwoVec </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theOrigin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theXVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theYVec</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>theOrigin</em> </td><td>Point of coordinate system origin. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theXVec</em> </td><td>Vector of X direction </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theYVec</em> </td><td>Vector of Y direction </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created coordinate system. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="5ec980592e1667a038e73e33c897dc8a"></a><!-- doxytag: member="geompyDC::geompyDC::MakeArc" ref="5ec980592e1667a038e73e33c897dc8a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeArc </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt3</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>thePnt1</em> </td><td>Start point of the arc. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Middle point of the arc. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt3</em> </td><td>End point of the arc. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created arc.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="9235be0a43fa6a3530cde2f2a178c6a1"></a><!-- doxytag: member="geompyDC::geompyDC::MakeArcCenter" ref="9235be0a43fa6a3530cde2f2a178c6a1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeArcCenter </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSense</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>thePnt1</em> </td><td>Center of the arc </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Start point of the arc. (Gives also the radius of the arc) </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt3</em> </td><td>End point of the arc (Gives also a direction) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created arc.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a8c53f522639686427623ef671680a69"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCircle" ref="a8c53f522639686427623ef671680a69" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCircle </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</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>thePnt</em> </td><td>Circle center. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, normal to the plane of the circle. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Circle radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created circle.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="174e1bf2c1ca1a1385fdadbef4498a71"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCircleThreePnt" ref="174e1bf2c1ca1a1385fdadbef4498a71" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCircleThreePnt </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt3</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>thePnt1,thePnt2,thePnt3</em> </td><td>Points, defining the circle. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created circle.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="8a6255b5b91a1b4d3662eeba16fb181e"></a><!-- doxytag: member="geompyDC::geompyDC::MakeEllipse" ref="8a6255b5b91a1b4d3662eeba16fb181e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeEllipse </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMajor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMinor</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>thePnt</em> </td><td>Ellipse center. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, normal to the plane of the ellipse. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRMajor</em> </td><td>Major ellipse radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Minor ellipse radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created ellipse.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ba71e6507ea026a9a583af92e86a4abe"></a><!-- doxytag: member="geompyDC::geompyDC::MakePolyline" ref="ba71e6507ea026a9a583af92e86a4abe" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePolyline </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the polyline. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created polyline.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="1bc25a4b112a7d0c835f95548c059fee"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBezier" ref="1bc25a4b112a7d0c835f95548c059fee" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBezier </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the bezier curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created bezier curve.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="0779d8a2ca8b62f171cbde07224abe61"></a><!-- doxytag: member="geompyDC::geompyDC::MakeInterpol" ref="0779d8a2ca8b62f171cbde07224abe61" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeInterpol </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the B-Spline curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created B-Spline curve.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ebd8e665d93f32edc49caf185bd679d5"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSketcher" ref="ebd8e665d93f32edc49caf185bd679d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSketcher </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCommand</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWorkingPlane</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>
+<br>
+ Edges of the resulting wire or face will be arcs of circles and/or linear segments. <br>
+ Format of the description string have to be the following:<p>
+"Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"<p>
+Where:<ul>
+<li>x1, y1 are coordinates of the first sketcher point (zero by default),</li><li>CMD is one of<ul>
+<li>"R angle" : Set the direction by angle</li><li>"D dx dy" : Set the direction by DX & DY</li></ul>
+<br>
+<ul>
+<li>"TT x y" : Create segment by point at X & Y</li><li>"T dx dy" : Create segment by point with DX & DY</li><li>"L length" : Create segment by direction & Length</li><li>"IX x" : Create segment by direction & Intersect. X</li><li>"IY y" : Create segment by direction & Intersect. Y</li></ul>
+<br>
+<ul>
+<li>"C radius length" : Create arc by direction, radius and length(in degree)</li></ul>
+<br>
+<ul>
+<li>"WW" : Close Wire (to finish)</li><li>"WF" : Close Wire and build face (to finish)</li></ul>
+</li></ul>
+<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>theCommand</em> </td><td>String, defining the sketcher in local coordinates of the working plane. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWorkingPlane</em> </td><td>Nine double values, defining origin, OZ and OX directions of the working plane. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="cb2d962f65e8b2e44c290cc8f9b1394d"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSketcherOnPlane" ref="cb2d962f65e8b2e44c290cc8f9b1394d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSketcherOnPlane </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCommand</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWorkingPlane</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>
+<br>
+ For format of the description string see the previous method.<br>
+ <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theCommand</em> </td><td>String, defining the sketcher in local coordinates of the working plane. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWorkingPlane</em> </td><td>Planar Face or LCS(Marker) of the working plane. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7f67b75d315b058a9dbfd0fcae8436c3"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBox" ref="7f67b75d315b058a9dbfd0fcae8436c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBox </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>x2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>y2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>z2</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="26a427a3ad940830e2edb3fa5505cb36"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBoxDXDYDZ" ref="26a427a3ad940830e2edb3fa5505cb36" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBoxDXDYDZ </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDZ</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>
+Center of the box will be at point (DX/2, DY/2, DZ/2). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theDX</em> </td><td>Length of Box edges, parallel to OX axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDY</em> </td><td>Length of Box edges, parallel to OY axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDZ</em> </td><td>Length of Box edges, parallel to OZ axis. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created box.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="b337e6c6ab478f0d793954be1bd9cb2c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBoxTwoPnt" ref="b337e6c6ab478f0d793954be1bd9cb2c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBoxTwoPnt </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</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>thePnt1</em> </td><td>First of two opposite vertices. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of two opposite vertices. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created box.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="bc2fe5ba9c9c88249580b50209100433"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCylinder" ref="bc2fe5ba9c9c88249580b50209100433" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCylinder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theH</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>thePnt</em> </td><td>Central point of cylinder base. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Cylinder axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Cylinder radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cylinder height. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cylinder.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="b3df1c40baa03e45ec7094d146e8b963"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCylinderRH" ref="b3df1c40baa03e45ec7094d146e8b963" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCylinderRH </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theH</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>
+Axis of the cylinder will be collinear to the OZ axis of the coordinate system. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Cylinder radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cylinder height. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cylinder.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="81579f2f47da0cc1d6097e1faadf2dd5"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSpherePntR" ref="81579f2f47da0cc1d6097e1faadf2dd5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSpherePntR </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</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>thePnt</em> </td><td>Sphere center. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Sphere radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="07a746f0b76020bbb7282c2e838bd409"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSphere" ref="07a746f0b76020bbb7282c2e838bd409" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSphere </td>
+ <td>(</td>
+ <td class="paramtype"> </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>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</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,y,z</em> </td><td>Coordinates of sphere center. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Sphere radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="fb3e149785a70bf4203f477afc0c835e"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSphereR" ref="fb3e149785a70bf4203f477afc0c835e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSphereR </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</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>theR</em> </td><td>Sphere radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="e30b53da3c95b228eb8c834b5854ef14"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCone" ref="e30b53da3c95b228eb8c834b5854ef14" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCone </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theH</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>thePnt</em> </td><td>Central point of the first cone base. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Cone axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR1</em> </td><td>Radius of the first cone base. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR2</em> </td><td>Radius of the second cone base. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>If both radiuses are non-zero, the cone will be truncated. <p>
+If the radiuses are equal, a cylinder will be created instead. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cone height. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cone.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="0fd12dd339d9640f7ffa0917b8532bb0"></a><!-- doxytag: member="geompyDC::geompyDC::MakeConeR1R2H" ref="0fd12dd339d9640f7ffa0917b8532bb0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeConeR1R2H </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theH</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>
+Axis of the cone will be collinear to the OZ axis of the coordinate system. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theR1</em> </td><td>Radius of the first cone base. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR2</em> </td><td>Radius of the second cone base. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>If both radiuses are non-zero, the cone will be truncated. <p>
+If the radiuses are equal, a cylinder will be created instead. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cone height. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cone.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="3626eac4fedc7273364e21221fa88788"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTorus" ref="3626eac4fedc7273364e21221fa88788" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTorus </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMajor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMinor</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>thePnt</em> </td><td>Torus central point. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Torus axis of symmetry. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRMajor</em> </td><td>Torus major radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Torus minor radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created torus.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ee9c1c4391a974f97558960e90e7bb58"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTorusRR" ref="ee9c1c4391a974f97558960e90e7bb58" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTorusRR </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMajor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRMinor</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>theRMajor</em> </td><td>Torus major radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Torus minor radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created torus.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="235c3c3893cd30d3fd2d6c75df0b9b85"></a><!-- doxytag: member="geompyDC::geompyDC::MakePrism" ref="235c3c3893cd30d3fd2d6c75df0b9b85" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePrism </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBase</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint2</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>theBase</em> </td><td>Base shape to be extruded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>First end of extrusion vector. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint2</em> </td><td>Second end of extrusion vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created prism.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ed885f2bf6c39f0aba6f7773b36acceb"></a><!-- doxytag: member="geompyDC::geompyDC::MakePrismVecH" ref="ed885f2bf6c39f0aba6f7773b36acceb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePrismVecH </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBase</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theH</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 the space, transfixed by the base shape during its translation along the vector on the given distance. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be extruded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Direction of extrusion. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Prism dimension along theVec. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created prism.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ea1248fca4762d449c8f623df461dc1b"></a><!-- doxytag: member="geompyDC::geompyDC::MakePipe" ref="ea1248fca4762d449c8f623df461dc1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePipe </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBase</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePath</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 path shape can be a wire or an edge. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be extruded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePath</em> </td><td>Path shape to extrude the base shape along it. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created pipe.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="f1e4818545a58c6fca5917f4f2600d9c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeRevolution" ref="f1e4818545a58c6fca5917f4f2600d9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeRevolution </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBase</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAngle</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 the space, transfixed by the base shape during its rotation around the axis on the given angle. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be rotated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in radians. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created revolution.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="2cebf57322ef8812857c0e18935b2e50"></a><!-- doxytag: member="geompyDC::geompyDC::MakeThruSections" ref="2cebf57322ef8812857c0e18935b2e50" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeThruSections </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSeqSections</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theModeSolid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePreci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRuled</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>theSeqSections</em> </td><td>- set of specified sections. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theModeSolid</em> </td><td>- mode defining building solid or shell </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePreci</em> </td><td>- precision 3D used for smoothing by default 1.e-6 </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRuled</em> </td><td>- mode defining type of the result surfaces (ruled or smoothed). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created shell or solid.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="9614d962ed7d981dd795367500e932e4"></a><!-- doxytag: member="geompyDC::geompyDC::MakePipeWithDifferentSections" ref="9614d962ed7d981dd795367500e932e4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePipeWithDifferentSections </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSeqBases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theLocations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWithContact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWithCorrection</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 path shape can be a wire or an edge. the several profiles can be specified in the several locations of path. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theSeqBases</em> </td><td>- list of Bases shape to be extruded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theLocations</em> </td><td>- list of locations on the path corresponding specified list of the Bases shapes. Number of locations should be equal to number of bases or list of locations can be empty. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePath</em> </td><td>- Path shape to extrude the base shape along it. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWithContact</em> </td><td>- the mode defining that the section is translated to be in contact with the spine. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-</em> </td><td>WithCorrection - defining that the section is rotated to be orthogonal to the spine tangent in the correspondent point </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created pipe.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="f0be52d1562df21a8c8d1c5e19cfd986"></a><!-- doxytag: member="geompyDC::geompyDC::MakePipeWithShellSections" ref="f0be52d1562df21a8c8d1c5e19cfd986" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePipeWithShellSections </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSeqBases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSeqSubBases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theLocations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWithContact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWithCorrection</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 path shape can be a shell or a face. the several profiles can be specified in the several locations of path. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theSeqBases</em> </td><td>- list of Bases shape to be extruded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSeqSubBases</em> </td><td>- list of corresponding subshapes of section shapes. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theLocations</em> </td><td>- list of locations on the path corresponding specified list of the Bases shapes. Number of locations should be equal to number of bases or list of locations can be empty. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePath</em> </td><td>- Path shape to extrude the base shape along it. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWithContact</em> </td><td>- the mode defining that the section is translated to be in contact with the spine. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>-</em> </td><td>WithCorrection - defining that the section is rotated to be orthogonal to the spine tangent in the correspondent point </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solids.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="28931fb5811e065bca98d33c72ae3bcd"></a><!-- doxytag: member="geompyDC::geompyDC::MakeEdge" ref="28931fb5811e065bca98d33c72ae3bcd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt2</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>thePnt1</em> </td><td>Point for the first end of edge. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Point for the second end of edge. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created edge.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a8bbbcb09ca5166b32cfca437388ce53"></a><!-- doxytag: member="geompyDC::geompyDC::MakeWire" ref="a8bbbcb09ca5166b32cfca437388ce53" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeWire </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theEdgesAndWires</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>theEdgesAndWires</em> </td><td>List of edges and/or wires. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="cdb6873ee6002347bb02cc3a58282609"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFace" ref="cdb6873ee6002347bb02cc3a58282609" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWire</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isPlanarWanted</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>theWire</em> </td><td>closed Wire or Edge to build the face on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>isPlanarWanted</em> </td><td>If TRUE, only planar face will be built. If impossible, NULL object will be returned. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="e29525e7b4291b7068a540a6849e958e"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFaceWires" ref="e29525e7b4291b7068a540a6849e958e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFaceWires </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWires</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isPlanarWanted</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>theWires</em> </td><td>List of closed wires or edges to build the face on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>isPlanarWanted</em> </td><td>If TRUE, only planar face will be built. If impossible, NULL object will be returned. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="a0c086da24dc52a36e393403e67fb602"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFaces" ref="a0c086da24dc52a36e393403e67fb602" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWires</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isPlanarWanted</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="f05fc666dd12c4c3b9d9e24ea6bb8e4c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeShell" ref="f05fc666dd12c4c3b9d9e24ea6bb8e4c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeShell </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFacesAndShells</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>theFacesAndShells</em> </td><td>List of faces and/or shells. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created shell.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="46ac42b6d0801facaf94f0219a98519d"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSolid" ref="46ac42b6d0801facaf94f0219a98519d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSolid </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShells</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>theShells</em> </td><td>Sequence of bounding shells. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="4291d93976b7ce6dd54e50bae3f0f2a7"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCompound" ref="4291d93976b7ce6dd54e50bae3f0f2a7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCompound </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapes</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>theShapes</em> </td><td>List of shapes to put in compound. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created compound.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="38f585da48e36d0111edb5855a55cbfb"></a><!-- doxytag: member="geompyDC::geompyDC::NumberOfFaces" ref="38f585da48e36d0111edb5855a55cbfb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.NumberOfFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to count faces of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Quantity of faces.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="7e3d02b87d35cce98b8cf9ae0fe6b8ef"></a><!-- doxytag: member="geompyDC::geompyDC::NumberOfEdges" ref="7e3d02b87d35cce98b8cf9ae0fe6b8ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.NumberOfEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to count edges of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Quantity of edges.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="030b12f8bf19341b7fb19c8b6f78560c"></a><!-- doxytag: member="geompyDC::geompyDC::ChangeOrientation" ref="030b12f8bf19341b7fb19c8b6f78560c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ChangeOrientation </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to be reversed. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>The reversed copy of theShape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="07154c139fe6ed7035fdea3e4eeecf7a"></a><!-- doxytag: member="geompyDC::geompyDC::OrientationChange" ref="07154c139fe6ed7035fdea3e4eeecf7a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.OrientationChange </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="f17be89e3cd53f3c0f39c2edd65b0fac"></a><!-- doxytag: member="geompyDC::geompyDC::GetFreeFacesIDs" ref="f17be89e3cd53f3c0f39c2edd65b0fac" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFreeFacesIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Free face is a face, which is not shared between two shells of the shape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to find free faces in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of all free faces, contained in theShape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="9fd58edacf404f79755e7dc844252afd"></a><!-- doxytag: member="geompyDC::geompyDC::GetSharedShapes" ref="9fd58edacf404f79755e7dc844252afd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetSharedShapes </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</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>theShape1</em> </td><td>Shape to find sub-shapes in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShape2</em> </td><td>Shape to find shared sub-shapes with. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of theShape1, shared with theShape2.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="f9b62ee841439c13d856a2278133d685"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnPlane" ref="f9b62ee841439c13d856a2278133d685" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnPlane </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAx1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAx1</em> </td><td>Vector (or line, or linear edge), specifying normal direction and location of the plane to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="68097cda152e42c34570c91205247290"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnPlaneIDs" ref="68097cda152e42c34570c91205247290" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnPlaneIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAx1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="651b14d212b23eaa194cb8cc1e4a92df"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnPlaneWithLocation" ref="651b14d212b23eaa194cb8cc1e4a92df" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnPlaneWithLocation </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAx1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAx1</em> </td><td>Vector (or line, or linear edge), specifying normal direction of the plane to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePnt</em> </td><td>Point specifying location of the plane to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="ef1c337288dd469d08c6491a1bf1902c"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnPlaneWithLocationIDs" ref="ef1c337288dd469d08c6491a1bf1902c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnPlaneWithLocationIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAx1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="efbe51fb2bab5123c12b233285393066"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnCylinder" ref="efbe51fb2bab5123c12b233285393066" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnCylinder </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Vector (or line, or linear edge), specifying axis of the cylinder to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRadius</em> </td><td>Radius of the cylinder to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="da671d7d2fa64f3fe87df7c055b83825"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnCylinderIDs" ref="da671d7d2fa64f3fe87df7c055b83825" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnCylinderIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="ae6c2f5224df29424ca077575eabd736"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnSphere" ref="ae6c2f5224df29424ca077575eabd736" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnSphere </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCenter</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCenter</em> </td><td>Point, specifying center of the sphere to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theRadius</em> </td><td>Radius of the sphere to find shapes on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="3987180dd23e4c175ed948a58a6cf660"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnSphereIDs" ref="3987180dd23e4c175ed948a58a6cf660" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnSphereIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCenter</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="ea27e6fad8151ea201e4f723c4a428a8"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnQuadrangle" ref="ea27e6fad8151ea201e4f723c4a428a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnQuadrangle </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTopLeftPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTopRigthPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBottomLeftPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBottomRigthPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTopLeftPoint</em> </td><td>Point, specifying top left corner of a quadrangle </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTopRigthPoint</em> </td><td>Point, specifying top right corner of a quadrangle </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theBottomLeftPoint</em> </td><td>Point, specifying bottom left corner of a quadrangle </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theBottomRigthPoint</em> </td><td>Point, specifying bottom right corner of a quadrangle </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="1fab06e08781150f37917ac559cc2aa4"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnQuadrangleIDs" ref="1fab06e08781150f37917ac559cc2aa4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnQuadrangleIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTopLeftPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTopRigthPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBottomLeftPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBottomRigthPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="1ea715c4d4e4d0f4c5e7919f2d83d4e6"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnBox" ref="1ea715c4d4e4d0f4c5e7919f2d83d4e6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnBox </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBox</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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>theBox</em> </td><td>Shape for relative comparing. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="73015991fea1f7bb78c7436d7ec2ebb0"></a><!-- doxytag: member="geompyDC::geompyDC::GetShapesOnBoxIDs" ref="73015991fea1f7bb78c7436d7ec2ebb0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetShapesOnBoxIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBox</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theState</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="67ae7cef36629d18c93c5a102dee00c3"></a><!-- doxytag: member="geompyDC::geompyDC::GetInPlace" ref="67ae7cef36629d18c93c5a102dee00c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetInPlace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeWhere</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeWhat</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>theShapeWhere</em> </td><td>Shape to find sub-shapes of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeWhat</em> </td><td>Shape, specifying what to find. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Group of all found sub-shapes or a single found sub-shape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="eed964a4cd665e5e26b9becd7c260d7b"></a><!-- doxytag: member="geompyDC::geompyDC::GetSame" ref="eed964a4cd665e5e26b9becd7c260d7b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetSame </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeWhere</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeWhat</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>theShapeWhere</em> </td><td>Shape to find sub-shape of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeWhat</em> </td><td>Shape, specifying what to find. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object for found sub-shape. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="83963a360d309689ba837d8e316466c1"></a><!-- doxytag: member="geompyDC::geompyDC::GetSubShape" ref="83963a360d309689ba837d8e316466c1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetSubShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListOfID</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="b3cf4c129a0316ffbe7904021762549c"></a><!-- doxytag: member="geompyDC::geompyDC::GetSubShapeID" ref="b3cf4c129a0316ffbe7904021762549c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetSubShapeID </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aSubShape</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="78fa5a06b26d7d924c08892e963f3457"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeAll" ref="78fa5a06b26d7d924c08892e963f3457" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeAll </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</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>theShape</em> </td><td>Shape to be exploded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of type theShapeType, contained in theShape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="c08bbd0e4324de005e144b0bd71a62fd"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeAllIDs" ref="c08bbd0e4324de005e144b0bd71a62fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeAllIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</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>theShape</em> </td><td>Shape to be exploded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of sub-shapes. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f6bf69ac9180b0ae6c782445d56f2c59"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeAllSorted" ref="f6bf69ac9180b0ae6c782445d56f2c59" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeAllSorted </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</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>
+Sub-shapes will be sorted by coordinates of their gravity centers. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be exploded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of type theShapeType, contained in theShape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="5e36eda3a11edc37146e5e73dd118e81"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeAllSortedIDs" ref="5e36eda3a11edc37146e5e73dd118e81" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeAllSortedIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</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>
+Sub-shapes will be sorted by coordinates of their gravity centers. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be exploded. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of sub-shapes. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0092ca7fbc9ed8d824f6a0f932793e47"></a><!-- doxytag: member="geompyDC::geompyDC::SubShape" ref="0092ca7fbc9ed8d824f6a0f932793e47" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListOfInd</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>
+Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]<p>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="bdacf7906482aacc2d5db144847f2d89"></a><!-- doxytag: member="geompyDC::geompyDC::SubShapeSorted" ref="bdacf7906482aacc2d5db144847f2d89" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SubShapeSorted </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListOfInd</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>
+Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]<p>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="cd3999b10bc598e794c72f5d0100fce5"></a><!-- doxytag: member="geompyDC::geompyDC::ProcessShape" ref="cd3999b10bc598e794c72f5d0100fce5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ProcessShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theOperators</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theParameters</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theValues</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>theShape</em> </td><td>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theOperators</em> </td><td>List of names of operators ("FixShape", "SplitClosedFaces", etc.). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theParameters</em> </td><td>List of names of parameters ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theValues</em> </td><td>List of values of parameters, in the same order as parameters are listed in <em>theParameters</em> list. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="bbaee711561a402bdd0741ec11471278"></a><!-- doxytag: member="geompyDC::geompyDC::SuppressFaces" ref="bbaee711561a402bdd0741ec11471278" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SuppressFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theFaces</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFaces</em> </td><td>Indices of faces to be removed, if EMPTY then the method removes ALL faces of the given object. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="036ad990f98656d408899bfcd5ece429"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSewing" ref="036ad990f98656d408899bfcd5ece429" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSewing </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTolerance</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>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="8d560be7edd550c5d99efa7d5500983d"></a><!-- doxytag: member="geompyDC::geompyDC::Sew" ref="8d560be7edd550c5d99efa7d5500983d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Sew </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theTolerance</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Required tolerance value. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see <a class="el" href="classgeompyDC_1_1geompyDC.html#036ad990f98656d408899bfcd5ece429">MakeSewing()</a> above
+</div>
+</div><p>
+<a class="anchor" name="32d8bab454d23c5081af3cf351da2dbc"></a><!-- doxytag: member="geompyDC::geompyDC::SuppressInternalWires" ref="32d8bab454d23c5081af3cf351da2dbc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SuppressInternalWires </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theWires</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indices of wires to be removed, if EMPTY then the method removes ALL internal wires of the given object. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="3bb048fd0a24d95d5477d315f06613ff"></a><!-- doxytag: member="geompyDC::geompyDC::SuppressHoles" ref="3bb048fd0a24d95d5477d315f06613ff" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SuppressHoles </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theWires</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indices of wires to be removed, if EMPTY then the method removes ALL internal holes of the given object </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="68a586d816212080969fe6ee4f19462d"></a><!-- doxytag: member="geompyDC::geompyDC::CloseContour" ref="68a586d816212080969fe6ee4f19462d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.CloseContour </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theWires</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isCommonVertex</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indexes of edge(s) and wire(s) to be closed within <em>theObject</em>'s shape, if -1, then theObject itself is a wire. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>isCommonVertex</em> </td><td>If TRUE : closure by creation of a common vertex, If FALS : closure by creation of an edge between ends. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="7d5999f697974ede4dc7e2bd8bda35a9"></a><!-- doxytag: member="geompyDC::geompyDC::DivideEdge" ref="7d5999f697974ede4dc7e2bd8bda35a9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.DivideEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theEdgeIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>isByParameter</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>Shape to be processed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theEdgeIndex</em> </td><td>Index of edge to be divided within theObject's shape, if -1, then theObject itself is the edge. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theValue</em> </td><td>Value of parameter on edge or length parameter, depending on <em>isByParameter</em>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>isByParameter</em> </td><td>If TRUE : <em>theValue</em> is treated as a curve parameter [0..1], if FALSE : <em>theValue</em> is treated as a length parameter [0..1] </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="28ff08bd5c4bc952201dc0cef7402d9b"></a><!-- doxytag: member="geompyDC::geompyDC::ChangeOrientationShell" ref="28ff08bd5c4bc952201dc0cef7402d9b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ChangeOrientationShell </td>
+ <td>(</td>
+ <td class="paramtype"> </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>Shape to be processed. given shape </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="41fb7f3129e0cd4dd7fe464d18fba515"></a><!-- doxytag: member="geompyDC::geompyDC::ChangeOrientationShellCopy" ref="41fb7f3129e0cd4dd7fe464d18fba515" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ChangeOrientationShellCopy </td>
+ <td>(</td>
+ <td class="paramtype"> </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>Shape to be processed. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4ed122bb69d03337a8660f1a550916d8"></a><!-- doxytag: member="geompyDC::geompyDC::GetFreeBoundary" ref="4ed122bb69d03337a8660f1a550916d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFreeBoundary </td>
+ <td>(</td>
+ <td class="paramtype"> </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>Shape to get free boundary of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[status, theClosedWires, theOpenWires] status: FALSE, if an error(s) occured during the method execution. theClosedWires: Closed wires on the free boundary of the given shape. theOpenWires: Open wires on the free boundary of the given shape.</dd></dl>
+Example: see GEOM_TestHealing.py
+</div>
+</div><p>
+<a class="anchor" name="e9bfb58d56f250fd0cb515e3523ac64e"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCopy" ref="e9bfb58d56f250fd0cb515e3523ac64e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCopy </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theOriginal</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>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="3f2195ae25913232c21e0b9fe4d14645"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFilling" ref="3f2195ae25913232c21e0b9fe4d14645" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFilling </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMinDeg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMaxDeg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTol2D</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTol3D</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbIter</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>theShape</em> </td><td>the compound of contours </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMinDeg</em> </td><td>a minimal degree </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMaxDeg</em> </td><td>a maximal degree </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTol2D</em> </td><td>a 2d tolerance </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTol3D</em> </td><td>a 3d tolerance </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbIter</em> </td><td>a number of iteration </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created filling surface.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="8b789fb1eac91f08fed5643735ef82f2"></a><!-- doxytag: member="geompyDC::geompyDC::MakeGlueFaces" ref="8b789fb1eac91f08fed5643735ef82f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeGlueFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTolerance</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>theShape</em> </td><td>Initial shape. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Maximum distance between faces, which can be considered as coincident. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing a copy of theShape without coincident faces.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="34bb9c3bfcf52999473f8ed6849d8226"></a><!-- doxytag: member="geompyDC::geompyDC::GetGlueFaces" ref="34bb9c3bfcf52999473f8ed6849d8226" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetGlueFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTolerance</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>theShape</em> </td><td>Initial shape. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Maximum distance between faces, which can be considered as coincident. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>ListOfGO.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="a025213e01e49556bccf2b98e67597a8"></a><!-- doxytag: member="geompyDC::geompyDC::MakeGlueFacesByList" ref="a025213e01e49556bccf2b98e67597a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeGlueFacesByList </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theTolerance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFaces</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>theShape</em> </td><td>Initial shape. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Maximum distance between faces, which can be considered as coincident. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFaces</em> </td><td>List of faces for gluing. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing a copy of theShape without some faces.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="f867726a40416a5a56c61016cc973a6d"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBoolean" ref="f867726a40416a5a56c61016cc973a6d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBoolean </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theOperation</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>theShape1</em> </td><td>First argument for boolean operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShape2</em> </td><td>Second argument for boolean operation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theOperation</em> </td><td>Indicates the operation to be done: 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="e8233b6151298410ca8a0a27f938de31"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCommon" ref="e8233b6151298410ca8a0a27f938de31" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCommon </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s2</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="1811661330f4b7497d231898153623e1"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCut" ref="1811661330f4b7497d231898153623e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCut </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s2</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="91cedb6151173844ea4774b2594d3ede"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFuse" ref="91cedb6151173844ea4774b2594d3ede" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFuse </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s2</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="db309b5427f795aa4468380a319cf13b"></a><!-- doxytag: member="geompyDC::geompyDC::MakeSection" ref="db309b5427f795aa4468380a319cf13b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeSection </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>s2</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="693e98c94226019c732c577f4e2bae08"></a><!-- doxytag: member="geompyDC::geompyDC::MakePartition" ref="693e98c94226019c732c577f4e2bae08" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePartition </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListShapes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListTools</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListKeepInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListRemoveInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Limit</em> = <code><a class="el" href="namespacegeompyDC.html#d85aa7c933dca679752d28c67018a43c">ShapeType</a>["SHAPE"]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>RemoveWebs</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListMaterials</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>ListShapes</em> </td><td>Shapes to be intersected. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ListTools</em> </td><td>Shapes to intersect theShapes. !!!NOTE: Each compound from ListShapes and ListTools will be exploded in order to avoid possible intersection between shapes from this compound. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>Limit</em> </td><td>Type of resulting shapes (corresponding to TopAbs_ShapeEnum).</td></tr>
+ </table>
+</dl>
+After implementation new version of PartitionAlgo (October 2006) other parameters are ignored by current functionality. They are kept in this function only for support old versions. Ignored parameters: <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>ListKeepInside</em> </td><td>Shapes, outside which the results will be deleted. Each shape from theKeepInside must belong to theShapes also. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ListRemoveInside</em> </td><td>Shapes, inside which the results will be deleted. Each shape from theRemoveInside must belong to theShapes also. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>RemoveWebs</em> </td><td>If TRUE, perform Glue 3D algorithm. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>ListMaterials</em> </td><td>Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.</td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shapes.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="91a00e9db2eaa9bde1b8d2c34c92b299"></a><!-- doxytag: member="geompyDC::geompyDC::MakePartitionNonSelfIntersectedShape" ref="91a00e9db2eaa9bde1b8d2c34c92b299" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePartitionNonSelfIntersectedShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListShapes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListTools</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListKeepInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListRemoveInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Limit</em> = <code><a class="el" href="namespacegeompyDC.html#d85aa7c933dca679752d28c67018a43c">ShapeType</a>["SHAPE"]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>RemoveWebs</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListMaterials</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>
+This method may be useful if it is needed to make a partition for compound contains nonintersected shapes. Performance will be better since intersection between shapes from compound is not performed.<p>
+Description of all parameters as in previous method <a class="el" href="classgeompyDC_1_1geompyDC.html#693e98c94226019c732c577f4e2bae08">MakePartition()</a><p>
+!!!NOTE: Passed compounds (via ListShapes or via ListTools) have to consist of nonintersecting shapes.<p>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shapes. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a48ac8ff0e107f4d8e93bd664ca8bf15"></a><!-- doxytag: member="geompyDC::geompyDC::Partition" ref="a48ac8ff0e107f4d8e93bd664ca8bf15" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Partition </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListShapes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListTools</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListKeepInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListRemoveInside</em> = <code>[]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Limit</em> = <code><a class="el" href="namespacegeompyDC.html#d85aa7c933dca679752d28c67018a43c">ShapeType</a>["SHAPE"]</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>RemoveWebs</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListMaterials</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="8cc6a68037fff53d6d525a96df5fa669"></a><!-- doxytag: member="geompyDC::geompyDC::MakeHalfPartition" ref="8cc6a68037fff53d6d525a96df5fa669" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeHalfPartition </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePlane</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>theShape</em> </td><td>Shape to be intersected. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePlane</em> </td><td>Tool shape, to intersect theShape. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ae13dcb7c8887b5a041fb6db9132bf49"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTranslationTwoPoints" ref="ae13dcb7c8887b5a041fb6db9132bf49" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTranslationTwoPoints </td>
+ <td>(</td>
+ <td class="paramtype"> </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>thePoint1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint2</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>The object to be translated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>Start point of translation vector. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint2</em> </td><td>End point of translation vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="7ad489d0ca9d6105742129bb18b9b949"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTranslation" ref="7ad489d0ca9d6105742129bb18b9b949" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTranslation </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theDX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theDZ</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>The object to be translated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theDX,theDY,theDZ</em> </td><td>Components of translation vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="d9d5fd17912e5f49ba4b9eccef1cfeaf"></a><!-- doxytag: member="geompyDC::geompyDC::MakeTranslationVector" ref="d9d5fd17912e5f49ba4b9eccef1cfeaf" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeTranslationVector </td>
+ <td>(</td>
+ <td class="paramtype"> </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>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>theObject</em> </td><td>The object to be translated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>The translation vector. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="dd060f21b775de207551c4b6e435e56c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeRotation" ref="dd060f21b775de207551c4b6e435e56c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeRotation </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAngle</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>The object to be rotated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in radians. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the rotated object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="607eb745f4538c19eb12ae3517d39007"></a><!-- doxytag: member="geompyDC::geompyDC::MakeRotationThreePoints" ref="607eb745f4538c19eb12ae3517d39007" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeRotationThreePoints </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theCentPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint2</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>The object to be rotated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theCentPoint</em> </td><td>central point - the axis is the vector perpendicular to the plane containing the three points. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>and thePoint2 - in a perpendicular plan of the axis. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the rotated object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="56de5cb4e4835ec2d52a226e392ebb15"></a><!-- doxytag: member="geompyDC::geompyDC::MakeScaleTransform" ref="56de5cb4e4835ec2d52a226e392ebb15" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeScaleTransform </td>
+ <td>(</td>
+ <td class="paramtype"> </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>thePoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFactor</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>The object to be scaled. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Center point for scaling. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFactor</em> </td><td>Scaling factor value. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the scaled shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="24217f6fdddd62d6539c1b964f175b38"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMirrorByPlane" ref="24217f6fdddd62d6539c1b964f175b38" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMirrorByPlane </td>
+ <td>(</td>
+ <td class="paramtype"> </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>thePlane</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>The object to be mirrored. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePlane</em> </td><td>Plane of symmetry. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="17fbac698ec8c33d93b1de51ac4874cb"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMirrorByAxis" ref="17fbac698ec8c33d93b1de51ac4874cb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMirrorByAxis </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theAxis</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>The object to be mirrored. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Axis of symmetry. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="8655b456f413267ed78a3c309b6304f9"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMirrorByPoint" ref="8655b456f413267ed78a3c309b6304f9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMirrorByPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </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>thePoint</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>The object to be mirrored. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point of symmetry. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="e56618159887843f81359c4481bf7406"></a><!-- doxytag: member="geompyDC::geompyDC::MakePosition" ref="e56618159887843f81359c4481bf7406" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakePosition </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theStartLCS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theEndLCS</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>The object to be displaced. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theStartLCS</em> </td><td>Coordinate system to perform displacement from it. If <em>theStartLCS</em> is NULL, displacement will be performed from global CS. If <em>theObject</em> itself is used as <em>theStartLCS</em>, its location will be changed to <em>theEndLCS</em>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theEndLCS</em> </td><td>Coordinate system to perform displacement to it. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the displaced shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="981351eeef1b763896c836cc7f253312"></a><!-- doxytag: member="geompyDC::geompyDC::MakeOffset" ref="981351eeef1b763896c836cc7f253312" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeOffset </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theOffset</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>The base object for the offset. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theOffset</em> </td><td>Offset value. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the offset object.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="c9a473ec03e5c63896685b0e34481fd2"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiTranslation1D" ref="c9a473ec03e5c63896685b0e34481fd2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiTranslation1D </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStep</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes</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>The object to be translated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>Direction of the translation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theStep</em> </td><td>Distance to translate on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes</em> </td><td>Quantity of translations to be done. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each translation.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="ab32f56d90ecb1a6b2298dbfbdd7d83c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiTranslation2D" ref="ab32f56d90ecb1a6b2298dbfbdd7d83c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiTranslation2D </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theVector1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStep1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theVector2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStep2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes2</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>The object to be translated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVector1</em> </td><td>Direction of the first translation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theStep1</em> </td><td>Step of the first translation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes1</em> </td><td>Quantity of translations to be done along theVector1. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVector2</em> </td><td>Direction of the second translation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theStep2</em> </td><td>Step of the second translation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes2</em> </td><td>Quantity of translations to be done along theVector2. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each translation.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="38982348093ee6fab2c9a4583a2ca511"></a><!-- doxytag: member="geompyDC::geompyDC::MultiRotate1D" ref="38982348093ee6fab2c9a4583a2ca511" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MultiRotate1D </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes</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>
+Rotation angle will be 2*PI/theNbTimes. <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>The object to be rotated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>The rotation axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes</em> </td><td>Quantity of rotations to be done. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each rotation.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="616f750a1eeda26ce7277f18f6247693"></a><!-- doxytag: member="geompyDC::geompyDC::MultiRotate2D" ref="616f750a1eeda26ce7277f18f6247693" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MultiRotate2D </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theAngle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theStep</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theNbTimes2</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>
+Translation direction passes through center of gravity of rotated shape and its projection on the rotation axis. <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>The object to be rotated. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in graduces. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes1</em> </td><td>Quantity of rotations to be done. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theStep</em> </td><td>Translation distance. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theNbTimes2</em> </td><td>Quantity of translations to be done. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each transformation.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="eedbceb1c3dda0840de2b0eb4181c359"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiRotation1D" ref="eedbceb1c3dda0840de2b0eb4181c359" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiRotation1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aDir</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aNbTimes</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="8316876f521e705a923d1269a9a8e7f3"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiRotation2D" ref="8316876f521e705a923d1269a9a8e7f3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiRotation2D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aDir</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aPoint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>anAngle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>nbtimes1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aStep</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>nbtimes2</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="63bda9af6c88695354bcff0b367fbe1b"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFilletAll" ref="63bda9af6c88695354bcff0b367fbe1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFilletAll </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</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>theShape</em> </td><td>Shape, to perform fillet on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Fillet radius. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="974837854699fa8b1a8745527f51873a"></a><!-- doxytag: member="geompyDC::geompyDC::MakeFillet" ref="974837854699fa8b1a8745527f51873a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeFillet </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theR</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theListShapes</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>theShape</em> </td><td>Shape, to perform fillet on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Fillet radius. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of shapes in <theListShapes>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theListShapes</em> </td><td>Global indices of edges/faces to perform fillet on. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). </dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="3e51747789c633e2f971cb4b607dbf73"></a><!-- doxytag: member="geompyDC::geompyDC::MakeChamferAll" ref="3e51747789c633e2f971cb4b607dbf73" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeChamferAll </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theD</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theD</em> </td><td>Chamfer size along each face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="fdfd03b730f47776a40d153c11f7128c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeChamferEdge" ref="fdfd03b730f47776a40d153c11f7128c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeChamferEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theD1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theD2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFace1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFace2</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theD1</em> </td><td>Chamfer size along <em>theFace1</em>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theD2</em> </td><td>Chamfer size along <em>theFace2</em>. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFace1,theFace2</em> </td><td>Global indices of two faces of <em>theShape</em>. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). </dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="15f9862deb40103a8b910d66d13391e5"></a><!-- doxytag: member="geompyDC::geompyDC::MakeChamferFaces" ref="15f9862deb40103a8b910d66d13391e5" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeChamferFaces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theD1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theD2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFaces</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theD1</em> </td><td>Chamfer size along face from <em>theFaces</em>. If both faces, connected to the edge, are in <em>theFaces</em>, <em>theD1</em> will be get along face, which is nearer to <em>theFaces</em> beginning. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theD2</em> </td><td>Chamfer size along another of two faces, connected to the edge. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFaces</em> </td><td>Sequence of global indices of faces of <em>theShape</em>. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method geompy.GetSubShapeID(). </dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="27c2e095df94471a5cee3edf005f527f"></a><!-- doxytag: member="geompyDC::geompyDC::MakeChamfer" ref="27c2e095df94471a5cee3edf005f527f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeChamfer </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>d1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>d2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>aShapeType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>ListShape</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="d71461f31b4b633f1ae8ecf19d2026c6"></a><!-- doxytag: member="geompyDC::geompyDC::Archimede" ref="d71461f31b4b633f1ae8ecf19d2026c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Archimede </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWeight</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theWaterDensity</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMeshDeflection</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 object presenting the resulting face is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be put in water. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWeight</em> </td><td>Weight og the shape. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theWaterDensity</em> </td><td>Density of the water. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMeshDeflection</em> </td><td>Deflection of the mesh, using to compute the section. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing a section of <em>theShape</em> by a plane, corresponding to water level.</dd></dl>
+Example: see GEOM_TestAll.py
+</div>
+</div><p>
+<a class="anchor" name="9238e5dbb4bc2295e25b8a1c1becc569"></a><!-- doxytag: member="geompyDC::geompyDC::PointCoordinates" ref="9238e5dbb4bc2295e25b8a1c1becc569" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.PointCoordinates </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Point</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>[x, y, z]</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="07b3380d65462c2473d817ba9ba93732"></a><!-- doxytag: member="geompyDC::geompyDC::BasicProperties" ref="07b3380d65462c2473d817ba9ba93732" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.BasicProperties </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to define properties of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[theLength, theSurfArea, theVolume] theLength: Summarized length of all wires of the given shape. theSurfArea: Area of surface of the given shape. theVolume: Volume of the given shape.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="56e1764834e88b2fff2e341474c5b2a8"></a><!-- doxytag: member="geompyDC::geompyDC::BoundingBox" ref="56e1764834e88b2fff2e341474c5b2a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.BoundingBox </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to obtain bounding box of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[Xmin,Xmax, Ymin,Ymax, Zmin,Zmax] Xmin,Xmax: Limits of shape along OX axis. Ymin,Ymax: Limits of shape along OY axis. Zmin,Zmax: Limits of shape along OZ axis.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="b0c0c06d7ccf5e768cb68b90ef2063bb"></a><!-- doxytag: member="geompyDC::geompyDC::Inertia" ref="b0c0c06d7ccf5e768cb68b90ef2063bb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Inertia </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to calculate inertia of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz] I(1-3)(1-3): Components of the inertia matrix of the given shape. Ix,Iy,Iz: Moments of inertia of the given shape.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="0dd7dc10f4871d5a6ef5e1024c3847ea"></a><!-- doxytag: member="geompyDC::geompyDC::MinDistance" ref="0dd7dc10f4871d5a6ef5e1024c3847ea" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MinDistance </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape2</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>theShape1,theShape2</em> </td><td>Shapes to find minimal distance between. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Value of the minimal distance between the given shapes.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="216d622cb1e479c6b50b974363881e24"></a><!-- doxytag: member="geompyDC::geompyDC::Tolerance" ref="216d622cb1e479c6b50b974363881e24" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Tolerance </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape, to get tolerances of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax] FaceMin,FaceMax: Min and max tolerances of the faces. EdgeMin,EdgeMax: Min and max tolerances of the edges. VertMin,VertMax: Min and max tolerances of the vertices.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="81dcea9d11cd1e7e2a6fc7fc82c9747b"></a><!-- doxytag: member="geompyDC::geompyDC::WhatIs" ref="81dcea9d11cd1e7e2a6fc7fc82c9747b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.WhatIs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to be described. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Description of the given shape.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="bcfbd3959bf92bd7e8db4dd646d8d49d"></a><!-- doxytag: member="geompyDC::geompyDC::MakeCDG" ref="bcfbd3959bf92bd7e8db4dd646d8d49d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeCDG </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to define centre of mass of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="63d7e6c328b2864bcba0d61809ea8fa9"></a><!-- doxytag: member="geompyDC::geompyDC::CheckShape" ref="63d7e6c328b2864bcba0d61809ea8fa9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.CheckShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theIsCheckGeom</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>theShape</em> </td><td>Shape to check validity of. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theIsCheckGeom</em> </td><td>If FALSE, only the shape's topology will be checked, if TRUE, the shape's geometry will be checked also. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>TRUE, if the shape "seems to be valid". If theShape is invalid, prints a description of problem.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="ed127e0ebf2001c61b9b4faed95313cb"></a><!-- doxytag: member="geompyDC::geompyDC::GetPosition" ref="ed127e0ebf2001c61b9b4faed95313cb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetPosition </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Origin of the LCS is situated at the shape's center of mass. Axes of the LCS are obtained from shape's location or, if the shape is a planar face, from position of its plane.<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>theShape</em> </td><td>Shape to calculate position of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>[Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz]. Ox,Oy,Oz: Coordinates of shape's LCS origin. Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction. Xx,Xy,Xz: Coordinates of shape's LCS X direction.</dd></dl>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="a29a8ae880663ba09edb8b35688646be"></a><!-- doxytag: member="geompyDC::geompyDC::KindOfShape" ref="a29a8ae880663ba09edb8b35688646be" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.KindOfShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>theShape</em> </td><td>Shape to get a kind of. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Returns a kind of shape in terms of <em>GEOM_IKindOfShape.shape_kind</em> enumeration and a list of parameters, describing the shape. </dd></dl>
+<dl compact><dt><b>Note:</b></dt><dd>Concrete meaning of each value, returned via <em>theIntegers</em> or <em>theDoubles</em> list depends on the kind of the shape. The full list of possible outputs is:</dd></dl>
+geompy.kind.COMPOUND nb_solids nb_faces nb_edges nb_vertices geompy.kind.COMPSOLID nb_solids nb_faces nb_edges nb_vertices<p>
+geompy.kind.SHELL <a class="el" href="classgeompyDC_1_1info.html#e26dc8be1afb44222ab88b4a9852c6aa">geompy.info.CLOSED</a> nb_faces nb_edges nb_vertices geompy.kind.SHELL <a class="el" href="classgeompyDC_1_1info.html#b717bbcea5e0faa48760b0be4706ec57">geompy.info.UNCLOSED</a> nb_faces nb_edges nb_vertices<p>
+geompy.kind.WIRE <a class="el" href="classgeompyDC_1_1info.html#e26dc8be1afb44222ab88b4a9852c6aa">geompy.info.CLOSED</a> nb_edges nb_vertices geompy.kind.WIRE <a class="el" href="classgeompyDC_1_1info.html#b717bbcea5e0faa48760b0be4706ec57">geompy.info.UNCLOSED</a> nb_edges nb_vertices<p>
+geompy.kind.SPHERE xc yc zc R geompy.kind.CYLINDER xb yb zb dx dy dz R H geompy.kind.BOX xc yc zc ax ay az geompy.kind.ROTATED_BOX xc yc zc zx zy zz xx xy xz ax ay az geompy.kind.TORUS xc yc zc dx dy dz R_1 R_2 geompy.kind.CONE xb yb zb dx dy dz R_1 R_2 H geompy.kind.POLYHEDRON nb_faces nb_edges nb_vertices geompy.kind.SOLID nb_faces nb_edges nb_vertices<p>
+geompy.kind.SPHERE2D xc yc zc R geompy.kind.CYLINDER2D xb yb zb dx dy dz R H geompy.kind.TORUS2D xc yc zc dx dy dz R_1 R_2 geompy.kind.CONE2D xc yc zc dx dy dz R_1 R_2 H geompy.kind.DISK_CIRCLE xc yc zc dx dy dz R geompy.kind.DISK_ELLIPSE xc yc zc dx dy dz R_1 R_2 geompy.kind.POLYGON xo yo zo dx dy dz nb_edges nb_vertices geompy.kind.PLANE xo yo zo dx dy dz geompy.kind.PLANAR xo yo zo dx dy dz nb_edges nb_vertices geompy.kind.FACE nb_edges nb_vertices<p>
+geompy.kind.CIRCLE xc yc zc dx dy dz R geompy.kind.ARC_CIRCLE xc yc zc dx dy dz R x1 y1 z1 x2 y2 z2 geompy.kind.ELLIPSE xc yc zc dx dy dz R_1 R_2 geompy.kind.ARC_ELLIPSE xc yc zc dx dy dz R_1 R_2 x1 y1 z1 x2 y2 z2 geompy.kind.LINE xo yo zo dx dy dz geompy.kind.SEGMENT x1 y1 z1 x2 y2 z2 geompy.kind.EDGE nb_vertices<p>
+geompy.kind.VERTEX x y z<p>
+Example: see GEOM_TestMeasures.py
+</div>
+</div><p>
+<a class="anchor" name="57106a55755e9b303464b3f416ca94f3"></a><!-- doxytag: member="geompyDC::geompyDC::Import" ref="57106a55755e9b303464b3f416ca94f3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Import </td>
+ <td>(</td>
+ <td class="paramtype"> </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>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFormatName</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>theFileName</em> </td><td>The file, containing the shape. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFormatName</em> </td><td>Specify format for the file reading. Available formats can be obtained with InsertOp.ImportTranslators() method. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the imported shape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="68da55be4e4b99fd7ddf22ce58b9cefc"></a><!-- doxytag: member="geompyDC::geompyDC::ImportBREP" ref="68da55be4e4b99fd7ddf22ce58b9cefc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ImportBREP </td>
+ <td>(</td>
+ <td class="paramtype"> </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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="113c78a060c34a5ca7b72f526a08b247"></a><!-- doxytag: member="geompyDC::geompyDC::ImportIGES" ref="113c78a060c34a5ca7b72f526a08b247" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ImportIGES </td>
+ <td>(</td>
+ <td class="paramtype"> </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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="35b653ecb3349e0b5835802064ed5792"></a><!-- doxytag: member="geompyDC::geompyDC::ImportSTEP" ref="35b653ecb3349e0b5835802064ed5792" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ImportSTEP </td>
+ <td>(</td>
+ <td class="paramtype"> </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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="97cf9d2c6b169c617297bcb0ff360d80"></a><!-- doxytag: member="geompyDC::geompyDC::Export" ref="97cf9d2c6b169c617297bcb0ff360d80" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Export </td>
+ <td>(</td>
+ <td class="paramtype"> </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>theFileName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFormatName</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>Shape to be stored in the file. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFileName</em> </td><td>Name of the file to store the given shape in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFormatName</em> </td><td>Specify format for the shape storage. Available formats can be obtained with InsertOp.ImportTranslators() method.</td></tr>
+ </table>
+</dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="b98e62e986537d6dbcf09db82268133f"></a><!-- doxytag: member="geompyDC::geompyDC::ExportBREP" ref="b98e62e986537d6dbcf09db82268133f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ExportBREP </td>
+ <td>(</td>
+ <td class="paramtype"> </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>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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="58cabb942475e87acfe20cf64789d09f"></a><!-- doxytag: member="geompyDC::geompyDC::ExportIGES" ref="58cabb942475e87acfe20cf64789d09f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ExportIGES </td>
+ <td>(</td>
+ <td class="paramtype"> </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>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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="b90ced1bdda21fd895146ecbef93c5b1"></a><!-- doxytag: member="geompyDC::geompyDC::ExportSTEP" ref="b90ced1bdda21fd895146ecbef93c5b1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.ExportSTEP </td>
+ <td>(</td>
+ <td class="paramtype"> </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>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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="438ffa67d7e23027c7ffc5e783648a99"></a><!-- doxytag: member="geompyDC::geompyDC::MakeQuad" ref="438ffa67d7e23027c7ffc5e783648a99" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeQuad </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E4</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>
+Order of Edges is not important. It is not necessary that edges share the same vertex. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>E1,E2,E3,E4</em> </td><td>Edges for the face bound. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="5859f858dddc4697da0a54650a89c630"></a><!-- doxytag: member="geompyDC::geompyDC::MakeQuad2Edges" ref="5859f858dddc4697da0a54650a89c630" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeQuad2Edges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>E2</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 missing edges will be built by creating the shortest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>E1,E2</em> </td><td>Two opposite edges for the face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="d22d10791fbe72e26d95c790f4b12f97"></a><!-- doxytag: member="geompyDC::geompyDC::MakeQuad4Vertices" ref="d22d10791fbe72e26d95c790f4b12f97" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeQuad4Vertices </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>V1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>V2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>V3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>V4</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 missing edges will be built by creating the shortest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>V1,V2,V3,V4</em> </td><td>Corner vertices for the face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="011d7b1e772d37e07b0db4e2c5480865"></a><!-- doxytag: member="geompyDC::geompyDC::MakeHexa" ref="011d7b1e772d37e07b0db4e2c5480865" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeHexa </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F4</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F5</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F6</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>
+Order of faces is not important. It is not necessary that Faces share the same edge. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>F1,F2,F3,F4,F5,F6</em> </td><td>Faces for the hexahedral solid. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="d1d440df311f95e73311279e6c7f4b3e"></a><!-- doxytag: member="geompyDC::geompyDC::MakeHexa2Faces" ref="d1d440df311f95e73311279e6c7f4b3e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeHexa2Faces </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>F2</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 missing faces will be built by creating the smallest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>F1,F2</em> </td><td>Two opposite faces for the hexahedral solid. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="2f8102f4db31a9b15d605b8b644c1e1d"></a><!-- doxytag: member="geompyDC::geompyDC::GetPoint" ref="2f8102f4db31a9b15d605b8b644c1e1d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theX</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theY</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theZ</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theEpsilon</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theX,theY,theZ</em> </td><td>Coordinates of the sought vertex. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theEpsilon</em> </td><td>Maximum allowed distance between the resulting vertex and point with the given coordinates. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found vertex.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="5a135eed8efccf5a21d19376faf3f51f"></a><!-- doxytag: member="geompyDC::geompyDC::GetEdge" ref="5a135eed8efccf5a21d19376faf3f51f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetEdge </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint2</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint1,thePoint2</em> </td><td>Points, close to the ends of the desired edge. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found edge.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="5cd9a2e1962945ad63435accccb04532"></a><!-- doxytag: member="geompyDC::geompyDC::GetEdgeNearPoint" ref="5cd9a2e1962945ad63435accccb04532" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetEdgeNearPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired edge. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found edge.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="6825dde156e5fa007276494e1474d1a7"></a><!-- doxytag: member="geompyDC::geompyDC::GetFaceByPoints" ref="6825dde156e5fa007276494e1474d1a7" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFaceByPoints </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint4</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint1-thePoint4</em> </td><td>Points, close to the corners of the desired face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="8a87c9c4cfae32e37ed255b0a325952a"></a><!-- doxytag: member="geompyDC::geompyDC::GetFaceByEdges" ref="8a87c9c4cfae32e37ed255b0a325952a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFaceByEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theEdge1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theEdge2</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theEdge1,theEdge2</em> </td><td>Edges, close to the edges of the desired face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="3a78ade4a5640a76a6bc14a3205516aa"></a><!-- doxytag: member="geompyDC::geompyDC::GetOppositeFace" ref="3a78ade4a5640a76a6bc14a3205516aa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetOppositeFace </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBlock</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theFace</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>theBlock</em> </td><td>Must be a hexahedral solid. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theFace</em> </td><td>Face of <em>theBlock</em>, opposite to the desired face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="fd4db71d0d90143094fb9461be1345da"></a><!-- doxytag: member="geompyDC::geompyDC::GetFaceNearPoint" ref="fd4db71d0d90143094fb9461be1345da" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFaceNearPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="712db7946c95195cc4e21b04ccfd1e51"></a><!-- doxytag: member="geompyDC::geompyDC::GetFaceByNormale" ref="712db7946c95195cc4e21b04ccfd1e51" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetFaceByNormale </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theBlock</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>Vector, close to the normale of the desired face. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="c3ebd44de8eaa8b35e21120c01130c28"></a><!-- doxytag: member="geompyDC::geompyDC::CheckCompoundOfBlocks" ref="c3ebd44de8eaa8b35e21120c01130c28" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.CheckCompoundOfBlocks </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCompound</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>
+To be considered as a compound of blocks, the given shape must satisfy the following conditions:<ul>
+<li>Each element of the compound should be a Block (6 faces and 12 edges).</li><li>A connection between two Blocks should be an entire quadrangle face or an entire edge.</li><li>The compound should be connexe.</li><li>The glue between two quadrangle faces should be applied. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theCompound</em> </td><td>The compound to check. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>TRUE, if the given shape is a compound of blocks. If theCompound is not valid, prints all discovered errors.</dd></dl>
+Example: see GEOM_Spanner.py </li></ul>
+
+</div>
+</div><p>
+<a class="anchor" name="719a37bde6e44c537845fc95bd4171ef"></a><!-- doxytag: member="geompyDC::geompyDC::RemoveExtraEdges" ref="719a37bde6e44c537845fc95bd4171ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.RemoveExtraEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Unite faces and edges, sharing one surface. It means that this faces must have references to one C++ surface object (handle). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>The compound or single solid to remove irregular edges from. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Improved shape.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="cb8e3a5d2a9b43ad0a061d98a5adf066"></a><!-- doxytag: member="geompyDC::geompyDC::CheckAndImprove" ref="cb8e3a5d2a9b43ad0a061d98a5adf066" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.CheckAndImprove </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Fix all detected errors. <dl compact><dt><b>Note:</b></dt><dd>Single block can be also fixed by this method. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theCompound</em> </td><td>The compound to check and improve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Improved compound.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="c9f139e013728ca4b9e9176cc270dc9c"></a><!-- doxytag: member="geompyDC::geompyDC::MakeBlockExplode" ref="c9f139e013728ca4b9e9176cc270dc9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeBlockExplode </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCompound</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMinNbFaces</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMaxNbFaces</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>theCompound</em> </td><td>The compound to explode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMinNbFaces</em> </td><td>If solid has lower number of faces, it is not a block. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theMaxNbFaces</em> </td><td>If solid has higher number of faces, it is not a block. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>If theMaxNbFaces = 0, the maximum number of faces is not restricted. </dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, containing the retrieved blocks.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="84908160eb9c556e90fc56482c78b3d6"></a><!-- doxytag: member="geompyDC::geompyDC::GetBlockNearPoint" ref="84908160eb9c556e90fc56482c78b3d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetBlockNearPoint </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCompound</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>thePoint</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>theCompound</em> </td><td>Compound, to find block in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired block. If the point lays on boundary between some blocks, we return block with nearest center. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found block.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="c1a9fb16ff249201e79c5c3ff44dd0bb"></a><!-- doxytag: member="geompyDC::geompyDC::GetBlockByParts" ref="c1a9fb16ff249201e79c5c3ff44dd0bb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetBlockByParts </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCompound</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theParts</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>theCompound</em> </td><td>Compound, to find block in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theParts</em> </td><td>List of faces and/or edges and/or vertices to be parts of the found block. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found block.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="069fdba39a027adf8abbae169fd47ab2"></a><!-- doxytag: member="geompyDC::geompyDC::GetBlocksByParts" ref="069fdba39a027adf8abbae169fd47ab2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetBlocksByParts </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theCompound</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theParts</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>theCompound</em> </td><td>Compound, to find blocks in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theParts</em> </td><td>List of faces and/or edges and/or vertices to be parts of the found blocks. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, containing the found blocks.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="5344840833d7500e7823b9ab19927d33"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiTransformation1D" ref="5344840833d7500e7823b9ab19927d33" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiTransformation1D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Block</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbTimes</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>
+Transformation is defined so, as to superpose direction faces. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>Block</em> </td><td>Hexahedral solid to be multi-transformed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>DirFace1</em> </td><td>ID of First direction face. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>DirFace2</em> </td><td>ID of Second direction face. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbTimes</em> </td><td>Quantity of transformations to be done. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Unique ID of sub-shape can be obtained, using method <a class="el" href="classgeompyDC_1_1geompyDC.html#b3cf4c129a0316ffbe7904021762549c">GetSubShapeID()</a>. </dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="967f8f3080541525e772700ed30af9eb"></a><!-- doxytag: member="geompyDC::geompyDC::MakeMultiTransformation2D" ref="967f8f3080541525e772700ed30af9eb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.MakeMultiTransformation2D </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Block</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace1U</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace2U</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbTimesU</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace1V</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>DirFace2V</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>NbTimesV</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>Block</em> </td><td>Hexahedral solid to be multi-transformed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>DirFace1U,DirFace2U</em> </td><td>IDs of Direction faces for the first transformation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>DirFace1V,DirFace2V</em> </td><td>IDs of Direction faces for the second transformation. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>NbTimesU,NbTimesV</em> </td><td>Quantity of transformations to be done. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
+Example: see GEOM_Spanner.py
+</div>
+</div><p>
+<a class="anchor" name="e386685281c22ea9fa42abf0faba0fd0"></a><!-- doxytag: member="geompyDC::geompyDC::Propagate" ref="e386685281c22ea9fa42abf0faba0fd0" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.Propagate </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</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>
+Propagation group is a set of all edges, opposite to one (main) edge of this group directly or through other opposite edges. Notion of Opposite Edge make sence only on quadrangle face. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to build propagation groups on. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, each of them is a propagation group.</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="a9d7a73c8d03d5b448e70e0990ad0b67"></a><!-- doxytag: member="geompyDC::geompyDC::CreateGroup" ref="a9d7a73c8d03d5b448e70e0990ad0b67" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.CreateGroup </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theMainShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShapeType</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>theMainShape</em> </td><td>is a GEOM object on which the group is selected </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>defines a shape type of the group </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a newly created GEOM group</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="42c0d3bfe8dcc8398da6fe79ddf8e866"></a><!-- doxytag: member="geompyDC::geompyDC::AddObject" ref="42c0d3bfe8dcc8398da6fe79ddf8e866" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.AddObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapeID</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>theGroup</em> </td><td>is a GEOM group to which the new sub shape is added </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubShapeID</em> </td><td>is a sub shape ID in the main object. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Use method <a class="el" href="classgeompyDC_1_1geompyDC.html#b3cf4c129a0316ffbe7904021762549c">GetSubShapeID()</a> to get an unique ID of the sub shape</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="f1ebbc44f8811fbeb71cffc9abd23985"></a><!-- doxytag: member="geompyDC::geompyDC::RemoveObject" ref="f1ebbc44f8811fbeb71cffc9abd23985" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.RemoveObject </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapeID</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>theGroup</em> </td><td>is a GEOM group from which the new sub shape is removed </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubShapeID</em> </td><td>is a sub shape ID in the main object. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Use method <a class="el" href="classgeompyDC_1_1geompyDC.html#b3cf4c129a0316ffbe7904021762549c">GetSubShapeID()</a> to get an unique ID of the sub shape</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="952c89c431a7d8b80d7f60030bb7fe26"></a><!-- doxytag: member="geompyDC::geompyDC::UnionList" ref="952c89c431a7d8b80d7f60030bb7fe26" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.UnionList </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapes</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>
+No errors, if some shapes are alredy included. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theGroup</em> </td><td>is a GEOM group to which the new sub shapes are added. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubShapes</em> </td><td>is a list of sub shapes to be added.</td></tr>
+ </table>
+</dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="feb077c171bca22d724adce47a576c51"></a><!-- doxytag: member="geompyDC::geompyDC::UnionIDs" ref="feb077c171bca22d724adce47a576c51" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.UnionIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapes</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="7d131e5368d0cbef869dc8f7e625943f"></a><!-- doxytag: member="geompyDC::geompyDC::DifferenceList" ref="7d131e5368d0cbef869dc8f7e625943f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.DifferenceList </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapes</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>
+No errors, if some shapes are not included. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>theGroup</em> </td><td>is a GEOM group from which the sub-shapes are removed. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>theSubShapes</em> </td><td>is a list of sub-shapes to be removed.</td></tr>
+ </table>
+</dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="09dcc7102fc5cf6ba7582b027dcaf8c4"></a><!-- doxytag: member="geompyDC::geompyDC::DifferenceIDs" ref="09dcc7102fc5cf6ba7582b027dcaf8c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.DifferenceIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theSubShapes</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>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="1f882d77f36782aec9552b4091e72fa2"></a><!-- doxytag: member="geompyDC::geompyDC::GetObjectIDs" ref="1f882d77f36782aec9552b4091e72fa2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetObjectIDs </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group for which a list of IDs is requested</td></tr>
+ </table>
+</dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="89a5674df0edb6bc0d10fe2327b6dd69"></a><!-- doxytag: member="geompyDC::geompyDC::GetType" ref="89a5674df0edb6bc0d10fe2327b6dd69" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetType </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group which type is returned.</td></tr>
+ </table>
+</dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="4cb71ccbb6ce142438dac7ab8b1bfbcd"></a><!-- doxytag: member="geompyDC::geompyDC::GetMainShape" ref="4cb71ccbb6ce142438dac7ab8b1bfbcd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetMainShape </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group for which a main shape object is requested </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a GEOM object which is a main shape for theGroup</dd></dl>
+Example: see GEOM_TestOthers.py
+</div>
+</div><p>
+<a class="anchor" name="b7c0fb87c91fbdc021c72b58b56c73f4"></a><!-- doxytag: member="geompyDC::geompyDC::GetEdgesByLength" ref="b7c0fb87c91fbdc021c72b58b56c73f4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.GetEdgesByLength </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>theShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>min_length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>max_length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>include_min</em> = <code>1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>include_max</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>
+If include_min/max == 0, edges with length == min/max_length will not be included in result.
+</div>
+</div><p>
+<a class="anchor" name="2c911eb0c53d1c4e22dedd2196055d18"></a><!-- doxytag: member="geompyDC::geompyDC::SelectEdges" ref="2c911eb0c53d1c4e22dedd2196055d18" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.SelectEdges </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>min_length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>max_length</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>include_min</em> = <code>1</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>include_max</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>
+If include_min/max == 0, edges with length == min/max_length will not be included in result.
+</div>
+</div><p>
+<a class="anchor" name="fdd468507a5639f23702618029a42f5e"></a><!-- doxytag: member="geompyDC::geompyDC::addPath" ref="fdd468507a5639f23702618029a42f5e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">def geompyDC.geompyDC.addPath </td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>self</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname"> <em>Path</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>Field Documentation</h2>
+<a class="anchor" name="9485018bf453de77f19cfddb21d3db7d"></a><!-- doxytag: member="geompyDC::geompyDC::myBuilder" ref="9485018bf453de77f19cfddb21d3db7d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#9485018bf453de77f19cfddb21d3db7d">geompyDC.geompyDC.myBuilder</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bbaafac224de10f47a6ade537922d0e1"></a><!-- doxytag: member="geompyDC::geompyDC::myStudyId" ref="bbaafac224de10f47a6ade537922d0e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#bbaafac224de10f47a6ade537922d0e1">geompyDC.geompyDC.myStudyId</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6d683d934b8329fdbb475d9c6e61fc55"></a><!-- doxytag: member="geompyDC::geompyDC::father" ref="6d683d934b8329fdbb475d9c6e61fc55" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#6d683d934b8329fdbb475d9c6e61fc55">geompyDC.geompyDC.father</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cb9f574a04df268d2ac3dad4084a501a"></a><!-- doxytag: member="geompyDC::geompyDC::BasicOp" ref="cb9f574a04df268d2ac3dad4084a501a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#cb9f574a04df268d2ac3dad4084a501a">geompyDC.geompyDC.BasicOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4e6874f535a360865d46651d158008a4"></a><!-- doxytag: member="geompyDC::geompyDC::CurvesOp" ref="4e6874f535a360865d46651d158008a4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#4e6874f535a360865d46651d158008a4">geompyDC.geompyDC.CurvesOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e83f2aa2b03d2fa22da016445792a38d"></a><!-- doxytag: member="geompyDC::geompyDC::PrimOp" ref="e83f2aa2b03d2fa22da016445792a38d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#e83f2aa2b03d2fa22da016445792a38d">geompyDC.geompyDC.PrimOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="808040354de98ebe2da91b260acdebc3"></a><!-- doxytag: member="geompyDC::geompyDC::ShapesOp" ref="808040354de98ebe2da91b260acdebc3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#808040354de98ebe2da91b260acdebc3">geompyDC.geompyDC.ShapesOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="4ffc95e51898e9fb01ddd6f81b5b4d8a"></a><!-- doxytag: member="geompyDC::geompyDC::HealOp" ref="4ffc95e51898e9fb01ddd6f81b5b4d8a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#4ffc95e51898e9fb01ddd6f81b5b4d8a">geompyDC.geompyDC.HealOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="399bd9f35bcbba929ce14514bff80172"></a><!-- doxytag: member="geompyDC::geompyDC::InsertOp" ref="399bd9f35bcbba929ce14514bff80172" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#399bd9f35bcbba929ce14514bff80172">geompyDC.geompyDC.InsertOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c0937479ddda039044ef8a77b3856589"></a><!-- doxytag: member="geompyDC::geompyDC::BoolOp" ref="c0937479ddda039044ef8a77b3856589" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#c0937479ddda039044ef8a77b3856589">geompyDC.geompyDC.BoolOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="71257bf08344eb67180476997550faa4"></a><!-- doxytag: member="geompyDC::geompyDC::TrsfOp" ref="71257bf08344eb67180476997550faa4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#71257bf08344eb67180476997550faa4">geompyDC.geompyDC.TrsfOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="70088920b0ecf7c2f91752773076d10a"></a><!-- doxytag: member="geompyDC::geompyDC::LocalOp" ref="70088920b0ecf7c2f91752773076d10a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#70088920b0ecf7c2f91752773076d10a">geompyDC.geompyDC.LocalOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5553df463eb205a7d8d129984330f570"></a><!-- doxytag: member="geompyDC::geompyDC::MeasuOp" ref="5553df463eb205a7d8d129984330f570" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#5553df463eb205a7d8d129984330f570">geompyDC.geompyDC.MeasuOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="79bef537fb16d86a07700b14d66cfabd"></a><!-- doxytag: member="geompyDC::geompyDC::BlocksOp" ref="79bef537fb16d86a07700b14d66cfabd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#79bef537fb16d86a07700b14d66cfabd">geompyDC.geompyDC.BlocksOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d456a011f482dbd6f98505b6c4f5624d"></a><!-- doxytag: member="geompyDC::geompyDC::GroupOp" ref="d456a011f482dbd6f98505b6c4f5624d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#d456a011f482dbd6f98505b6c4f5624d">geompyDC.geompyDC.GroupOp</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="cc738d95c175885b16443c9476218ffb"></a><!-- doxytag: member="geompyDC::geompyDC::myStudy" ref="cc738d95c175885b16443c9476218ffb" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classgeompyDC_1_1geompyDC.html#cc738d95c175885b16443c9476218ffb">geompyDC.geompyDC.myStudy</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 12:28:15 2007 for SALOME - GEOM - 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="namespacegeompyDC.html">geompyDC</a>.<a class="el" href="classgeompyDC_1_1info.html">info</a></div>
+<h1>geompyDC.info Class Reference</h1><!-- doxytag: class="geompyDC::info" --><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></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="classgeompyDC_1_1info.html#ec486e837378c061897b2e1b8aefde41">UNKNOWN</a> = 0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1info.html#e26dc8be1afb44222ab88b4a9852c6aa">CLOSED</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1info.html#b717bbcea5e0faa48760b0be4706ec57">UNCLOSED</a> = 2</td></tr>
+
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="ec486e837378c061897b2e1b8aefde41"></a><!-- doxytag: member="geompyDC::info::UNKNOWN" ref="ec486e837378c061897b2e1b8aefde41" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classgeompyDC_1_1info.html#ec486e837378c061897b2e1b8aefde41">geompyDC.info.UNKNOWN</a> = 0<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e26dc8be1afb44222ab88b4a9852c6aa"></a><!-- doxytag: member="geompyDC::info::CLOSED" ref="e26dc8be1afb44222ab88b4a9852c6aa" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classgeompyDC_1_1info.html#e26dc8be1afb44222ab88b4a9852c6aa">geompyDC.info.CLOSED</a> = 1<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="b717bbcea5e0faa48760b0be4706ec57"></a><!-- doxytag: member="geompyDC::info::UNCLOSED" ref="b717bbcea5e0faa48760b0be4706ec57" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="classgeompyDC_1_1info.html#b717bbcea5e0faa48760b0be4706ec57">geompyDC.info.UNCLOSED</a> = 2<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 12:28:15 2007 for SALOME - GEOM - 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>
<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 -->
+<!-- Generated by Doxygen 1.4.7 -->
<h1>Package geompy</h1>
<p>
+<p>
+For available methods please see documentation of
+<a class="el" href="classgeompyDC_1_1geompyDC.html">geompyDC</a> class,
+implemented in <a class="el" href="namespacegeompyDC.html">geompyDC.py</a> script.
+All methods of geompyDC class are accessible via geompy namespace, for example "box = geompy.MakeBoxDXDYDZ(10.,20.,30.)".
+<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></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="namespacegeompy.html#4a5618a690db0aecbe5989cb55d74ece">init_geom</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5ece84ce1ea01c0cb42f69399817bbc3">SubShapeName</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get name for sub-shape aSubObj of shape aMainObj. <a href="#5ece84ce1ea01c0cb42f69399817bbc3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#fd40f7d59da81b22862298666f807f7d">addToStudy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Publish in study aShape with name aName. <a href="#fd40f7d59da81b22862298666f807f7d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#82aab9da423d1401a3ddfd0eb4b0c49d">addToStudyInFather</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Publish in study aShape with name aName as sub-object of previously published aFather. <a href="#82aab9da423d1401a3ddfd0eb4b0c49d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9310c6377485b0bcfcfab87ab49d7e9a">MakeVertex</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create point by three coordinates. <a href="#9310c6377485b0bcfcfab87ab49d7e9a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0218cb2daa9ac5dc1eb4e26471e8b4d2">MakeVertexWithRef</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a point, distant from the referenced point on the given distances along the coordinate axes. <a href="#0218cb2daa9ac5dc1eb4e26471e8b4d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#792541ac8429b9ba33ed099d822f7020">MakeVertexOnCurve</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a point, corresponding to the given parameter on the given curve. <a href="#792541ac8429b9ba33ed099d822f7020"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0b1d6768182d2d8302c359f2ec853952">MakeTangentOnCurve</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a tangent, corresponding to the given parameter on the given curve. <a href="#0b1d6768182d2d8302c359f2ec853952"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e7edc072e7e7b74feee2983e40b3f727">MakeVectorDXDYDZ</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector with the given components. <a href="#e7edc072e7e7b74feee2983e40b3f727"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#93a57241f7e0c8666fa64effb24d95eb">MakeVector</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector between two points. <a href="#93a57241f7e0c8666fa64effb24d95eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ace7c6d8f49b69b3b9d1cf87b0c42a87">MakeLine</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a line, passing through the given point and parrallel to the given direction. <a href="#ace7c6d8f49b69b3b9d1cf87b0c42a87"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d05c89e50645bfcb9180c9a1f0cd495b">MakeLineTwoPnt</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a line, passing through the given points. <a href="#d05c89e50645bfcb9180c9a1f0cd495b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#b99b3d9ec2a1839a5b3e43139da67559">MakePlane</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, passing through the given point and normal to the given vector. <a href="#b99b3d9ec2a1839a5b3e43139da67559"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#91603b64526fd345b2255907f179fffb">MakePlaneThreePnt</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, passing through the three given points. <a href="#91603b64526fd345b2255907f179fffb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0d2356927fd4fcff47597d7c3170a3af">MakePlaneFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a plane, similar to the existing one, but with another size of representing face. <a href="#0d2356927fd4fcff47597d7c3170a3af"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f054185ef572c0277eb37e6a98956f92">MakeMarker</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a local coordinate system. <a href="#f054185ef572c0277eb37e6a98956f92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6fc5a0f21295d06cc796dce166c1dbea">MakeMarkerPntTwoVec</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a local coordinate system. <a href="#6fc5a0f21295d06cc796dce166c1dbea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#09d23236d0b3ac8260d44baf9dd9e510">MakeArc</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an arc of circle, passing through three given points. <a href="#09d23236d0b3ac8260d44baf9dd9e510"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f2ced5604e1b7822fd976c4d5acd86a1">MakeCircle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a circle with given center, normal vector and radius. <a href="#f2ced5604e1b7822fd976c4d5acd86a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6bec7e48f6a69ab9c37652efc3192ece">MakeCircleThreePnt</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a circle, passing through three given points. <a href="#6bec7e48f6a69ab9c37652efc3192ece"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#491d5983ad5315aaa451c0dab9aa53de">MakeEllipse</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an ellipse with given center, normal vector and radiuses. <a href="#491d5983ad5315aaa451c0dab9aa53de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ab3518c19dae07433e912237cb6d87e3">MakePolyline</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a polyline on the set of points. <a href="#ab3518c19dae07433e912237cb6d87e3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#bac3b24c01efafd46ff55745c114c218">MakeBezier</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create bezier curve on the set of points. <a href="#bac3b24c01efafd46ff55745c114c218"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9d256f55a31d4caea356df5e9a36b491">MakeInterpol</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create B-Spline curve on the set of points. <a href="#9d256f55a31d4caea356df5e9a36b491"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2e0cfe9c8a9c1456a882f3b1fd118c1a">MakeSketcher</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sketcher (wire or face), following the textual description, passed through <em>theCommand</em> argument. <a href="#2e0cfe9c8a9c1456a882f3b1fd118c1a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c6d246779168cbe8a976bfd23268ab9f">MakeSketcherOnPlane</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sketcher (wire or face), following the textual description, passed through <em>theCommand</em> argument. <a href="#c6d246779168cbe8a976bfd23268ab9f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7e4d346b1fc5ee4887e8356abb864987">MakeBox</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box by coordinates of two opposite vertices. <a href="#7e4d346b1fc5ee4887e8356abb864987"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3935ab1a312d87952e0661e539cb3861">MakeBoxDXDYDZ</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box with specified dimensions along the coordinate axes and with edges, parallel to the coordinate axes. <a href="#3935ab1a312d87952e0661e539cb3861"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f887eae04ea14936c8f2ccc08e530e12">MakeBoxTwoPnt</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a box with two specified opposite vertices, and with edges, parallel to the coordinate axes. <a href="#f887eae04ea14936c8f2ccc08e530e12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5f544551dab0053b491618b11f72d8a7">MakeCylinder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cylinder with given base point, axis, radius and height. <a href="#5f544551dab0053b491618b11f72d8a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e4afae782eac7eda170ca1580985025c">MakeCylinderRH</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cylinder with given radius and height at the origin of coordinate system. <a href="#e4afae782eac7eda170ca1580985025c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2ef7fabed1a4c83cfd9dfe41f54fe03e">MakeSpherePntR</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given center and radius. <a href="#2ef7fabed1a4c83cfd9dfe41f54fe03e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#39ecaa363c5555638718f4564aa1258d">MakeSphere</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given center and radius. <a href="#39ecaa363c5555638718f4564aa1258d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#207bec566af2333662e49b0e054ebedc">MakeSphereR</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a sphere with given radius at the origin of coordinate system. <a href="#207bec566af2333662e49b0e054ebedc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d77fe2cf4d96f17663434ef1fd4c286d">MakeCone</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cone with given base point, axis, height and radiuses. <a href="#d77fe2cf4d96f17663434ef1fd4c286d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#59944e0c2a98bacfb06ddd4f861681b0">MakeConeR1R2H</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a cone with given height and radiuses at the origin of coordinate system. <a href="#59944e0c2a98bacfb06ddd4f861681b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9cceaba104b3811113f6f7b368eb6633">MakeTorus</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a torus with given center, normal vector and radiuses. <a href="#9cceaba104b3811113f6f7b368eb6633"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9a8c604450bd29216630ac33284017c6">MakeTorusRR</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a torus with given radiuses at the origin of coordinate system. <a href="#9a8c604450bd29216630ac33284017c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c0a12052d81f3e8d755dd5b97fbdcf3d">MakePrism</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along a vector, defined by two points. <a href="#c0a12052d81f3e8d755dd5b97fbdcf3d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#32ecfc039f58048b0b3a23ab8e433765">MakePrismVecH</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along the vector, i.e. <a href="#32ecfc039f58048b0b3a23ab8e433765"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#cd033b39f4be052111ab3ec8d27cd9ee">MakePipe</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the base shape along the path shape. <a href="#cd033b39f4be052111ab3ec8d27cd9ee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4c093c166272f508454e8eb03133e020">MakeRevolution</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by revolution of the base shape around the axis on the given angle, i.e. <a href="#4c093c166272f508454e8eb03133e020"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#45564231762e3f8b99b58cd149b48a62">MakeThruSections</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices. <a href="#45564231762e3f8b99b58cd149b48a62"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c4d4d9f9b338502dadd6342d3adb941d">MakePipeWithDifferentSections</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shape by extrusion of the profile shape along the path shape. <a href="#c4d4d9f9b338502dadd6342d3adb941d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#328df6d3aa2acd5dd367fd1ff0f02b90">MakeEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a linear edge with specified ends. <a href="#328df6d3aa2acd5dd367fd1ff0f02b90"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6e231ee2830c5d1292b8e8f80a1b570d">MakeWire</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a wire from the set of edges and wires. <a href="#6e231ee2830c5d1292b8e8f80a1b570d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1fa655542cb7d7f0ca7239246e4020a4">MakeFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a face on the given wire. <a href="#1fa655542cb7d7f0ca7239246e4020a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#377a2b2ff79598724ae3547e0f8f887e">MakeFaceWires</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a face on the given wires set. <a href="#377a2b2ff79598724ae3547e0f8f887e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7900487f71fcbe9b74df16fe1de23aac">MakeFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#377a2b2ff79598724ae3547e0f8f887e">MakeFaceWires()</a>. <a href="#7900487f71fcbe9b74df16fe1de23aac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#bcfb3334446b48ec3a59707341df3e38">MakeShell</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shell from the set of faces and shells. <a href="#bcfb3334446b48ec3a59707341df3e38"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3e4434784c3ec97093321c16599f7590">MakeSolid</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a solid, bounded by the given shells. <a href="#3e4434784c3ec97093321c16599f7590"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6f23e242d8a3b1dbe445eb2f7f5b5bf6">MakeCompound</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a compound of the given shapes. <a href="#6f23e242d8a3b1dbe445eb2f7f5b5bf6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0ade4b552865ad0a4df9580145f0736e">NumberOfFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Gives quantity of faces in the given shape. <a href="#0ade4b552865ad0a4df9580145f0736e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#730e50a690deccae3599792c202db613">NumberOfEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Gives quantity of edges in the given shape. <a href="#730e50a690deccae3599792c202db613"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#278e8ebac370fcf80a92b857a54d830d">ChangeOrientation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reverses an orientation the given shape. <a href="#278e8ebac370fcf80a92b857a54d830d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c13bcdc1219e63398e9d2bbd27271370">OrientationChange</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#278e8ebac370fcf80a92b857a54d830d">ChangeOrientation()</a>. <a href="#c13bcdc1219e63398e9d2bbd27271370"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0d2c067d179c0008d035c42b9013283c">GetFreeFacesIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieve all free faces from the given shape. <a href="#0d2c067d179c0008d035c42b9013283c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#a19d88b97b5f1cf8c63bd8386f5e9476">GetSharedShapes</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get all sub-shapes of theShape1 of the given type, shared with theShape2. <a href="#a19d88b97b5f1cf8c63bd8386f5e9476"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e089332bc7ff498c6c6669836989383a">GetShapesOnPlane</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified plane by the certain way, defined through <em>theState</em> parameter. <a href="#e089332bc7ff498c6c6669836989383a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1ec8a4c4f37f881676de67fbb185a1a7">GetShapesOnPlaneIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#1ec8a4c4f37f881676de67fbb185a1a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#43c25e4a08b30b59dcd18696effb3394">GetShapesOnPlaneWithLocation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified plane by the certain way, defined through <em>theState</em> parameter. <a href="#43c25e4a08b30b59dcd18696effb3394"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7e017a6cd1e9103c7d6f4d3897e36ae5">GetShapesOnPlaneWithLocationIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#7e017a6cd1e9103c7d6f4d3897e36ae5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e472f5764a1014dc9c60778cb02ce970">GetShapesOnCylinder</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified cylinder by the certain way, defined through <em>theState</em> parameter. <a href="#e472f5764a1014dc9c60778cb02ce970"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#338736dab175669a89da003c8cf45552">GetShapesOnCylinderIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#338736dab175669a89da003c8cf45552"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#926ea88b412800140f45270a3ae89345">GetShapesOnSphere</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified sphere by the certain way, defined through <em>theState</em> parameter. <a href="#926ea88b412800140f45270a3ae89345"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c5e58a6957bf2695fd8a974da75718f6">GetShapesOnSphereIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#c5e58a6957bf2695fd8a974da75718f6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6b18a78d643167b99cc95ddd59874b10">GetShapesOnQuadrangle</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified quadrangle by the certain way, defined through <em>theState</em> parameter. <a href="#6b18a78d643167b99cc95ddd59874b10"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#db16045827aa23070ef98eca038ecd2c">GetShapesOnQuadrangleIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#db16045827aa23070ef98eca038ecd2c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#94c97c957d04ebd433cb5b3d94e8c8ac">GetShapesOnBox</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find in <em>theShape</em> all sub-shapes of type <em>theShapeType</em>, situated relatively the specified <em>theBox</em> by the certain way, defined through <em>theState</em> parameter. <a href="#94c97c957d04ebd433cb5b3d94e8c8ac"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c7b1da4e965bf551fc87b72ebd6afde7">GetShapesOnBoxIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but returns list of sub-shapes indices. <a href="#c7b1da4e965bf551fc87b72ebd6afde7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2695635fc745e6aa6cda4545e2133c41">GetInPlace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get sub-shape(s) of theShapeWhere, which are coincident with <em>theShapeWhat</em> or could be a part of it. <a href="#2695635fc745e6aa6cda4545e2133c41"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#808c0723c1cc2c641a02aeaa0d0b45c6">GetSame</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get sub-shape of theShapeWhere, which is equal to <em>theShapeWhat</em>. <a href="#808c0723c1cc2c641a02aeaa0d0b45c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#67706610dda0d5005ee1cdfe2e8362a2">GetSubShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a composite sub-shape of <aShape>, composed from sub-shapes of <aShape>, selected by their unique IDs inside <aShape>. <a href="#67706610dda0d5005ee1cdfe2e8362a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">GetSubShapeID</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain unique ID of sub-shape <aSubShape> inside <aShape>. <a href="#d7ee9f96e4b5b4303c7d20f0fc42d67d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e4ee5a20fdb33779f2dc5f1686fd3d8a">SubShapeAll</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#e4ee5a20fdb33779f2dc5f1686fd3d8a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d19aeb7b8759ebd877154239fb4c1d7f">SubShapeAllIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#d19aeb7b8759ebd877154239fb4c1d7f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7991c614f21498c03545d58f0e1e6049">SubShapeAllSorted</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#7991c614f21498c03545d58f0e1e6049"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0da304f589070498b79851370436094e">SubShapeAllSortedIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Explode a shape on subshapes of a given type. <a href="#0da304f589070498b79851370436094e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f7265ff90cecdffb35a75b7968d834a1">SubShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a compound of sub-shapes of <aShape>, selected by they indices in list of all sub-shapes of type <aType>. <a href="#f7265ff90cecdffb35a75b7968d834a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0566156543b9ae4bb4dacbdc660802e0">SubShapeSorted</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain a compound of sub-shapes of <aShape>, selected by they indices in sorted list of all sub-shapes of type <aType>. <a href="#0566156543b9ae4bb4dacbdc660802e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4ec92460ad70a2086a228cc8f5c53546">ProcessShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply a sequence of Shape Healing operators to the given object. <a href="#4ec92460ad70a2086a228cc8f5c53546"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e97025dce42f920c90940e317d4346df">SuppressFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove faces from the given object (shape). <a href="#e97025dce42f920c90940e317d4346df"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#af901778584daa351bf152dea8e45103">MakeSewing</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sewing of some shapes into single shape. <a href="#af901778584daa351bf152dea8e45103"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2053611e91ad644a537b94f7746aad83">Sew</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sewing of the given object. <a href="#2053611e91ad644a537b94f7746aad83"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1b508c8014392c17a40634ed0ea098fc">SuppressInternalWires</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove internal wires and edges from the given object (face). <a href="#1b508c8014392c17a40634ed0ea098fc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#415a551ef50c5a35815080451c459a53">SuppressHoles</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove internal closed contours (holes) from the given object. <a href="#415a551ef50c5a35815080451c459a53"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#19eec790d224fe44a21855073733c61a">CloseContour</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Close an open wire. <a href="#19eec790d224fe44a21855073733c61a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3d0753cc00225c3c2432f64d2439de2c">DivideEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a point to a given edge object. <a href="#3d0753cc00225c3c2432f64d2439de2c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9c5759e7397aafa57af929453a3db08e">ChangeOrientationShell</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change orientation of the given object. <a href="#9c5759e7397aafa57af929453a3db08e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e82647674a4c63cda4dc8527712818e2">ChangeOrientationShellCopy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Change orientation of the given object. <a href="#e82647674a4c63cda4dc8527712818e2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#65e1cf2711f524b98cd4596e53dda798">GetFreeBoundary</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a list of wires (wrapped in GEOM_Object-s), that constitute a free boundary of the given shape. <a href="#65e1cf2711f524b98cd4596e53dda798"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#33f1df4161bf5f34dcad843ed3380404">MakeCopy</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a copy of the given object. <a href="#33f1df4161bf5f34dcad843ed3380404"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#cbe2949bf5461726223a97ee80d1c3ec">MakeFilling</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a filling from the given compound of contours. <a href="#cbe2949bf5461726223a97ee80d1c3ec"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e5d9467bd086e6cac983986d2d5f88fb">MakeGlueFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replace coincident faces in theShape by one face. <a href="#e5d9467bd086e6cac983986d2d5f88fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f226efc56d8eff7b56c2d1cfaafa9f29">MakeBoolean</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform one of boolean operations on two given shapes. <a href="#f226efc56d8eff7b56c2d1cfaafa9f29"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#cd8f27d201b21e0fece9d01b8b4b1380">MakeCommon</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 1). <a href="#cd8f27d201b21e0fece9d01b8b4b1380"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#03dd2a576cc3add2d3de4d0dd49e543d">MakeCut</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 2). <a href="#03dd2a576cc3add2d3de4d0dd49e543d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d901649467a5a346eada63b49cf6303e">MakeFuse</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 3). <a href="#d901649467a5a346eada63b49cf6303e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#eedaf0e56fe5240f4c7c6b9054fc97c8">MakeSection</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to MakeBoolean(s1, s2, 4). <a href="#eedaf0e56fe5240f4c7c6b9054fc97c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#56f48212a436f46c02722f627d27e7f2">MakePartition</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition operation. <a href="#56f48212a436f46c02722f627d27e7f2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#85a4e715d0d0e4c8c9960372bfeb5327">MakePartitionNonSelfIntersectedShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition operation. <a href="#85a4e715d0d0e4c8c9960372bfeb5327"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f1fc43bc5612514bcc2f6d772c3d38db">Partition</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#56f48212a436f46c02722f627d27e7f2">MakePartition()</a>. <a href="#f1fc43bc5612514bcc2f6d772c3d38db"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d5389c13cb51ad6b6d15780d7e648e69">MakeHalfPartition</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform partition of the Shape with the Plane. <a href="#d5389c13cb51ad6b6d15780d7e648e69"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c305e3f931c4ead2aae3b64ccfe5d350">MakeTranslationTwoPoints</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the vector, specified by its end points, creating its copy before the translation. <a href="#c305e3f931c4ead2aae3b64ccfe5d350"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#daa3f61a507374c1f673619c49485751">MakeTranslation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the vector, specified by its components, creating its copy before the translation. <a href="#daa3f61a507374c1f673619c49485751"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c70936f9c902aef0c6dbd5510bdc7f03">MakeTranslationVector</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the given vector, creating its copy before the translation. <a href="#c70936f9c902aef0c6dbd5510bdc7f03"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3363966f33171e6415e1a1b5d4a8e9fa">MakeRotation</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis on the given angle, creating its copy before the rotatation. <a href="#3363966f33171e6415e1a1b5d4a8e9fa"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6bcb1680b597f1491d371fa2a9242342">MakeRotationThreePoints</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate given object around vector perpendicular to plane containing three points, creating its copy before the rotatation. <a href="#6bcb1680b597f1491d371fa2a9242342"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7ad2fdeeef570ba29c86ba28d3da09f7">MakeScaleTransform</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scale the given object by the factor, creating its copy before the scaling. <a href="#7ad2fdeeef570ba29c86ba28d3da09f7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#fab9bb8ede1f587c47cd1d981e966cdd">MakeMirrorByPlane</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given plane. <a href="#fab9bb8ede1f587c47cd1d981e966cdd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#73733650d7b37eb8aec0df9aca0c9a63">MakeMirrorByAxis</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given axis. <a href="#73733650d7b37eb8aec0df9aca0c9a63"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#56e053740bed5b65670cf9cc10df4d8d">MakeMirrorByPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an object, symmetrical to the given one relatively the given point. <a href="#56e053740bed5b65670cf9cc10df4d8d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c100ca3b5ccdbd133df55b331cf33c42">MakePosition</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Modify the Location of the given object by LCS, creating its copy before the setting. <a href="#c100ca3b5ccdbd133df55b331cf33c42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1c9ca22c504f4190f49f3e222fadeff0">MakeOffset</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create new object as offset of the given one. <a href="#1c9ca22c504f4190f49f3e222fadeff0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ab11f2929f8585eee3f3e29ed9b6fe51">MakeMultiTranslation1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Translate the given object along the given vector a given number times. <a href="#ab11f2929f8585eee3f3e29ed9b6fe51"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4a96d7c7ad41b4cb66f2bc544085c659">MakeMultiTranslation2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Conseqently apply two specified translations to theObject specified number of times. <a href="#4a96d7c7ad41b4cb66f2bc544085c659"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6c50d3ab9f6be4fee93abec171a89cfc">MultiRotate1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis a given number times. <a href="#6c50d3ab9f6be4fee93abec171a89cfc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#b004cf2bbff7b8dfa28a96aadc6bc456">MultiRotate2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rotate the given object around the given axis on the given angle a given number times and multi-translate each rotation result. <a href="#b004cf2bbff7b8dfa28a96aadc6bc456"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#fe6bb49b0e4f150327729f063bdec2cd">MakeMultiRotation1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The same, as <a class="el" href="namespacegeompy.html#6c50d3ab9f6be4fee93abec171a89cfc">MultiRotate1D()</a>, but axis is given by direction and point. <a href="#fe6bb49b0e4f150327729f063bdec2cd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5e677bcf6d3c8190778f05e6c7e871d3">MakeMultiRotation2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The same, as <a class="el" href="namespacegeompy.html#b004cf2bbff7b8dfa28a96aadc6bc456">MultiRotate2D()</a>, but axis is given by direction and point. <a href="#5e677bcf6d3c8190778f05e6c7e871d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3f2ecc9ca30a3017c7f8d22a9c6ca6fb">MakeFilletAll</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a fillet on all edges of the given shape. <a href="#3f2ecc9ca30a3017c7f8d22a9c6ca6fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#86bbdb543ba06469c1ffe95cb7950f46">MakeFillet</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a fillet on the specified edges/faces of the given shape. <a href="#86bbdb543ba06469c1ffe95cb7950f46"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#92091fbfdb19e6532aaf8cbc76f271a1">MakeChamferAll</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a symmetric chamfer on all edges of the given shape. <a href="#92091fbfdb19e6532aaf8cbc76f271a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6afb8427fde5f6ca2dbc51a51869f7ca">MakeChamferEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a chamfer on edges, common to the specified faces, with distance D1 on the Face1. <a href="#6afb8427fde5f6ca2dbc51a51869f7ca"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2018b56951c34682fa0df214a3b1d7f2">MakeChamferFaces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform a chamfer on all edges of the specified faces, with distance D1 on the first specified face (if several for one edge). <a href="#2018b56951c34682fa0df214a3b1d7f2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1d1b85c082445f89293b614b23695a19">MakeChamfer</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#6afb8427fde5f6ca2dbc51a51869f7ca">MakeChamferEdge()</a> and <a class="el" href="namespacegeompy.html#2018b56951c34682fa0df214a3b1d7f2">MakeChamferFaces()</a>. <a href="#1d1b85c082445f89293b614b23695a19"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#dd1ebfcc03ea50d9701fc0fdff388cd8">Archimede</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform an Archimde operation on the given shape with given parameters. <a href="#dd1ebfcc03ea50d9701fc0fdff388cd8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#e10a7c1c972b5629fcd9d4b459ccf13b">PointCoordinates</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get point coordinates. <a href="#e10a7c1c972b5629fcd9d4b459ccf13b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ab1609df1740aca9735eb455b5ad7947">BasicProperties</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get summarized length of all wires, area of surface and volume of the given shape. <a href="#ab1609df1740aca9735eb455b5ad7947"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1aa8eba3c44a5230cd457b3f97eea57a">BoundingBox</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get parameters of bounding box of the given shape. <a href="#1aa8eba3c44a5230cd457b3f97eea57a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#139df343f817141a8b074cd7389a44b1">Inertia</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get inertia matrix and moments of inertia of theShape. <a href="#139df343f817141a8b074cd7389a44b1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ef044d33ebbe02c75bb62d44ec8570bc">MinDistance</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get minimal distance between the given shapes. <a href="#ef044d33ebbe02c75bb62d44ec8570bc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#8f1e2eb8fa61d0e7aebc04a641f020fb">Tolerance</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get min and max tolerances of sub-shapes of theShape. <a href="#8f1e2eb8fa61d0e7aebc04a641f020fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6c1a6120cbbf69d13c02b9ade0ba98eb">WhatIs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain description of the given shape (number of sub-shapes of each type). <a href="#6c1a6120cbbf69d13c02b9ade0ba98eb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d9e158674b690b397e20e788b7622da0">MakeCDG</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a point, situated at the centre of mass of theShape. <a href="#d9e158674b690b397e20e788b7622da0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#35d111502e0280fee475e86270792565">CheckShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Check a topology of the given shape. <a href="#35d111502e0280fee475e86270792565"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1f93405313fd378a4383ea9833dab3de">GetPosition</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get position (LCS) of theShape. <a href="#1f93405313fd378a4383ea9833dab3de"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#a0571beb5ffbacb42ce92195309820d0">Import</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Import a shape from the BREP or IGES or STEP file (depends on given format) with given name. <a href="#a0571beb5ffbacb42ce92195309820d0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#10f157e05c0e20acd86f78090bfec351">ImportBREP</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#a0571beb5ffbacb42ce92195309820d0">Import()</a> for BREP format. <a href="#10f157e05c0e20acd86f78090bfec351"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#2968cc7bf89d54bee34ee3f560bd7f4f">ImportIGES</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#a0571beb5ffbacb42ce92195309820d0">Import()</a> for IGES format. <a href="#2968cc7bf89d54bee34ee3f560bd7f4f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#a232e7dafb6fd10ade8e601d54fd63c2">ImportSTEP</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#a0571beb5ffbacb42ce92195309820d0">Import()</a> for STEP format. <a href="#a232e7dafb6fd10ade8e601d54fd63c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#499e87da00bb3be6123cf73136127bfc">Export</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Export the given shape into a file with given name. <a href="#499e87da00bb3be6123cf73136127bfc"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#87cb97db967c38695f7b820dbcff30bd">ExportBREP</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#499e87da00bb3be6123cf73136127bfc">Export()</a> for BREP format. <a href="#87cb97db967c38695f7b820dbcff30bd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1fecea070929464aee6bf9887dae144a">ExportIGES</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#499e87da00bb3be6123cf73136127bfc">Export()</a> for IGES format. <a href="#1fecea070929464aee6bf9887dae144a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#96a04d9dac65752cc513b4fdf70c5ea0">ExportSTEP</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Shortcut to <a class="el" href="namespacegeompy.html#499e87da00bb3be6123cf73136127bfc">Export()</a> for STEP format. <a href="#96a04d9dac65752cc513b4fdf70c5ea0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#6e740378fa27a55a0605f11ed68d5c13">MakeQuad</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face from four edges. <a href="#6e740378fa27a55a0605f11ed68d5c13"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#b459a4cca585b6d0ae962fcc533e2233">MakeQuad2Edges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face on two edges. <a href="#b459a4cca585b6d0ae962fcc533e2233"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#b4a45d1dd409b770f143758e8bc2f80d">MakeQuad4Vertices</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a quadrangle face with specified corners. <a href="#b4a45d1dd409b770f143758e8bc2f80d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d9eb183f135341b2c5151e5d31c8d07c">MakeHexa</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a hexahedral solid, bounded by the six given faces. <a href="#d9eb183f135341b2c5151e5d31c8d07c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c612949da56e4e28d2f52f7022e8f270">MakeHexa2Faces</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a hexahedral solid between two given faces. <a href="#c612949da56e4e28d2f52f7022e8f270"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1d89799285c4b0a50c8edd0276a45e00">GetPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a vertex, found in the given shape by its coordinates. <a href="#1d89799285c4b0a50c8edd0276a45e00"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3e02dfbb79bbe2739ffe382a10a83902">GetEdge</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get an edge, found in the given shape by two given vertices. <a href="#3e02dfbb79bbe2739ffe382a10a83902"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#294c21fa51645e8cc18199dfb4622174">GetEdgeNearPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find an edge of the given shape, which has minimal distance to the given point. <a href="#294c21fa51645e8cc18199dfb4622174"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5d9f4778acda236b2595a93f3443269f">GetFaceByPoints</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a face, found in the given shape by four given corner vertices. <a href="#5d9f4778acda236b2595a93f3443269f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f7154a6930bffcd3f249e32e360bf161">GetFaceByEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a face of block, found in the given shape by two given edges. <a href="#f7154a6930bffcd3f249e32e360bf161"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5367485e4a8a35c32d746723fee905bb">GetOppositeFace</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face, opposite to the given one in the given block. <a href="#5367485e4a8a35c32d746723fee905bb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#12a77345f9e987f83ffd294cd7efcb0b">GetFaceNearPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face of the given shape, which has minimal distance to the given point. <a href="#12a77345f9e987f83ffd294cd7efcb0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ccf6906ed06251948bb9ab80a394a04e">GetFaceByNormale</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find a face of block, whose outside normale has minimal angle with the given vector. <a href="#ccf6906ed06251948bb9ab80a394a04e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9b3b633e1484b00d74d4115aecba634c">CheckCompoundOfBlocks</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Check, if the compound of blocks is given. <a href="#9b3b633e1484b00d74d4115aecba634c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4c8f85c9a412a5460e48313ee9dc428b">RemoveExtraEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove all seam and degenerated edges from <em>theShape</em>. <a href="#4c8f85c9a412a5460e48313ee9dc428b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f690cd52d196cb4eca5a57aebcd4827b">CheckAndImprove</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Check, if the given shape is a blocks compound. <a href="#f690cd52d196cb4eca5a57aebcd4827b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#261f5525946b6b9abd3033d058f2c077">MakeBlockExplode</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get all the blocks, contained in the given compound. <a href="#261f5525946b6b9abd3033d058f2c077"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#850464c8254224a9fca8df8121378442">GetBlockNearPoint</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find block, containing the given point inside its volume or on boundary. <a href="#850464c8254224a9fca8df8121378442"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#3b644c68c91ba34eb232add9c16ad26d">GetBlockByParts</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find block, containing all the elements, passed as the parts, or maximum quantity of them. <a href="#3b644c68c91ba34eb232add9c16ad26d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#87b5b6632b97d3da1d447e02d4b169a9">GetBlocksByParts</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return all blocks, containing all the elements, passed as the parts. <a href="#87b5b6632b97d3da1d447e02d4b169a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f01d36e0b2eb11c0e5abc141691d2eee">MakeMultiTransformation1D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multi-transformate block and glue the result. <a href="#f01d36e0b2eb11c0e5abc141691d2eee"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4592c6223d08418649f48113913103fb">MakeMultiTransformation2D</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multi-transformate block and glue the result. <a href="#4592c6223d08418649f48113913103fb"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#066548557397df1e539909427054d601">Propagate</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Build all possible propagation groups. <a href="#066548557397df1e539909427054d601"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#d34dca22784f06782d577a35ebb767a6">CreateGroup</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new group which will store sub shapes of theMainShape. <a href="#d34dca22784f06782d577a35ebb767a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#a2dbd1e5c34e091747e208cd6b63eba1">AddObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a sub object with ID theSubShapeId to the group. <a href="#a2dbd1e5c34e091747e208cd6b63eba1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1153343bde9e7e07a9571123d1440d3b">RemoveObject</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a sub object with ID <em>theSubShapeId</em> from the group. <a href="#1153343bde9e7e07a9571123d1440d3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#00450556247ac647a69506a1776a125d">UnionList</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds to the group all the given shapes. <a href="#00450556247ac647a69506a1776a125d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5e1f46dae5dc0b01e997278cf186d73d">UnionIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but argument theSubShapes here is a list of sub-shapes indices. <a href="#5e1f46dae5dc0b01e997278cf186d73d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#5514b5a8b24702828eed0f6b39fe8f9a">DifferenceList</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes from the group all the given shapes. <a href="#5514b5a8b24702828eed0f6b39fe8f9a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#78ccd39b2263ea213805869fbe4c3bc3">DifferenceIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Works like the above method, but argument theSubShapes here is a list of sub-shapes indices. <a href="#78ccd39b2263ea213805869fbe4c3bc3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c076d5e58ceb4d210f7a43e1acea8ca5">GetObjectIDs</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a list of sub objects ID stored in the group. <a href="#c076d5e58ceb4d210f7a43e1acea8ca5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#05095c0349fe3889ab06235f265c1ea9">GetType</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a type of sub objects stored in the group. <a href="#05095c0349fe3889ab06235f265c1ea9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4c9609d803e34c25427e59e4ab2ddb42">GetMainShape</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a main shape associated with the group. <a href="#4c9609d803e34c25427e59e4ab2ddb42"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c6b2d69f3d03206b73ce0c0bbfb56eae">GetEdgesByLength</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create group of edges of theShape, whose length is in range [min_length, max_length]. <a href="#c6b2d69f3d03206b73ce0c0bbfb56eae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#ae1cbdb4fcaa8ac1a7c826580b99fc5f">SelectEdges</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create group of edges of selected shape, whose length is in range [min_length, max_length]. <a href="#ae1cbdb4fcaa8ac1a7c826580b99fc5f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9c05eb3e0ffbdd757e288d3204422dc5">addPath</a></td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add Path to load python scripts from. <a href="#9c05eb3e0ffbdd757e288d3204422dc5"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#8b6a0245f3cf8c1ef6de94487433fc0c">g</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geom</a> = g._narrow( GEOM.GEOM_Gen )</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f01ae5049e69c6da96bdc94d5b1c6d38">myBuilder</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9857c81d89e1dd436e4da52b0884ef94">myStudyId</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0f6146a8fb62ad5221da4dc2e8a7a8f7">father</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#58b9182cc4b7d927dda2cd6a2f2e677b">BasicOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c319490ec26550ef4fd0b787f183a323">CurvesOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7dd8908de955a347609b4f9cbca99686">PrimOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#39a05853eb7e4dc664d7acaa5536e610">ShapesOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9b6b150d33cb71f2ab6380f143cc37b6">HealOp</a> = None</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geom</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1293220280565f0b9256d382d2ea882a">InsertOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#51777a574318dcf4c9025d03b0cfb1a1">BoolOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#921e4ec0a8e80b1c61bd8b156ba8cfb7">TrsfOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#37bbe3bd9771d58b547723e6436bed81">LocalOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#eb30abfc8b306d15adc2f50c48064054">MeasuOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4e06888ee75ecc7a54f0c8bad501a0c2">BlocksOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c809d5d73246f177ee010c4fe497d342">GroupOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#8b6a0245f3cf8c1ef6de94487433fc0c">g</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">tuple </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geom</a> = g._narrow( GEOM.GEOM_Gen )</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#f01ae5049e69c6da96bdc94d5b1c6d38">myBuilder</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9857c81d89e1dd436e4da52b0884ef94">myStudyId</a> = 0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#0f6146a8fb62ad5221da4dc2e8a7a8f7">father</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#58b9182cc4b7d927dda2cd6a2f2e677b">BasicOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c319490ec26550ef4fd0b787f183a323">CurvesOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#7dd8908de955a347609b4f9cbca99686">PrimOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#39a05853eb7e4dc664d7acaa5536e610">ShapesOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#9b6b150d33cb71f2ab6380f143cc37b6">HealOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#1293220280565f0b9256d382d2ea882a">InsertOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#51777a574318dcf4c9025d03b0cfb1a1">BoolOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#921e4ec0a8e80b1c61bd8b156ba8cfb7">TrsfOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#37bbe3bd9771d58b547723e6436bed81">LocalOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#eb30abfc8b306d15adc2f50c48064054">MeasuOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#4e06888ee75ecc7a54f0c8bad501a0c2">BlocksOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#c809d5d73246f177ee010c4fe497d342">GroupOp</a> = None</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}</td></tr>
-
-</table>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="4a5618a690db0aecbe5989cb55d74ece"></a><!-- doxytag: member="geompy::init_geom" ref="4a5618a690db0aecbe5989cb55d74ece" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::init_geom </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="5ece84ce1ea01c0cb42f69399817bbc3"></a><!-- doxytag: member="geompy::SubShapeName" ref="5ece84ce1ea01c0cb42f69399817bbc3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeName </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aSubObj</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aMainObj</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
</table>
-<a class="anchor" name="fd40f7d59da81b22862298666f807f7d"></a><!-- doxytag: member="geompy::addToStudy" ref="fd40f7d59da81b22862298666f807f7d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::addToStudy </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aName</em></td>
- </tr>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="96bc383a8e96df6d938b485e9e1b5e11"></a><!-- doxytag: member="geompy::geom" ref="96bc383a8e96df6d938b485e9e1b5e11" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"></td>
+ <td class="memname">tuple <a class="el" href="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geompy.geom</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")<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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="82aab9da423d1401a3ddfd0eb4b0c49d"></a><!-- doxytag: member="geompy::addToStudyInFather" ref="82aab9da423d1401a3ddfd0eb4b0c49d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::addToStudyInFather </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aFather</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aName</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="9310c6377485b0bcfcfab87ab49d7e9a"></a><!-- doxytag: member="geompy::MakeVertex" ref="9310c6377485b0bcfcfab87ab49d7e9a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeVertex </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theZ</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>theX</em> </td><td>The X coordinate of the point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theY</em> </td><td>The Y coordinate of the point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theZ</em> </td><td>The Z coordinate of the point. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0218cb2daa9ac5dc1eb4e26471e8b4d2"></a><!-- doxytag: member="geompy::MakeVertexWithRef" ref="0218cb2daa9ac5dc1eb4e26471e8b4d2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeVertexWithRef </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theReference</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theZ</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>theReference</em> </td><td>The referenced point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theX</em> </td><td>Displacement from the referenced point along OX axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theY</em> </td><td>Displacement from the referenced point along OY axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theZ</em> </td><td>Displacement from the referenced point along OZ axis. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="792541ac8429b9ba33ed099d822f7020"></a><!-- doxytag: member="geompy::MakeVertexOnCurve" ref="792541ac8429b9ba33ed099d822f7020" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeVertexOnCurve </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theRefCurve</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theParameter</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>theRefCurve</em> </td><td>The referenced curve. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theParameter</em> </td><td>Value of parameter on the referenced curve. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0b1d6768182d2d8302c359f2ec853952"></a><!-- doxytag: member="geompy::MakeTangentOnCurve" ref="0b1d6768182d2d8302c359f2ec853952" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTangentOnCurve </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theRefCurve</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theParameter</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>theRefCurve</em> </td><td>The referenced curve. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theParameter</em> </td><td>Value of parameter on the referenced curve. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created tangent. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e7edc072e7e7b74feee2983e40b3f727"></a><!-- doxytag: member="geompy::MakeVectorDXDYDZ" ref="e7edc072e7e7b74feee2983e40b3f727" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeVectorDXDYDZ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theDX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDZ</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>theDX</em> </td><td>X component of the vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDY</em> </td><td>Y component of the vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDZ</em> </td><td>Z component of the vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created vector.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="93a57241f7e0c8666fa64effb24d95eb"></a><!-- doxytag: member="geompy::MakeVector" ref="93a57241f7e0c8666fa64effb24d95eb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeVector </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</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>thePnt1</em> </td><td>Start point for the vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>End point for the vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created vector. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ace7c6d8f49b69b3b9d1cf87b0c42a87"></a><!-- doxytag: member="geompy::MakeLine" ref="ace7c6d8f49b69b3b9d1cf87b0c42a87" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeLine </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDir</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>thePnt</em> </td><td>Point. The resulting line will pass through it. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDir</em> </td><td>Direction. The resulting line will be parallel to it. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created line.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="d05c89e50645bfcb9180c9a1f0cd495b"></a><!-- doxytag: member="geompy::MakeLineTwoPnt" ref="d05c89e50645bfcb9180c9a1f0cd495b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeLineTwoPnt </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</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>thePnt1</em> </td><td>First of two points, defining the line. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of two points, defining the line. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created line.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="b99b3d9ec2a1839a5b3e43139da67559"></a><!-- doxytag: member="geompy::MakePlane" ref="b99b3d9ec2a1839a5b3e43139da67559" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePlane </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTrimSize</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>thePnt</em> </td><td>Point, the plane has to pass through. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, defining the plane normal direction. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>Half size of a side of quadrangle face, representing the plane. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="91603b64526fd345b2255907f179fffb"></a><!-- doxytag: member="geompy::MakePlaneThreePnt" ref="91603b64526fd345b2255907f179fffb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePlaneThreePnt </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt3</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTrimSize</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>thePnt1</em> </td><td>First of three points, defining the plane. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of three points, defining the plane. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt3</em> </td><td>Fird of three points, defining the plane. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>Half size of a side of quadrangle face, representing the plane. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0d2356927fd4fcff47597d7c3170a3af"></a><!-- doxytag: member="geompy::MakePlaneFace" ref="0d2356927fd4fcff47597d7c3170a3af" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePlaneFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theFace</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTrimSize</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>theFace</em> </td><td>Referenced plane or LCS(Marker). </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTrimSize</em> </td><td>New half size of a side of quadrangle face, representing the plane. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created plane.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="f054185ef572c0277eb37e6a98956f92"></a><!-- doxytag: member="geompy::MakeMarker" ref="f054185ef572c0277eb37e6a98956f92" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMarker </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>OX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>OY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>OZ</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>XDX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>XDY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>XDZ</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>YDX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>YDY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>YDZ</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>OX,OY,OZ</em> </td><td>Three coordinates of coordinate system origin. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>XDX,XDY,XDZ</em> </td><td>Three components of OX direction </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>YDX,YDY,YDZ</em> </td><td>Three components of OY direction </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created coordinate system.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6fc5a0f21295d06cc796dce166c1dbea"></a><!-- doxytag: member="geompy::MakeMarkerPntTwoVec" ref="6fc5a0f21295d06cc796dce166c1dbea" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMarkerPntTwoVec </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theOrigin</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theXVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theYVec</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>theOrigin</em> </td><td>Point of coordinate system origin. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theXVec</em> </td><td>Vector of X direction </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theYVec</em> </td><td>Vector of Y direction </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created coordinate system. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="09d23236d0b3ac8260d44baf9dd9e510"></a><!-- doxytag: member="geompy::MakeArc" ref="09d23236d0b3ac8260d44baf9dd9e510" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeArc </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt3</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>thePnt1</em> </td><td>Start point of the arc. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Middle point of the arc. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt3</em> </td><td>End point of the arc. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created arc.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="f2ced5604e1b7822fd976c4d5acd86a1"></a><!-- doxytag: member="geompy::MakeCircle" ref="f2ced5604e1b7822fd976c4d5acd86a1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCircle </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</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>thePnt</em> </td><td>Circle center. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, normal to the plane of the circle. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Circle radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created circle.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6bec7e48f6a69ab9c37652efc3192ece"></a><!-- doxytag: member="geompy::MakeCircleThreePnt" ref="6bec7e48f6a69ab9c37652efc3192ece" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCircleThreePnt </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt3</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>thePnt1,thePnt2,thePnt3</em> </td><td>Points, defining the circle. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created circle.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="491d5983ad5315aaa451c0dab9aa53de"></a><!-- doxytag: member="geompy::MakeEllipse" ref="491d5983ad5315aaa451c0dab9aa53de" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeEllipse </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRMajor</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRMinor</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>thePnt</em> </td><td>Ellipse center. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Vector, normal to the plane of the ellipse. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRMajor</em> </td><td>Major ellipse radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Minor ellipse radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created ellipse.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="ab3518c19dae07433e912237cb6d87e3"></a><!-- doxytag: member="geompy::MakePolyline" ref="ab3518c19dae07433e912237cb6d87e3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePolyline </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the polyline. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created polyline.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="bac3b24c01efafd46ff55745c114c218"></a><!-- doxytag: member="geompy::MakeBezier" ref="bac3b24c01efafd46ff55745c114c218" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBezier </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the bezier curve. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created bezier curve.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="9d256f55a31d4caea356df5e9a36b491"></a><!-- doxytag: member="geompy::MakeInterpol" ref="9d256f55a31d4caea356df5e9a36b491" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeInterpol </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>thePoints</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>thePoints</em> </td><td>Sequence of points for the B-Spline curve. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created B-Spline curve.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="2e0cfe9c8a9c1456a882f3b1fd118c1a"></a><!-- doxytag: member="geompy::MakeSketcher" ref="2e0cfe9c8a9c1456a882f3b1fd118c1a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSketcher </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCommand</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWorkingPlane</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>
-<br>
- Edges of the resulting wire or face will be arcs of circles and/or linear segments. <br>
- Format of the description string have to be the following:<p>
-"Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"<p>
-Where:<ul>
-<li>x1, y1 are coordinates of the first sketcher point (zero by default),</li><li>CMD is one of<ul>
-<li>"R angle" : Set the direction by angle</li><li>"D dx dy" : Set the direction by DX & DY</li></ul>
-<br>
-<ul>
-<li>"TT x y" : Create segment by point at X & Y</li><li>"T dx dy" : Create segment by point with DX & DY</li><li>"L length" : Create segment by direction & Length</li><li>"IX x" : Create segment by direction & Intersect. X</li><li>"IY y" : Create segment by direction & Intersect. Y</li></ul>
-<br>
-<ul>
-<li>"C radius length" : Create arc by direction, radius and length(in degree)</li></ul>
-<br>
-<ul>
-<li>"WW" : Close Wire (to finish)</li><li>"WF" : Close Wire and build face (to finish)</li></ul>
-</li></ul>
-<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>theCommand</em> </td><td>String, defining the sketcher in local coordinates of the working plane. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWorkingPlane</em> </td><td>Nine double values, defining origin, OZ and OX directions of the working plane. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c6d246779168cbe8a976bfd23268ab9f"></a><!-- doxytag: member="geompy::MakeSketcherOnPlane" ref="c6d246779168cbe8a976bfd23268ab9f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSketcherOnPlane </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCommand</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWorkingPlane</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>
-<br>
- For format of the description string see the previous method.<br>
- <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theCommand</em> </td><td>String, defining the sketcher in local coordinates of the working plane. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWorkingPlane</em> </td><td>Planar Face or LCS(Marker) of the working plane. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7e4d346b1fc5ee4887e8356abb864987"></a><!-- doxytag: member="geompy::MakeBox" ref="7e4d346b1fc5ee4887e8356abb864987" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBox </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>x1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>x2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>y2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>z2</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="3935ab1a312d87952e0661e539cb3861"></a><!-- doxytag: member="geompy::MakeBoxDXDYDZ" ref="3935ab1a312d87952e0661e539cb3861" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBoxDXDYDZ </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theDX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDZ</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>
-Center of the box will be at point (DX/2, DY/2, DZ/2). <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theDX</em> </td><td>Length of Box edges, parallel to OX axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDY</em> </td><td>Length of Box edges, parallel to OY axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDZ</em> </td><td>Length of Box edges, parallel to OZ axis. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created box.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="f887eae04ea14936c8f2ccc08e530e12"></a><!-- doxytag: member="geompy::MakeBoxTwoPnt" ref="f887eae04ea14936c8f2ccc08e530e12" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBoxTwoPnt </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</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>thePnt1</em> </td><td>First of two opposite vertices. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Second of two opposite vertices. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created box.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="5f544551dab0053b491618b11f72d8a7"></a><!-- doxytag: member="geompy::MakeCylinder" ref="5f544551dab0053b491618b11f72d8a7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCylinder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theH</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>thePnt</em> </td><td>Central point of cylinder base. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Cylinder axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Cylinder radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cylinder height. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cylinder.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="e4afae782eac7eda170ca1580985025c"></a><!-- doxytag: member="geompy::MakeCylinderRH" ref="e4afae782eac7eda170ca1580985025c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCylinderRH </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theR</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theH</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>
-Axis of the cylinder will be collinear to the OZ axis of the coordinate system. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Cylinder radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cylinder height. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cylinder.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="2ef7fabed1a4c83cfd9dfe41f54fe03e"></a><!-- doxytag: member="geompy::MakeSpherePntR" ref="2ef7fabed1a4c83cfd9dfe41f54fe03e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSpherePntR </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</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>thePnt</em> </td><td>Sphere center. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Sphere radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="39ecaa363c5555638718f4564aa1258d"></a><!-- doxytag: member="geompy::MakeSphere" ref="39ecaa363c5555638718f4564aa1258d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSphere </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</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,y,z</em> </td><td>Coordinates of sphere center. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Sphere radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="207bec566af2333662e49b0e054ebedc"></a><!-- doxytag: member="geompy::MakeSphereR" ref="207bec566af2333662e49b0e054ebedc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSphereR </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theR</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>theR</em> </td><td>Sphere radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created sphere.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="d77fe2cf4d96f17663434ef1fd4c286d"></a><!-- doxytag: member="geompy::MakeCone" ref="d77fe2cf4d96f17663434ef1fd4c286d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCone </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theH</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>thePnt</em> </td><td>Central point of the first cone base. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Cone axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR1</em> </td><td>Radius of the first cone base. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR2</em> </td><td>Radius of the second cone base. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>If both radiuses are non-zero, the cone will be truncated. <p>
-If the radiuses are equal, a cylinder will be created instead. </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cone height. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cone.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="59944e0c2a98bacfb06ddd4f861681b0"></a><!-- doxytag: member="geompy::MakeConeR1R2H" ref="59944e0c2a98bacfb06ddd4f861681b0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeConeR1R2H </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theR1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theH</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>
-Axis of the cone will be collinear to the OZ axis of the coordinate system. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theR1</em> </td><td>Radius of the first cone base. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR2</em> </td><td>Radius of the second cone base. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>If both radiuses are non-zero, the cone will be truncated. <p>
-If the radiuses are equal, a cylinder will be created instead. </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Cone height. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created cone.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="9cceaba104b3811113f6f7b368eb6633"></a><!-- doxytag: member="geompy::MakeTorus" ref="9cceaba104b3811113f6f7b368eb6633" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTorus </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRMajor</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRMinor</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>thePnt</em> </td><td>Torus central point. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Torus axis of symmetry. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRMajor</em> </td><td>Torus major radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Torus minor radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created torus.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="9a8c604450bd29216630ac33284017c6"></a><!-- doxytag: member="geompy::MakeTorusRR" ref="9a8c604450bd29216630ac33284017c6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTorusRR </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theRMajor</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRMinor</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>theRMajor</em> </td><td>Torus major radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRMinor</em> </td><td>Torus minor radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created torus.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c0a12052d81f3e8d755dd5b97fbdcf3d"></a><!-- doxytag: member="geompy::MakePrism" ref="c0a12052d81f3e8d755dd5b97fbdcf3d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePrism </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBase</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint2</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>theBase</em> </td><td>Base shape to be extruded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>First end of extrusion vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint2</em> </td><td>Second end of extrusion vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created prism.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="32ecfc039f58048b0b3a23ab8e433765"></a><!-- doxytag: member="geompy::MakePrismVecH" ref="32ecfc039f58048b0b3a23ab8e433765" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePrismVecH </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBase</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVec</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theH</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 the space, transfixed by the base shape during its translation along the vector on the given distance. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be extruded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVec</em> </td><td>Direction of extrusion. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theH</em> </td><td>Prism dimension along theVec. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created prism.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="cd033b39f4be052111ab3ec8d27cd9ee"></a><!-- doxytag: member="geompy::MakePipe" ref="cd033b39f4be052111ab3ec8d27cd9ee" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePipe </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBase</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePath</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 path shape can be a wire or an edge. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be extruded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePath</em> </td><td>Path shape to extrude the base shape along it. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created pipe.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="4c093c166272f508454e8eb03133e020"></a><!-- doxytag: member="geompy::MakeRevolution" ref="4c093c166272f508454e8eb03133e020" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeRevolution </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBase</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAngle</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 the space, transfixed by the base shape during its rotation around the axis on the given angle. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theBase</em> </td><td>Base shape to be rotated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in radians. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created revolution.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="45564231762e3f8b99b58cd149b48a62"></a><!-- doxytag: member="geompy::MakeThruSections" ref="45564231762e3f8b99b58cd149b48a62" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeThruSections </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theSeqSections</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theModeSolid</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePreci</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRuled</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>theSeqSections</em> </td><td>- set of specified sections. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theModeSolid</em> </td><td>- mode defining building solid or shell </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePreci</em> </td><td>- precision 3D used for smoothing by default 1.e-6 </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRuled</em> </td><td>- mode defining type of the result surfaces (ruled or smoothed). </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created shell or solid.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c4d4d9f9b338502dadd6342d3adb941d"></a><!-- doxytag: member="geompy::MakePipeWithDifferentSections" ref="c4d4d9f9b338502dadd6342d3adb941d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePipeWithDifferentSections </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theSeqBases</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theLocations</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePath</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWithContact</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWithCorrection</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 path shape can be a wire or an edge. the several profiles can be specified in the several locations of path. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theSeqBases</em> </td><td>- list of Bases shape to be extruded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theLocations</em> </td><td>- list of locations on the path corresponding specified list of the Bases shapes. Number of locations should be equal to number of bases or list of locations can be empty. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePath</em> </td><td>- Path shape to extrude the base shape along it. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWithContact</em> </td><td>- the mode defining that the section is translated to be in contact with the spine. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>-</em> </td><td>WithCorrection - defining that the section is rotated to be orthogonal to the spine tangent in the correspondent point </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created pipe.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="328df6d3aa2acd5dd367fd1ff0f02b90"></a><!-- doxytag: member="geompy::MakeEdge" ref="328df6d3aa2acd5dd367fd1ff0f02b90" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>thePnt1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt2</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>thePnt1</em> </td><td>Point for the first end of edge. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt2</em> </td><td>Point for the second end of edge. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created edge.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6e231ee2830c5d1292b8e8f80a1b570d"></a><!-- doxytag: member="geompy::MakeWire" ref="6e231ee2830c5d1292b8e8f80a1b570d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeWire </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theEdgesAndWires</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>theEdgesAndWires</em> </td><td>List of edges and/or wires. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created wire.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="1fa655542cb7d7f0ca7239246e4020a4"></a><!-- doxytag: member="geompy::MakeFace" ref="1fa655542cb7d7f0ca7239246e4020a4" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theWire</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isPlanarWanted</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>theWire</em> </td><td>closed Wire or Edge to build the face on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>isPlanarWanted</em> </td><td>If TRUE, only planar face will be built. If impossible, NULL object will be returned. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="377a2b2ff79598724ae3547e0f8f887e"></a><!-- doxytag: member="geompy::MakeFaceWires" ref="377a2b2ff79598724ae3547e0f8f887e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFaceWires </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theWires</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isPlanarWanted</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>theWires</em> </td><td>List of closed wires or edges to build the face on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>isPlanarWanted</em> </td><td>If TRUE, only planar face will be built. If impossible, NULL object will be returned. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="7900487f71fcbe9b74df16fe1de23aac"></a><!-- doxytag: member="geompy::MakeFaces" ref="7900487f71fcbe9b74df16fe1de23aac" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theWires</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isPlanarWanted</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="bcfb3334446b48ec3a59707341df3e38"></a><!-- doxytag: member="geompy::MakeShell" ref="bcfb3334446b48ec3a59707341df3e38" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeShell </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theFacesAndShells</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>theFacesAndShells</em> </td><td>List of faces and/or shells. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created shell.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="3e4434784c3ec97093321c16599f7590"></a><!-- doxytag: member="geompy::MakeSolid" ref="3e4434784c3ec97093321c16599f7590" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSolid </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShells</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>theShells</em> </td><td>Sequence of bounding shells. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6f23e242d8a3b1dbe445eb2f7f5b5bf6"></a><!-- doxytag: member="geompy::MakeCompound" ref="6f23e242d8a3b1dbe445eb2f7f5b5bf6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCompound </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShapes</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>theShapes</em> </td><td>List of shapes to put in compound. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created compound.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0ade4b552865ad0a4df9580145f0736e"></a><!-- doxytag: member="geompy::NumberOfFaces" ref="0ade4b552865ad0a4df9580145f0736e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::NumberOfFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to count faces of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Quantity of faces.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="730e50a690deccae3599792c202db613"></a><!-- doxytag: member="geompy::NumberOfEdges" ref="730e50a690deccae3599792c202db613" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::NumberOfEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to count edges of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Quantity of edges.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="278e8ebac370fcf80a92b857a54d830d"></a><!-- doxytag: member="geompy::ChangeOrientation" ref="278e8ebac370fcf80a92b857a54d830d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ChangeOrientation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to be reversed. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>The reversed copy of theShape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c13bcdc1219e63398e9d2bbd27271370"></a><!-- doxytag: member="geompy::OrientationChange" ref="c13bcdc1219e63398e9d2bbd27271370" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::OrientationChange </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="0d2c067d179c0008d035c42b9013283c"></a><!-- doxytag: member="geompy::GetFreeFacesIDs" ref="0d2c067d179c0008d035c42b9013283c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFreeFacesIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Free face is a face, which is not shared between two shells of the shape. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to find free faces in. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of all free faces, contained in theShape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="a19d88b97b5f1cf8c63bd8386f5e9476"></a><!-- doxytag: member="geompy::GetSharedShapes" ref="a19d88b97b5f1cf8c63bd8386f5e9476" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetSharedShapes </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShape2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</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>theShape1</em> </td><td>Shape to find sub-shapes in. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShape2</em> </td><td>Shape to find shared sub-shapes with. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of theShape1, shared with theShape2.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="e089332bc7ff498c6c6669836989383a"></a><!-- doxytag: member="geompy::GetShapesOnPlane" ref="e089332bc7ff498c6c6669836989383a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnPlane </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAx1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAx1</em> </td><td>Vector (or line, or linear edge), specifying normal direction and location of the plane to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="1ec8a4c4f37f881676de67fbb185a1a7"></a><!-- doxytag: member="geompy::GetShapesOnPlaneIDs" ref="1ec8a4c4f37f881676de67fbb185a1a7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnPlaneIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAx1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="43c25e4a08b30b59dcd18696effb3394"></a><!-- doxytag: member="geompy::GetShapesOnPlaneWithLocation" ref="43c25e4a08b30b59dcd18696effb3394" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnPlaneWithLocation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAx1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAx1</em> </td><td>Vector (or line, or linear edge), specifying normal direction of the plane to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePnt</em> </td><td>Point specifying location of the plane to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="7e017a6cd1e9103c7d6f4d3897e36ae5"></a><!-- doxytag: member="geompy::GetShapesOnPlaneWithLocationIDs" ref="7e017a6cd1e9103c7d6f4d3897e36ae5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnPlaneWithLocationIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAx1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePnt</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="e472f5764a1014dc9c60778cb02ce970"></a><!-- doxytag: member="geompy::GetShapesOnCylinder" ref="e472f5764a1014dc9c60778cb02ce970" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnCylinder </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRadius</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Vector (or line, or linear edge), specifying axis of the cylinder to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRadius</em> </td><td>Radius of the cylinder to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="338736dab175669a89da003c8cf45552"></a><!-- doxytag: member="geompy::GetShapesOnCylinderIDs" ref="338736dab175669a89da003c8cf45552" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnCylinderIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRadius</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="926ea88b412800140f45270a3ae89345"></a><!-- doxytag: member="geompy::GetShapesOnSphere" ref="926ea88b412800140f45270a3ae89345" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnSphere </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCenter</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRadius</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCenter</em> </td><td>Point, specifying center of the sphere to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theRadius</em> </td><td>Radius of the sphere to find shapes on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="c5e58a6957bf2695fd8a974da75718f6"></a><!-- doxytag: member="geompy::GetShapesOnSphereIDs" ref="c5e58a6957bf2695fd8a974da75718f6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnSphereIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theCenter</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theRadius</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="6b18a78d643167b99cc95ddd59874b10"></a><!-- doxytag: member="geompy::GetShapesOnQuadrangle" ref="6b18a78d643167b99cc95ddd59874b10" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnQuadrangle </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTopLeftPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTopRigthPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theBottomLeftPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theBottomRigthPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTopLeftPoint</em> </td><td>Point, specifying top left corner of a quadrangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTopRigthPoint</em> </td><td>Point, specifying top right corner of a quadrangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theBottomLeftPoint</em> </td><td>Point, specifying bottom left corner of a quadrangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theBottomRigthPoint</em> </td><td>Point, specifying bottom right corner of a quadrangle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="db16045827aa23070ef98eca038ecd2c"></a><!-- doxytag: member="geompy::GetShapesOnQuadrangleIDs" ref="db16045827aa23070ef98eca038ecd2c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnQuadrangleIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTopLeftPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTopRigthPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theBottomLeftPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theBottomRigthPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="94c97c957d04ebd433cb5b3d94e8c8ac"></a><!-- doxytag: member="geompy::GetShapesOnBox" ref="94c97c957d04ebd433cb5b3d94e8c8ac" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnBox </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBox</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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>theBox</em> </td><td>Shape for relative comparing. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theState</em> </td><td>The state of the subshapes to find. It can be one of ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of all found sub-shapes. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="c7b1da4e965bf551fc87b72ebd6afde7"></a><!-- doxytag: member="geompy::GetShapesOnBoxIDs" ref="c7b1da4e965bf551fc87b72ebd6afde7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetShapesOnBoxIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBox</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theState</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="2695635fc745e6aa6cda4545e2133c41"></a><!-- doxytag: member="geompy::GetInPlace" ref="2695635fc745e6aa6cda4545e2133c41" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetInPlace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShapeWhere</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeWhat</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>theShapeWhere</em> </td><td>Shape to find sub-shapes of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeWhat</em> </td><td>Shape, specifying what to find. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Group of all found sub-shapes or a single found sub-shape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="808c0723c1cc2c641a02aeaa0d0b45c6"></a><!-- doxytag: member="geompy::GetSame" ref="808c0723c1cc2c641a02aeaa0d0b45c6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetSame </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShapeWhere</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeWhat</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>theShapeWhere</em> </td><td>Shape to find sub-shape of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeWhat</em> </td><td>Shape, specifying what to find. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New <a class="el" href="classGEOM__Object.html">GEOM_Object</a> for found sub-shape. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="67706610dda0d5005ee1cdfe2e8362a2"></a><!-- doxytag: member="geompy::GetSubShape" ref="67706610dda0d5005ee1cdfe2e8362a2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetSubShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListOfID</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="d7ee9f96e4b5b4303c7d20f0fc42d67d"></a><!-- doxytag: member="geompy::GetSubShapeID" ref="d7ee9f96e4b5b4303c7d20f0fc42d67d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetSubShapeID </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aSubShape</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="e4ee5a20fdb33779f2dc5f1686fd3d8a"></a><!-- doxytag: member="geompy::SubShapeAll" ref="e4ee5a20fdb33779f2dc5f1686fd3d8a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeAll </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</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>theShape</em> </td><td>Shape to be exploded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of type theShapeType, contained in theShape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="d19aeb7b8759ebd877154239fb4c1d7f"></a><!-- doxytag: member="geompy::SubShapeAllIDs" ref="d19aeb7b8759ebd877154239fb4c1d7f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeAllIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</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>theShape</em> </td><td>Shape to be exploded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of sub-shapes. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="7991c614f21498c03545d58f0e1e6049"></a><!-- doxytag: member="geompy::SubShapeAllSorted" ref="7991c614f21498c03545d58f0e1e6049" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeAllSorted </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</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>
-Sub-shapes will be sorted by coordinates of their gravity centers. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be exploded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of sub-shapes of type theShapeType, contained in theShape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0da304f589070498b79851370436094e"></a><!-- doxytag: member="geompy::SubShapeAllSortedIDs" ref="0da304f589070498b79851370436094e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeAllSortedIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</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>
-Sub-shapes will be sorted by coordinates of their gravity centers. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be exploded. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of sub-shapes to be retrieved. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of IDs of sub-shapes. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f7265ff90cecdffb35a75b7968d834a1"></a><!-- doxytag: member="geompy::SubShape" ref="f7265ff90cecdffb35a75b7968d834a1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListOfInd</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>
-Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]<p>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="0566156543b9ae4bb4dacbdc660802e0"></a><!-- doxytag: member="geompy::SubShapeSorted" ref="0566156543b9ae4bb4dacbdc660802e0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SubShapeSorted </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListOfInd</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>
-Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]<p>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="4ec92460ad70a2086a228cc8f5c53546"></a><!-- doxytag: member="geompy::ProcessShape" ref="4ec92460ad70a2086a228cc8f5c53546" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ProcessShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theOperators</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theParameters</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theValues</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>theShape</em> </td><td>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theOperators</em> </td><td>List of names of operators ("FixShape", "SplitClosedFaces", etc.). </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theParameters</em> </td><td>List of names of parameters ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.). </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theValues</em> </td><td>List of values of parameters, in the same order as parameters are listed in <em>theParameters</em> list. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="e97025dce42f920c90940e317d4346df"></a><!-- doxytag: member="geompy::SuppressFaces" ref="e97025dce42f920c90940e317d4346df" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SuppressFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theFaces</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFaces</em> </td><td>Indices of faces to be removed, if EMPTY then the method removes ALL faces of the given object. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="af901778584daa351bf152dea8e45103"></a><!-- doxytag: member="geompy::MakeSewing" ref="af901778584daa351bf152dea8e45103" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSewing </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>ListShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTolerance</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>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="2053611e91ad644a537b94f7746aad83"></a><!-- doxytag: member="geompy::Sew" ref="2053611e91ad644a537b94f7746aad83" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Sew </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theTolerance</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Required tolerance value. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see <a class="el" href="namespacegeompy.html#af901778584daa351bf152dea8e45103">MakeSewing()</a> above </td>
- </tr>
-</table>
-<a class="anchor" name="1b508c8014392c17a40634ed0ea098fc"></a><!-- doxytag: member="geompy::SuppressInternalWires" ref="1b508c8014392c17a40634ed0ea098fc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SuppressInternalWires </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theWires</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indices of wires to be removed, if EMPTY then the method removes ALL internal wires of the given object. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="415a551ef50c5a35815080451c459a53"></a><!-- doxytag: member="geompy::SuppressHoles" ref="415a551ef50c5a35815080451c459a53" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SuppressHoles </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theWires</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indices of wires to be removed, if EMPTY then the method removes ALL internal holes of the given object </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="19eec790d224fe44a21855073733c61a"></a><!-- doxytag: member="geompy::CloseContour" ref="19eec790d224fe44a21855073733c61a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::CloseContour </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theWires</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isCommonVertex</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWires</em> </td><td>Indexes of edge(s) and wire(s) to be closed within <em>theObject</em>'s shape, if -1, then theObject itself is a wire. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>isCommonVertex</em> </td><td>If TRUE : closure by creation of a common vertex, If FALS : closure by creation of an edge between ends. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="3d0753cc00225c3c2432f64d2439de2c"></a><!-- doxytag: member="geompy::DivideEdge" ref="3d0753cc00225c3c2432f64d2439de2c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::DivideEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theEdgeIndex</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theValue</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>isByParameter</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>Shape to be processed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theEdgeIndex</em> </td><td>Index of edge to be divided within theObject's shape, if -1, then theObject itself is the edge. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theValue</em> </td><td>Value of parameter on edge or length parameter, depending on <em>isByParameter</em>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>isByParameter</em> </td><td>If TRUE : <em>theValue</em> is treated as a curve parameter [0..1], if FALSE : <em>theValue</em> is treated as a length parameter [0..1] </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="9c5759e7397aafa57af929453a3db08e"></a><!-- doxytag: member="geompy::ChangeOrientationShell" ref="9c5759e7397aafa57af929453a3db08e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ChangeOrientationShell </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theObject</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>theObject</em> </td><td>Shape to be processed. given shape </td></tr>
- </table>
-</dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="e82647674a4c63cda4dc8527712818e2"></a><!-- doxytag: member="geompy::ChangeOrientationShellCopy" ref="e82647674a4c63cda4dc8527712818e2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ChangeOrientationShellCopy </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theObject</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>theObject</em> </td><td>Shape to be processed. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing processed shape. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="65e1cf2711f524b98cd4596e53dda798"></a><!-- doxytag: member="geompy::GetFreeBoundary" ref="65e1cf2711f524b98cd4596e53dda798" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFreeBoundary </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theObject</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>theObject</em> </td><td>Shape to get free boundary of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[status, theClosedWires, theOpenWires] status: FALSE, if an error(s) occured during the method execution. theClosedWires: Closed wires on the free boundary of the given shape. theOpenWires: Open wires on the free boundary of the given shape.</dd></dl>
-Example: see GEOM_TestHealing.py </td>
- </tr>
-</table>
-<a class="anchor" name="33f1df4161bf5f34dcad843ed3380404"></a><!-- doxytag: member="geompy::MakeCopy" ref="33f1df4161bf5f34dcad843ed3380404" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCopy </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theOriginal</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>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="cbe2949bf5461726223a97ee80d1c3ec"></a><!-- doxytag: member="geompy::MakeFilling" ref="cbe2949bf5461726223a97ee80d1c3ec" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFilling </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMinDeg</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMaxDeg</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTol2D</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTol3D</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbIter</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>theShape</em> </td><td>the compound of contours </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMinDeg</em> </td><td>a minimal degree </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMaxDeg</em> </td><td>a maximal degree </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTol2D</em> </td><td>a 2d tolerance </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTol3D</em> </td><td>a 3d tolerance </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbIter</em> </td><td>a number of iteration </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created filling surface.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="e5d9467bd086e6cac983986d2d5f88fb"></a><!-- doxytag: member="geompy::MakeGlueFaces" ref="e5d9467bd086e6cac983986d2d5f88fb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeGlueFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theTolerance</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>theShape</em> </td><td>Initial shape. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theTolerance</em> </td><td>Maximum distance between faces, which can be considered as coincident. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing a copy of theShape without coincident faces.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="f226efc56d8eff7b56c2d1cfaafa9f29"></a><!-- doxytag: member="geompy::MakeBoolean" ref="f226efc56d8eff7b56c2d1cfaafa9f29" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBoolean </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShape2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theOperation</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>theShape1</em> </td><td>First argument for boolean operation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShape2</em> </td><td>Second argument for boolean operation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theOperation</em> </td><td>Indicates the operation to be done: 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="cd8f27d201b21e0fece9d01b8b4b1380"></a><!-- doxytag: member="geompy::MakeCommon" ref="cd8f27d201b21e0fece9d01b8b4b1380" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCommon </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>s1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s2</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="03dd2a576cc3add2d3de4d0dd49e543d"></a><!-- doxytag: member="geompy::MakeCut" ref="03dd2a576cc3add2d3de4d0dd49e543d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCut </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>s1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s2</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="d901649467a5a346eada63b49cf6303e"></a><!-- doxytag: member="geompy::MakeFuse" ref="d901649467a5a346eada63b49cf6303e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFuse </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>s1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s2</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="eedaf0e56fe5240f4c7c6b9054fc97c8"></a><!-- doxytag: member="geompy::MakeSection" ref="eedaf0e56fe5240f4c7c6b9054fc97c8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeSection </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>s1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>s2</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="56f48212a436f46c02722f627d27e7f2"></a><!-- doxytag: member="geompy::MakePartition" ref="56f48212a436f46c02722f627d27e7f2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePartition </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>ListShapes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListTools</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>ListKeepInside</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>ListRemoveInside</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>Limit</em> = <code><a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">ShapeType</a>["SHAPE"]</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>RemoveWebs</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>ListMaterials</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>ListShapes</em> </td><td>Shapes to be intersected. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ListTools</em> </td><td>Shapes to intersect theShapes. !!!NOTE: Each compound from ListShapes and ListTools will be exploded in order to avoid possible intersection between shapes from this compound.</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>Limit</em> </td><td>Type of resulting shapes (corresponding to TopAbs_ShapeEnum). </td></tr>
- </table>
-</dl>
-After implementation new version of PartitionAlgo (October 2006) other parameters are ignored by current functionality. They are kept in this function only for support old versions. Ignored parameters: <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>ListKeepInside</em> </td><td>Shapes, outside which the results will be deleted. Each shape from theKeepInside must belong to theShapes also. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ListRemoveInside</em> </td><td>Shapes, inside which the results will be deleted. Each shape from theRemoveInside must belong to theShapes also. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RemoveWebs</em> </td><td>If TRUE, perform Glue 3D algorithm. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ListMaterials</em> </td><td>Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.</td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shapes.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="85a4e715d0d0e4c8c9960372bfeb5327"></a><!-- doxytag: member="geompy::MakePartitionNonSelfIntersectedShape" ref="85a4e715d0d0e4c8c9960372bfeb5327" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePartitionNonSelfIntersectedShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>ListShapes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListTools</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>ListKeepInside</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>ListRemoveInside</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>Limit</em> = <code><a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">ShapeType</a>["SHAPE"]</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>RemoveWebs</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>ListMaterials</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>
-This method may be useful if it is needed to make a partition for compound contains nonintersected shapes. Performance will be better since intersection between shapes from compound is not performed.<p>
-Description of all parameters as in previous method <a class="el" href="namespacegeompy.html#56f48212a436f46c02722f627d27e7f2">MakePartition()</a><p>
-!!!NOTE: Passed compounds (via ListShapes or via ListTools) have to consist of nonintersecting shapes.<p>
-<dl compact><dt><b>Returns:</b></dt><dd>New <a class="el" href="classGEOM__Object.html">GEOM_Object</a>, containing the result shapes. </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="f1fc43bc5612514bcc2f6d772c3d38db"></a><!-- doxytag: member="geompy::Partition" ref="f1fc43bc5612514bcc2f6d772c3d38db" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Partition </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>ListShapes</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListTools</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>ListKeepInside</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>ListRemoveInside</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>Limit</em> = <code><a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">ShapeType</a>["SHAPE"]</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>RemoveWebs</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>ListMaterials</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="d5389c13cb51ad6b6d15780d7e648e69"></a><!-- doxytag: member="geompy::MakeHalfPartition" ref="d5389c13cb51ad6b6d15780d7e648e69" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeHalfPartition </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePlane</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>theShape</em> </td><td>Shape to be intersected. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePlane</em> </td><td>Tool shape, to intersect theShape. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c305e3f931c4ead2aae3b64ccfe5d350"></a><!-- doxytag: member="geompy::MakeTranslationTwoPoints" ref="c305e3f931c4ead2aae3b64ccfe5d350" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTranslationTwoPoints </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>thePoint1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint2</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>The object to be translated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>Start point of translation vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint2</em> </td><td>End point of translation vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="daa3f61a507374c1f673619c49485751"></a><!-- doxytag: member="geompy::MakeTranslation" ref="daa3f61a507374c1f673619c49485751" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTranslation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theDX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theDZ</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>The object to be translated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theDX,theDY,theDZ</em> </td><td>Components of translation vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c70936f9c902aef0c6dbd5510bdc7f03"></a><!-- doxytag: member="geompy::MakeTranslationVector" ref="c70936f9c902aef0c6dbd5510bdc7f03" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeTranslationVector </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theVector</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>The object to be translated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>The translation vector. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the translated object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="3363966f33171e6415e1a1b5d4a8e9fa"></a><!-- doxytag: member="geompy::MakeRotation" ref="3363966f33171e6415e1a1b5d4a8e9fa" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeRotation </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAngle</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>The object to be rotated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in radians. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the rotated object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6bcb1680b597f1491d371fa2a9242342"></a><!-- doxytag: member="geompy::MakeRotationThreePoints" ref="6bcb1680b597f1491d371fa2a9242342" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeRotationThreePoints </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theCentPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint2</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>The object to be rotated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theCentPoint</em> </td><td>central point - the axis is the vector perpendicular to the plane containing the three points. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint1</em> </td><td>and thePoint2 - in a perpendicular plan of the axis. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the rotated object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="7ad2fdeeef570ba29c86ba28d3da09f7"></a><!-- doxytag: member="geompy::MakeScaleTransform" ref="7ad2fdeeef570ba29c86ba28d3da09f7" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeScaleTransform </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>thePoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFactor</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>The object to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Center point for scaling. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFactor</em> </td><td>Scaling factor value. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the scaled shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="fab9bb8ede1f587c47cd1d981e966cdd"></a><!-- doxytag: member="geompy::MakeMirrorByPlane" ref="fab9bb8ede1f587c47cd1d981e966cdd" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMirrorByPlane </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>thePlane</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>The object to be mirrored. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePlane</em> </td><td>Plane of symmetry. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="73733650d7b37eb8aec0df9aca0c9a63"></a><!-- doxytag: member="geompy::MakeMirrorByAxis" ref="73733650d7b37eb8aec0df9aca0c9a63" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMirrorByAxis </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theAxis</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>The object to be mirrored. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Axis of symmetry. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="56e053740bed5b65670cf9cc10df4d8d"></a><!-- doxytag: member="geompy::MakeMirrorByPoint" ref="56e053740bed5b65670cf9cc10df4d8d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMirrorByPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>thePoint</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>The object to be mirrored. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point of symmetry. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the mirrored shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="c100ca3b5ccdbd133df55b331cf33c42"></a><!-- doxytag: member="geompy::MakePosition" ref="c100ca3b5ccdbd133df55b331cf33c42" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakePosition </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theStartLCS</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theEndLCS</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>The object to be displaced. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theStartLCS</em> </td><td>Coordinate system to perform displacement from it. If <em>theStartLCS</em> is NULL, displacement will be performed from global CS. If <em>theObject</em> itself is used as <em>theStartLCS</em>, its location will be changed to <em>theEndLCS</em>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theEndLCS</em> </td><td>Coordinate system to perform displacement to it. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the displaced shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="1c9ca22c504f4190f49f3e222fadeff0"></a><!-- doxytag: member="geompy::MakeOffset" ref="1c9ca22c504f4190f49f3e222fadeff0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeOffset </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theOffset</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>The base object for the offset. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theOffset</em> </td><td>Offset value. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the offset object.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="ab11f2929f8585eee3f3e29ed9b6fe51"></a><!-- doxytag: member="geompy::MakeMultiTranslation1D" ref="ab11f2929f8585eee3f3e29ed9b6fe51" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiTranslation1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theVector</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theStep</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes</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>The object to be translated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>Direction of the translation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theStep</em> </td><td>Distance to translate on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes</em> </td><td>Quantity of translations to be done. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each translation.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="4a96d7c7ad41b4cb66f2bc544085c659"></a><!-- doxytag: member="geompy::MakeMultiTranslation2D" ref="4a96d7c7ad41b4cb66f2bc544085c659" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiTranslation2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theVector1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theStep1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVector2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theStep2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes2</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>The object to be translated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVector1</em> </td><td>Direction of the first translation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theStep1</em> </td><td>Step of the first translation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes1</em> </td><td>Quantity of translations to be done along theVector1. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVector2</em> </td><td>Direction of the second translation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theStep2</em> </td><td>Step of the second translation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes2</em> </td><td>Quantity of translations to be done along theVector2. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each translation.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="6c50d3ab9f6be4fee93abec171a89cfc"></a><!-- doxytag: member="geompy::MultiRotate1D" ref="6c50d3ab9f6be4fee93abec171a89cfc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MultiRotate1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes</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>
-Rotation angle will be 2*PI/theNbTimes. <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>The object to be rotated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>The rotation axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes</em> </td><td>Quantity of rotations to be done. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each rotation.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="b004cf2bbff7b8dfa28a96aadc6bc456"></a><!-- doxytag: member="geompy::MultiRotate2D" ref="b004cf2bbff7b8dfa28a96aadc6bc456" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MultiRotate2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theAxis</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theAngle</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theStep</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theNbTimes2</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>
-Translation direction passes through center of gravity of rotated shape and its projection on the rotation axis. <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>The object to be rotated. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAxis</em> </td><td>Rotation axis. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theAngle</em> </td><td>Rotation angle in graduces. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes1</em> </td><td>Quantity of rotations to be done. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theStep</em> </td><td>Translation distance. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theNbTimes2</em> </td><td>Quantity of translations to be done. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing compound of all the shapes, obtained after each transformation.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="fe6bb49b0e4f150327729f063bdec2cd"></a><!-- doxytag: member="geompy::MakeMultiRotation1D" ref="fe6bb49b0e4f150327729f063bdec2cd" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiRotation1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aDir</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aNbTimes</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="5e677bcf6d3c8190778f05e6c7e871d3"></a><!-- doxytag: member="geompy::MakeMultiRotation2D" ref="5e677bcf6d3c8190778f05e6c7e871d3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiRotation2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aDir</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aPoint</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>anAngle</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>nbtimes1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aStep</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>nbtimes2</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="3f2ecc9ca30a3017c7f8d22a9c6ca6fb"></a><!-- doxytag: member="geompy::MakeFilletAll" ref="3f2ecc9ca30a3017c7f8d22a9c6ca6fb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFilletAll </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</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>theShape</em> </td><td>Shape, to perform fillet on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Fillet radius. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="86bbdb543ba06469c1ffe95cb7950f46"></a><!-- doxytag: member="geompy::MakeFillet" ref="86bbdb543ba06469c1ffe95cb7950f46" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeFillet </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theR</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theListShapes</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>theShape</em> </td><td>Shape, to perform fillet on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theR</em> </td><td>Fillet radius. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>Type of shapes in <theListShapes>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theListShapes</em> </td><td>Global indices of edges/faces to perform fillet on. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">geompy.GetSubShapeID()</a>. </dd></dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="92091fbfdb19e6532aaf8cbc76f271a1"></a><!-- doxytag: member="geompy::MakeChamferAll" ref="92091fbfdb19e6532aaf8cbc76f271a1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeChamferAll </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theD</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theD</em> </td><td>Chamfer size along each face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="6afb8427fde5f6ca2dbc51a51869f7ca"></a><!-- doxytag: member="geompy::MakeChamferEdge" ref="6afb8427fde5f6ca2dbc51a51869f7ca" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeChamferEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theD1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theD2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFace1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFace2</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theD1</em> </td><td>Chamfer size along <em>theFace1</em>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theD2</em> </td><td>Chamfer size along <em>theFace2</em>. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFace1,theFace2</em> </td><td>Global indices of two faces of <em>theShape</em>. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">geompy.GetSubShapeID()</a>. </dd></dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="2018b56951c34682fa0df214a3b1d7f2"></a><!-- doxytag: member="geompy::MakeChamferFaces" ref="2018b56951c34682fa0df214a3b1d7f2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeChamferFaces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theD1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theD2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFaces</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>theShape</em> </td><td>Shape, to perform chamfer on. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theD1</em> </td><td>Chamfer size along face from <em>theFaces</em>. If both faces, connected to the edge, are in <em>theFaces</em>, <em>theD1</em> will be get along face, which is nearer to <em>theFaces</em> beginning. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theD2</em> </td><td>Chamfer size along another of two faces, connected to the edge. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFaces</em> </td><td>Sequence of global indices of faces of <em>theShape</em>. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Global index of sub-shape can be obtained, using method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">geompy.GetSubShapeID()</a>. </dd></dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="1d1b85c082445f89293b614b23695a19"></a><!-- doxytag: member="geompy::MakeChamfer" ref="1d1b85c082445f89293b614b23695a19" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeChamfer </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>aShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>d1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>d2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>aShapeType</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>ListShape</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="dd1ebfcc03ea50d9701fc0fdff388cd8"></a><!-- doxytag: member="geompy::Archimede" ref="dd1ebfcc03ea50d9701fc0fdff388cd8" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Archimede </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWeight</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theWaterDensity</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMeshDeflection</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 object presenting the resulting face is returned. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to be put in water. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWeight</em> </td><td>Weight og the shape. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theWaterDensity</em> </td><td>Density of the water. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMeshDeflection</em> </td><td>Deflection of the mesh, using to compute the section. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing a section of <em>theShape</em> by a plane, corresponding to water level.</dd></dl>
-Example: see GEOM_TestAll.py </td>
- </tr>
-</table>
-<a class="anchor" name="e10a7c1c972b5629fcd9d4b459ccf13b"></a><!-- doxytag: member="geompy::PointCoordinates" ref="e10a7c1c972b5629fcd9d4b459ccf13b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::PointCoordinates </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>Point</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>[x, y, z]</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="ab1609df1740aca9735eb455b5ad7947"></a><!-- doxytag: member="geompy::BasicProperties" ref="ab1609df1740aca9735eb455b5ad7947" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::BasicProperties </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to define properties of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[theLength, theSurfArea, theVolume] theLength: Summarized length of all wires of the given shape. theSurfArea: Area of surface of the given shape. theVolume: Volume of the given shape.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="1aa8eba3c44a5230cd457b3f97eea57a"></a><!-- doxytag: member="geompy::BoundingBox" ref="1aa8eba3c44a5230cd457b3f97eea57a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::BoundingBox </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to obtain bounding box of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[Xmin,Xmax, Ymin,Ymax, Zmin,Zmax] Xmin,Xmax: Limits of shape along OX axis. Ymin,Ymax: Limits of shape along OY axis. Zmin,Zmax: Limits of shape along OZ axis.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="139df343f817141a8b074cd7389a44b1"></a><!-- doxytag: member="geompy::Inertia" ref="139df343f817141a8b074cd7389a44b1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Inertia </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to calculate inertia of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz] I(1-3)(1-3): Components of the inertia matrix of the given shape. Ix,Iy,Iz: Moments of inertia of the given shape.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="ef044d33ebbe02c75bb62d44ec8570bc"></a><!-- doxytag: member="geompy::MinDistance" ref="ef044d33ebbe02c75bb62d44ec8570bc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MinDistance </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShape2</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>theShape1,theShape2</em> </td><td>Shapes to find minimal distance between. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Value of the minimal distance between the given shapes.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="8f1e2eb8fa61d0e7aebc04a641f020fb"></a><!-- doxytag: member="geompy::Tolerance" ref="8f1e2eb8fa61d0e7aebc04a641f020fb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Tolerance </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape, to get tolerances of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax] FaceMin,FaceMax: Min and max tolerances of the faces. EdgeMin,EdgeMax: Min and max tolerances of the edges. VertMin,VertMax: Min and max tolerances of the vertices.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="6c1a6120cbbf69d13c02b9ade0ba98eb"></a><!-- doxytag: member="geompy::WhatIs" ref="6c1a6120cbbf69d13c02b9ade0ba98eb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::WhatIs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to be described. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Description of the given shape.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="d9e158674b690b397e20e788b7622da0"></a><!-- doxytag: member="geompy::MakeCDG" ref="d9e158674b690b397e20e788b7622da0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeCDG </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>theShape</em> </td><td>Shape to define centre of mass of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created point.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="35d111502e0280fee475e86270792565"></a><!-- doxytag: member="geompy::CheckShape" ref="35d111502e0280fee475e86270792565" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::CheckShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theIsCheckGeom</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>theShape</em> </td><td>Shape to check validity of. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theIsCheckGeom</em> </td><td>If FALSE, only the shape's topology will be checked, if TRUE, the shape's geometry will be checked also. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>TRUE, if the shape "seems to be valid". If theShape is invalid, prints a description of problem.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="1f93405313fd378a4383ea9833dab3de"></a><!-- doxytag: member="geompy::GetPosition" ref="1f93405313fd378a4383ea9833dab3de" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetPosition </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Origin of the LCS is situated at the shape's center of mass. Axes of the LCS are obtained from shape's location or, if the shape is a planar face, from position of its plane.<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>theShape</em> </td><td>Shape to calculate position of. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>[Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz]. Ox,Oy,Oz: Coordinates of shape's LCS origin. Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction. Xx,Xy,Xz: Coordinates of shape's LCS X direction.</dd></dl>
-Example: see GEOM_TestMeasures.py </td>
- </tr>
-</table>
-<a class="anchor" name="a0571beb5ffbacb42ce92195309820d0"></a><!-- doxytag: member="geompy::Import" ref="a0571beb5ffbacb42ce92195309820d0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Import </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theFileName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFormatName</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>theFileName</em> </td><td>The file, containing the shape. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFormatName</em> </td><td>Specify format for the file reading. Available formats can be obtained with InsertOp.ImportTranslators() method. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the imported shape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="10f157e05c0e20acd86f78090bfec351"></a><!-- doxytag: member="geompy::ImportBREP" ref="10f157e05c0e20acd86f78090bfec351" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ImportBREP </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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="2968cc7bf89d54bee34ee3f560bd7f4f"></a><!-- doxytag: member="geompy::ImportIGES" ref="2968cc7bf89d54bee34ee3f560bd7f4f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ImportIGES </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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="a232e7dafb6fd10ade8e601d54fd63c2"></a><!-- doxytag: member="geompy::ImportSTEP" ref="a232e7dafb6fd10ade8e601d54fd63c2" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ImportSTEP </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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="499e87da00bb3be6123cf73136127bfc"></a><!-- doxytag: member="geompy::Export" ref="499e87da00bb3be6123cf73136127bfc" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Export </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theFileName</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFormatName</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>Shape to be stored in the file. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFileName</em> </td><td>Name of the file to store the given shape in. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFormatName</em> </td><td>Specify format for the shape storage. Available formats can be obtained with InsertOp.ImportTranslators() method.</td></tr>
- </table>
-</dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="87cb97db967c38695f7b820dbcff30bd"></a><!-- doxytag: member="geompy::ExportBREP" ref="87cb97db967c38695f7b820dbcff30bd" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ExportBREP </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theFileName</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="1fecea070929464aee6bf9887dae144a"></a><!-- doxytag: member="geompy::ExportIGES" ref="1fecea070929464aee6bf9887dae144a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ExportIGES </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theFileName</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="96a04d9dac65752cc513b4fdf70c5ea0"></a><!-- doxytag: member="geompy::ExportSTEP" ref="96a04d9dac65752cc513b4fdf70c5ea0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::ExportSTEP </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </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>theFileName</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="6e740378fa27a55a0605f11ed68d5c13"></a><!-- doxytag: member="geompy::MakeQuad" ref="6e740378fa27a55a0605f11ed68d5c13" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeQuad </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>E1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>E2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>E3</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>E4</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>
-Order of Edges is not important. It is not necessary that edges share the same vertex. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>E1,E2,E3,E4</em> </td><td>Edges for the face bound. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="b459a4cca585b6d0ae962fcc533e2233"></a><!-- doxytag: member="geompy::MakeQuad2Edges" ref="b459a4cca585b6d0ae962fcc533e2233" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeQuad2Edges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>E1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>E2</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 missing edges will be built by creating the shortest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>E1,E2</em> </td><td>Two opposite edges for the face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="b4a45d1dd409b770f143758e8bc2f80d"></a><!-- doxytag: member="geompy::MakeQuad4Vertices" ref="b4a45d1dd409b770f143758e8bc2f80d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeQuad4Vertices </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>V1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>V2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>V3</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>V4</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 missing edges will be built by creating the shortest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>V1,V2,V3,V4</em> </td><td>Corner vertices for the face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="d9eb183f135341b2c5151e5d31c8d07c"></a><!-- doxytag: member="geompy::MakeHexa" ref="d9eb183f135341b2c5151e5d31c8d07c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeHexa </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>F1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F3</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F4</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F5</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F6</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>
-Order of faces is not important. It is not necessary that Faces share the same edge. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>F1,F2,F3,F4,F5,F6</em> </td><td>Faces for the hexahedral solid. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="c612949da56e4e28d2f52f7022e8f270"></a><!-- doxytag: member="geompy::MakeHexa2Faces" ref="c612949da56e4e28d2f52f7022e8f270" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeHexa2Faces </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>F1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>F2</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 missing faces will be built by creating the smallest ones. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>F1,F2</em> </td><td>Two opposite faces for the hexahedral solid. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the created solid.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="1d89799285c4b0a50c8edd0276a45e00"></a><!-- doxytag: member="geompy::GetPoint" ref="1d89799285c4b0a50c8edd0276a45e00" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theX</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theY</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theZ</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theEpsilon</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theX,theY,theZ</em> </td><td>Coordinates of the sought vertex. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theEpsilon</em> </td><td>Maximum allowed distance between the resulting vertex and point with the given coordinates. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found vertex.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="3e02dfbb79bbe2739ffe382a10a83902"></a><!-- doxytag: member="geompy::GetEdge" ref="3e02dfbb79bbe2739ffe382a10a83902" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetEdge </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint2</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint1,thePoint2</em> </td><td>Points, close to the ends of the desired edge. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found edge.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="294c21fa51645e8cc18199dfb4622174"></a><!-- doxytag: member="geompy::GetEdgeNearPoint" ref="294c21fa51645e8cc18199dfb4622174" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetEdgeNearPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired edge. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found edge.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="5d9f4778acda236b2595a93f3443269f"></a><!-- doxytag: member="geompy::GetFaceByPoints" ref="5d9f4778acda236b2595a93f3443269f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFaceByPoints </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint3</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint4</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint1-thePoint4</em> </td><td>Points, close to the corners of the desired face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="f7154a6930bffcd3f249e32e360bf161"></a><!-- doxytag: member="geompy::GetFaceByEdges" ref="f7154a6930bffcd3f249e32e360bf161" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFaceByEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theEdge1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theEdge2</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theEdge1,theEdge2</em> </td><td>Edges, close to the edges of the desired face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="5367485e4a8a35c32d746723fee905bb"></a><!-- doxytag: member="geompy::GetOppositeFace" ref="5367485e4a8a35c32d746723fee905bb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetOppositeFace </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBlock</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theFace</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>theBlock</em> </td><td>Must be a hexahedral solid. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theFace</em> </td><td>Face of <em>theBlock</em>, opposite to the desired face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="12a77345f9e987f83ffd294cd7efcb0b"></a><!-- doxytag: member="geompy::GetFaceNearPoint" ref="12a77345f9e987f83ffd294cd7efcb0b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFaceNearPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="ccf6906ed06251948bb9ab80a394a04e"></a><!-- doxytag: member="geompy::GetFaceByNormale" ref="ccf6906ed06251948bb9ab80a394a04e" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetFaceByNormale </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theBlock</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theVector</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>theShape</em> </td><td>Block or a compound of blocks. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theVector</em> </td><td>Vector, close to the normale of the desired face. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found face.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="9b3b633e1484b00d74d4115aecba634c"></a><!-- doxytag: member="geompy::CheckCompoundOfBlocks" ref="9b3b633e1484b00d74d4115aecba634c" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::CheckCompoundOfBlocks </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theCompound</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>
-To be considered as a compound of blocks, the given shape must satisfy the following conditions:<ul>
-<li>Each element of the compound should be a Block (6 faces and 12 edges).</li><li>A connection between two Blocks should be an entire quadrangle face or an entire edge.</li><li>The compound should be connexe.</li><li>The glue between two quadrangle faces should be applied. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theCompound</em> </td><td>The compound to check. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>TRUE, if the given shape is a compound of blocks. If theCompound is not valid, prints all discovered errors.</dd></dl>
-Example: see GEOM_Spanner.py </li></ul>
- </td>
- </tr>
-</table>
-<a class="anchor" name="4c8f85c9a412a5460e48313ee9dc428b"></a><!-- doxytag: member="geompy::RemoveExtraEdges" ref="4c8f85c9a412a5460e48313ee9dc428b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::RemoveExtraEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Unite faces and edges, sharing one surface. It means that this faces must have references to one C++ surface object (handle). <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>The compound or single solid to remove irregular edges from. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Improved shape.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="f690cd52d196cb4eca5a57aebcd4827b"></a><!-- doxytag: member="geompy::CheckAndImprove" ref="f690cd52d196cb4eca5a57aebcd4827b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::CheckAndImprove </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Fix all detected errors. <dl compact><dt><b>Note:</b></dt><dd>Single block can be also fixed by this method. </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theCompound</em> </td><td>The compound to check and improve. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Improved compound.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="261f5525946b6b9abd3033d058f2c077"></a><!-- doxytag: member="geompy::MakeBlockExplode" ref="261f5525946b6b9abd3033d058f2c077" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeBlockExplode </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCompound</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMinNbFaces</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theMaxNbFaces</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>theCompound</em> </td><td>The compound to explode. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMinNbFaces</em> </td><td>If solid has lower number of faces, it is not a block. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theMaxNbFaces</em> </td><td>If solid has higher number of faces, it is not a block. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>If theMaxNbFaces = 0, the maximum number of faces is not restricted. </dd></dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, containing the retrieved blocks.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="850464c8254224a9fca8df8121378442"></a><!-- doxytag: member="geompy::GetBlockNearPoint" ref="850464c8254224a9fca8df8121378442" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetBlockNearPoint </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCompound</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>thePoint</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>theCompound</em> </td><td>Compound, to find block in. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>thePoint</em> </td><td>Point, close to the desired block. If the point lays on boundary between some blocks, we return block with nearest center. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found block.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="3b644c68c91ba34eb232add9c16ad26d"></a><!-- doxytag: member="geompy::GetBlockByParts" ref="3b644c68c91ba34eb232add9c16ad26d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetBlockByParts </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCompound</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theParts</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>theCompound</em> </td><td>Compound, to find block in. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theParts</em> </td><td>List of faces and/or edges and/or vertices to be parts of the found block. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the found block.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="87b5b6632b97d3da1d447e02d4b169a9"></a><!-- doxytag: member="geompy::GetBlocksByParts" ref="87b5b6632b97d3da1d447e02d4b169a9" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetBlocksByParts </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theCompound</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theParts</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>theCompound</em> </td><td>Compound, to find blocks in. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theParts</em> </td><td>List of faces and/or edges and/or vertices to be parts of the found blocks. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, containing the found blocks.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="f01d36e0b2eb11c0e5abc141691d2eee"></a><!-- doxytag: member="geompy::MakeMultiTransformation1D" ref="f01d36e0b2eb11c0e5abc141691d2eee" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiTransformation1D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>Block</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace1</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace2</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbTimes</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>
-Transformation is defined so, as to superpose direction faces. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>Block</em> </td><td>Hexahedral solid to be multi-transformed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DirFace1</em> </td><td>ID of First direction face. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DirFace2</em> </td><td>ID of Second direction face. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbTimes</em> </td><td>Quantity of transformations to be done. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Unique ID of sub-shape can be obtained, using method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">GetSubShapeID()</a>. </dd></dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="4592c6223d08418649f48113913103fb"></a><!-- doxytag: member="geompy::MakeMultiTransformation2D" ref="4592c6223d08418649f48113913103fb" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::MakeMultiTransformation2D </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>Block</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace1U</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace2U</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbTimesU</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace1V</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>DirFace2V</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>NbTimesV</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>Block</em> </td><td>Hexahedral solid to be multi-transformed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DirFace1U,DirFace2U</em> </td><td>IDs of Direction faces for the first transformation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>DirFace1V,DirFace2V</em> </td><td>IDs of Direction faces for the second transformation. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NbTimesU,NbTimesV</em> </td><td>Quantity of transformations to be done. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>New GEOM_Object, containing the result shape.</dd></dl>
-Example: see GEOM_Spanner.py </td>
- </tr>
-</table>
-<a class="anchor" name="066548557397df1e539909427054d601"></a><!-- doxytag: member="geompy::Propagate" ref="066548557397df1e539909427054d601" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::Propagate </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theShape</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>
-Propagation group is a set of all edges, opposite to one (main) edge of this group directly or through other opposite edges. Notion of Opposite Edge make sence only on quadrangle face. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theShape</em> </td><td>Shape to build propagation groups on. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>List of GEOM_Objects, each of them is a propagation group.</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="d34dca22784f06782d577a35ebb767a6"></a><!-- doxytag: member="geompy::CreateGroup" ref="d34dca22784f06782d577a35ebb767a6" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::CreateGroup </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theMainShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theShapeType</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>theMainShape</em> </td><td>is a GEOM object on which the group is selected </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theShapeType</em> </td><td>defines a shape type of the group </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>a newly created GEOM group</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="a2dbd1e5c34e091747e208cd6b63eba1"></a><!-- doxytag: member="geompy::AddObject" ref="a2dbd1e5c34e091747e208cd6b63eba1" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::AddObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapeID</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>theGroup</em> </td><td>is a GEOM group to which the new sub shape is added </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubShapeID</em> </td><td>is a sub shape ID in the main object. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Use method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">GetSubShapeID()</a> to get an unique ID of the sub shape</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="1153343bde9e7e07a9571123d1440d3b"></a><!-- doxytag: member="geompy::RemoveObject" ref="1153343bde9e7e07a9571123d1440d3b" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::RemoveObject </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapeID</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>theGroup</em> </td><td>is a GEOM group from which the new sub shape is removed </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubShapeID</em> </td><td>is a sub shape ID in the main object. </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Note:</b></dt><dd>Use method <a class="el" href="namespacegeompy.html#d7ee9f96e4b5b4303c7d20f0fc42d67d">GetSubShapeID()</a> to get an unique ID of the sub shape</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="00450556247ac647a69506a1776a125d"></a><!-- doxytag: member="geompy::UnionList" ref="00450556247ac647a69506a1776a125d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::UnionList </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapes</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>
-No errors, if some shapes are alredy included. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theGroup</em> </td><td>is a GEOM group to which the new sub shapes are added. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubShapes</em> </td><td>is a list of sub shapes to be added.</td></tr>
- </table>
-</dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="5e1f46dae5dc0b01e997278cf186d73d"></a><!-- doxytag: member="geompy::UnionIDs" ref="5e1f46dae5dc0b01e997278cf186d73d" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::UnionIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapes</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="5514b5a8b24702828eed0f6b39fe8f9a"></a><!-- doxytag: member="geompy::DifferenceList" ref="5514b5a8b24702828eed0f6b39fe8f9a" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::DifferenceList </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapes</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>
-No errors, if some shapes are not included. <dl compact><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>theGroup</em> </td><td>is a GEOM group from which the sub-shapes are removed. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>theSubShapes</em> </td><td>is a list of sub-shapes to be removed.</td></tr>
- </table>
-</dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="78ccd39b2263ea213805869fbe4c3bc3"></a><!-- doxytag: member="geompy::DifferenceIDs" ref="78ccd39b2263ea213805869fbe4c3bc3" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::DifferenceIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theGroup</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>theSubShapes</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>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="c076d5e58ceb4d210f7a43e1acea8ca5"></a><!-- doxytag: member="geompy::GetObjectIDs" ref="c076d5e58ceb4d210f7a43e1acea8ca5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetObjectIDs </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group for which a list of IDs is requested</td></tr>
- </table>
-</dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="05095c0349fe3889ab06235f265c1ea9"></a><!-- doxytag: member="geompy::GetType" ref="05095c0349fe3889ab06235f265c1ea9" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetType </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group which type is returned.</td></tr>
- </table>
-</dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="4c9609d803e34c25427e59e4ab2ddb42"></a><!-- doxytag: member="geompy::GetMainShape" ref="4c9609d803e34c25427e59e4ab2ddb42" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetMainShape </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>theGroup</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>theGroup</em> </td><td>is a GEOM group for which a main shape object is requested </td></tr>
- </table>
-</dl>
-<dl compact><dt><b>Returns:</b></dt><dd>a GEOM object which is a main shape for theGroup</dd></dl>
-Example: see GEOM_TestOthers.py </td>
- </tr>
-</table>
-<a class="anchor" name="c6b2d69f3d03206b73ce0c0bbfb56eae"></a><!-- doxytag: member="geompy::GetEdgesByLength" ref="c6b2d69f3d03206b73ce0c0bbfb56eae" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::GetEdgesByLength </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>theShape</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap> </td>
- <td class="mdname" nowrap> <em>min_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>max_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>include_min</em> = <code>1</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>include_max</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>
- </td>
- </tr>
-</table>
-<a class="anchor" name="ae1cbdb4fcaa8ac1a7c826580b99fc5f"></a><!-- doxytag: member="geompy::SelectEdges" ref="ae1cbdb4fcaa8ac1a7c826580b99fc5f" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::SelectEdges </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname" nowrap> <em>min_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>max_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>include_min</em> = <code>1</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>include_max</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>
- </td>
- </tr>
-</table>
-<a class="anchor" name="9c05eb3e0ffbdd757e288d3204422dc5"></a><!-- doxytag: member="geompy::addPath" ref="9c05eb3e0ffbdd757e288d3204422dc5" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">def geompy::addPath </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"> </td>
- <td class="mdname1" valign="top" nowrap> <em>Path</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>Variable Documentation</h2>
-<a class="anchor" name="8b6a0245f3cf8c1ef6de94487433fc0c"></a><!-- doxytag: member="geompy::g" ref="8b6a0245f3cf8c1ef6de94487433fc0c" args="" --><p>
-<table 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="namespacegeompy.html#8b6a0245f3cf8c1ef6de94487433fc0c">geompy.g</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")<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="96bc383a8e96df6d938b485e9e1b5e11"></a><!-- doxytag: member="geompy::geom" ref="96bc383a8e96df6d938b485e9e1b5e11" args="" --><p>
-<table 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="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geompy.geom</a> = g._narrow( GEOM.GEOM_Gen )<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="f01ae5049e69c6da96bdc94d5b1c6d38"></a><!-- doxytag: member="geompy::myBuilder" ref="f01ae5049e69c6da96bdc94d5b1c6d38" args="" --><p>
-<table 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="namespacegeompy.html#f01ae5049e69c6da96bdc94d5b1c6d38">geompy.myBuilder</a> = None<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="9857c81d89e1dd436e4da52b0884ef94"></a><!-- doxytag: member="geompy::myStudyId" ref="9857c81d89e1dd436e4da52b0884ef94" args="" --><p>
-<table 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="namespacegeompy.html#9857c81d89e1dd436e4da52b0884ef94">geompy.myStudyId</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="0f6146a8fb62ad5221da4dc2e8a7a8f7"></a><!-- doxytag: member="geompy::father" ref="0f6146a8fb62ad5221da4dc2e8a7a8f7" args="" --><p>
-<table 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="namespacegeompy.html#0f6146a8fb62ad5221da4dc2e8a7a8f7">geompy.father</a> = None<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="58b9182cc4b7d927dda2cd6a2f2e677b"></a><!-- doxytag: member="geompy::BasicOp" ref="58b9182cc4b7d927dda2cd6a2f2e677b" args="" --><p>
-<table 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="namespacegeompy.html#58b9182cc4b7d927dda2cd6a2f2e677b">geompy.BasicOp</a> = None<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="c319490ec26550ef4fd0b787f183a323"></a><!-- doxytag: member="geompy::CurvesOp" ref="c319490ec26550ef4fd0b787f183a323" args="" --><p>
-<table 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="namespacegeompy.html#c319490ec26550ef4fd0b787f183a323">geompy.CurvesOp</a> = None<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="7dd8908de955a347609b4f9cbca99686"></a><!-- doxytag: member="geompy::PrimOp" ref="7dd8908de955a347609b4f9cbca99686" args="" --><p>
-<table 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="namespacegeompy.html#7dd8908de955a347609b4f9cbca99686">geompy.PrimOp</a> = None<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="39a05853eb7e4dc664d7acaa5536e610"></a><!-- doxytag: member="geompy::ShapesOp" ref="39a05853eb7e4dc664d7acaa5536e610" args="" --><p>
-<table 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="namespacegeompy.html#39a05853eb7e4dc664d7acaa5536e610">geompy.ShapesOp</a> = None<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="9b6b150d33cb71f2ab6380f143cc37b6"></a><!-- doxytag: member="geompy::HealOp" ref="9b6b150d33cb71f2ab6380f143cc37b6" args="" --><p>
-<table 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="namespacegeompy.html#9b6b150d33cb71f2ab6380f143cc37b6">geompy.HealOp</a> = None<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="1293220280565f0b9256d382d2ea882a"></a><!-- doxytag: member="geompy::InsertOp" ref="1293220280565f0b9256d382d2ea882a" args="" --><p>
-<table 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="namespacegeompy.html#1293220280565f0b9256d382d2ea882a">geompy.InsertOp</a> = None<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="51777a574318dcf4c9025d03b0cfb1a1"></a><!-- doxytag: member="geompy::BoolOp" ref="51777a574318dcf4c9025d03b0cfb1a1" args="" --><p>
-<table 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="namespacegeompy.html#51777a574318dcf4c9025d03b0cfb1a1">geompy.BoolOp</a> = None<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="921e4ec0a8e80b1c61bd8b156ba8cfb7"></a><!-- doxytag: member="geompy::TrsfOp" ref="921e4ec0a8e80b1c61bd8b156ba8cfb7" args="" --><p>
-<table 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="namespacegeompy.html#921e4ec0a8e80b1c61bd8b156ba8cfb7">geompy.TrsfOp</a> = None<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="37bbe3bd9771d58b547723e6436bed81"></a><!-- doxytag: member="geompy::LocalOp" ref="37bbe3bd9771d58b547723e6436bed81" args="" --><p>
-<table 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="namespacegeompy.html#37bbe3bd9771d58b547723e6436bed81">geompy.LocalOp</a> = None<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="eb30abfc8b306d15adc2f50c48064054"></a><!-- doxytag: member="geompy::MeasuOp" ref="eb30abfc8b306d15adc2f50c48064054" args="" --><p>
-<table 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="namespacegeompy.html#eb30abfc8b306d15adc2f50c48064054">geompy.MeasuOp</a> = None<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="4e06888ee75ecc7a54f0c8bad501a0c2"></a><!-- doxytag: member="geompy::BlocksOp" ref="4e06888ee75ecc7a54f0c8bad501a0c2" args="" --><p>
-<table 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="namespacegeompy.html#4e06888ee75ecc7a54f0c8bad501a0c2">geompy.BlocksOp</a> = None<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="c809d5d73246f177ee010c4fe497d342"></a><!-- doxytag: member="geompy::GroupOp" ref="c809d5d73246f177ee010c4fe497d342" args="" --><p>
-<table 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="namespacegeompy.html#c809d5d73246f177ee010c4fe497d342">geompy.GroupOp</a> = None<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="269cf26d7d10b8f6b4a20789ed8233a0"></a><!-- doxytag: member="geompy::ShapeType" ref="269cf26d7d10b8f6b4a20789ed8233a0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">dictionary <a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">geompy.ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}<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="8b6a0245f3cf8c1ef6de94487433fc0c"></a><!-- doxytag: member="geompy::g" ref="8b6a0245f3cf8c1ef6de94487433fc0c" args="" --><p>
-<table 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="namespacegeompy.html#8b6a0245f3cf8c1ef6de94487433fc0c">geompy.g</a> = lcc.FindOrLoadComponent("FactoryServer", "GEOM")<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="96bc383a8e96df6d938b485e9e1b5e11"></a><!-- doxytag: member="geompy::geom" ref="96bc383a8e96df6d938b485e9e1b5e11" args="" --><p>
-<table 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="namespacegeompy.html#96bc383a8e96df6d938b485e9e1b5e11">geompy.geom</a> = g._narrow( GEOM.GEOM_Gen )<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="f01ae5049e69c6da96bdc94d5b1c6d38"></a><!-- doxytag: member="geompy::myBuilder" ref="f01ae5049e69c6da96bdc94d5b1c6d38" args="" --><p>
-<table 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="namespacegeompy.html#f01ae5049e69c6da96bdc94d5b1c6d38">geompy.myBuilder</a> = None<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="9857c81d89e1dd436e4da52b0884ef94"></a><!-- doxytag: member="geompy::myStudyId" ref="9857c81d89e1dd436e4da52b0884ef94" args="" --><p>
-<table 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="namespacegeompy.html#9857c81d89e1dd436e4da52b0884ef94">geompy.myStudyId</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="0f6146a8fb62ad5221da4dc2e8a7a8f7"></a><!-- doxytag: member="geompy::father" ref="0f6146a8fb62ad5221da4dc2e8a7a8f7" args="" --><p>
-<table 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="namespacegeompy.html#0f6146a8fb62ad5221da4dc2e8a7a8f7">geompy.father</a> = None<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="58b9182cc4b7d927dda2cd6a2f2e677b"></a><!-- doxytag: member="geompy::BasicOp" ref="58b9182cc4b7d927dda2cd6a2f2e677b" args="" --><p>
-<table 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="namespacegeompy.html#58b9182cc4b7d927dda2cd6a2f2e677b">geompy.BasicOp</a> = None<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="c319490ec26550ef4fd0b787f183a323"></a><!-- doxytag: member="geompy::CurvesOp" ref="c319490ec26550ef4fd0b787f183a323" args="" --><p>
-<table 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="namespacegeompy.html#c319490ec26550ef4fd0b787f183a323">geompy.CurvesOp</a> = None<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="7dd8908de955a347609b4f9cbca99686"></a><!-- doxytag: member="geompy::PrimOp" ref="7dd8908de955a347609b4f9cbca99686" args="" --><p>
-<table 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="namespacegeompy.html#7dd8908de955a347609b4f9cbca99686">geompy.PrimOp</a> = None<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="39a05853eb7e4dc664d7acaa5536e610"></a><!-- doxytag: member="geompy::ShapesOp" ref="39a05853eb7e4dc664d7acaa5536e610" args="" --><p>
-<table 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="namespacegeompy.html#39a05853eb7e4dc664d7acaa5536e610">geompy.ShapesOp</a> = None<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="9b6b150d33cb71f2ab6380f143cc37b6"></a><!-- doxytag: member="geompy::HealOp" ref="9b6b150d33cb71f2ab6380f143cc37b6" args="" --><p>
-<table 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="namespacegeompy.html#9b6b150d33cb71f2ab6380f143cc37b6">geompy.HealOp</a> = None<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="1293220280565f0b9256d382d2ea882a"></a><!-- doxytag: member="geompy::InsertOp" ref="1293220280565f0b9256d382d2ea882a" args="" --><p>
-<table 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="namespacegeompy.html#1293220280565f0b9256d382d2ea882a">geompy.InsertOp</a> = None<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="51777a574318dcf4c9025d03b0cfb1a1"></a><!-- doxytag: member="geompy::BoolOp" ref="51777a574318dcf4c9025d03b0cfb1a1" args="" --><p>
-<table 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="namespacegeompy.html#51777a574318dcf4c9025d03b0cfb1a1">geompy.BoolOp</a> = None<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="921e4ec0a8e80b1c61bd8b156ba8cfb7"></a><!-- doxytag: member="geompy::TrsfOp" ref="921e4ec0a8e80b1c61bd8b156ba8cfb7" args="" --><p>
-<table 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="namespacegeompy.html#921e4ec0a8e80b1c61bd8b156ba8cfb7">geompy.TrsfOp</a> = None<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="37bbe3bd9771d58b547723e6436bed81"></a><!-- doxytag: member="geompy::LocalOp" ref="37bbe3bd9771d58b547723e6436bed81" args="" --><p>
-<table 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="namespacegeompy.html#37bbe3bd9771d58b547723e6436bed81">geompy.LocalOp</a> = None<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="eb30abfc8b306d15adc2f50c48064054"></a><!-- doxytag: member="geompy::MeasuOp" ref="eb30abfc8b306d15adc2f50c48064054" args="" --><p>
-<table 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="namespacegeompy.html#eb30abfc8b306d15adc2f50c48064054">geompy.MeasuOp</a> = None<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="4e06888ee75ecc7a54f0c8bad501a0c2"></a><!-- doxytag: member="geompy::BlocksOp" ref="4e06888ee75ecc7a54f0c8bad501a0c2" args="" --><p>
-<table 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="namespacegeompy.html#4e06888ee75ecc7a54f0c8bad501a0c2">geompy.BlocksOp</a> = None<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="c809d5d73246f177ee010c4fe497d342"></a><!-- doxytag: member="geompy::GroupOp" ref="c809d5d73246f177ee010c4fe497d342" args="" --><p>
-<table 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="namespacegeompy.html#c809d5d73246f177ee010c4fe497d342">geompy.GroupOp</a> = None<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="269cf26d7d10b8f6b4a20789ed8233a0"></a><!-- doxytag: member="geompy::ShapeType" ref="269cf26d7d10b8f6b4a20789ed8233a0" args="" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">dictionary <a class="el" href="namespacegeompy.html#269cf26d7d10b8f6b4a20789ed8233a0">geompy.ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}<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 12:28:15 2007 for SALOME - GEOM - 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 geompyDC</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="classgeompyDC_1_1info.html">info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeompyDC_1_1geompyDC.html">geompyDC</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompyDC.html#d85aa7c933dca679752d28c67018a43c">ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeompyDC.html#55ea9fd7f9b97796036ae6996f4c0a83">kind</a> = GEOM.GEOM_IKindOfShape</td></tr>
+
+</table>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="d85aa7c933dca679752d28c67018a43c"></a><!-- doxytag: member="geompyDC::ShapeType" ref="d85aa7c933dca679752d28c67018a43c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dictionary <a class="el" href="namespacegeompyDC.html#d85aa7c933dca679752d28c67018a43c">geompyDC.ShapeType</a> = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="55ea9fd7f9b97796036ae6996f4c0a83"></a><!-- doxytag: member="geompyDC::kind" ref="55ea9fd7f9b97796036ae6996f4c0a83" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacegeompyDC.html#55ea9fd7f9b97796036ae6996f4c0a83">geompyDC.kind</a> = GEOM.GEOM_IKindOfShape<code> [static]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+</DIV>
+<DIV class="div-footer">
+Generated on Thu Jun 21 12:28:15 2007 for SALOME - GEOM - 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 Frameset//EN">
-
-<html>
-
-<head>
-<title>Glue Faces</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-size:12pt; }
-p.whs3 { font-size:12pt; text-indent:-68px; margin-left:72px; font-weight:normal; }
-p.whs4 { font-size:12pt; text-indent:-68px; margin-left:72px; }
-p.whs5 { font-size:12pt; text-indent:-68px; margin-left:112px; }
-img_whs6 { border:none; width:312px; height:315px; float:none; border-style:none; }
-p.whs7 { font-size:12pt; margin-left:112px; text-indent:-112px; }
-p.whs8 { font-size:12pt; text-indent:-112px; margin-left:152px; }
-img_whs9 { border:none; float:none; width:292px; height:239px; border-style:none; }
-img_whs10 { border:none; float:none; width:275px; height:239px; border-style:none; }
-p.whs11 { font-size:12pt; text-indent:-40px; margin-left:80px; }
-p.whs12 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs3 {text-indent:1pt; }";
- strNSS += "p.whs4 {text-indent:1pt; }";
- strNSS += "p.whs5 {text-indent:1pt; }";
- strNSS += "p.whs7 {text-indent:1pt; }";
- strNSS += "p.whs8 {text-indent:1pt; }";
- strNSS += "p.whs11 {text-indent: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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nGlue Faces");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image61.gif" width="25px" height="24px" border="0" class="img_whs1"> </font></span>Glue Faces</h1>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: normal;">T</b>o
- Glue Faces in the Main Menu select Repair - > Glue Faces.</font></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><b style="font-weight: normal;">This operation
- g</b>lues faces that are coincident with respect to the given tolerance
- value.</p>
-
-<p class="whs4"> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">T</span></b><b><span
- style="font-weight: normal;">he</span> Result <span style="font-weight: normal;">will
- be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object. </B></span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><b>TUI Command : </b><span style="font-style: italic;"><I>geompy.MakeGlueFaces(theShape,
- theTolerance)</I></span>, where theShape is a compound of shapes to be glued,
- theTolerance is a maximum distance between two faces, which can be considered
- as coincident.</p>
-
-<p class="whs4"><b style="font-weight: bold;">Arguments:
- <span style="font-weight: normal;">Name +</span> </b>1 <i><span style="font-style: normal;">Compound
- + Tolerance value</span></i></p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"><img src="pics/repair7.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs6"></p>
-
-<p class="whs7"> </p>
-
-<p class="whs7"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs7"> </p>
-
-<p class="whs8"><img src="pics/glue_faces1.png" x-maintain-ratio="TRUE" width="292px" height="239px" border="0" class="img_whs9"> <img src="pics/glue_faces2.png" x-maintain-ratio="TRUE" width="275px" height="239px" border="0" class="img_whs10"></p>
-
-<p class="whs11"> </p>
-
-<p class="whs11"> </p>
-
-<p class="whs12"><span style="font-weight: normal;">Our</span>
- TUI Scripts <span style="font-weight: normal;">provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark6">Repairing
- Operations</a>. </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>Groups</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nWorking with 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>Groups</h1>
-
-<h3>Creation of a group</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create two vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.
- , 0. ,
- 0. )</p>
-
-<p class="whs1">p200 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p> </p>
-
-<p># create a box from two points</p>
-
-<p class="whs1">Box = geompy.MakeBoxTwoPnt(p0,
- p200)</p>
-
-<p> </p>
-
-<p># create a group from the faces of the box</p>
-
-<p class="whs1">group = geompy.CreateGroup(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p> </p>
-
-<p># add objects to the group</p>
-
-<p class="whs1">SubFaceList = geompy.SubShapeAllSorted(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">for i in [0, 3, 5]
- :</p>
-
-<p class="whs1"> FaceID
- = geompy.GetSubShapeID(Box, SubFaceList[i])</p>
-
-<p class="whs1"> geompy.AddObject(group,
- FaceID)</p>
-
-<p> </p>
-
-<p># add all selected shapes from the list to the group </p>
-
-<p># (the program doesn't raise error, if some shapes are already included)</p>
-
-<p class="whs1">geompy.UnionList(group,
- [SubFaceList[0], SubFaceList[2], SubFaceList[5]])</p>
-
-<p> </p>
-
-<p># remove an object from the group</p>
-
-<p class="whs1">geompy.RemoveObject(group,
- FaceID)</p>
-
-<p> </p>
-
-<p># remove all selected shapes from the group </p>
-
-<p># (the program doesn't raise error, if some shapes are not included)</p>
-
-<p class="whs1">geompy.DifferenceList(group,
- [SubFaceList[2], SubFaceList[3], SubFaceList[4]])</p>
-
-<p class="whs1">id_group1 = geompy.addToStudy(group,
- "Group1")</p>
-
-<p> </p>
-
-<p># display the contents of the group</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_group1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<h3>Adding an object to the group.</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create two vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.
- , 0. ,
- 0. )</p>
-
-<p class="whs1">p200 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p> </p>
-
-<p># create a box from two points</p>
-
-<p class="whs1">Box = geompy.MakeBoxTwoPnt(p0,
- p200)</p>
-
-<p> </p>
-
-<p># create a group from the faces of the box</p>
-
-<p class="whs1">group = geompy.CreateGroup(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p> </p>
-
-<p># add objects to the group</p>
-
-<p class="whs1">SubFaceList = geompy.SubShapeAllSorted(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">for i in [0, 3, 5]
- :</p>
-
-<p class="whs1"> FaceID
- = geompy.GetSubShapeID(Box, SubFaceList[i])</p>
-
-<p class="whs1"> geompy.AddObject(group,
- FaceID)</p>
-
-<p class="whs1">id_group1 = geompy.addToStudy(group,
- "Group1")</p>
-
-<p> </p>
-
-<p># display the contents of the group</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_group1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<p> </p>
-
-<h3>Removing an object from the group</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create two vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(0.
- , 0. ,
- 0. )</p>
-
-<p class="whs1">p200 = geompy.MakeVertex(200.,
- 200., 200.)</p>
-
-<p> </p>
-
-<p># create a box from two points</p>
-
-<p class="whs1">Box = geompy.MakeBoxTwoPnt(p0,
- p200)</p>
-
-<p> </p>
-
-<p># create a group from the faces of the box</p>
-
-<p class="whs1">group = geompy.CreateGroup(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p> </p>
-
-<p># add objects to the group</p>
-
-<p class="whs1">SubFaceList = geompy.SubShapeAllSorted(Box,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">for i in [0, 3, 5]
- :</p>
-
-<p class="whs1"> FaceID
- = geompy.GetSubShapeID(Box, SubFaceList[i])</p>
-
-<p class="whs1"> geompy.AddObject(group,
- FaceID)</p>
-
-<p> </p>
-
-<p># add all selected shapes from the list to the group </p>
-
-<p># (the program doesn't raise errors, if some shapes are already included)</p>
-
-<p class="whs1">geompy.UnionList(group,
- [SubFaceList[0], SubFaceList[2], SubFaceList[5]])</p>
-
-<p> </p>
-
-<p># remove an object from the group</p>
-
-<p class="whs1">geompy.RemoveObject(group,
- FaceID)</p>
-
-<p class="whs1">id_group1 = geompy.addToStudy(group,
- "Group1")</p>
-
-<p> </p>
-
-<p># display the contents of the group</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_group1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<p> </p>
-
-<p> </p>
-
-<p> </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
-<html>
-<head>
-<title>Geometry 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>Geometry 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>Geometry 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 add_point_on_edge_operation_page Add Point on Edge
+
+\n To <b>Add Point on Edge</b> in the <b>Main Menu</b> select
+<b>Repair - > Add Point on Edge</b>.
+
+\n This operation splits an edge in two in accordance with the
+specified mode (by length or by parameter) and a value specifying the
+position of the point on edge (for example val =0.5; mode =
+Length). This operation is available in <b>OCC Viewer</b> only.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.DivideEdge(Shape, EdgeID, Value,
+IsByParameter), </em> where \em Shape is a shape which contains an edge to
+be divided, \em EdgeID is the ID of the edge to be divided, if it = -1,
+then Shape is an edge, \em Value is a paramter on the edge or a
+length. \em IsByParameter if it is True then Value is the edge parameter
+in the range [0:1] otherwise it is a part of the length of the edge in the range
+[0: full length of the edge]
+\n <b>Arguments:</b> Name + 1 Edge + 1 value setting the position of
+the point according to one of the selected modes.
+
+\image html repair8.png
+
+\n <b>Example:</b>
+
+\image html image167.jpg
+
+\image html image168.jpg
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_add_point_on_edge "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page archimede_page Archimede
+
+\n To produce an \b Archimede operation in the <b>Main Menu</b> select
+<b>Operations - > Archimede</b>
+
+\n This operation creates a plane corresponding to the modeled
+water-line of the object plunged into the water (in Z direction).
+
+\n The \b Result will be any \b GEOM_Object.
+
+\n <b>TUI Command:</b>
+<em>geompy.Archimede(Shape,Weight,WaterDensity,MeshingDeflection),</em>
+ where \em Shape is a shape to put into the water, \em Weight is a weight of
+the shape, \em WaterDensity is density of water, \em MeshingDeflection is a
+deflection of the mesh, using to compute the section.
+\n <b>Arguments:</b> Name + 1 shape + 3 values (Weight, Water Density
+& Meshing Deflection).
+
+\image html archimede.png
+
+\n <b>Example:</b>
+
+\image html archimedesn1.png
+
+\image html archimedesn2.png
+
+\image html archimedesn3.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_archimede "Basic Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page basic_operations_page Basic Operations
+
+<ul>
+<li>\subpage partition_page</li>
+<li>\subpage archimede_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page blocks_operations_page Blocks Operations
+
+<ul>
+<li>\subpage multi_transformation_operation_page</li>
+<li>\subpage explode_on_blocks_operation_page</li>
+<li>\subpage propagate_operation_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page boolean_operations_page Boolean Operations
+
+<ul>
+<li>\subpage using_boolean_operations_page</li>
+<li>\subpage fuse_operation_page</li>
+<li>\subpage common_operation_page</li>
+<li>\subpage cut_operation_page</li>
+<li>\subpage section_opeartion_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page build_by_blocks_page Building by blocks
+
+<h2>Introduction</h2>
+
+Below are some general notions about blocks:
+
+A block is a an elementary geometric solid that has specific
+geometric constraints oriented for meshing. In the hexahedral case,
+blocks have 6 faces and each face has 4 edges.
+
+Tetrahedral Block - is a block with constraints for tetrahedral
+meshing.
+
+Hexahedral Block - is a block with constraints for hexahedral meshing.
+
+Block Compound - is a compound composed of blocks only.
+
+These functionalities are available from the main menu via <em>New
+Entity / Blocks</em>.
+
+<ul>
+<li>\ref quad_face_anchor "Quadrangle face"</li>
+<li>\ref hexa_solid_anchor "Hexahedral solid"</li>
+</ul>
+
+<br>
+\anchor quad_face_anchor
+<h2>Quadrangle face</h2>
+
+\n <b>Description:</b> Builds a face using the below mentioned
+arguments. This operation allows to build a face bypassing the
+intermediate stage of building edges and wires (in the case of
+building by 4 points) or wires (in the case of building by 4 or 2
+edges).
+
+\n The \b Result of the operation will be a \b GEOM_Object (face).
+
+\n <b>TUI Command:</b>
+<ul>
+<li><em>geompy.MakeQuad4Vertices(V1, V2, V3, V4),</em> where V1, V2,
+V3, V4 are four vertices from which a face is constructed. Edges are
+created automatically.</li>
+<li><em>geompy.MakeQuad2Edges(E1, E2),</em> where E1, E2 are edges from
+which the face is constructed, two other edges are created
+automatically.</li>
+<li><em>geompy.MakeQuad(E1, E2, E3, E4),</em> where E1, E2, E3, E4 are
+four edges from which the face is constructed.</li>
+</ul>
+
+<b>Arguments:</b>
+<ul>
+<li>Name + 4 Points, or</li>
+<li>Name + 2 Edges, or</li>
+<li>Name + 4 Edges.</li>
+</ul>
+
+\n <b>Dialog Box:</b>
+
+\image html block1.png
+
+\image html block2.png
+
+\image html block3.png
+
+\n <b>Example:</b>
+\image html image185.jpg
+
+
+<br><br>
+\anchor hexa_solid_anchor
+<h2>Hexahedral solid</h2>
+
+\n <b>Description:</b> Builds a hexahedral solid. either of the below
+mentioned arguments. This operation allows to build a solid bypassing
+the intermediate stage of building a shell and 4 faces (in the case of
+building by 2 faces) or just a shell (in the case of building by 6
+faces).
+
+\n The \b Result of the operation will be a \b GEOM_Object (solid).
+
+\n <b>TUI Command:</b>
+<ul>
+<li><em>geompy.MakeHexa2Faces(F1, F2),</em> where F1 and F2 are faces
+from which the hexahedron is constructed, other four faces are created
+automatically.</li>
+<li><em>geompy.MakeHexa(F1, F2, F3, F4, F5, F6),</em> where F1 — F6 are six faces from which the hexahedron is constructed.</li>
+</ul>
+
+\n <b>Arguments:</b>
+<ul>
+<li>Name + 2 Faces, or</li>
+<li>Name + 6 Faces.</li>
+</ul>
+
+\n <b>Dialog Box:</b>
+
+\image html block4.png
+
+
+
+\image html block5.png
+
+\n <b>Example:</b>
+
+\image html image180.jpg
+<center>Hexahedral Solid built on the base of six Faces</center>
+
+\image html image181.jpg
+<center>Hexahedral Solid built on the base of two Faces</center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of
+\ref tui_building_by_blocks_page "Building by Blocks".
+
+*/
--- /dev/null
+/*!
+
+\page chamfer_operation_page Chamfer
+
+\n To produce a \b Chamfer in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Chamfer</b>
+
+\n This operation allows you to make chamfer of the edges of a Shape.
+\n The \b Result will be a \b GEOM_Object.
+
+\n To create chamfer on all edges of the given shape, you need to
+define the <b>Main Object</b> to create a chamfer on and the \b
+Dimension (radius) of the chamfer.
+\n <b>TUI Command:</b> <em>geompy.MakeChamferAll(Shape, D)</em>
+\n <b>Arguments:</b> Name + 1 SHAPE + 1 value (Chamfer dimension).
+
+\image html chamfer1.png
+
+\image html chamfer_all.png
+
+\n In the algorithms below there exist two ways to define the \b
+Dimension of the Chamfer
+\n Firstly the \b Dimension can be defined via \b D1 and \D2, which
+represent the offset on the first and the second face forming the
+edge.
+\n Secondly the \b Dimension can be defined via \b D, which represents
+the offset on the first face, and the \b Angle, which is the angle
+between the first face and the chamfer plane.
+
+
+\n To create chamfer on the specified edges of the given shape, you
+need to define the <b>Main Object</b> to create a fillet on, select
+the two faces to which belongs the necessary common edge in the viewer
+and define the \b Dimension of the Chamfer.
+\n <b>TUI Command:</b> <em>geompy.MakeChamferEdge(Shape, D1, D2,
+Face1, Face2),</em> where \em Shape is a shape to create a chamfer on,
+\em D1 is a chamfer size along \em Face1, \em D2 is a chamfer size
+along \em Face2, \em Face1 and \em Face2 are indices of faces in
+Shape.
+
+\n <b>Alternative TUI Command:</b> <em>geompy.MakeChamferEdge(Shape, D, Angle,
+Face1, Face2),</em> where \em D1 is a chamfer size along \em Face1 and
+\em Angle is the angle between Face1 and the chamfer plane.
+
+\image html chamfer2.png
+
+\image html chamfer_edge.png
+
+\n To create chamfer on the specified faces of the given shape, you need
+to define the <b>Main Object</b> to create a fillet on, select the
+necessary faces the OCC Viewer and define the \b Dimension of the
+Chamfer.
+\n <b>TUI Command:</b> <em>geompy.MakeChamferFaces(Shape, D1, D2,
+ListOfFaceID),</em> where \em Shape is a shape to create chamfer on,
+\em D1 and D2 are chamfer sizes along faces from \em
+ListOfFaceID. For each Edge Face1 and Face2 are defined basing
+on their indices.
+
+\n <b>Alternative TUI Command:</b> <em>geompy.MakeChamferFaces(Shape, D, Angle,
+ListOfFaceID),</em> where \em D1 is a chamfer size along \em Face1 and
+\em Angle is the angle between Face1 and the chamfer plane.
+
+\image html chamfer3.png
+
+\image html chamfer_faces.png
+
+\n To create chamfer on an arbitrary set of edges of the given shape
+to define the <b>Main Object</b> to create a fillet on, select the
+necessary edges the OCC Viewer and define the \b Dimension of the
+Chamfer.
+\n <b>TUI Command:</b> <em>geompy.MakeChamferEdges(Shape, D1, D2,
+ListOfEdgeID),</em> where \em Shape is a shape to create chamfer on,
+\em D1 and D2 are chamfer sizes along faces defined by the algorithm
+basing on \em ListOfEdgeID, which is a list of indices of edges in
+\em Shape. For each Edge the algorithm selects Face1 and Face2 basing
+on their indices.
+
+\n <b>Alternative TUI Command:</b> <em>geompy.MakeChamferEdges(Shape, D, Angle,
+ListOfEdgeID),</em> where \em D1 is a chamfer size along \em Face1 and
+\em Angle is the angle between Face1 and the chamfer plane.
+
+\image html chamfer4.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_chamfer "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page change_orientation_operation_page Change Orientation
+
+\n To <b>Change Orientation</b> in the <b>Main Menu</b> select <b>Repair - > Change Orientation</b>.
+\n This operation reverses the normals of selected faces or the normal
+of faces composing composing the selected opened shell.
+
+\n <b>TUI Command:</b> <em>geompy.ChangeOrientation(shape)</em>
+\n <b>Arguments:</b> Name + one or several objects (face(s)), opened shell(s).
+\n Uncheck <b>Create a copy</b> checkbox if you don't wish to leave
+the initial object in the project (<b>Result name</b> field will be
+locked).
+
+\image html changeorientation.png
+
+\n <b>Example:</b>
+
+\image html image38.gif
+<center><em>Inward orientation</em></center>
+
+\image html image40.gif
+<center><em>Outward orientation</em></center>
+
+*/
--- /dev/null
+/*!
+
+\page check_free_boundaries_operation_page Check Free Boundaries
+
+\n To <b>Check Free Boundaries</b> in the <b>Main Menu</b> select <b>Repair - > Check Free Boundaries</b>.
+
+\n This operation detects wires and edges that are not shared between
+two faces and are considered a shape's boundary. This control highlights them.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>(NoError, ClosedWires, OpenWires) =
+geompy.GetFreeBoundary(Shape),</em> where \em Shape is a shape to be
+checked, \em NoError is false if an error occurred while checking free
+boundaries, \em ClosedWires is a list of closed free boundary wires,
+\em OpenWires is a list of open free boundary wires.
+
+\image html repair9.png
+
+\n <b>Example:</b>
+
+\image html free_boudaries1.png
+
+\image html free_boudaries2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_check_free_boundaries "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page check_free_faces_operation_page Check Free Faces
+
+\n To <b>Check Free Faces</b> in the <b>Main Menu</b> select <b>Repair - > Check Free Faces</b>.
+\n This operation highlights all free faces from a given shape. A free
+face is a face which is not shared between two objects of the shape.
+
+\n \b NOTE: This functionality works only in VTK viewer.
+
+\n The \b Result will be a \b GEOM_Object (a list of IDs of all free
+faces, containing in the shape).
+\n <b>TUI Command:</b> <em>GetFreeFacesIDs(Shape),</em> where \em Shape is
+a shape to be checked.
+
+\image html repair10.png
+
+\n <b>Example:</b>
+
+\image html free_faces1.png
+
+\image html free_faces2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_check_free_faces "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page close_contour_operation_page Close Contour
+
+\n To produce a <b>Close Contour</b> operation in the <b>Main Menu</b>
+select <b>Repair - > Close Contour</b>.
+
+\n This operation closes an open contour and modifies the underlying
+face (if needed) in accordance with user specified mode:
+<ul>
+<li>By common vertex – a vertex is created between the end points
+of the contour and its tolerance is increased to a value of the gap
+between the ends of the contour;</li>
+<li>By new edge – a new edge is inserted between the end points of the contour.</li>
+</ul>
+This operation is available in <b>OCC Viewer</b> only.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.CloseContour(Shape, Wires,
+IsCommonVertex),</em> where \em Shape is a shape to be processed, \em Wires is
+a list of edges or wires ID's which has to be closed within the
+shape (if the list contains only one element = -1, the shape itself is
+considered as a wire), \em IsCommonVertex if this parameter is True a
+closure has to be done by creation of a common vertex, otherwise an
+edge is added between the end vertices.
+\n <b>Arguments:</b> Name + 1 shape + contour (Wire, or a set of
+Edges) + mode of closure (by vertex or by edge)
+
+\image html repair3.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_close_contour "Repairing Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page color_page Color
+
+\n You can change the filling color of your object in the standard
+<b>Select Color</b> menu accessible by right-clicking on an object and
+selecting \b Color in the pop-up menu box.
+
+\n <b>TUI Command:</b> <em>gg.setColor(ID, Short, Short, Short)</em>
+
+\image html selectcolor.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of
+\ref tui_change_color "Changing Display Parameters".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page common_operation_page Common
+
+\n To produce a \b Common operation in the <b>Main Menu</b> select <b>Operations - > Boolean - > Common</b>
+
+\n This operation cuts the common part of two shapes and transforms it into an independent geometrical object.
+
+\n The \b Result will be any \b GEOM_Object.
+\n <b>TUI Command:</b> <em>geompy.MakeCommon(s1, s2)</em>
+\n <b>Arguments:</b> Name + 2 shapes.
+
+\image html bool2.png
+
+\n <b>Example:</b>
+
+\image html fusesn1.png
+
+\image html commonsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_common "Boolean Operations".
+
+*/
--- /dev/null
+/*!
+
+\page create_adv_obj_page Creating Advanced Geometrical Objects
+
+<ul>
+<li>\subpage create_explode_page</li>
+<li>\subpage create_edge_page</li>
+<li>\subpage create_wire_page</li>
+<li>\subpage create_face_page</li>
+<li>\subpage create_shell_page</li>
+<li>\subpage create_solid_page</li>
+<li>\subpage create_compound_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_arc_page Arc
+
+To create an \b Arc in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Arc</b>
+
+\n There are 2 algorithms to create an \b Arc in the 3D space.
+\n The \b Result of each operation will be a GEOM_Object (edge).
+
+\n Firstly, you can define an \b Arc by three \b Points that lie on it,
+where Point1 is the starting point, Point2 is a middle point of the
+arc and Point3 is the ending point of the arc.
+\n <b>TUI Command:</b> <em>geompy.MakeArc(Point1, Point2, Point3)</em>
+\n <b>Arguments:</b> Name + 3 vertices.
+
+\image html arc.png
+
+\n Secondly, you can define an \b Arc by \b Center, \b Start and \b End
+points. The arc is built from the \b Start point to the \b End point. The
+radius of the arc is defined by the distance between the \b Center point
+and the \b Start point. The \b End point defines the angle of the arc. If
+the distance between the \b Center point and the \b End point is not equal
+to the radius, the arc will be built anyway.
+\n \b Reverse radio button allows to change the direction of the arc.
+\n <b>TUI Command:</b> <em>geompy.MakeArcCenter(Center Point, Start
+Point, End Point, boolean Sense)</em>
+\n <b>Arguments:</b> Name + 3 vertices + Boolean.
+
+\image html arc2.png
+
+\n <b>Examples:</b>
+
+\image html arcsn.png
+<center>Arc by three points lying on it.</center>
+
+\image html arcsn1.png
+<center>Arc by Start, End and Center.</center>
+
+\image html arcsn2.png
+<center>Reversed arc.</center>
+
+*/
--- /dev/null
+/*!
+
+\page create_basic_geom_obj_page Creating Basic Geometric Objects
+
+<ul>
+<li>\subpage create_point_page</li>
+<li>\subpage create_line_page</li>
+<li>\subpage create_circle_page</li>
+<li>\subpage create_ellipse_page</li>
+<li>\subpage create_arc_page</li>
+<li>\subpage create_curve_page</li>
+<li>\subpage create_vector_page</li>
+<li>\subpage create_plane_page</li>
+<li>\subpage create_wplane_page</li>
+<li>\subpage create_lcs_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_box_page Box
+
+To create a \b Box in the <b>Main Menu</b> select <b>New Entity - >
+Primitives - > Box</b>
+
+\n There are 2 algorithms for creation of a \b Box.
+\n The \b Result of each operation will be a GEOM_Object (SOLID).
+
+\n Firstly, you can define a \b Box by two specified \b Vertices (its
+opposite corners). The edges of the box will be parallel to the
+coordinate axes.
+\n <b>TUI Command:</b> <em>geompy.MakeBoxTwoPnt(Point1, Point2)</em>
+\n <b>Arguments:</b> Name + 2 vertices (opposite corners of the box).
+
+\image html box1.png
+
+\n Secondly, you can define a \b Box by specified dimensions along the
+coordinate axes and with edges, parallel to them. The center of the
+box will be at point (DX/2, DY/2, DZ/2).
+\n <b>TUI Command:</b> <em>geompy.MakeBoxDXDYDZ(DX, DY, DZ)</em>
+\n <b>Arguments:</b> Name + 3 values (dimensions at origin).
+
+\image html box2.png
+
+\b NB! There is a third way to create a \b Box, which is currently
+accessible only via \b TUI commands.
+\n You can define a \b Box by the coordinates of two \b Vertices (in
+this way you don't need to create them in advance).
+\n <b>TUI Command:</b> <em>geompy.MakeBox(x1,y1,z1,x2,y2,z2)</em>
+\n <b>Arguments:</b> Name + X, Y and Z coordinates of both points.
+
+<b>Example:</b>
+
+\image html boxes.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_box "Primitives".
+
+*/
--- /dev/null
+/*!
+
+\page create_circle_page Circle
+
+To create a \b Circle in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Circle</b>
+
+\n There are 3 algorithms to create a \b Circle in the 3D space.
+\n The \b Result of each operation will be a GEOM_Object (edge).
+
+\n Firstly, you can define a \b Circle by a <b>Center Point</b>, a \b
+Vector giving the circle's normal and a \b Radius.
+\n <b>TUI Command:</b> <em>geompy.MakeCircle(Point, Vector,
+Radius)</em>
+\n <b>Arguments:</b> Name + 1 vertex (for the center) + 1 edge (for
+the direction) + Radius.
+
+\image html circle1.png
+
+\n Secondly, you can define a \b Circle by three \b Points that lie on it.
+\n <b>TUI Command:</b> <em>geompy.MakeCircleThreePnt(Point1, Point2, Point3)</em>
+\n <b>Arguments:</b> Name + 3 points which will form the circle.
+
+\image html circle2.png
+
+<b>Example:</b>
+\image html circles.png
+
+\n Finally, you can define a circle by a <b>Center Point</b> and two
+\b Points.
+\n <b>TUI Command:</b> <em>geompy.MakeCircleCenter2Pnt(Point1, Point2,
+Point3)</em>, where Point1 is the center of the circle, the distance
+between point1 and Point2 is the radius of the circle and Point3 helps
+to define the plane where the circle lies.
+\n <b>Arguments:</b> Name + 3 points.
+
+\image html circle3.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_circle "Basic Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_complex_obj_page Creating Complex Objects
+
+<ul>
+<li>\subpage create_extrusion_page</li>
+<li>\subpage create_revolution_page</li>
+<li>\subpage creaet_filling_page</li>
+<li>\subpage create_extrusion_alongpath_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_compound_page Compound
+
+\n To create a \b Compound in the <b>Main Menu</b> select <b>New
+Entity - > Build - > Compound</b>.
+
+\n You can create a compound from a list of shells.
+\n The \b Result will be a \b GEOM_Object (COMPOUND).
+
+\n <b>TUI Command:</b> <em>geompy.MakeCompound(ListOfShape)</em>
+\n <b>Arguments:</b> Name + List of shapes.
+
+\image html neo-obj7.png
+
+\n <b>Example:</b>
+
+\image html compoundsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_compound "Advanced Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_cone_page Cone
+
+\n To create a \b Cone in the <b>Main Menu</b> select <b>New Entity - > Primitives - > Cone</b>
+
+\n There are two algorithms for creation of a \b Cone.
+\n The \b Result of each operation will be a GEOM_Object (SOLID).
+
+
+
+\n Firstly, you can define a \b Cone by the <b>Base Point</b> (the
+central point of the cone base), the \b Axis, the \b Height and the
+first and the second \b Radiuses.
+\n <b>TUI Command:</b> <em>geompy.MakeCone(Point, Axis, Radius1,
+Radius2, height)</em>
+\n <b>Arguments:</b> Name + 1 vertex + 1 vector (for direction) + 3
+values (Radius of the base part, radius of the upper part, height).
+
+\image html cone1.png
+
+\n Secondly, you can define a \b Cone with the center at the origin of
+coordinates by its \b Height and \b Radiuses. The \b Axis of the \b
+Cone will be collinear to the OZ axis of the coordinate system.
+\n <b>TUI Command:</b> <em>geompy.MakeConeR1R2H(Radius1, Radius2, Height)</em>
+\n <b>Arguments:</b> Name + 3 values (Radius of the base part, radius
+of the upper part, height).
+
+\image html cone2.png
+
+\note If both radiuses are non-zero, the \b Cone will be truncated. If
+the radiuses are equal, a \b Cylinder will be created instead.
+
+<b>Example:</b>
+
+\image html cones.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_cone "Primitives".
+
+*/
--- /dev/null
+/*!
+
+\page create_curve_page Curve
+
+To create a \b Curve in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Curve</b>
+
+\n There are three algorithms to create a \b Curve in the 3D space. Each
+time you define it by a list of \b Points through which the curve
+passes. The three <b>Curve Construction</b> menu choices correspond to three
+possible types of curves: Polyline, Besier or B-spline (Interpolated).
+\n The \b Result of each operation will be a GEOM_Object (edge).
+
+\n <b>TUI Commands:</b>
+<ul>
+<li><em>geompy.MakePolyline(ListOfShapes)</em></li>
+<li><em>geompy.MakeBezier(ListOfShapes)</em></li>
+<li><em>geompy.MakeInterpol(ListOfShapes)</em></li>
+</ul>
+ListOfShape is a list of points through which the curve passes.
+
+<b>Arguments:</b> Name + at least 2 points which will serve as nodes
+on the curve.
+
+\image html curve.png
+
+<b>Examples:</b>
+
+\image html polyline.png
+<center>Polyline</center>
+
+\image html bezier.png
+<center>Bezier</center>
+
+\image html interpol.png
+<center>B-Spline</center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_curve "Basic Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_cylinder_page Cylinder
+
+\n To create a \b Cylinder in the <b>Main Menu</b> select <b>New
+Entity - > Primitives - > Cylinder</b>
+
+\n There are 2 algorithms for creation of a \b Cylinder.
+\n The \b Result of each operation will be a GEOM_Object (SOLID).
+
+\n Firstly, you can define a \b Cylinder by the <b>Base Point</b> (the central
+point of the cylinder base), the \b Vector (the axis of the cylinder),
+and its dimensions: the Radius and the Height.
+\n <b>TUI Command:</b> <em>geompy.MakeCylinder(Point, Axis, Radius, Height)</em>
+\n <b>Arguments:</b> Name + 1 vertex + 1 vector + 2 values
+(Dimensions: radius and height).
+
+\image html cylinder1.png
+
+\n Secondly, you can define a \b Cylinder by the given radius and the
+height at the origin of coordinate system. The axis of the cylinder
+will be collinear to the OZ axis of the coordinate system.
+\n <b>TUI Command:</b> <em>geompy.MakeCylinderRH(Radius, Height)</em>
+\n <b>Arguments:</b> Name + 2 values (Dimensions at origin: radius and
+height).
+
+\image html cylinder2.png
+
+<b>Example:</b>
+
+\image html cylinders.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_cylinder "Primitives".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_edge_page Edge
+
+\n To create an \b Edge in the <b>Main Menu</b> select <b>New Entity- > Build - > Edge</b>
+
+\n You can create an \b Edge from two points (\b Point1 and \b Point2), being the first and the last vertices of the edge.
+
+The \b Result will be a \b GEOM_Object (EDGE).
+
+<b>TUI Command:</b> <em>geompy.MakeEdge(Vertex1, Vertex2),</em> where
+Vertex1 and Vertex2 are correspondingly the first and the last vertex
+of the edge.
+
+<b>Arguments:</b> Name + 2 vertices.
+
+\image html neo-obj2.png
+
+\n <b>Example:</b>
+
+\image html edgesn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_edge "Advanced Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_ellipse_page Ellipse
+
+To create an \b Ellipse in the <b>Main Menu</b> select <b>New Entity - > Basic - > Ellipse</b>
+
+\n You can define an \b Ellipse by its <b>Center Point</b>, a \b
+Vector giving its normal, and its <b>Major & Minor Radiuses</b>.
+\n The \b Result of the operation will be a GEOM_Object (edge).
+
+\n <b>TUI Command:</b> <em>geompy.MakeEllipse(Point, Vector, RadiusMajor, RadiusMinor)</em>
+\n <b>Arguments:</b> Name + 1 vertex (for the center) + 1 edge (for
+the direction) + 1 X Radius + 1 Y Radius.
+
+\image html ellipse.png
+
+<b>Example:</b>
+
+\image html ellipsesn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_ellipse "Basic Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_explode_page Explode
+
+\n To \b Explode an object into subshapes, in the <b>Main Menu</b>
+select <b>New Entity > Explode</b>.
+
+\n To create a list of subshapes (vertices, edges, wires etc.) of the
+given shape using the \b Explode operation, you need to define the <b>Main
+Object</b>, which will be exploded and the <b>Type of Subshapes</b> you wish to
+obtain from it.
+\n The \b Result of the operation will be a List of \b GEOM_Objects
+(vertexes, edges, wires, faces, shells or solids).
+
+\n Using <b>TUI Commands</b> you can perform this operation in a
+variety of ways:
+<ul>
+<li><em>geompy.SubShapeAll(Shape, Type)</em> explodes a Shape on
+subshapes of a given Type and returns a List of sub-shapes.</li>
+<li><em>geompy.SubShapeAllIDs(Shape, Type)</em> explodes a Shape on
+subshapes of a given Type and returns a List of IDs of
+sub-shapes.</li>
+<li><em>geompy.SubShapeAllSorted(Shape, Type)</em> xplodes a shape on
+subshapes of a given type and sorts them by coordinates of their
+gravity centers, returning a list of sub-shapes.</li>
+<li><em>geompy.SubShapeAllSortedIDs(Shape, Type)</em> explodes a shape
+on subshapes of a given type and sorts them by coordinates of their
+gravity centers, returning a List of IDs of sub-shapes.</li>
+<li><em>geompy.SubShape(Shape, Type, ListOfInd)</em> allows to obtain
+a compound of sub-shapes of the Shape, selected by they indices in a
+list of all sub-shapes of the given Type. Each index is in the range
+[1, Nb_Sub-Shapes_Of_Given_Type].</li>
+<li><em>geompy.SubShapeSorted(Shape, Type, ListOfInd)</em> allows to
+obtain a compound of sub-shapes of the Shape, selected by they indices
+in sorted list of all sub-shapes of the given Type. Each index is in
+the range [1, Nb_Sub-Shapes_Of_Given_Type]</li>
+</ul>
+
+\n <b>Arguments:</b>1 SHAPE + 1 type of SubShape.
+
+\image html neo-obj1.png
+
+*/
--- /dev/null
+/*!
+
+\page create_extrusion_page Extrusion
+
+\n To generate an \b Extrusion on an object in the <b>Main Menu</b>
+select <b>New Entity - > Generation - > Extrusion</b>
+
+\n There are 2 algorithms for creation of an \b Extrusion (Prism).
+\n The \b Result of the operation will be a GEOM_Object (edge, face, shell
+solid or compsolid).
+
+\n Firstly, you can define the <b>Base Shape</b> (a basis of the
+extrusion), the \b Vector (a direction of the extrusion) and the \b
+Height of extrusion.
+\b <b>TUI Command:</b> <em>geompy.MakePrismVecH(Base, Vector, Height)</em>
+\n <b>Arguments:</b> Name + 1 shape (vertex, edge, planar wire, face or
+shell) serving as base object + 1 vector (for direction of the
+extrusion) + 1 value (dimension).
+
+\image html extrusion1.png
+
+\n Secondly, you can define the \b Extrusion by the <b>Base Shape</b>
+and the \b Start and <b>End Point</b> of the \b Vector (in this way
+you don't need to create it in advance).
+\n <b>TUI Command:</b> <em>geompy.MakePrism(Base, Point1, Point2)</em>
+\n <b>Arguments:</b> Name + 1 shape (vertex, edge, planar wire, face or
+shell) serving as base object + 2 vertices.
+
+\image html extrusion2.png
+
+<b>Examples:</b>
+
+\image html prisms_basessn.png
+<center>Base Shape</center>
+
+\image html prismssn.png
+<center>Prisms</center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_prism "Complex Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_extrusion_alongpath_page Pipe Construction
+
+To generate a \b Pipe in the <b>Main Menu</b> select <b>New Entity - > Generation - > Extrusion along a path</b>
+
+\n To create an extruded \b Pipe shape, you need to define the <b>Base
+Object</b> (vertex, edge, planar wire, face or shell), which will be extruded
+and the <b>Path Object</b> (edge or wire) along which the <b>Base
+Object</b> will be extruded.
+\n The \b Result of the operation will be a GEOM_Object (edge, face, shell,
+solid or compsolid).
+
+\n <b>TUI Command:</b> <em>geompy.MakePipe(baseShape, pathShape)</em>
+\n <b>Arguments:</b> Name + 1 shape (vertex, edge, planar wire, face or
+shell) serving as base object + 1 shape (edge or wire) for
+definition of the path.
+
+\image html pipe.png
+
+<b>Example:</b>
+
+\image html pipe_wire_edgesn.png
+
+\image html pipesn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_pipe "Complex Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_face_page Face
+
+To create a \b Face in the <b>Main Menu</b> select <b>New Entity - >
+Build - > Face</b>
+
+\n To create a \b Face you need to select input shape(s). The list of
+input shapes can include shapes of any type; if the shapes are nor
+wires or edges, the algorithm extracts all edges from
+the input shapes and works on the obtaineed edges.
+\n The edges and wires do not necessarily have to be closed, the
+algorithm automatically builds a wire of maximum length from all
+given edges and wires. If it founds multiple closed wires, it can
+build a face with holes or some separate faces, depending on the
+placement of the wires. If some resulting wires remain open, they will
+be added in the resulting compound "as is".
+\n Check <b>Try to create a planar face</b> to create a planar
+face or nothing if it is impossible.
+\n The \b Result will be a \b GEOM_Object (FACE).
+
+\n <b>TUI Command:</b> <em>geompy.MakeFaceWires([list of Shapes], isPlanarWanted)</em>
+\n <b>Arguments:</b> Name + 1 wire.
+
+\image html neo-obj4.png
+
+\n <b>Example:</b>
+
+\image html facesn1.png
+
+\image html facesn2.png
+
+\image html facesn3.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_face "Advanced Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page creaet_filling_page Filling Surface with Edges
+
+To generate a \b Filling in the <b>Main Menu</b> select <b>New Entity - > Generation - > Filling</b>
+
+\n To create a curving face using several edges you need to define the
+<b>Edges Compound</b>, \b Minimum and <b>Maximum Degree</b>, \b
+Tolerance for \b 2D and for \b 3D and the <b>Number of Iterations</b>.
+\n The \b Result of the operation will be a GEOM_Object (face).
+
+\n <b>TUI Command:</b> <em>geompy.MakeFilling(Edges, MinDegree, MaxDegree, Tol2D, Tol3D, NbIter)</em>
+\n <b>Arguments:</b> Name + 1 List of edges + 5 Parameters
+(Min. degree, Max. degree, Number of iterations, 2D tolerance, 3D
+tolerance, Number of iterations).
+
+\image html filling.png
+
+<b>Example:</b>
+
+\image html filling_compoundsn.png
+
+\image html fillingsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_filling "Complex Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_geom_obj_page Creating geometrical objects
+
+<ul>
+<li>\subpage create_basic_geom_obj_page</li>
+<ul>
+<li>\ref create_point_page</li>
+<li>\ref create_line_page</li>
+<li>\ref create_circle_page</li>
+<li>\ref create_ellipse_page</li>
+<li>\ref create_arc_page</li>
+<li>\ref create_curve_page</li>
+<li>\ref create_vector_page</li>
+<li>\ref create_plane_page</li>
+<li>\ref create_wplane_page</li>
+<li>\ref create_lcs_page</li>
+</ul>
+<li>\subpage create_primitives_page</li>
+<ul>
+<li>\ref create_box_page</li>
+<li>\ref create_cylinder_page</li>
+<li>\ref create_sphere_page</li>
+<li>\ref create_torus_page </li>
+<li>\ref create_cone_page </li>
+</ul>
+<li>\subpage create_complex_obj_page</li>
+<ul>
+<li>\ref create_extrusion_page</li>
+<li>\ref create_revolution_page</li>
+<li>\ref creaet_filling_page</li>
+<li>\ref create_extrusion_alongpath_page</li>
+</ul>
+<li>\subpage work_with_groups_page</li>
+<li>\subpage build_by_blocks_page</li>
+<li>\subpage create_sketcher_page</li>
+<li>\subpage create_adv_obj_page</li>
+<ul>
+<li>\ref create_explode_page</li>
+<li>\ref create_edge_page</li>
+<li>\ref create_wire_page</li>
+<li>\ref create_face_page</li>
+<li>\ref create_shell_page</li>
+<li>\ref create_solid_page</li>
+<li>\ref create_compound_page</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_lcs_page Local Coordinate System
+
+To create a <b>Local Coordinate System</b> in the <b>Main Menu</b> select <b>New Entity - > Basic - > Local Coordinate System</b>
+\n There are three algorithms to choose from.
+
+\n Firstly, you can define the values of X, Y, and Z coordinates of origin and the directions of X and Y axes directly in the menu.
+\n <b>TUI command:</b> <em>geompy.MakeMarker(OX, OY, OZ, XDX, XDY, XDZ,
+YDX, YDY, YDZ)</em>, where OX, OY, OZ are coordinates of the origin of
+LCS, XDX, XDY, XDZ is a vector of OX direction of the LCS and YDX,
+YDY, YDZ is a a vector of OY direction of the LCS.
+\n <b>Arguments:</b> Name + Coordinates of origin, X axis direction, Y axis direction.
+
+\image html neo-localcs1.png
+
+\n Secondly, you can simply select any object in the object browser or
+3D viewer, in this case the coordinates of origin and axes direction
+of the LCS are calculated automatically basing on the selected object.
+\n <b>Arguments:</b> Name + reference object.
+
+\image html neo-localcs2.png
+
+\n The last algorithm of LCS construction allows to define the
+coordinates of origin by a point and axes directions by a line or a
+vector.
+\n <b>Arguments:</b> Name + 1 point of origin + X axis direction, Y
+axis direction.
+
+\image html neo-localcs3.png
+
+Press «OK» or «Apply» button to create an LCS at the location with the
+specified coordinates. The new object is shown in the Object Browser
+and in 3D viewer.
+
+<b>Example:</b>
+
+\image html image145.jpg
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_line_page Line
+
+To create a \b Line in the <b>Main Menu</b> select <b>New Entity - >Basic - > Line</b>
+
+\n To create a \b Line you should define \b Point1 and \b Point2,
+which are the points through which the \b Line passes.
+\n The \b Result of the operation will be a GEOM_Object (edge).
+
+\n <b>TUI Command:</b> <em>geompy.MakeLineTwoPnt(Point1, Point2)</em>
+\n <b>Arguments:</b> Name + 2 vertices.
+
+\image html line.png
+
+<b>Example:</b>
+
+\image html lines.png
+
+\b NB! There is another way to create a line, which is currently
+accessible only via \b TUI commands.
+
+You can define a line passing through the given \b Point and parallel
+to the given \b Vector.
+\n <b>TUI Command:</b> <em>geompy.MakeLine(Point, Vector)</em>
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_line "Basic Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_plane_page Plane
+
+To create a \b Plane in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Plane</b>
+
+\n There are three algorithms to create a plane in the 3D space.
+\n The \b Result of each operation will be a GEOM_Object (face).
+
+\n Firstly, you can define a \b Plane by a \b Point through which the
+plane passes, a \b Vector giving a normal of the plane and a <b>Size
+of the Plane</b> (size of a side of quadrangle face, representing the
+plane).
+\n <b>TUI Command:</b> <em>geompy.MakePlane(Point, Vector, TrimSize)</em>
+\n <b>Arguments:</b> Name + 1 vertex + 1 vector + 1 value (to define
+the size of the plane).
+
+\image html plane1.png
+
+\n Secondly, you can define a \b Plane by three \b Points through
+which the plane passes and a <b>Size of the Plane</b>.
+\n <b>TUI Command:</b> <em>geompy.MakePlaneThreePnt(Point1, Point2, Point3, TrimSize)</em>
+\n <b>Arguments:</b> Name + 3 vertices + 1 value (to define the size
+of the plane).
+
+\image html plane2.png
+
+\n Finally, you can define a \b Plane by another \b Plane or <b>Local
+Coordinate System</b> and a <b>Size of the Plane</b>.
+\n <b>TUI Command:</b> <em>geompy.MakePlaneFace(Face, TrimSize)</em>
+\n <b>Arguments:</b> Name + 1 face + 1 value (to define the size of
+the plane).
+
+\image html plane3.png
+
+<b>Examples:</b>
+
+\image html planes1.png
+<center>Planes created on the basis of the Global Coordinate System</center>
+
+\image html plane_on_face.png
+<center>A Plane created on a Face of another Shape</center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_plane "Basic Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_point_page Point
+
+To create a \b Point in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Point</b>
+
+\n There are three algorithms to create a \b Point in the 3D space.
+\n Each time the \b Result of the operation will be a GEOM_Object
+(vertex).
+
+\n Firstly, we can define a point by setting its X, Y and Z \b Coordinates.
+\n <b>TUI Command:</b> <em>geompy.MakeVertex(X, Y, Z)</em>
+\n \b Arguments: Name (Vertex_n by default) + X, Y and Z coordinates of
+the point.
+
+\image html point1.png
+
+\n Secondly, we can define a point by a \b Reference to another point
+and the shift of the coordinates of the new point regarding the
+coordinates of the old one.
+\n <b>TUI Command:</b> <em>geompy.MakeVertexWithRef(Reference, X,Y,Z).</em>
+\n <b>Arguments:</b> Name + 1 reference point + 3 coordinates defining
+the position of this point regarding the reference one.
+
+\image html neo-point2.png
+
+\n Finally, we can define a point by an \b Edge and a \b Parameter
+indicating its position on the Edge, ranging from 0.0 to 1.0. For example, 0.5 means that the
+point is located in the middle of the edge.
+\n <b>TUI Command:</b> <em>geompy.MakeVertexOnCurve(Edge,Parameter).</em>
+\n <b>Arguments:</b> Name + 1 edge + 1 Parameter defining the
+position of the point on the given edge.
+
+\image html point3.png
+
+<b>Example:</b>
+
+\image html points.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_point "Basic Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_primitives_page Creating Primitives
+
+<ul>
+<li>\subpage create_box_page</li>
+<li>\subpage create_cylinder_page</li>
+<li>\subpage create_sphere_page</li>
+<li>\subpage create_torus_page</li>
+<li>\subpage create_cone_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_revolution_page Revolution
+
+To create an extruded shape by \b Revolution in the <b>Main Menu</b>
+select <b>New Entity - > Generation - > Revolution</b>
+
+\n To create an extruded shape by \b Revolution you need to define the
+source \b Object to rotate, the \b Axis of revolution and the \b Angle by which
+the \b Shape has to be rotated around the \b Axis (in degrees).
+\n The \b Result of the operation will be a GEOM_Object (edge, face, shell,
+solid or compsolid).
+
+\n <b>TUI Command:</b> <em>geompy.MakeRevolution(Shape, Axis, Angle).</em>
+\n <b>Arguments:</b> Name + 1 shape (vertex, edge, planar wire, face or shell) serving as base object + 1 vector (for direction) + 1 value (angle).
+
+\image html revolution.png
+
+<b>Example:</b>
+
+\image html revolutionsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_revolution "Complex Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_shell_page Shell
+
+To create a \b Shell in the <b>Main Menu</b> select <b>New Entity - >
+Build - > Shell</b>
+
+\n You can create a \b Shell from a list of faces and (or) shells.
+\n The \b Result will be a \b GEOM_Object (shell).
+
+\n <b>TUI Command:</b> <em>geompy.MakeShell(ListOfShape)</em>
+\n <b>Arguments:</b> Name + List of faces having connected edges.
+
+\image html neo-obj5.png
+
+\n <b>Example:</b>
+
+\image html shellsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_shell "Advanced Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_sketcher_page Sketcher
+
+Sketcher allows to create curves of 2 types: line segment and arc.
+By default the start point of the curve is located at the point of
+origin of the reference coordinate system and the curve lies in the
+plane XOY. The end of the curve is defined by
+means of "destination", which can be a destination point (for segment
+only) or destination direction coupled with length of a segment or
+angle and radius of an arc.
+
+\n Sketcher is able to create planar curves only. Therefore, it is
+necessary to select a working plane before starting a sketch (by
+default, XOY plane is used). Sketcher creates curves lying in the
+current working plane (New Entity -> Basic -> Working Plane).
+
+\n This functionality is available from the main menu via <em>New
+Entity / Sketch</em>.
+
+\n The Result of the operation will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.MakeSketcher(Command, WorkingPlane)</em>
+\n This algorithm creates a sketcher (wire or face), following the
+textual description, passed through the Command argument. The edges of
+the resulting wire or face will be arcs of circles and/or linear
+segments.
+\n \em Command is a string, defining the sketcher by the coordinates of
+points in the local working plane.
+\n <em>WorkingPlane</em> can be a plane or a planar face. The plane is
+defined by the XYZ coordinates of three non-coincident points. The
+planar face is an existing GEOM_Object.
+
+\n <b>Arguments:</b>
+<ol>
+<li>Element type (segment or arc).</li>
+<li>Destination type (point or direction).</li>
+<li>Destination point by means of:</li>
+<ul>
+<li>absolute coordinates X,Y;</li>
+<li>relative coordinates DX, DY (with respect to the current point);</li>
+<li>selection of an existing point.</li>
+</ul>
+<li>Destination direction by means of:</li>
+<ul>
+<li>angle between the new segment and the previous one;</li>
+<li>perpendicular to the previous segment (same as previous, but angle
+is predefined and is equal to 90 degrees);</li>
+<li>tangent to the previous segment;</li>
+<li>vector components DX, DY.</li>
+</ul>
+<li>Parameters of an element (for segment : length or target X or Y coordinate value, for arc : radius and angle).</li>
+</ol>
+
+\n <b>Dialog Box:</b>
+
+\image html neo-scetcher1.png
+
+\image html neo-scetcher2.png
+
+\n <b>Example:</b>
+
+\image html image204.jpg
+
+\image html image206.jpg
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_sketcher_page "Sketcher".
+
+*/
--- /dev/null
+/*!
+
+\page create_solid_page Solid
+
+\n To create a \b Solid in the <b>Main Menu</b> select <b>New Entity - > Build - >
+Solid</b>.
+
+You can create a \b Solid from a list of shells.
+
+The \b Result will be a \b GEOM_Object (SOLID).
+
+\n <b>TUI Command:</b> <em>geompy.MakeSolid(ListOfShape),</em> where
+ListOfShape is a list of shells from which the solid is constructed.
+\n <b>Arguments:</b> Name + A closed shell or a list of closed shells.
+
+\image html neo-obj6.png
+
+\n <b>Example:</b>
+
+\image html solidsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_solid "Advanced Geometric Objects".
+
+*/
--- /dev/null
+/*!
+
+\page create_sphere_page Sphere
+
+\n To create a \b Sphere in the <b>Main Menu</b> select <b>New Entity - > Primitives - > Sphere</b>
+
+\n There are two algorithms for creation of a \b Sphere.
+\n The \b Result of each operation will be a GEOM_Object (SOLID).
+
+\n Firstly, you can define a \b Sphere by the <b>Center Point</b> and the \b Radius.
+\n <b>TUI Command:</b> <em>geompy.MakeSphere(Point, Radius)</em>
+\n <b>Arguments:</b> Name + 1 vertex + 1 value (Radius).
+
+\image html sphere1.png
+
+\n Secondly, you can define a \b Sphere with the center at the origin of
+coordinate system by the \b Radius.
+\n <b>TUI Command:</b> <em>geompy. MakeSphereR(Radius)</em>
+\n <b>Arguments:</b> Name + 1 value (Radius from the origin).
+
+\image html sphere2.png
+
+\n <b>NB!</b> The is another way to create a\b Sphere, which is
+currently accessible only via \b TUI commands.
+\n You can define the \b Sphere by the coordinates of the <b>Center
+Point</b> and its \b Radius (in this way you don't need to create it in advance).
+\n <b>TUI Command:</b> <em>geompy.MakeSphere(X, Y, Z, Radius)</em>
+
+<b>Example:</b>
+
+\image html spheres.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_sphere "Primitives".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_torus_page Torus
+
+To create a \b Torus in the <b>Main Menu</b> select <b>New Entity - > Primitives - > Torus</b>
+
+\n There are two algorithms for creation of a \b Torus.
+\n The \b Result of each operation will be a GEOM_Object (SOLID).
+
+\n Firstly, you can define a \b Torus by the given <b>Base Point</b>,
+the normal \b Vector and the Major and Minor \b Radiuses.
+\n <b>TUI Command:</b> <em>geompy.MakeTorus(Point, Vector, RadiusMajor, RadiusMinor)</em>
+\n <b>Arguments:</b> Name + 1 vertex + 1 vector (for direction) + 2
+values (1 & 2 Radius).
+
+\image html torus1.png
+
+\n Secondly, you can define a \b Torus with the center at the origin
+of coordinates by its Major and Minor \b Radiuses.
+\n <b>TUI Command:</b> <em>geompy.MakeTorusRR(RadiusMajor, RadiusMinor)</em>
+\n <b>Arguments:</b> Name + 2 values (1 & 2 Radius from the origin).
+
+\image html torus2.png
+
+<b>Example:</b>
+
+\image html toruses.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_torus "Primitives".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_vector_page Vector
+
+To create a \b Vector in the <b>Main Menu</b> select <b>New Entity - >
+Basic - > Vector</b>
+
+\n There are 2 algorithms to create a \b Vector in the 3D space.
+\n The \b Result of each operation will be a GEOM_Object (edge).
+
+\n Firstly, you can define a Vector by its \b Start and <b>End Points</b>.
+\n <b>TUI Command:</b> <em>geompy.MakeVector(Point1, Point2)</em>
+\n <b>Arguments:</b> Name + 2 vertices.
+
+\image html vector1.png
+
+\n Secondly, you can define a \b Vector starting in the <b>Origin of
+coordinates</b> by its <b>End Point</b>.
+\n <b>TUI Command:</b> <em>geompy.MakeVectorDXDYDZ(DX, DY, DZ)</em>
+\n <b>Arguments:</b> Name + 3 values
+
+\image html vector2.png
+
+<b>Example:</b>
+
+\image html image34.gif
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_vector "Basic Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_wire_page Wire
+
+\n To create a \b Wire in the <b>Main Menu</b> select <b>New Entity - > Build - > Wire</b>
+
+\n You can create a \b Wire from several connected edges and wires by
+selecting them in the object browser or in the viewer holding Shift
+button.
+\n The \b Result will be a \b GEOM_Object (WIRE).
+
+\n <b>TUI Command:</b> <em>geompy.MakeWire(ListOfShape)</em>
+
+<b>Arguments:</b> Name + List of connected wires or edges.
+
+\n <b>Dialog Box:</b>
+
+\image html neo-obj3.png
+
+\n <b>Example:</b>
+
+\image html wiresn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of creation of
+\ref tui_creation_wire "Advanced Geometric Objects".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page create_wplane_page Working Plane
+
+Definition of a <b>Working Plane</b> is necessary for work with
+\ref create_sketcher_page "Sketcher".
+
+\n To create a <b>Working Plane</b> in the <b>Main Menu</b> select
+<b>New Entity - > Basic - > Working Plane</b>
+
+\n There is a number of algorithms to set the <b>Working Plane</b> and the
+Camera Position.
+
+\n Firstly, you can select a \b Plane, a <b>Planar Face</b> or a <b>Local Coordinate System</b> to be your <b>Working Plane</b>.
+\n <b>Arguments:</b> Name + 1 selection (plane or planar face).
+
+\image html workplane4.png
+
+\n Secondly, you can define a <b>Working Plane</b> by two <b>Vectors</b>.
+\n <b>Arguments:</b> Name + 2 vectors.
+
+\image html workplane5.png
+
+\n Finally, you can select one of three basic projections of XYZ
+coordinate system to be your <b>Working Plane</b>.
+
+\image html workplane6.png
+
+<b>Reverse the plane normal</b> checkbox allows changing the direction
+of the working plane.
+
+<b>Example:</b> Working plane on the upper face of a box.
+
+\image html image36.gif
+<center>Normal Direction</center>
+
+\image html image47.gif
+<center>Reversed Direction</center>
+
+*/
--- /dev/null
+/*!
+
+\page cut_operation_page Cut
+
+\n To produce a \b Cut operation in the <b>Main Menu</b> select <b>Operations - > Boolean - > Cut</b>
+
+\n This operation cuts a shape with another one.
+\n The \b Result will be any \b GEOM_Object.
+\n <b>Arguments:</b> Name + 2 shapes.
+
+\n <b>Dialog Box:</b>
+
+\image html bool3.png
+
+\n <b>Example:</b>
+
+\image html fusesn1.png
+
+\image html cutsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_cut "Boolean Operations".
+
+*/
--- /dev/null
+/*!
+
+\page display_mode_page Display Mode
+
+\n This option is relevant for viewing 3D objects. Wireframe mode means
+that you can see only edges of the object, while its shells remain
+transparent. Shading mode means that the shells are filled with color.
+
+\n To change the display mode right-click on this geometrical object
+in the viewer and from the pop-up menu select <b>Display mode -->
+Wireframe</b> or <b>Shading</b>.
+
+\n <b>TUI Command:</b> <em>gg.setDisplayMode(ID, Short)</em>
+
+\n <b>Examples:</b>
+
+\image html disp_mode1sn.png
+<center><em>Wireframe</em></center>
+
+\image html /disp_mode2sn.png
+<center><em>Shading</em></center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of
+\ref tui_change_disp_mode "Changing Display Parameters".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page explode_on_blocks_operation_page Explode on Blocks
+
+\n To produce an <b>Explode on Blocks</b> operation in the <b>Main
+Menu</b> select <b>Operations - > Blocks - > Explode on Blocks</b>.
+
+\n This operation returns blocks of the given compound. The user may
+define the type of blocks to be extracted by setting the minimum and
+maximum number of faces in the target block. By checking the
+corresponding box the user may also interactively choose the blocks
+from a compound.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.MakeBlockExplode(Compound,
+MinNbFaces, MaxNbFaces),</em> where \em Compound is a compound to be
+exploded into the blocks, \em MinNbFaces, \em MaxNbFaces are correspondingly
+the minimal and the maximal number of faces of the resulting blocks.
+\n <b>Arguments:</b> 1 compound + 2 integers (min. and max. number of
+faces in the block to be extracted).
+
+\image html mtransf3.png
+
+\n <b>Example:</b>
+
+\image html block_explodesn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_explode_on_blocks "Blocks Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page fillet_operation_page Fillet
+
+\n To produce a \b Fillet in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Fillet</b>
+
+\n This operation creates fillets on the edges of a shape.
+\n The \b Result will be a \b GEOM_Object.
+
+\n To create fillets on all edges of the given shape, you need to
+select the <b>Main Object</b> to create a fillet on and to define the \b Radius of the
+Fillet.
+\n <b>TUI Command:</b> <em>geompy.MakeFilletAll(Shape, R)</em>
+\n <b>Arguments:</b> Name + 1 shape + 1 value (fillet radius).
+
+\image html fillet1.png
+
+\n To create fillets on the specified edges or faces of the given
+shape, you need to define the <b>Main Object</b> to create a fillet
+on, select the necessary edges or faces in the OCC Viewer and define
+the \b Radius of the Fillet.
+\n <b>TUI Command:</b> <em>geompy.MakeFillet(Shape, R, ShapeType, ListShapes)</em>
+\n <b>Arguments:</b> Name + 1 shape + one or several edges (or faces)
++ 1 value (Fillet radius).
+
+\n Alternatively, there is a possibility to create a fillet with a
+variable radius. For this, toggle the lower radio button and define
+\b R1 (the radius at the start of the selected edge(s)) and \b R2
+(the radius at the end of the selected edge(s))
+
+\image html fillet2.png
+
+\image html fillet3.png
+
+\n <b>Examples:</b>
+
+\image html fillet_all.png
+<center><em>Fillet on all</em></center>
+
+\image html fillet_edge.png
+<center><em>Fillet on an edge</em></center>
+
+\image html fillet_prism.png
+<center><em>Fillet on a Face</em></center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_fillet "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page fuse_operation_page Fuse
+
+\n To produce a \b Fuse operation in the <b>Main Menu</b> select
+<b>Operations - > Boolean - > Fuse</b>
+
+\n This operation creates a shape from two shapes.
+
+\n The \b Result will be any \b GEOM_Object.
+\n <b>Arguments:</b> Name + 2 shapes.
+\n <b>TUI Command:</b> <em>geompy.MakeFuse(s1, s2)</em>
+
+\image html bool1.png
+
+\n <b>Example:</b>
+
+\image html fusesn1.png
+
+\image html fusesn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_fuse "Boolean Operations".
+
+*/
--- /dev/null
+/*!
+
+\page geompy_page Python Interface geompy.py
+
+\n Please, see \ref geompyDC::geompyDC "documentation for geompy.py"
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page glue_faces_operation_page Glue Faces
+
+\n To <b>Glue Faces</b> in the <b>Main Menu</b> select <b>Repair - > Glue Faces</b>.
+
+\n This operation glues faces that are coincident with respect to the
+given tolerance value.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.MakeGlueFaces(theShape,
+theTolerance),</em> where \em theShape is a compound of solids to be
+glued, \em theTolerance is a maximum distance between two faces, which can
+be considered as coincident.
+\n <b>Arguments:</b> Name + Compound of solids + Tolerance value.
+
+\image html glue1.png
+
+\n It is also possible to manually select the faces that will be
+glued - select the shape, specify the tolerance and press \b Detect button.
+
+\image html glue2.png
+
+\n \b Geometry module detects the faces where gluing can be performed and
+displays a notification.
+
+\image html glue3.png
+
+\n The faces that can be glued are colored in red. It is possible to
+select the faces for gluing in the 3D viewer. The selected faces will
+be marked in white.
+
+\n <b>Example:</b>
+
+\image html glue_faces1.png
+<center><em>Object that needs gluing</em></center>
+
+\image html glue_faces2.png
+<center><em>Glued object</em></center>
+
+\image html glue_faces3.png
+<center><em>Manual selection of faces for gluing</em></center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_glue_faces "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page import_export_geom_obj_page Importing/exporting geometrical objects
+
+In Geometry module you can import and export geometrical objects
+from/into BREP, IGES, STEP files. The mechanisms of import and export
+are implemented via plug-ins, which gives you the opportunity to
+expand the range of available formats by adding more plug-ins (for
+example, CATIA 5).
+
+<em>To import geometrical objects from a BREP, IGES, STEP file:</em>
+
+\par
+From the \b File menu choose \b Import. In the opening dialog box \b Import
+select the required format of the file for importation and search for
+a *.brep, *.iges or *.step file.
+
+\image html geomimport.png
+
+\par
+Select the required file and click \b Open. Your file will be imported in
+the module and its contents (geometrical object) will be displayed in
+the <b>Object Browser</b>.
+
+\n <em>To export geometrical objects into a BREP, IGES, STEP
+file:</em>
+
+\par
+Select the object you wish to export, then from the \b File menu choose
+\b Export. In the opening dialog box \b Export define the required format,
+the name and the location of the file for exportation.
+
+\image html geomexport.png
+
+\par
+Click \b Save to confirm your exportation.
+
+*/
+
--- /dev/null
+/*!
+
+\mainpage Geometry Module Reference Documentation
+
+<ul>
+<li>\subpage introduction_page</li>
+<li>\subpage import_export_geom_obj_page</li>
+<li>\subpage create_geom_obj_page</li>
+<ul>
+<li>\ref create_basic_geom_obj_page</li>
+<ul>
+<li>\ref create_point_page</li>
+<li>\ref create_line_page</li>
+<li>\ref create_circle_page</li>
+<li>\ref create_ellipse_page</li>
+<li>\ref create_arc_page</li>
+<li>\ref create_curve_page</li>
+<li>\ref create_vector_page</li>
+<li>\ref create_plane_page</li>
+<li>\ref create_wplane_page</li>
+<li>\ref create_lcs_page</li>
+</ul>
+<li>\ref create_primitives_page</li>
+<ul>
+<li>\ref create_box_page</li>
+<li>\ref create_cylinder_page</li>
+<li>\ref create_sphere_page</li>
+<li>\ref create_torus_page </li>
+<li>\ref create_cone_page </li>
+</ul>
+<li>\ref create_complex_obj_page</li>
+<ul>
+<li>\ref create_extrusion_page</li>
+<li>\ref create_revolution_page</li>
+<li>\ref creaet_filling_page</li>
+<li>\ref create_extrusion_alongpath_page</li>
+</ul>
+<li>\ref work_with_groups_page</li>
+<li>\ref build_by_blocks_page</li>
+<li>\ref create_sketcher_page</li>
+<li>\ref create_adv_obj_page</li>
+<ul>
+<li>\ref create_explode_page</li>
+<li>\ref create_edge_page</li>
+<li>\ref create_wire_page</li>
+<li>\ref create_face_page</li>
+<li>\ref create_shell_page</li>
+<li>\ref create_solid_page</li>
+<li>\ref create_compound_page</li>
+</ul>
+</ul>
+<li>\subpage view_geom_obj_chapter_page</li>
+<ul>
+<li>\ref view_geom_obj_page</li>
+<li>\ref display_mode_page</li>
+<li>\ref color_page</li>
+<li>\ref transparency_page</li>
+<li>\ref isolines_page</li>
+</ul>
+<li>\subpage transform_geom_obj_page</li>
+<ul>
+<li>\ref basic_operations_page</li>
+<ul>
+<li>\ref partition_page</li>
+<li>\ref archimede_page</li>
+</ul>
+<li>\ref boolean_operations_page</li>
+<ul>
+<li>\ref using_boolean_operations_page</li>
+<li>\ref fuse_operation_page</li>
+<li>\ref common_operation_page</li>
+<li>\ref cut_operation_page</li>
+<li>\ref section_opeartion_page</li>
+</ul>
+<li>\ref transformation_operations_page</li>
+<ul>
+<li>\ref translation_operation_page</li>
+<li>\ref rotation_operation_page</li>
+<li>\ref modify_location_operation_page</li>
+<li>\ref mirror_operation_page</li>
+<li>\ref scale_operation_page</li>
+<li>\ref offset_operation_page</li>
+<li>\ref multi_translation_operation_page</li>
+<li>\ref multi_rotation_operation_page</li>
+<li>\ref fillet_operation_page</li>
+<li>\ref chamfer_operation_page</li>
+</ul>
+<li>\ref blocks_operations_page</li>
+<ul>
+<li>\ref multi_transformation_operation_page</li>
+<li>\ref explode_on_blocks_operation_page</li>
+<li>\ref propagate_operation_page</li>
+</ul>
+<li>\ref repairing_operations_page</li>
+<ul>
+<li>\ref shape_processing_operation_page</li>
+<li>\ref suppress_faces_operation_page</li>
+<li>\ref close_contour_operation_page</li>
+<li>\ref suppress_internal_wires_operation_page</li>
+<li>\ref suppress_holes_operation_page</li>
+<li>\ref sewing_operation_page</li>
+<li>\ref glue_faces_operation_page</li>
+<li>\ref add_point_on_edge_operation_page</li>
+<li>\ref check_free_boundaries_operation_page</li>
+<li>\ref check_free_faces_operation_page</li>
+<li>\ref change_orientation_operation_page</li>
+<li>\ref remove_extra_edges_operation_page</li>
+</ul>
+</ul>
+<li>\subpage using_measurement_tools_page</li>
+<li>\subpage geompy_page</li>
+<li>\subpage tui_scripts_page</li>
+<ul>
+<li>\ref tui_viewing_geom_objs_page</li>
+<li>\ref tui_creating_geom_objs_page</li>
+<ul>
+<li>\ref tui_basic_geom_objs_page</li>
+<li>\ref tui_primitives_page</li>
+<li>\ref tui_complex_objs_page</li>
+<li>\ref tui_working_with_groups_page</li>
+<li>\ref tui_building_by_blocks_page</li>
+<li>\ref tui_sketcher_page</li>
+<li>\ref tui_advanced_geom_objs_page</li>
+</ul>
+<li>\ref tui_transformation_page</li>
+<ul>
+<li>\ref tui_basic_operations_page</li>
+<li>\ref tui_boolean_operations_page</li>
+<li>\ref tui_transformation_operations_page</li>
+<li>\ref tui_blocks_operations_page</li>
+<li>\ref tui_repairing_operations_page</li>
+</ul>
+<li>\ref tui_measurement_tools_page</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page introduction_page Introduction to Geometry
+
+\b Geometry module of SALOME is destined for:
+<ul>
+<li>Import and export of geometrical models in IGES, BREP and STEP formats.</li>
+<li>Construction and optimization of geometrical models using a wide
+range of CAD functions:</li>
+<ul>
+<li>Creation of basic geometrical objects</li>
+<li>Construction of primitives</li>
+<li>Building shapes</li>
+<li>Generation of complex shapes</li>
+<li>Working with groups</li>
+<li>Geometrical repairing of objects</li>
+<li>Geometrical boolean operations</li>
+<li>Geometrical transformations</li>
+<li>Building by blocks</li>
+</ul>
+</ul>
+
+\image html image3.jpg
+
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page isolines_page Isolines
+
+\n In this menu you can change the number of isolines displayed within
+a shape.
+\n <b>Arguments:</b>2 values (number of isolines).
+
+\image html neo-isos.png
+
+\n <b>Example:</b>
+
+\image html colorsn.png
+
+\image html isos_u12_v12sn.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page mirror_operation_page Mirror Image
+
+\n To produce a <b>Mirror Image</b> in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Mirror Image</b>
+
+\n This operation creates a symmetrical copy of an \b Object, which
+can be mirrored in three different ways.
+\n <b>Create a copy</b> checkbox allows to keep the initial object,
+otherwise it will be removed.
+\n The \b Result will be a \b GEOM_Object.
+
+\n Firstly an \b Object can be mirrored through a \b Point of symmetry
+\n <b>TUI Command:</b> <em>geompy.MakeMirrorByPoint(Object, Point)</em>
+\n <b>Arguments:</b> Name + one or several objects + 1 vertex.
+
+\image html transformation7.png
+
+\image html mirror_pointsn1.png
+
+\image html mirror_pointsn2.png
+
+\n Secondly an \b Object can be mirrored through an \b Axis of
+symmetry
+\n <b>TUI Command:</b> <em>geompy.MakeMirrorByAxis(Object, Axis)</em>
+\n <b>Arguments:</b> Name + one or several objects + 1 vector.
+
+\image html transformation8.png
+
+\image html mirror_axissn1.png
+
+\image html mirror_axissn2.png
+
+\n Finally an \b Object can be mirrored through a \b Plane of symmetry
+\n <b>TUI Command:</b> <em>geompy.MakeMirrorByPlane(Shape, Plane)</em>
+\n <b>Arguments:</b> Name + one or several objects + 1 plane
+
+\image html transformation9.png
+
+\image html mirror_planesn1.png
+
+\image html mirror_planesn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_mirror "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page modify_location_operation_page Modify the Location
+
+\n To <b>Modify the Location</b> in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Modify the Location</b>.
+
+\n This operation modifies the \b Location of \b Objects.
+
+\n The first algorithm places the object(s) so that its center coincides
+with the origin of the Local Coordinate System.
+\n <b>Create a copy</b> checkbox allows to keep the initial objects, otherwise they
+will be removed.
+\n <b>Arguments:</b> Name + one or several objects + End Coordinate System.
+
+\image html transformation5.png
+
+\n In the picture the initial cube with the global coordinate system
+is to the right and the modified cube with the Local Coordinate
+System in the center of it is to the left .
+
+\image html image30.gif
+
+\n The second algorithm modifies the location of an object using Start
+and End LSC, although the final position of the object will not
+coincide with the center of either of the two systems. In this method
+the object is shifted from its initial position by the value of the
+remainder after subtraction of the coordinates of the Start LSC from
+the coordinates of the End LSC.
+\n <b>Create a copy</b> checkbox allows to keep the initial object,
+otherwise it will be removed.
+\n <b>Arguments:</b> Name + one or several objects + Start Coordinate System + End
+Coordinate System.
+
+\image html transformation6.png
+
+In this picture we see the initial cube with the global coordinate
+system and two LCS: LocalCS1 (GCS+100 along x-axis) and LocalCS2
+(GCS+200 along x-axis)
+
+\image html image1.gif
+
+Selecting Start LCS = LCS1 and End LCS = LCS2, we obtain the
+translated cube at the position (100;0;0)
+
+\image html image2.gif
+
+Selecting Start LCS = LCS2 and End LCS = LCS1, we obtain the
+translated cube at the position (-100;0;0)
+
+\image html image4.gif
+
+\n <b>TUI Command:</b> <em>geompy.MakePosition(theObject, theStartLCS,
+theEndLCS),</em> where \em theObject is a shape, location of which is
+modified, \em theStartLCS is a location to move the shape from, \em
+theEndLCS is a location to move the shape to.
+
+\n Our <b>TUI Scripts</b> provide you with useful examples of the use
+of \ref tui_translation "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page multi_rotation_operation_page Multi Rotation
+
+\n To produce a <b>Multi Rotation</b> in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Multi Rotation</b>
+
+\n This operation creates several geometrical objects rotated in one
+or two dimensions basing on the initial geometrical object.
+\n The \b Result will be one or several \b GEOM_Objects (compound).
+
+\n To produce a <b>Simple Multi Rotation</b> (in one dimension) you
+need to define a \b Shape to be rotated, an \b Axis of rotation and a
+<b>Number of Times</b> the shape must be rotated. <b>Rotation Angle</b> will
+be 2*PI/NbTimes
+\n <b>TUI Command:</b> <em>geompy.MultiRotate1D(Shape, Axis, NbTimes)</em>
+\n <b>Arguments:</b> Name + 1 shape + 1 vector for direction + 1 value
+(repetition).
+
+\b <b>NB!</b> There is another way to execute a Multi-rotation
+operation, which is currently accessible only via TUI commands:
+<em>geompy.MakeMultiRotation1D(Shape, Dir, Point, NbTimes)</em> which works in
+the same way, but the Axis is defined by direction and point.
+
+\image html neo-mrot1.png
+
+\image html multi_rotation1d1.png
+
+\image html multi_rotation1d2.png
+
+\n <b>Double Multi Rotation</b> (in two dimensions) rotates the given
+\b Object around the given \b Axis on the given \b Angle a given
+<b>Number of Times</b> and multi-translates each rotation
+result. Translation direction passes through the center of gravity of
+the rotated shape and its projection on the rotation axis.
+\b Reverse checkbox allows to set the direction of rotation.
+\n <b>TUI Command:</b> <em>geompy.MultiRotate2D(Shape, Axis, Angle, NbTimes1, Step, NbTimes2)</em>
+\n <b>Arguments:</b> Name + 1 shape + 1 vector for direction + 1 angle
++ 1 value (repetition) + 1 step value + 1 value (repetition).
+
+<b>NB!</b> There is another way to execute a Double Multi-rotation
+operation, which is currently accessible only via TUI commands:
+<em>geompy.MakeMultiRotation2D(Shape, Dir, Point, Angle, nbtimes1, Step,nbtimes2)</em>
+which works in the same way,
+but the Axis is defined by direction and point.
+
+\image html neo-mrot2.png
+
+\image html multi_rotation2d1.png
+
+\image html multi_rotation2d2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_multi_rotation "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page multi_transformation_operation_page Block Multi Transformation
+
+\n To produce a <b>Multi Transformation</b> operation in the <b>Main
+Menu</b> select <b>Operations - > Blocks - > Multi Transformation</b>
+
+\n This operation makes several translations of a block (solid) in one
+or two directions depending on the arguments specified by the user.
+\n The \b Result in both cases will be a \b GEOM_Object.
+
+<br><h2>Simple Multi Transformation (in one direction)</h2>
+
+\n <b>TUI Command:</b> <em> geompy. MakeMultiTransformation1D(Block,
+DirFaceID1, DirFaceID2, NbTimes),</em> where \em Block is a block to be
+transformed, \em DirFaceID1 is an ID of the face which defines the first
+direction of transformation, \em DirFaceID2 is an ID of the face which
+defines the second direction of transformation, \em NbTimes is a number of
+transformations.
+\n <b>Arguments:</b> Name + 1 hexahedral solid + 1 or 2 faces + 1
+integer (number of blocks).
+
+\image html mtransf1.png
+
+\image html multi_transformationsn1d.png
+
+<br><h2>Double Multi Transformation (in two directions)</h2>
+
+\n <b>TUI Command:</b> <em>geompy. MakeMultiTransformation2D(Block,
+DirFaceID1U, DirFaceID2U, NbTimesU, DirFaceID1V, DirFaceID2V,
+NbTimesV),</em> where \em Block is a block to be transformed, \em DirFaceID1U
+and \em DirFaceID2U are IDs of the faces, which define directions of the
+first transformation, \em DirFaceID1V and \em DirFaceID2V are ID's of the
+faces which define directions of the second transformation, \em NbTimesU
+and \em NbTimesV are numbers of transformations.
+\n <b>Arguments:</b> Name + 1 hexahedral solid + 2, 3 or 4 faces + 2
+integers (number of blocks).
+
+\image html mtransf2.png
+
+\image html multi_transformationsn2d.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_multi_transformation "Blocks Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page multi_translation_operation_page Multi Translation
+
+\n To produce a <b>Multi Translation</b> in the <b>Main Menu</b>
+select <b>Operations - > Transformation - > Multi Translation</b>
+
+\n This operation makes several translations of a shape in \b one or \b
+two directions.
+\n The \b Result will be one or several \b GEOM_Objects (compound).
+
+\n To produce a <b>Simple Multi Translation</b> (in one direction) you
+need to indicate an \b Object to be translated, a \b Vector of
+translation, a \b Step of translation and a <b>Number of Times</b> the
+Object should be duplicated.
+\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation1D(Shape, Dir,
+Step, NbTimes)</em>
+\n <b>Arguments:</b> Name + 1 shape + 1 vector (for direction) + 1
+step value + 1 value (repetition).
+
+\image html mtrans1.png
+
+\image html multi_translation_initialsn.png
+
+\image html multi_translation1dsn.png
+
+\n To produce a <b>Double Multi Translation</b> (in two directions) you need to
+indicate an \b Object to be translated, and, for both axes, a \b
+Vector of translation, a \b Step of translation and a <b>Number of Times</b> the shape must be duplicated.
+
+\n <b>TUI Command:</b> <em>geompy.MakeMultiTranslation2D(Shape, Dir1,
+Step1, NbTimes1, Dir2, Step2, NbTimes2),</em> where \em Shape is a shape
+to be translated, \em Dir1 is the first direction of translation, \em Step1 of
+the first translation, \em NbTimes1 is a number of translations to be done
+along \em Dir1, \em Dir2 is the second direction of translation, \em Step2 of the
+second translation, \em NbTimes2 is a number of translations to be done
+along \em Dir2.
+\n <b>Arguments:</b> Name + 1 shape + 2 vectors defining the direction
++ 2 step values + 2 values (repetitions).
+
+\image html mtrans2.png
+
+\image html multi_translation_initialsn.png
+
+\image html multi_translation2dsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_multi_translation "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page offset_operation_page Offset Surface
+
+\n To produce an <b>Offset Surface</b> in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Offset Surface</b>
+
+\n This operation translates each point of an \b Object (a set of
+Objects) along a local normal by a given \b Offset distance (signed
+number, negative value meaning inner offset).
+\n \b Offset operation is applicable to faces, shells and solids.
+\n The \b Result will be a \b GEOM_Object
+\n <b>TUI Command:</b> <em>geompy.MakeOffset(Shape, Offset),</em>
+where Shape is a shape(s) which has to be an offset, Offset is a value of
+the offset.
+\n <b>Arguments:</b> Name + Object (face(s), shell(s), solid(s)) +
+Offset value
+
+\image html transformation11.png
+
+\n <b>Example:</b>
+
+\image html offsetsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_offset "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page partition_page Partition
+
+\n To produce a \b Partition in the <b>Main Menu</b> select <b>Operations - > Partition</b>
+
+\n This operation builds a compound by intersection of several shapes with a tool object or a plane.
+\n The \b Result will be any \b GEOM_Object.
+
+<br><h2>Intersection of two shapes.</h2>
+
+\n As far as the intersection of two objects can produce any type of
+geometrical objects, <b>Reconstruction Limit</b> box allows choosing the
+preferrable result, i.e. a solid, a shell, a list of faces, etc.
+\n <b>TUI Command:</b> <em>geompy.MakePartition(ListOfShapes,
+ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs,
+ListOfMaterials),</em> where where \em ListOfShapes is a list of shapes to
+be intersected and \em ListOfTools is a list of shapes to intersect the
+shapes from ListOfShapes.
+\n Since the implementation of a new version of PartitionAlgo other
+parameters are ignored by the current functionality and remain there
+only to support the old scripts.
+\n <b>Arguments:</b> Name + 2 lists of shapes (the shapes from the
+first list will be intersected with the shapes from the second list) +
+reconstruction limit.
+
+\image html partition1.png
+
+<b>Keep nonlimit shapes</b> checkbox allows building geometrical objects of
+all types at the same time i.e. no reconstruction limit is applied.
+
+
+<br><h2>Intersection of a Shape and a Plane.</h2>
+
+\n <b>TUI Command:</b> <em> geompy.MakeHalfPartition(Shapes,
+Plane),</em> where \em Shapes are a list of Shapes to be intersected
+and \em Plane is a Tool shape, to intersect the \em Shapes.
+\n <b>Arguments:</b> Name + a list of shapes which will be intersected
++ 1 cutting plane.
+
+\image html partition2.png
+
+\n <b>Example:</b>
+
+\image html partitionsn1.png
+
+\image html partitionsn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_partition "Basic Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page propagate_operation_page Propagate
+
+\n To produce a \b Propagate operation in the <b>Main Menu</b> select
+<b>Operations - > Blocks - > Propagate</b>
+
+\n This operation breaks a multitude of edges of a shape into groups
+(builds all possible propagation groups).
+\n The \b Result will be a <b>List of GEOM_Objects</b>. Each Geom
+Object will contain a group of edges.
+
+\n <b>TUI Command:</b> <em>geompy.Propagate(Shape),</em> where \em Shape
+is a shape to build propagation groups on.
+\n <b>Arguments:</b> 1 Shape.
+
+\image html mtransf4.png
+
+\n <b>Example:</b>
+
+\image html image15.jpg
+
+\image html image16.jpg
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_propagate "Blocks Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page remove_extra_edges_operation_page Remove Extra Edges
+
+\n To <b>Remove extra edges</b> in the <b>Main Menu</b> select
+<b>Repair - > Remove extra edges</b>.
+\n This operation removes all seam and degenerated edges from a given
+shape and unites faces and edges, sharing one surface.
+
+\n <b>TUI Command:</b> <em>geompy.RemoveExtraEdges(theShape)</em>,
+there <em>theShape</em> is a compound or a single solid to remove irregular edges from.
+\n <b>Arguments:</b> Name + one shape.
+
+\image html remove_extra_edges.png
+
+\n <b>Example:</b>
+
+\image html remove_extra_edges1.png
+<center><em>Shape with extra edges</em></center>
+
+\image html remove_extra_edges2.png
+<center><em>Improved shape</em></center>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page repairing_operations_page Repairing Operations
+
+<ul>
+<li>\subpage shape_processing_operation_page</li>
+<li>\subpage suppress_faces_operation_page</li>
+<li>\subpage close_contour_operation_page</li>
+<li>\subpage suppress_internal_wires_operation_page</li>
+<li>\subpage suppress_holes_operation_page</li>
+<li>\subpage sewing_operation_page</li>
+<li>\subpage glue_faces_operation_page</li>
+<li>\subpage add_point_on_edge_operation_page</li>
+<li>\subpage change_orientation_operation_page</li>
+<li>\subpage remove_extra_edges_operation_page</li>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page rotation_operation_page Rotation
+
+\n To produce a \b Rotation in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Rotation</b>
+
+\n This operation \b rotates the initial shape.
+
+\n The first \b Rotation algorithm needs you to define an \b Object to
+be rotated, an \b Axis of rotation and an \b Angle of rotation.
+\n <b>TUI Command:</b> <em>geompy.MakeRotation(Shape, Axis, Angle)</em>
+\n <b>Arguments:</b> Name + one or several objects + 1 vector for direction of rotation + 1
+angle.
+
+\image html transformation4.png
+
+\b Reverse checkbox allows to specify the direction of rotation.
+\n <b>Create a copy</b> checkbox allows to keep the initial object,
+otherwise it will be removed.
+\n The \b Result will be any \b GEOM_Object.
+
+\n The second algorithm allows to define the rotated \b Object by
+three points. Rotation axis will pass through the <b>Central Point</b>
+and will be will be orthogonal to a plane defned by three points. In
+this case rotation \b Angle is the angle between two vectors directed
+from the first point to the second and to the third.
+\n <b>TUI Command:</b> <em>geompy.MakeRotationThreePoints(Shape, CentralPoint, Point1, Point2)</em>
+\n <b>Arguments:</b> 1 shape + 3 points.
+
+\image html transformation4a.png
+
+\n <b>Example:</b>
+
+\image html rotationsn1.png
+
+\image html rotationsn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_rotation "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page scale_operation_page Scale Transform
+
+\n To produce a <b>Scale Transform</b> in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Scale Transform</b>
+
+\n This operation creates a scaled shape basing on the initial
+shape. For this, you need to define the \b Shape to be scaled, the
+<b>Central Point</b> of scale and the Scale Factor.
+\n The \b Result will be a \b GEOM_Object.
+\n <b>TUI Command:</b> <em>geompy.MakeScaleTransform(Shape, CenterOfScale, Factor)</em>
+\n <b>Arguments:</b> Name + 1 shape(s) + 1 vertex + 1 Scale Factor.
+
+\image html transformation10.png
+
+\n <b>Example:</b>
+
+\image html scale_transformsn1.png
+
+\image html scale_transformsn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_scale "Transformation Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page section_opeartion_page Section
+
+\n To produce a \b Section operation in the <b>Main Menu</b> select
+<b>Operations - > Boolean - > Section</b>
+
+\n This operation creates the section between 2 shapes.
+
+\n The \b Result will be any \b GEOM_Object (EDGE or WIRE).
+\n <b>TUI Command:</b> <em>geompy.MakeSection(s1, s2)</em>
+\n <b>Arguments:</b> Name + 2 shapes.
+
+\image html neo-section.png
+
+\n <b>Example:</b>
+
+\image html fusesn1.png
+
+\image html sectionsn.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_section "Boolean Operations".
+
+*/
--- /dev/null
+/*!
+
+\page sewing_operation_page Sewing
+
+\n To produce a \b Sewing operation in the <b>Main Menu</b> select <b>Repair - > Sewing</b>.
+
+\n This operation allows to sew several faces or shells.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.MakeSewing(ListOfShape, Precision),</em>
+ where \em ListOfShape is list of faces or shells to be sewed, \em Precision is a
+precision for sewing.
+
+\image html repair6.png
+
+\n <b>Arguments:</b> Name + 1 or more shapes + 1 value (sew
+precision).
+\n \b Detect button allows to display the number of free boundaries in
+your shape:
+
+\image html neo-detect2.png
+
+\n <b>Example:</b>
+
+\image html image112.jpg
+
+\image html image113.jpg
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_sewing "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page shape_processing_operation_page Shape Processing
+
+\n To produce a <b>Shape Processing</b> operation in the <b>Main Menu</b>
+select <b>Repair - > Shape Processing</b>.
+\n This operation processes one or more shapes using various operators.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.ProcessShape(Shape, Operators,
+Parameters, Values),</em> where \em Shape is a processed shape, \em Operators
+is a list of operators ("FixShape", "SplitClosedFaces", etc.),
+\em Parameters is a list of parameters ("FixShape.Tolerance3d",
+etc), \em Values is a list of values of parameters placed in the same
+order as in the list of Parameters.
+
+\n In this dialog box you can select the object that you need to
+process, define its name and operators applied to it during
+processing.
+
+\image html repair1.png
+
+<b>Operators and Parameters</b> (TUI names are given in brackets):
+
+<ul>
+<li><b>Fix Shape</b> (FixShape) - corrects invalid shapes.</li>
+<ul>
+<li><b>3D Tolerance</b> (FixShape.Tolerance3d) - work tolerance for
+detection of the problems and correction of them.</li>
+<li><b>Max 3D Tolerance</b> (FixShape.MaxTolerance3d) - maximal
+possible tolerance of the shape after correction.</li>
+</ul>
+<li><b>Fix Face Size</b> (FixFaceSize) - removes small faces, such as
+spots and strips.</li>
+<ul>
+<li><b>Tolerance</b> (FixFaceSize.Tolerance) - defines minimum
+possible face size.</li>
+</ul>
+<li><b>Drop Small Edges</b> (DropSmallEdges) - removes edges, which
+merge with neighbouring edges.</li>
+<ul>
+<li><b>3D Tolerance</b> (DropSmallEdges.Tolerance3d) - defines minimum
+possible distance between two parallel edges.</li>
+</ul>
+<li><b>Split Angle</b> (SplitAngle) - splits faces based on conical
+surfaces, surfaces of revolution and cylindrical surfaces in segments
+using a certain angle.</li>
+<ul>
+<li><b>Angle</b> (SplitAngle.Angle) - the central angle of the
+resulting segments (i.e. we obtain two segments if Angle=180, four if
+Angle=90, etc).</li>
+<li><b>Max. Tolerance</b> (SplitAngle.MaxTolerance) - maximum possible
+tolerance among the resulting segments.</li>
+</ul>
+<li><b>Split Closed Faces</b> (SplitClosedFaces) - splits closed faces
+in segments. The number of segments depends on the number of splitting
+points.</li>
+<ul>
+<li><b>Number of splitting points</b> (SplitClosedFaces.NbSplitPoints) - the number of splitting points.</li>
+</ul>
+<li><b>Split Continuity</b> (SplitContinuity) - splits shapes to
+reduce continuities of curves and surfaces.</li>
+<ul>
+<li><b>3D Tolerance</b> (SplitContinuity.Tolerance3d) - 3D tolerance for correction of geometry.</li>
+<li><b>Surface Continuity</b> (SplitContinuity.SurfaceContinuity) - required continuity for surfaces.</li>
+<li><b>Curve Continuity</b> (SplitContinuity.CurveContinuity) - required continuity for curves.</li>
+</ul>
+\n This and the previous parameters can take the following values:
+\par
+<b>Parametric Continuity</b>
+\n \b C0 (Positional Continuity): curves are joined (the end positions
+of curves or surfaces are coincidental. The curves or surfaces may
+still meet at an angle, giving rise to a sharp corner or edge).
+\n \b C1 (Tangential Continuity): first derivatives are equal (the end
+vectors of curves or surfaces are parallel, ruling out sharp edges).
+\n \b C2 (Curvature Continuity): first and second derivatives are
+equal (the end vectors of curves or surfaces are of the same
+magnitude).
+\n \b CN N-th derivatives are equal (both the direction and the
+magnitude of the Nth derivatives of curves or surfaces (d/du C(u)) are
+the same at junction.
+\par
+<b>Geometric Continuity</b>
+\n \b G1: first derivatives are proportional at junction.
+\n The curve tangents thus have the same direction, but not necessarily
+the same magnitude. i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b,
+k*c).
+\n \b G2: first and second derivatives are proportional at junction.
+\n As the names imply, geometric continuity requires the geometry to
+be continuous, while parametric continuity requires that the
+underlying parameterization was continuous as well.
+\n Parametric continuity of order n implies geometric continuity of
+order n, but not vice-versa.
+
+<li><b>Bspline Restriction</b> (BsplineRestriction) - converts curves
+and surfaces to Bsplines and processes them with the following
+parameters:</li>
+<ul>
+<li><b>Surface Mode</b> (BSplineRestriction.SurfaceMode) -
+approximation of surfaces if restriction is necessary.</li>
+<li><b>3D Curve Mode</b> (BSplineRestriction.Curve3dMode) - conversion
+of any 3D curve to BSpline and approximation.</li>
+<li><b>2D Curve Mode</b> (BSplineRestriction.Curve2dMode) - conversion
+of any 2D curve to BSpline and approximation.</li>
+<li><b>3D Tolerance</b> (BSplineRestriction.Tolerance3d) - defines the
+possibility of surfaces and 3D curves approximation with the specified
+parameters.</li>
+<li><b>2D Tolerance</b> (BSplineRestriction.Tolerance2d) - defines the
+possibility of surfaces and 2D curves approximation with the specified
+parameters.</li>
+<li><b>Required Degree</b> (BSplineRestriction.RequiredDegree) -
+required degree of the resulting BSplines.</li>
+<li><b>Required number of segments</b>
+(BSplineRestriction.RequiredNbSegments) - required maximum number of
+segments of resultant BSplines.</li>
+<li><b>3D Continuity</b> (BSplineRestriction.Continuity3d) -
+continuity of the resulting surfaces and 3D curves.</li>
+<li><b>2D Continuity</b> (BSplineRestriction.Continuity2d) -
+continuity of the resulting 2D curves.</li>
+</ul>
+<li><b>To Bezier</b> (ToBezier) - converts curves and surfaces of any
+type to Bezier curves and surfaces.</li>
+<ul>
+<li><b>Surface Mode</b> (ToBezier.SurfaceMode) - if checked in, allows
+conversion of surfaces.</li>
+<li><b>3D Curve Mode</b> (ToBezier.Curve3dMode) - if checked in,
+allows conversion of 3D curves.</li>
+<li><b>2D Curve Mode</b> (ToBezier.Curve2dMode) - if checked in,
+allows conversion of 2D curves.</li>
+<li><b>Max Tolerance</b> (ToBezier.MaxTolerance) - defines tolerance
+for detection and correction of problems.</li>
+</ul>
+<li><b>Same Parameter</b> (SameParameter) - fixes edges of 2D and 3D
+curves not having the same parameter.</li>
+<ul>
+<li><b>3D Tolerance</b> (SameParameter.Tolerance3d) - defines tolerance for fixing of edges.</li>
+</ul>
+</ul>
+
+\n <b>Example:</b>
+
+\image html image154.jpg
+<center><em>Shape before applying Shape Processing (FixShape
+operator). View # 1.</em></center>
+
+\image html image156.jpg
+<center><em>Shape before applying Shape Processing (FixShape
+operator). View # 2.</em></center>
+
+\image html image160.jpg
+<center><em>The same shape after applying Shape
+Processing.</em></center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_shape_processing "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page suppress_faces_operation_page Suppress Faces
+
+\n To produce a <b>Suppress Faces</b> operation in the <b>Main
+Menu</b> select <b>Repair - > Suppress Faces</b>.
+
+\n This operation suppresses a face of a shape. This operation is
+available in <b>OCC Viewer</b> only.
+
+\n The \b Result will be a \b GEOM_Object (ListOfGeomShapes).
+
+\n <b>TUI Command:</b> <em>geompy.SuppressFaces(Shape, ListOfID),</em>
+where \em Shape is a shape to be processed, \em ListOfID is a list of faces
+ID's to be removed.
+\n <b>Arguments:</b> Name + Faces which should be removed (you can
+select them in the 3D viewer).
+
+\image html repair2.png
+
+\n <b>Example:</b>
+
+\image html suppress_faces1.png
+
+\image html suppress_faces2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_suppress_faces "Repairing Operations".
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page suppress_holes_operation_page Suppress Holes
+
+\n To <b>Suppress Holes</b> in the <b>Main Menu</b> select <b>Repair - > Suppress Holes</b>.
+
+\n This operation removes holes with free boundaries on a selected
+shell or face. This operation is available in <b>OCC Viewer</b> only.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.SuppressHoles(Shape,
+ListOfWireID),</em> where \em Shape is a shell or face, where holes
+with free boundaries must be removed, \em ListOfWireID is a list of wire sub shapes ID's. If it is
+empty, then all holes are removed.
+
+\image html repair5.png
+
+\n <b>Arguments:</b> Name + 1 shape + Wires which should be removed.
+\n <b>Remove all holes</b> checkbox allows to fill all holes of a definite shape.
+\n \b Detect button allows to display the number of free boundaries in
+your shape:
+
+\image html neo-detect2.png
+
+\n <b>Example:</b>
+
+\image html image109.jpg
+
+\image html image110.jpg
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_suppress_holes "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page suppress_internal_wires_operation_page Suppress Internal Wires
+
+\n To <b>Suppress Internal Wires</b> in the <b>Main Menu</b> select
+<b>Repair - > Suppress Internal Wires</b>.
+
+\n This operation removes all internal wires or specified internal
+wires from user specified shapes. This operation is available in <b>OCC
+Viewer</b> only.
+
+\n The \b Result will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.SuppressInternalWires(Shape, Wires),
+</em> where \em Shape is a shape where wires are to be removed, \em Wires is a
+list of wires ID's to be removed; if the list is empty then all
+internal wires are removed.
+
+<b>Arguments:</b>
+<ul>
+<li>Name of the resulting object</li>
+<li>User specified shape</li>
+<li>User specified internal wires (lying on this shape except for its
+boundary), or all internal wires if <b>Remove all internal wires</b> box is
+checked </li>
+</ul>
+
+\image html repair4.png
+
+\n <b>Example:</b>
+
+\image html supp_int_wires1.png
+
+\image html supp_int_wires2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_suppress_internal_wires "Repairing Operations".
+
+*/
--- /dev/null
+/*!
+
+\page transformation_operations_page Transformation Operations
+
+<ul>
+<li>\subpage translation_operation_page</li>
+<li>\subpage rotation_operation_page</li>
+<li>\subpage modify_location_operation_page</li>
+<li>\subpage mirror_operation_page</li>
+<li>\subpage scale_operation_page</li>
+<li>\subpage offset_operation_page</li>
+<li>\subpage multi_translation_operation_page</li>
+<li>\subpage multi_rotation_operation_page</li>
+<li>\subpage fillet_operation_page</li>
+<li>\subpage chamfer_operation_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page transform_geom_obj_page Transforming geometrical objects
+
+<ul>
+<li>\subpage basic_operations_page</li>
+<ul>
+<li>\ref partition_page</li>
+<li>\ref archimede_page</li>
+</ul>
+<li>\subpage boolean_operations_page</li>
+<ul>
+<li>\ref using_boolean_operations_page</li>
+<li>\ref fuse_operation_page</li>
+<li>\ref common_operation_page</li>
+<li>\ref cut_operation_page</li>
+<li>\ref section_opeartion_page</li>
+</ul>
+<li>\subpage transformation_operations_page</li>
+<ul>
+<li>\ref translation_operation_page</li>
+<li>\ref rotation_operation_page</li>
+<li>\ref modify_location_operation_page</li>
+<li>\ref mirror_operation_page</li>
+<li>\ref scale_operation_page</li>
+<li>\ref offset_operation_page</li>
+<li>\ref multi_translation_operation_page</li>
+<li>\ref multi_rotation_operation_page</li>
+<li>\ref fillet_operation_page</li>
+<li>\ref chamfer_operation_page</li>
+</ul>
+<li>\subpage blocks_operations_page</li>
+<ul>
+<li>\ref multi_transformation_operation_page</li>
+<li>\ref explode_on_blocks_operation_page</li>
+<li>\ref propagate_operation_page</li>
+</ul>
+<li>\subpage repairing_operations_page</li>
+<ul>
+<li>\ref shape_processing_operation_page</li>
+<li>\ref suppress_faces_operation_page</li>
+<li>\ref close_contour_operation_page</li>
+<li>\ref suppress_internal_wires_operation_page</li>
+<li>\ref suppress_holes_operation_page</li>
+<li>\ref sewing_operation_page</li>
+<li>\ref glue_faces_operation_page</li>
+<li>\ref add_point_on_edge_operation_page</li>
+<li>\ref check_free_boundaries_operation_page</li>
+<li>\ref check_free_faces_operation_page</li>
+<li>\ref change_orientation_operation_page</li>
+<li>\ref remove_extra_edges_operation_page</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page translation_operation_page Translation
+
+\n To produce a \b Translation in the <b>Main Menu</b> select
+<b>Operations - > Transformation - > Translation</b>
+
+This Operation makes a translation of an \b Object. To translate a
+shape you need to define the base shape and the coordinates of the
+vector of translation. <b>Create a copy</b> checkbox allows to keep the
+initial object, otherwise it will be removed.
+\n The \b Result of all operations will be any \b GEOM_Object.
+
+\n Firstly you can define an \b Object and the vector coordinates along the
+axes.
+\n <b>TUI Command:</b> <em>geompy.MakeTranslation(Shape, DX, DY,
+DZ),</em> where Shape is a shape to be translated, DX, DY, DZ are
+components of translation vector.
+\n <b>Arguments:</b> Name + one or several objects + 3 values (coordinates).
+
+\image html transformation1.png
+
+\n Secondly you can define an \b Object and the start and the end points
+of the vector.
+\n <b>TUI Command:</b> <em>geompy.MakeTranslationTwoPoints(Object, Point1, Point2)</em>
+\n <b>Arguments:</b> Name + one or several objects + 2 vertices
+
+\image html transformation2.png
+
+\n Finally you can define an \b Object and the vector
+\n <b>TUI Command:</b> <em>geompy.MakeTranslationVector(Object, Vector)</em>
+\n <b>Arguments:</b> Name + one or several objects + 1 vector.
+
+\image html transformation3.png
+
+\n <b>Example:</b>
+
+\image html translationsn1.png
+
+\image html translationsn2.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_translation "Transformation Operations".
+
+*/
--- /dev/null
+/*!
+
+\page transparency_page Transparency
+
+\n You can change the transparency of a shape in the range between 0
+(absolutely opaque) and 1 (absolutely transparent and thus invisible)
+in the following dialog box.
+
+\image html neo-transparency.png
+
+or using a <b>TUI Command:</b> <em>gg.setTransparency(ID, Double)</em>
+
+\n <b>Examples:</b>
+
+\image html colorsn.png
+<center><em>Opaque</em></center>
+
+\image html transparencysn.png
+<center><em>50% Transparent</em></center>
+
+Our <b>TUI Scripts</b> provide you with useful examples of
+\ref tui_change_transparency "Changing Display Parameters".
+
+*/
+
--- /dev/null
+/*!
+
+\page tui_advanced_geom_objs_page Advanced Geometrical Objects
+
+\anchor tui_creation_edge
+<br><h2>Creation of an Edge</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+pxyz = geompy.MakeVertex(100., 100., 100.)
+
+# create an edge
+edge = geompy.MakeEdge(p0, pxyz)
+
+# add object in the study
+id_edge = geompy.addToStudy(edge,"Edge")
+
+# display an edge
+gg.createAndDisplayGO(id_edge)
+\endcode
+
+\anchor tui_creation_wire
+<br><h2>Creation of a Wire</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+# create a vector from two points
+vxy = geompy.MakeVector(px, py)
+
+# create an arc from three points
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# add an object in the study
+id_wire = geompy.addToStudy(wire,"Wire")
+
+# display the wire
+gg.createAndDisplayGO(id_wire)
+\endcode
+
+\anchor tui_creation_face
+<br><h2>Creation of a Face</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+pxyz = geompy.MakeVertex(100., 100., 100.)
+
+# create a vector from two points
+vxy = geompy.MakeVector(px, py)
+
+# create an arc from three points
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create sketchers
+sketcher1 = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW",
+ [100,0,0, 1,1,1, -1,1,0])
+sketcher2 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW")
+sketcher3 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW")
+isPlanarFace = 1
+
+# create a face from the wire
+face1 = geompy.MakeFace(wire, isPlanarFace)
+
+# create faces from two wires
+face2 = geompy.MakeFaceWires([wire, sketcher1],isPlanarFace)
+face3 = geompy.MakeFaces([sketcher2, sketcher3],isPlanarFace)
+
+# add objects in the study
+id_face1 = geompy.addToStudy(face1,"Face1")
+id_face2 = geompy.addToStudy(face2,"Face2")
+id_face3 = geompy.addToStudy(face3,"Face3")
+
+# display the faces
+gg.createAndDisplayGO(id_face1)
+gg.setDisplayMode(id_face1,1)
+gg.setTransparency(id_face1,0.2)
+gg.createAndDisplayGO(id_face2)
+gg.setDisplayMode(id_face2,1)
+gg.setTransparency(id_face2,0.2)
+gg.createAndDisplayGO(id_face3)
+gg.setDisplayMode(id_face3,1)
+gg.setTransparency(id_face3,0.2)
+\endcode
+
+\anchor tui_creation_shell
+<br><h2>Creation of a Shell</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+#create vertices
+p0 = geompy.MakeVertex( 0., 0., 0.)
+pxyz = geompy.MakeVertex( 5., 5., 40.)
+
+# 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")
+isPlanarFace = 1
+
+# create a face from two wires
+face = geompy.MakeFaces([sketcher1, sketcher2],isPlanarFace)
+
+# create a prism
+prism = geompy.MakePrism(face, p0, pxyz)
+
+# explode the prism into faces
+prism_faces = geompy.SubShapeAllSorted(prism, geompy.ShapeType["FACE"])
+
+# create a shell from a set of faces
+shell = geompy.MakeShell([prism_faces[0], prism_faces[2], prism_faces[3],
+ prism_faces[7], prism_faces[9]])
+
+# add objects in the study
+id_shell = geompy.addToStudy(shell,"Shell")
+
+# display the shell
+gg.createAndDisplayGO(id_shell)
+gg.setDisplayMode(id_shell,1)
+\endcode
+
+\anchor tui_creation_solid
+<br><h2>Creation of a Solid</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+#create vertices
+p0 = geompy.MakeVertex( 0., 0., 0.)
+pz = geompy.MakeVertex( 0., 0., 40.)
+
+# create sketchers
+sketcher = geompy.MakeSketcher("Sketcher:F -50 -50:TT 100 -50:R 0:C 50 70:R 0:L 100:WW")
+
+# create faces from two wires
+face = geompy.MakeFace(sketcher,1)
+
+# create a prism
+prism = geompy.MakePrism(face, p0, pz)
+
+# explode the prism into faces
+prism_faces = geompy.SubShapeAllSorted(prism, geompy.ShapeType["FACE"])
+
+# create a shell from a set of faces
+shell = geompy.MakeShell([prism_faces[0], prism_faces[1],
+ prism_faces[3], prism_faces[4],
+ prism_faces[5], prism_faces[2]])
+
+# create a solid, bounded by the given shells
+solid = geompy.MakeSolid([shell])
+
+# add objects in the study
+id_solid = geompy.addToStudy(solid,"Solid")
+
+# display the solid
+gg.createAndDisplayGO(id_solid)
+gg.setDisplayMode(id_solid,1)
+\endcode
+
+\anchor tui_creation_compound
+<br><h2>Creation of a Compound</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex( -30., -30., 50.)
+p2 = geompy.MakeVertex( -60., -60., 30.)
+p3 = geompy.MakeVertex( -30., -30., 10.)
+
+# create an arc from three points
+arc = geompy.MakeArc(p1, p2, p3)
+ShapeListCompound = []
+i = 0
+while i <= 3 :
+ S = geompy.MakeTranslation(arc, i * 50., 0., 0.)
+ ShapeListCompound.append(S)
+ i = i + 1
+
+# create a compund of the given shapes
+compound = geompy.MakeCompound(ShapeListCompound)
+
+# add object in the study
+id_compound = geompy.addToStudy(compound,"Compound")
+
+# display the compound
+gg.createAndDisplayGO(id_compound)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_basic_geom_objs_page Basic Geometrical Objects
+
+\anchor tui_creation_point
+<br><h2>Creation of a Point</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0., 0., 0.)
+p100 = geompy.MakeVertexWithRef(p0, 100., 100., 100.)
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex(0., 100., 0.)
+pz = geompy.MakeVertex(0., 0., 100.)
+
+# create a curve and a vertex on it
+Arc = geompy.MakeArc(py, pz, px)
+p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
+
+# add objects in the study
+id_p0 = geompy.addToStudy(p0, "Vertex 0")
+id_p100 = geompy.addToStudy(p100, "Vertex 100")
+id_px = geompy.addToStudy(px, "Vertex X")
+id_py = geompy.addToStudy(py, "Vertex Y")
+id_pz = geompy.addToStudy(pz, "Vertex Z")
+id_Arc = geompy.addToStudy(Arc, "Arc")
+id_p_on_arc = geompy.addToStudy(p_on_arc, "Vertex on Arc")
+
+# display vertices
+gg.createAndDisplayGO(id_p0)
+gg.createAndDisplayGO(id_p100)
+gg.createAndDisplayGO(id_Arc)
+gg.createAndDisplayGO(id_p_on_arc)
+\endcode
+
+\anchor tui_creation_line
+<br><h2>Creation of a Line</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0., 0., 0.)
+p100 = geompy.MakeVertexWithRef(p0, 100., 100., 100.)
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+# create a vector from two points
+vxy = geompy.MakeVector(px, py)
+
+# create a line from a point and a vector
+line1 = geompy.MakeLine(pz, vxy)
+
+#create a line from two points
+line2 = geompy.MakeLineTwoPnt(p0, p100)
+
+# add objects in the study
+id_vxy = geompy.addToStudy(vxy, "Vector")
+id_line1 = geompy.addToStudy(line1,"Line1")
+id_line2 = geompy.addToStudy(line2,"Line2")
+
+# display lines
+gg.createAndDisplayGO(id_vxy)
+gg.createAndDisplayGO(id_line1)
+gg.createAndDisplayGO(id_line2)
+\endcode
+
+\anchor tui_creation_circle
+<br><h2>Creation of a Circle</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0., 0., 0.)
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+
+# create a vector on two points
+vxy = geompy.MakeVector(px, py)
+
+# create a circle from a point, a vector and a radius
+circle1 = geompy.MakeCircle(pz, vxy, 30)
+
+#create a circle from three points
+circle2 = geompy.MakeCircleThreePnt(p0, px, py)
+
+# add objects in the study
+id_vxy = geompy.addToStudy(vxy, "Vector")
+id_circle1 = geompy.addToStudy(circle1,"Circle1")
+id_circle2 = geompy.addToStudy(circle2,"Circle2")
+
+# display circles
+gg.createAndDisplayGO(id_vxy)
+gg.createAndDisplayGO(id_circle1)
+gg.createAndDisplayGO(id_circle2)
+\endcode
+
+\anchor tui_creation_ellipse
+<br><h2>Creation of an Ellipse</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0., 0., 0.)
+p50 = geompy.MakeVertex(50., 50., 50.)
+
+# create a vector from two points
+vector = geompy.MakeVector(p0, p50)
+
+# create an ellipse from a point, a vector and radiuses
+ellipse = geompy.MakeEllipse(p50, vector, 50, 25)
+
+# add objects in the study
+id_vector = geompy.addToStudy(vector, "Vector")
+id_ellipse = geompy.addToStudy(ellipse,"Ellipse")
+
+# display the ellipse and its normal vector
+gg.createAndDisplayGO(id_vector)
+gg.createAndDisplayGO(id_ellipse)
+\endcode
+
+\anchor tui_creation_curve
+<br><h2>Creation of a Curve</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+p1 = geompy.MakeVertex(50. , 100., 200.)
+p2 = geompy.MakeVertex(150., 50., 100.)
+p3 = geompy.MakeVertex(100., 150., 170.)
+p4 = geompy.MakeVertex(200., 200., 150.)
+
+# create a polyline from a list of points
+polyline = geompy.MakePolyline([p0, p1, p2, p3, p4])
+
+# create a bezier curve from a list of points
+bezier = geompy.MakeBezier([p0, p1, p2, p3, p4])
+
+#create a b-spline curve from a list of points
+interpol = geompy.MakeInterpol([p0, p1, p2, p3, p4])
+
+# add objects in the study
+id_p0 = geompy.addToStudy(p0, "Point1")
+id_p1 = geompy.addToStudy(p1, "Point2")
+id_p2 = geompy.addToStudy(p2, "Point3")
+id_p3 = geompy.addToStudy(p3, "Point4")
+id_p4 = geompy.addToStudy(p4, "Point5")
+id_polyline = geompy.addToStudy(polyline, "Polyline")
+id_bezier = geompy.addToStudy(bezier, "Bezier")
+id_interpol = geompy.addToStudy(interpol, "Interpol")
+
+# display the points and the curves
+gg.createAndDisplayGO(id_p0)
+gg.createAndDisplayGO(id_p1)
+gg.createAndDisplayGO(id_p2)
+gg.createAndDisplayGO(id_p3)
+gg.createAndDisplayGO(id_p4)
+gg.createAndDisplayGO(id_polyline)
+gg.createAndDisplayGO(id_bezier)
+gg.createAndDisplayGO(id_interpol)
+\endcode
+
+\anchor tui_creation_vector
+<br><h2>Creation of a Vector</h2>
+
+\code
+mport geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p1 = geompy.MakeVertex(10., 50., 20.)
+p2 = geompy.MakeVertex(70., 70., 70.)
+
+# create a vector from two points
+vector1 = geompy.MakeVector(p1, p2)
+
+# create a vector from the given components
+vector2 = geompy.MakeVectorDXDYDZ(30, 30, 100)
+
+# add objects in the study
+id_p1 = geompy.addToStudy(p1, "Point1")
+id_p2 = geompy.addToStudy(p2, "Point2")
+id_vector1 = geompy.addToStudy(vector1,"Vector1")
+id_vector2 = geompy.addToStudy(vector2,"Vector2")
+
+# display the points and the vectors
+gg.createAndDisplayGO(id_p1)
+gg.createAndDisplayGO(id_p2)
+gg.createAndDisplayGO(id_vector1)
+gg.createAndDisplayGO(id_vector2)
+\endcode
+
+\anchor tui_creation_plane
+<br><h2>Creation of a Plane</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p1 = geompy.MakeVertex( 0., 0., 100.)
+p2 = geompy.MakeVertex(100., 0., 0.)
+p3 = geompy.MakeVertex(200., 200., 200.)
+p4 = geompy.MakeVertex(100., 100., 0.)
+p5 = geompy.MakeVertex(0. , 100., 0.)
+
+# create a vector from the given components
+vector = geompy.MakeVectorDXDYDZ(100., 100., 100.)
+
+# create a vector from two points
+vector_arc = geompy.MakeVector(p2, p5)
+
+# create an arc from three points
+arc = geompy.MakeArc(p2, p4, p5)
+
+# create a wire
+wire = geompy.MakeWire([vector_arc, arc])
+
+# create a face
+isPlanarWanted = 1
+face = geompy.MakeFace(wire, isPlanarWanted)
+trimsize = 1000.
+
+# create a plane from a point, a vector and a trimsize
+plane1 = geompy.MakePlane(p1, vector, trimsize)
+
+# create a plane from three points and a trimsize
+plane2 = geompy.MakePlaneThreePnt(p1, p2, p3, trimsize)
+
+# create a plane from the given face
+plane3 = geompy.MakePlaneFace(face, trimsize)
+
+# add objects in the study
+id_face = geompy.addToStudy(face, "Face")
+id_plane1 = geompy.addToStudy(plane1,"Plane1")
+id_plane2 = geompy.addToStudy(plane2,"Plane2")
+id_plane3 = geompy.addToStudy(plane3,"Plane3")
+
+# display the points and the vectors
+gg.createAndDisplayGO(id_face)
+gg.createAndDisplayGO(id_plane1)
+gg.createAndDisplayGO(id_plane2)
+gg.createAndDisplayGO(id_plane3)
+gg.setDisplayMode(id_plane1,1)
+gg.setTransparency(id_plane1,0.5)
+gg.setDisplayMode(id_plane2,1)
+gg.setTransparency(id_plane2,0.5)
+gg.setDisplayMode(id_plane3,1)
+gg.setTransparency(id_plane3,0.5)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_basic_operations_page Basic Operations
+
+\anchor tui_partition
+<br><h2>Partition</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p0 = geompy.MakeVertex( 0., 0., 0.)
+p200 = geompy.MakeVertex(200., 200., 200.)
+pz = geompy.MakeVertex( 0., 0., 100.)
+
+# create a vector
+vxyz = geompy.MakeVectorDXDYDZ(100., 100., 100.)
+
+# create a box from two points
+box = geompy.MakeBoxTwoPnt(p0, p200)
+
+# create a plane
+trimsize = 500.
+plane = geompy.MakePlane(pz, vxyz, trimsize)
+
+# create partition objects
+partition1 = geompy.MakePartition([box], [plane])
+partition2 = geompy.Partition([box], [plane])
+partition3 = geompy.MakeHalfPartition(box, plane)
+
+# add objects in the study
+id_box = geompy.addToStudy(box,"Box")
+id_plane = geompy.addToStudy(plane,"Plane")
+id_partition1 = geompy.addToStudy(partition1,"MakePartition")
+id_partition2 = geompy.addToStudy(partition2,"Partition")
+id_partition3 = geompy.addToStudy(partition3,"MakeHalfPartition")
+
+# display the partition objects and the plane
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_plane)
+gg.setDisplayMode(id_plane,1)
+gg.createAndDisplayGO(id_partition1)
+gg.createAndDisplayGO(id_partition2)
+gg.createAndDisplayGO(id_partition3)
+\endcode
+
+\anchor tui_archimede
+<br><h2>Archimede</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p0 = geompy.MakeVertex( 0., 0., 0.)
+p200 = geompy.MakeVertex(200., 200., 200.)
+
+# create a box from two points
+box = geompy.MakeBoxTwoPnt(p0, p200)
+
+# perform an Archimede operation on the selected shape with selected parameters
+weight = 1000000.
+waterdensity = 1.
+meshingdeflection = 0.01
+archimede = geompy.Archimede(box, weight, waterdensity, meshingdeflection)
+
+# add objects in the study
+id_box = geompy.addToStudy(box,"Box")
+id_archimede = geompy.addToStudy(archimede,"Archimede")
+
+# display the box and the result of Archimede operation
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_archimede)
+gg.setDisplayMode(id_archimede,1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_blocks_operations_page Blocks Operations
+
+\anchor tui_multi_transformation
+<br><h2>Multi Transformation</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p_25_25_50 = geompy.MakeVertex(25., 25., 50.)
+p_50_25_25 = geompy.MakeVertex(50., 25., 25.)
+p_25_50_25 = geompy.MakeVertex(25., 50., 25.)
+
+box = geompy.MakeBoxDXDYDZ(50, 50, 50)
+
+top_face = geompy.GetFaceNearPoint(box, p_25_25_50)
+yz_face = geompy.GetFaceNearPoint(box, p_50_25_25)
+xz_face = geompy.GetFaceNearPoint(box, p_25_50_25)
+
+top_face_ind = geompy.GetSubShapeID(box, top_face)
+yz_face_ind = geompy.GetSubShapeID(box, yz_face)
+xz_face_ind = geompy.GetSubShapeID(box, xz_face)
+
+# Multi-transformate block and glue the result
+box_tr1 = geompy.MakeMultiTransformation1D(box, yz_face_ind, top_face_ind, 3)
+box_tr2 = geompy.MakeMultiTransformation2D(box, xz_face_ind, yz_face_ind, 3, top_face_ind, 0, 2)
+
+# add objects in the study
+id_box = geompy.addToStudy(box, "Box")
+id_box_tr1 = geompy.addToStudy(box_tr1, "Multi-transformed Block 1D")
+id_box_tr2 = geompy.addToStudy(box_tr2, "Multi-transformed Block 2D")
+
+# display the results
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_box_tr1)
+gg.createAndDisplayGO(id_box_tr2)
+\endcode
+
+\anchor tui_explode_on_blocks
+<br><h2>Explode on Blocks</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a box and a sphere
+box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+sphere = geompy.MakeSphereR(100)
+
+# make a compound
+compound = geompy.MakeCompound([box, sphere])
+
+# get all the blocks of the given compound, by criteria: min_nb_faces <= nb. of faces <= max_nb_faces
+min_nb_faces = 6
+max_nb_faces = 6
+make_block_explode = geompy.MakeBlockExplode(compound, min_nb_faces, max_nb_faces)
+
+# add objects in the study
+id_compound = geompy.addToStudy(compound, "Compound")
+id_make_block_explode = geompy.addToStudyInFather(compound, make_block_explode[0], "MakeBlockExplode")
+
+# display the results
+gg.createAndDisplayGO(id_compound)
+gg.createAndDisplayGO(id_make_block_explode)
+gg.setDisplayMode(id_make_block_explode,1)
+\endcode
+
+\anchor tui_propagate
+<br><h2>Propagate</h2>
+
+\code
+import geompy
+import salome
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+# build all possible propagation groups
+listChains = geompy.Propagate(check_box)
+
+# add objects in the study
+geompy.addToStudy(check_box, "Box")
+ii = 1
+for chain in listChains:
+ geompy.addToStudyInFather(check_box, chain, "propagation chain " + `ii`)
+ ii = ii + 1
+ pass
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_boolean_operations_page Boolean Operations
+
+\anchor tui_fuse
+<br><h2>Fuse</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(25, 55, 0)
+p2 = geompy.MakeVertex( 0, 0, 0)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a sphere
+sphere = geompy.MakeSphereR(40)
+
+# fuse
+fuse = geompy.MakeFuse(cylinder, sphere)
+
+# add objects in the study
+id_cylinder = geompy.addToStudy(cylinder, "Cylinder")
+id_sphere = geompy.addToStudy(sphere, "Sphere")
+id_fuse = geompy.addToStudy(fuse, "Fuse")
+
+# display results
+gg.createAndDisplayGO(id_cylinder)
+gg.setDisplayMode(id_cylinder,1)
+gg.createAndDisplayGO(id_sphere)
+gg.setDisplayMode(id_sphere,1)
+gg.createAndDisplayGO(id_fuse)
+gg.setDisplayMode(id_fuse,1)
+\endcode
+
+\anchor tui_common
+<br><h2>Common</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(25, 55, 0)
+p2 = geompy.MakeVertex( 0, 0, 0)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a sphere
+sphere = geompy.MakeSphereR(40)
+
+# make common
+common = geompy.MakeCommon(cylinder, sphere)
+
+# add objects in the study
+id_common = geompy.addToStudy(common, "Common")
+
+# display the results
+gg.createAndDisplayGO(id_common)
+gg.setDisplayMode(id_common,1)
+\endcode
+
+\anchor tui_cut
+<br><h2>Cut</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(25, 55, 0)
+p2 = geompy.MakeVertex( 0, 0, 0)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a sphere
+sphere = geompy.MakeSphereR(40)
+
+#cut
+cut = geompy.MakeCut(cylinder, sphere)
+
+# add objects in the study
+id_cut = geompy.addToStudy(cut, "Cut")
+
+# display the results
+gg.createAndDisplayGO(id_cut)
+gg.setDisplayMode(id_cut,1)
+\endcode
+
+\anchor tui_section
+<br><h2>Section</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(25, 55, 0)
+p2 = geompy.MakeVertex( 0, 0, 0)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a sphere
+sphere = geompy.MakeSphereR(40)
+
+# make a section
+section = geompy.MakeSection(cylinder, sphere)
+
+# add objects in the study
+id_section = geompy.addToStudy(section, "Section")
+
+# display the results
+gg.createAndDisplayGO(id_section)
+gg.setDisplayMode(id_section,1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_building_by_blocks_page Building by Blocks
+
+<br><h2>Quadrangle Face</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p1 = geompy.MakeVertex( 0., 0., 0.)
+p2 = geompy.MakeVertex(150., 30., 0.)
+p3 = geompy.MakeVertex( 0., 120., 50.)
+p4 = geompy.MakeVertex( 0., 40., 70.)
+
+# create edges
+edge1 = geompy.MakeEdge(p1, p2)
+edge2 = geompy.MakeEdge(p2, p3)
+edge3 = geompy.MakeEdge(p3, p4)
+edge4 = geompy.MakeEdge(p4, p1)
+
+# create a quadrangle face from four edges
+qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
+
+# create a quadrangle face from two edges
+qface2 = geompy.MakeQuad2Edges(edge1, edge3)
+
+# create a quadrangle from four points in its corners
+qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
+
+# add objects in the study
+id_p1 = geompy.addToStudy(p1,"Point1")
+id_p2 = geompy.addToStudy(p2,"Point2")
+id_p3 = geompy.addToStudy(p3,"Point3")
+id_p4 = geompy.addToStudy(p4,"Point4")
+id_edge1 = geompy.addToStudy(edge1,"Edge1")
+id_edge2 = geompy.addToStudy(edge2,"Edge2")
+id_edge3 = geompy.addToStudy(edge3,"Edge3")
+id_edge4 = geompy.addToStudy(edge4,"Edge4")
+id_qface1 = geompy.addToStudy(qface1,"Qface1")
+id_qface2 = geompy.addToStudy(qface2,"Qface2")
+id_qface3 = geompy.addToStudy(qface3,"Qface3")
+
+# display the vertices, the edges and the quadrangle faces
+gg.createAndDisplayGO(id_p1)
+gg.createAndDisplayGO(id_p2)
+gg.createAndDisplayGO(id_p3)
+gg.createAndDisplayGO(id_p4)
+gg.createAndDisplayGO(id_edge1)
+gg.createAndDisplayGO(id_edge2)
+gg.createAndDisplayGO(id_edge3)
+gg.createAndDisplayGO(id_edge4)
+gg.createAndDisplayGO(id_qface1)
+gg.setDisplayMode(id_qface1,1)
+gg.createAndDisplayGO(id_qface2)
+gg.setDisplayMode(id_qface2,1)
+gg.createAndDisplayGO(id_qface3)
+gg.setDisplayMode(id_qface3,1)
+\endcode
+
+<br><h2>Hexagonal Solid</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex( 0., 0., 0.)
+p1 = geompy.MakeVertex( 0., 0., 40.)
+p2 = geompy.MakeVertex( 70., -15., 0.)
+p3 = geompy.MakeVertex( 70., -15., 70.)
+
+p4 = geompy.MakeVertex( 0., 70., 0.)
+p5 = geompy.MakeVertex( 0., 70., 40.)
+p6 = geompy.MakeVertex( 70., 70., 0.)
+p7 = geompy.MakeVertex( 70., 70., 70.)
+
+p8 = geompy.MakeVertex( 0., -50., 0.)
+p9 = geompy.MakeVertex( 0., -50., 40.)
+p10 = geompy.MakeVertex( 70., -35., 0.)
+p11 = geompy.MakeVertex( 70., -35., 70.)
+
+# create faces
+qface1 = geompy.MakeQuad4Vertices(p0, p1, p2, p3)
+qface2 = geompy.MakeQuad4Vertices(p4, p5, p6, p7)
+qface3 = geompy.MakeQuad4Vertices(p0, p1, p4, p5)
+qface4 = geompy.MakeQuad4Vertices(p2, p3, p6, p7)
+qface5 = geompy.MakeQuad4Vertices(p0, p2, p4, p6)
+qface6 = geompy.MakeQuad4Vertices(p1, p3, p5, p7)
+qface7 = geompy.MakeQuad4Vertices(p8, p9, p10, p11)
+
+# create a hexahedral solid between two given faces
+solid1 = geompy.MakeHexa2Faces(qface1, qface7)
+
+# create a hexahedral solid, bounded by six given faces
+solid2 = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
+
+# add objects in the study
+geompy.addToStudy(qface1,"qface1")
+geompy.addToStudy(qface2,"qface2")
+geompy.addToStudy(qface3,"qface3")
+geompy.addToStudy(qface4,"qface4")
+geompy.addToStudy(qface5,"qface5")
+geompy.addToStudy(qface6,"qface6")
+geompy.addToStudy(qface7,"qface7")
+
+id_solid1 = geompy.addToStudy(solid1,"Solid1")
+id_solid2 = geompy.addToStudy(solid2,"Solid2")
+
+# display solids
+gg.createAndDisplayGO(id_solid1)
+gg.setDisplayMode(id_solid1, 1)
+gg.createAndDisplayGO(id_solid2)
+gg.setDisplayMode(id_solid2, 1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_complex_objs_page Complex Objects
+
+\anchor tui_creation_prism
+<br><h2>Creation of a Prism</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex( 0., 0., 0.)
+p2 = geompy.MakeVertex( 100., 0., 0.)
+p3 = geompy.MakeVertex( 100., 100., 0.)
+p4 = geompy.MakeVertex( 0., 100., 0.)
+p5 = geompy.MakeVertex( 0., 0., 60.)
+p6 = geompy.MakeVertex(-100., 0., 0.)
+p7 = geompy.MakeVertex(-100.,-100., 0.)
+p8 = geompy.MakeVertex( 0.,-100., 0.)
+
+# create a vector from the given components
+vector = geompy.MakeVectorDXDYDZ(50., 50., 50.)
+
+#create vectors from two points
+vector1_arc1 = geompy.MakeVector(p1, p2)
+vector2_arc1 = geompy.MakeVector(p1, p4)
+vector1_arc2 = geompy.MakeVector(p1, p6)
+vector2_arc2 = geompy.MakeVector(p1, p8)
+
+# create arcs from three points
+arc1 = geompy.MakeArc(p2, p3, p4)
+arc2 = geompy.MakeArc(p6, p7, p8)
+
+# create wires
+wire1 = geompy.MakeWire([vector1_arc1, arc1, vector2_arc1])
+wire2 = geompy.MakeWire([vector1_arc2, arc2, vector2_arc2])
+
+# create faces
+isPlanarWanted = 1
+face1 = geompy.MakeFace(wire1, isPlanarWanted)
+face2 = geompy.MakeFace(wire2, isPlanarWanted)
+
+# create prisms
+prism1 = geompy.MakePrism(face2, p1, p5)
+prism2 = geompy.MakePrismVecH(face1, vector, 50)
+
+# add objects in the study
+id_face1 = geompy.addToStudy(face1,"Face1")
+id_face2 = geompy.addToStudy(face2,"Face2")
+id_prism1 = geompy.addToStudy(prism1,"Prism1")
+id_prism2 = geompy.addToStudy(prism2,"Prism2")
+
+# display cylinders
+gg.createAndDisplayGO(id_face1)
+gg.setDisplayMode(id_face1,1)
+gg.createAndDisplayGO(id_face2)
+gg.setDisplayMode(id_face2,1)
+gg.createAndDisplayGO(id_prism1)
+gg.setDisplayMode(id_prism1,1)
+gg.createAndDisplayGO(id_prism2)
+gg.setDisplayMode(id_prism2,1)
+\endcode
+
+\anchor tui_creation_revolution
+<br><h2>Creation of a Revolution</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex( 10., 10., 10.)
+p2 = geompy.MakeVertex( 15., 15., 50.)
+p3 = geompy.MakeVertex( 40., 40., 0.)
+
+#create vectors from two points
+vector1 = geompy.MakeVector(p1, p2)
+vector2 = geompy.MakeVector(p1, p3)
+
+# create a vector from the given components
+vector3 = geompy.MakeVectorDXDYDZ(-20., -20., 100.)
+
+# create a wire
+wire = geompy.MakeWire([vector1, vector2])
+
+# create a revolution
+revolution = geompy.MakeRevolution(wire, vector3, 2.3)
+
+# add objects in the study
+id_vector3 = geompy.addToStudy(vector3,"Axis")
+id_wire = geompy.addToStudy(wire,"Wire")
+id_revolution = geompy.addToStudy(revolution,"Revolution")
+
+# display the vector, the wire and the revolution
+gg.createAndDisplayGO(id_vector3)
+gg.createAndDisplayGO(id_wire)
+gg.createAndDisplayGO(id_revolution)
+gg.setDisplayMode(id_revolution,1)
+\endcode
+
+\anchor tui_creation_filling
+<br><h2>Creation of a Filling</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+mindeg = 2
+maxdeg = 5
+tol3d = 0.0001
+tol2d = 0.0001
+nbiter = 5
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex( -30., -30., 50.)
+p2 = geompy.MakeVertex( -60., -60., 30.)
+p3 = geompy.MakeVertex( -30., -30., 10.)
+
+# create an arc from three points
+arc = geompy.MakeArc(p1, p2, p3)
+ShapeListCompound = []
+i = 0
+while i <= 3 :
+ S = geompy.MakeTranslation(arc, i * 50., 0., 0.)
+ ShapeListCompound.append(S)
+ i = i + 1
+
+compound = geompy.MakeCompound(ShapeListCompound)
+
+# create a filling
+filling = geompy.MakeFilling(compound, mindeg, maxdeg, tol3d, tol2d, nbiter)
+
+# add objects in the study
+id_compound = geompy.addToStudy(compound,"Compound")
+id_filling = geompy.addToStudy(filling,"Filling")
+
+# display the compound and the filling
+gg.createAndDisplayGO(id_compound)
+gg.createAndDisplayGO(id_filling)
+gg.setDisplayMode(id_filling,1)
+\endcode
+
+\anchor tui_creation_pipe
+<br><h2>Creation of a Pipe</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+px = geompy.MakeVertex(100., 0. , 0. )
+py = geompy.MakeVertex(0. , 100., 0. )
+pz = geompy.MakeVertex(0. , 0. , 100.)
+pxyz = geompy.MakeVertex(100., 100., 100.)
+
+# create a vector from two points
+vxy = geompy.MakeVector(px, py)
+
+# create an arc from three points
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create an edge
+edge = geompy.MakeEdge(p0, pxyz)
+
+# create a pipe
+pipe = geompy.MakePipe(wire, edge)
+
+# add objects in the study
+id_wire = geompy.addToStudy(wire,"Wire")
+id_edge = geompy.addToStudy(edge,"Edge")
+id_pipe = geompy.addToStudy(pipe,"Pipe")
+
+# display the wire, the edge (path) and the pipe
+gg.createAndDisplayGO(id_wire)
+gg.createAndDisplayGO(id_edge)
+gg.createAndDisplayGO(id_pipe)
+gg.setDisplayMode(id_pipe,1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_creating_geom_objs_page Creating Geometric Objects
+
+<ul>
+<li>\subpage tui_basic_geom_objs_page</li>
+<li>\subpage tui_primitives_page</li>
+<li>\subpage tui_complex_objs_page</li>
+<li>\subpage tui_working_with_groups_page</li>
+<li>\subpage tui_building_by_blocks_page</li>
+<li>\subpage tui_sketcher_page</li>
+<li>\subpage tui_advanced_geom_objs_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_measurement_tools_page Measurement Tools
+
+<br><h2>Point Coordinates</h2>
+
+\code
+import math
+import geompy
+
+# create a point
+point = geompy.MakeVertex(15., 23., 80.)
+
+# get the coordinates of the point and check its values
+coords = geompy.PointCoordinates(point)
+
+# check the obtained coordinate values
+tolerance = 1.e-07
+def IsEqual(val1, val2): return (math.fabs(val1 - val2) < tolerance)
+
+if IsEqual(coords[0], 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.):
+ print "All values are OK."
+else :
+ print "Coordinates of point must be (15, 23, 80), but returned (",
+ print coords[0], ", ", coords[1], ", ", coords[2], ")"
+ pass
+\endcode
+
+<br><h2>Basic Properties</h2>
+
+\code
+import geompy
+import math
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+props = geompy.BasicProperties(box)
+print "\nBox 100x30x100 Basic Properties:"
+print " Wires length: ", props[0]
+print " Surface area: ", props[1]
+print " Volume : ", props[2]
+length = math.sqrt((props[0] - 1840)*(props[0] - 1840))
+area = math.sqrt((props[1] - 32000)*(props[1] - 32000))
+volume = math.sqrt((props[2] - 300000)*(props[2] - 300000))
+if length > 1e-7 or area > 1e-7 or volume > 1e-7:
+ print "While must be:"
+ print " Wires length: ", 1840
+ print " Surface area: ", 32000
+ print " Volume : ", 300000.
+\endcode
+
+<br><h2>Center of masses</h2>
+
+\code
+import geompy
+import math
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+cm = geompy.MakeCDG(box)
+if cm is None:
+ raise RuntimeError, "MakeCDG(box) failed"
+else:
+ print "\nCentre of gravity of box has been successfully obtained:"
+ coords = geompy.PointCoordinates(cm)
+ print "(", coords[0], ", ", coords[1], ", ", coords[2], ")"
+ dx = math.sqrt((coords[0] - 50)*(coords[0] - 50))
+ dy = math.sqrt((coords[1] - 15)*(coords[1] - 15))
+ dz = math.sqrt((coords[2] - 50)*(coords[2] - 50))
+ if dx > 1e-7 or dy > 1e-7 or dz > 1e-7:
+ print "But must be (50, 15, 50)"
+\endcode
+
+<br><h2>Inertia</h2>
+
+\code
+import geompy
+import math
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+In = geompy.Inertia(box)
+print "\nInertia matrix of box 100x30x100:"
+print " (", In[0], ", ", In[1], ", ", In[2], ")"
+print " (", In[3], ", ", In[4], ", ", In[5], ")"
+print " (", In[6], ", ", In[7], ", ", In[8], ")"
+print "Main moments of inertia of box 100x30x100:"
+print " Ix = ", In[9], ", Iy = ", In[10], ", Iz = ", In[11]
+\endcode
+
+<br><h2>Check Free Boundaries</h2>
+
+\code
+import os
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create boxes
+box1 = geompy.MakeBox(0,0,0,100,50,100)
+box2 = geompy.MakeBox(100,0,0,250,50,100)
+
+# make a compound
+compound = geompy.MakeCompound([box1, box2])
+
+# import from *.brep
+ImportFromBREP = geompy.ImportBREP(os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep")
+
+# get a face
+faces = geompy.SubShapeAllSorted(ImportFromBREP, geompy.ShapeType["FACE"])
+
+# get the free boundary for face 32
+Res = geompy.GetFreeBoundary(faces[32])
+isSuccess = Res[0]
+ClosedWires = Res[1]
+OpenWires = Res[2]
+
+if isSuccess == 1 :
+ print "Checking free boudaries is OK."
+else :
+ print "Checking free boudaries is KO!"
+print "len(ClosedWires) = ", len(ClosedWires)
+
+i = 0
+for wire in ClosedWires :
+ wire_name = "Face 32 -> Close wires : WIRE %d"%(i+1)
+ geompy.addToStudy(ClosedWires[i], wire_name)
+ if i < len(ClosedWires) :
+ i = i+ 1
+
+print "len(OpenWires) = ", len(OpenWires)
+
+i = 0
+for wire in OpenWires :
+ wire_name = "Face 32 -> Open wires : WIRE %d"%(i+1)
+ geompy.addToStudy(OpenWires[i], wire_name)
+ if i < len(OpenWires) :
+ i = i+ 1
+
+# get the free boundary for face 41
+Res = geompy.GetFreeBoundary(faces[41])
+isSuccess = Res[0]
+ClosedWires = Res[1]
+OpenWires = Res[2]
+
+if isSuccess == 1 :
+ print "Checking free boudaries is OK."
+else :
+ print "Checking free boudaries is KO!"
+print "len(ClosedWires) = ", len(ClosedWires)
+
+i = 0
+for wire in ClosedWires :
+ wire_name = "Face 41 -> Close wires : WIRE %d"%(i+1)
+ geompy.addToStudy(ClosedWires[i], wire_name)
+ if i < len(ClosedWires) :
+ i = i+ 1
+
+print "len(OpenWires) = ", len(OpenWires)
+
+i = 0
+for wire in OpenWires :
+ wire_name = "Face 41 -> Open wires : WIRE %d"%(i+1)
+ geompy.addToStudy(OpenWires[i], wire_name)
+ if i < len(OpenWires) :
+ i = i+ 1
+
+# add the imported object to the study
+id_ImportFromBREP = geompy.addToStudy(ImportFromBREP, "ImportFromBREP")
+salome.sg.updateObjBrowser(1)
+\endcode
+
+
+<br><h2>Check Free Faces</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(35, 35, 0)
+p2 = geompy.MakeVertex(35, 35, 50)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+cylinder = geompy.MakeCone(p1, v, 30, 20, 20)
+
+# create a cone
+cone = geompy.MakeCone(p1, v, 70, 40, 60)
+
+# make cut
+cut = geompy.MakeCut(cone, cylinder)
+
+# get faces as sub-shapes
+faces = []
+faces = geompy.SubShapeAllSorted(cut, geompy.ShapeType["FACE"])
+f_2 = geompy.GetSubShapeID(cut, faces[0])
+
+# remove one face from the shape
+cut_without_f_2 = geompy.SuppressFaces(cut, [f_2])
+
+# suppress the specified wire
+result = geompy.GetFreeFacesIDs(cut_without_f_2)
+print "A number of free faces is ", len(result)
+
+# add objects in the study
+all_faces = geompy.SubShapeAllSorted(cut_without_f_2, geompy.ShapeType["FACE"])
+for face in all_faces :
+ sub_shape_id = geompy.GetSubShapeID(cut_without_f_2, face)
+ if result.count(sub_shape_id) > 0 :
+ face_name = "Free face %d"%(sub_shape_id)
+ geompy.addToStudy(face, face_name)
+
+# in this example all faces from cut_without_f_2 are free
+id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")
+
+# display the results
+gg.createAndDisplayGO(id_cut_without_f_2)
+gg.setDisplayMode(id_cut_without_f_2,1)
+\endcode
+
+
+
+<br><h2>Bounding Box</h2>
+
+\code
+import geompy
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+bb = geompy.BoundingBox(box)
+print "\nBounding Box of box 100x30x100:"
+print " Xmin = ", bb[0], ", Xmax = ", bb[1]
+print " Ymin = ", bb[2], ", Ymax = ", bb[3]
+print " Zmin = ", bb[4], ", Zmax = ", bb[5]
+\endcode
+
+<br><h2>Minimal Distance</h2>
+
+\code
+import geompy
+
+# create boxes
+box1 = geompy.MakeBoxDXDYDZ(100,30,100)
+box2 = geompy.MakeBox(105,0,0,200,30,100)
+min_dist = geompy.MinDistance(box1,box2)
+print "\nMinimal distance between box1 and box2 = ", min_dist
+\endcode
+
+<br><h2>Tolerance</h2>
+
+\code
+import geompy
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+Toler = geompy.Tolerance(box)
+print "\nBox 100x30x100 tolerance:"
+print " Face min. tolerance: ", Toler[0]
+print " Face max. tolerance: ", Toler[1]
+print " Edge min. tolerance: ", Toler[2]
+print " Edge max. tolerance: ", Toler[3]
+print " Vertex min. tolerance: ", Toler[4]
+print " Vertex max. tolerance: ", Toler[5]
+\endcode
+
+<br><h2>Angle</h2>
+
+\code
+import salome
+salome.salome_init()
+
+import math
+import geompy
+geompy.init_geom(salome.myStudy)
+
+OX = geompy.MakeVectorDXDYDZ(10, 0,0)
+OXY = geompy.MakeVectorDXDYDZ(10,10,0)
+
+# in one plane
+Angle = geompy.GetAngle(OX, OXY)
+
+print "\nAngle between OX and OXY = ", Angle
+if math.fabs(Angle - 45.0) > 1e-05:
+ print " Error: returned angle is", Angle, "while must be 45.0"
+ pass
+
+# not in one plane
+OXY_shift = geompy.MakeTranslation(OXY,10,-10,20)
+Angle = geompy.GetAngle(OX, OXY_shift)
+
+print "Angle between OX and OXY_shift = ", Angle
+if math.fabs(Angle - 45.0) > 1e-05:
+ print " Error: returned angle is", Angle, "while must be 45.0"
+ pass
+
+# not linear
+pnt1 = geompy.MakeVertex(0, 0, 0)
+pnt2 = geompy.MakeVertex(10, 0, 0)
+pnt3 = geompy.MakeVertex(20, 10, 0)
+arc = geompy.MakeArc(pnt1, pnt2, pnt3)
+Angle = geompy.GetAngle(OX, arc)
+
+if (math.fabs(Angle + 1.0) > 1e-6 or geompy.MeasuOp.IsDone()):
+ print "Error. Angle must not be computed on curvilinear edges"
+ pass
+
+\endcode
+
+
+
+<br><h2>What Is</h2>
+
+\code
+import geompy
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+Descr = geompy.WhatIs(box)
+print "\nBox 100x30x100 description:"
+print Descr
+\endcode
+
+<br><h2>Check Shape</h2>
+
+\code
+import geompy
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100,30,100)
+IsValid = geompy.CheckShape(box)
+if IsValid == 0:
+ raise RuntimeError, "Invalid box created"
+else:
+ print "\nBox is valid"
+\endcode
+
+<br><h2>Check Compound of Blocks</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create boxes
+box1 = geompy.MakeBox(0,0,0,100,50,100)
+box2 = geompy.MakeBox(100,0,0,250,50,100)
+
+# make a compound
+compound = geompy.MakeCompound([box1, box2])
+
+# glue the faces of the compound
+tolerance = 1e-5
+glue = geompy.MakeGlueFaces(compound, tolerance)
+IsValid = geompy.CheckCompoundOfBlocks(glue)
+if IsValid == 0:
+ raise RuntimeError, "Invalid compound created"
+else:
+ print "\nCompound is valid"
+\endcode
+
+*/
--- /dev/null
+/*!
+
+\page tui_primitives_page Primitives
+
+\anchor tui_creation_box
+<br><h2>Creation of a Box</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p0 = geompy.MakeVertex(15, 25, 35)
+p70 = geompy.MakeVertex(70, 70, 70)
+
+# create boxes
+box1 = geompy.MakeBoxDXDYDZ(10, 20, 30)
+box2 = geompy.MakeBox(10,20,30, 15,25,35)
+box3 = geompy.MakeBoxTwoPnt(p0, p70)
+
+# add objects in the study
+id_box1 = geompy.addToStudy(box1,"Box1")
+id_box2 = geompy.addToStudy(box2,"Box2")
+id_box3 = geompy.addToStudy(box3,"Box3")
+
+# display the boxes
+gg.createAndDisplayGO(id_box1)
+gg.setDisplayMode(id_box1,1)
+gg.createAndDisplayGO(id_box2)
+gg.setDisplayMode(id_box2,1)
+gg.createAndDisplayGO(id_box3)
+gg.setDisplayMode(id_box3,1)
+\endcode
+
+\anchor tui_creation_cylinder
+<br><h2>Creation of a Cylinder</h2>
+
+\code
+import geompy
+import salome
+
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(25, 35, 45)
+p2 = geompy.MakeVertex(70, 70, 70)
+v = geompy.MakeVector(p1, p2)
+
+# create cylinders
+height = 40
+
+radius1 = 15
+cylinder1 = geompy.MakeCylinder(p1, v, radius1, height)
+
+radius2 = 30
+cylinder2 = geompy.MakeCylinderRH(radius2, height)
+
+# add objects in the study
+id_cylinder1 = geompy.addToStudy(cylinder1,"Cylinder1")
+id_cylinder2 = geompy.addToStudy(cylinder2,"Cylinder2")
+
+# display the cylinders
+gg.createAndDisplayGO(id_cylinder1)
+gg.setDisplayMode(id_cylinder1,1)
+gg.createAndDisplayGO(id_cylinder2)
+gg.setDisplayMode(id_cylinder2,1)
+\endcode
+
+\anchor tui_creation_sphere
+<br><h2>Creation of a Sphere</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex
+p = geompy.MakeVertex(55, 45, 25)
+
+# create spheres
+radius1 = 20
+sphere1 = geompy.MakeSpherePntR(p, radius1)
+radius2 = 15
+sphere2 = geompy.MakeSphere(0, 0, 45, radius2)
+radius3 = 30
+sphere3 = geompy.MakeSphereR(radius3)
+
+# add objects in the study
+id_sphere1 = geompy.addToStudy(sphere1,"Sphere1")
+id_sphere2 = geompy.addToStudy(sphere2,"Sphere2")
+id_sphere3 = geompy.addToStudy(sphere3,"Sphere3")
+
+# display spheres
+gg.createAndDisplayGO(id_sphere1)
+gg.setDisplayMode(id_sphere1,1)
+gg.createAndDisplayGO(id_sphere2)
+gg.setDisplayMode(id_sphere2,1)
+gg.createAndDisplayGO(id_sphere3)
+gg.setDisplayMode(id_sphere3,1)
+\endcode
+
+\anchor tui_creation_torus
+<br><h2>Creation of a Torus</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(35, 40, 45)
+p2 = geompy.MakeVertex(35, 45, 70)
+v = geompy.MakeVector(p1, p2)
+
+# create toruses
+torus1 = geompy.MakeTorus(p1, v, 20, 10)
+torus2 = geompy.MakeTorusRR(30, 15)
+
+# add objects in the study
+id_torus1 = geompy.addToStudy(torus1,"Torus1")
+id_torus2 = geompy.addToStudy(torus2,"Torus2")
+
+# display toruses
+gg.createAndDisplayGO(id_torus1)
+gg.setDisplayMode(id_torus1,1)
+gg.createAndDisplayGO(id_torus2)
+gg.setDisplayMode(id_torus2,1)
+\endcode
+
+\anchor tui_creation_cone
+<br><h2>Creation of a Cone</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(35, 35, 0)
+p2 = geompy.MakeVertex(35, 35, 70)
+v = geompy.MakeVector(p1, p2)
+
+# create cones
+cone1 = geompy.MakeCone(p1, v, 17, 1, 20)
+cone2 = geompy.MakeConeR1R2H(30, 10, 30)
+
+# add objects in the study
+id_cone1 = geompy.addToStudy(cone1,"Cone1")
+id_cone2 = geompy.addToStudy(cone2,"Cone2")
+
+# display cones
+gg.createAndDisplayGO(id_cone1)
+gg.setDisplayMode(id_cone1,1)
+gg.createAndDisplayGO(id_cone2)
+gg.setDisplayMode(id_cone2,1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_repairing_operations_page Repairing Operations
+
+\anchor tui_shape_processing
+<br><h2>Shape Processing</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices, an edge, an arc, a wire, a face and a prism
+p1 = geompy.MakeVertex(0,0,0)
+p2 = geompy.MakeVertex(200,0,0)
+p3 = geompy.MakeVertex(100,150,0)
+edge = geompy.MakeEdge(p1,p2)
+arc = geompy.MakeArc(p1,p3,p2)
+wire = geompy.MakeWire([edge,arc])
+face = geompy.MakeFace(wire, 1)
+theShape = geompy.MakePrismVecH(face, edge, 130)
+
+# check the shape at the beginning
+print "Before ProcessShape:"
+isValid = geompy.CheckShape(theShape)
+if isValid == 0:
+ print "The shape is not valid"
+else:
+ print "The shape seems to be valid"
+
+# process the Shape
+Operators = ["FixShape"]
+Parameters = ["FixShape.Tolerance3d"]
+Values = ["1e-7"]
+PS = geompy.ProcessShape(theShape, Operators, Parameters, Values)
+
+# check the shape at the end
+print "After ProcessShape:"
+isValid = geompy.CheckShape(PS)
+if isValid == 0:
+ print "The shape is not valid"
+ raise RuntimeError, "It seems, that the ProcessShape() has failed"
+else:
+ print "The shape seems to be valid"
+
+# add in the study and display
+Id_Shape = geompy.addToStudy(theShape, "Invalid Shape")
+Id_PS = geompy.addToStudy(PS, "Processed Shape")
+gg.createAndDisplayGO(Id_Shape)
+gg.setDisplayMode(Id_Shape,1)
+gg.createAndDisplayGO(Id_PS)
+gg.setDisplayMode(Id_PS,1)
+\endcode
+
+\anchor tui_suppress_faces
+<br><h2>Suppress Faces</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+# The list of IDs (IDList) for suppress faces
+sup_faces = []
+sup_faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+
+# get indices of the sub-shape
+f1_id = geompy.GetSubShapeID(box, sup_faces[3])
+
+# remove faces from the given object (shape)
+result = geompy.SuppressFaces(box, [f1_id])
+
+# add objects in the study
+id_box = geompy.addToStudy(box, "Box")
+id_result = geompy.addToStudy(result, "Result")
+
+# display the results
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_result)
+gg.setDisplayMode(id_result,1)
+\endcode
+
+\anchor tui_close_contour
+<br><h2>Close Contour</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices and vectors
+p0 = geompy.MakeVertex( 0., 0., 0.)
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex( 0., 100., 0.)
+py1 = geompy.MakeVertex( 0., 140., 0.)
+pz = geompy.MakeVertex( 0., 0., 100.)
+vxy = geompy.MakeVector(px, py)
+
+# create an arc
+arc = geompy.MakeArc(py1, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# close an open wire by creation of an edge between ends
+wire_close = geompy.CloseContour(wire, [1], 0)
+
+# add objects in the study
+id_wire = geompy.addToStudy(wire, "Wire")
+id_wire_close = geompy.addToStudy(wire_close, "Wire close")
+
+# display the results
+gg.createAndDisplayGO(id_wire)
+gg.createAndDisplayGO(id_wire_close)
+\endcode
+
+\anchor tui_suppress_internal_wires
+<br><h2>Suppress Internal Wires</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(55, 65, 50)
+p2 = geompy.MakeVertex(55, 0, 50)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 100
+radius1 = 40
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(100, 100, 100)
+
+# make a cut
+cut = geompy.MakeCut(box, cylinder)
+
+# suppress all internal wires
+result = geompy.SuppressInternalWires(cut, [])
+
+# add objects in the study
+id_cut = geompy.addToStudy(cut, "Cut")
+id_result = geompy.addToStudy(result, "Result")
+
+# display the results
+gg.createAndDisplayGO(id_cut)
+gg.setDisplayMode(id_cut,1)
+gg.createAndDisplayGO(id_result)
+gg.setDisplayMode(id_result,1)
+\endcode
+
+\anchor tui_suppress_holes
+<br><h2>Suppress Holes</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(35, 35, 0)
+p2 = geompy.MakeVertex(35, 35, 50)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 20
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create a cone
+cone = geompy.MakeCone(p1, v, 70, 0, 80)
+
+# make a cut
+cut = geompy.MakeCut(cone, cylinder)
+
+# get faces as sub-shapes
+faces = []
+faces = geompy.SubShapeAllSorted(cut, geompy.ShapeType["FACE"])
+f_2 = geompy.GetSubShapeID(cut, faces[2])
+
+# remove one face from the shape
+cut_without_f_2 = geompy.SuppressFaces(cut, [f_2])
+
+# get wires as sub-shapes
+wires = []
+wires = geompy.SubShapeAllSorted(cut_without_f_2, geompy.ShapeType["WIRE"])
+w_0 = geompy.GetSubShapeID(cut_without_f_2, wires[0])
+
+# suppress the selected wire
+result = geompy.SuppressHoles(cut_without_f_2, [w_0])
+
+# add objects in the study
+id_cut = geompy.addToStudy(cut, "Cut")
+id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")
+id_result = geompy.addToStudy(result, "Result")
+
+# display the results
+gg.createAndDisplayGO(id_cut)
+gg.setDisplayMode(id_cut,1)
+gg.createAndDisplayGO(id_cut_without_f_2)
+gg.setDisplayMode(id_cut_without_f_2,1)
+gg.createAndDisplayGO(id_result)
+gg.setDisplayMode(id_result,1)
+\endcode
+
+\anchor tui_sewing
+<br><h2>Sewing</h2>
+
+\code
+import geompy
+import salome
+import math
+gg = salome.ImportComponentGUI("GEOM")
+
+# create base points
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex(0., 100., 0.)
+pz = geompy.MakeVertex(0., 0., 100.)
+
+# create base geometry 2D & 3D
+vector = geompy.MakeVector(px, py)
+arc = geompy.MakeArc(py, pz, px)
+
+# create base objects
+angle = 45. * math.pi / 180
+WantPlanarFace = 1 #True
+wire = geompy.MakeWire([vector, arc])
+face = geompy.MakeFace(wire, WantPlanarFace)
+face_rot = geompy.MakeRotation(face, vector, angle)
+
+# make sewing
+precision = 0.00001
+sewing = geompy.MakeSewing([face, face_rot], precision)
+
+# add objects in the study
+id_face = geompy.addToStudy(face, "Face")
+id_face_rot = geompy.addToStudy(face_rot, "Face rotation")
+id_sewing = geompy.addToStudy(sewing, "Sewing")
+
+# display the results
+gg.createAndDisplayGO(id_face)
+gg.setDisplayMode(id_face,1)
+gg.createAndDisplayGO(id_face_rot)
+gg.setDisplayMode(id_face_rot,1)
+gg.createAndDisplayGO(id_sewing)
+gg.setDisplayMode(id_sewing,1)
+\endcode
+
+\anchor tui_glue_faces
+<br><h2>Glue Faces</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create boxes
+box1 = geompy.MakeBox(0,0,0,100,50,100)
+box2 = geompy.MakeBox(100,0,0,250,50,100)
+
+# make compound
+compound = geompy.MakeCompound([box1, box2])
+
+# glue compound's faces
+tolerance = 1e-5
+glue = geompy.MakeGlueFaces(compound, tolerance)
+
+# add objects in study
+id_box1 = geompy.addToStudy(box1, "Box1")
+id_box2 = geompy.addToStudy(box2, "Box2")
+id_compound = geompy.addToStudy(compound, "Compound")
+id_glue = geompy.addToStudy(glue, "Glue faces")
+
+# display results
+gg.createAndDisplayGO(id_box1)
+gg.setDisplayMode(id_box1,1)
+gg.createAndDisplayGO(id_box2)
+gg.setDisplayMode(id_box2,1)
+gg.createAndDisplayGO(id_compound)
+gg.setDisplayMode(id_compound,1)
+gg.createAndDisplayGO(id_glue)
+gg.setDisplayMode(id_glue,1)
+\endcode
+
+\anchor tui_add_point_on_edge
+<br><h2>Add Point on Edge</h2>
+
+\code
+import geompy
+import salome
+
+# create vertices
+p1 = geompy.MakeVertex(0,0,50)
+p2 = geompy.MakeVertex(60,0,50)
+
+# make an edge
+edge = geompy.MakeEdge(p1, p2) #geompy.GetSubShape(box, edge_ind)
+
+# divide an edge
+divide = geompy.DivideEdge(edge, -1, 0.5, 0)
+
+# add objects in the study
+id_edge = geompy.addToStudy(edge, "Edge")
+edge_points = geompy.SubShapeAllSorted(edge, geompy.ShapeType["VERTEX"])
+for point in edge_points:
+ geompy.addToStudyInFather(edge, point, "Edge's point")
+
+id_divide = geompy.addToStudy(divide, "Divided edge")
+edge_points = geompy.SubShapeAllSorted(divide, geompy.ShapeType["VERTEX"])
+for point in edge_points:
+ geompy.addToStudyInFather(divide, point, "Edge's point after divide")
+
+salome.sg.updateObjBrowser(1)
+\endcode
+
+
+*/
--- /dev/null
+/*!
+
+\page tui_scripts_page TUI Scripts
+
+<ul>
+<li>\subpage tui_viewing_geom_objs_page</li>
+<li>\subpage tui_creating_geom_objs_page</li>
+<ul>
+<li>\ref tui_basic_geom_objs_page</li>
+<li>\ref tui_primitives_page</li>
+<li>\ref tui_complex_objs_page</li>
+<li>\ref tui_working_with_groups_page</li>
+<li>\ref tui_building_by_blocks_page</li>
+<li>\ref tui_sketcher_page</li>
+<li>\ref tui_advanced_geom_objs_page</li>
+</ul>
+<li>\subpage tui_transformation_page</li>
+<ul>
+<li>\ref tui_basic_operations_page</li>
+<li>\ref tui_boolean_operations_page</li>
+<li>\ref tui_transformation_operations_page</li>
+<li>\ref tui_blocks_operations_page</li>
+<li>\ref tui_repairing_operations_page</li>
+</ul>
+<li>\subpage tui_measurement_tools_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_sketcher_page Sketcher
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices
+p1 = geompy.MakeVertex(70., 0., 0.)
+p2 = geompy.MakeVertex(70., 70., 80.)
+p3 = geompy.MakeVertex( 0., 70., 0.)
+
+#create a vector from two points
+vector_arc = geompy.MakeVector(p1, p3)
+
+# create an arc from three points
+arc = geompy.MakeArc(p1, p2, p3)
+
+# create a wire
+wire = geompy.MakeWire([vector_arc, arc])
+
+# create a planar face
+isPlanarWanted = 1
+face = geompy.MakeFace(wire, isPlanarWanted)
+
+# create a sketcher (face), following the textual description
+sketcher1 = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WF",
+ [100,0,0, 1,1,1, -1,1,0])
+
+# create a sketcher (wire) on the given face
+sketcher2 = geompy.MakeSketcherOnPlane("Sketcher:F 10 -30:R 10:C 20 180:R 15:L 50:WW", face)
+
+# add objects in the study
+id_face = geompy.addToStudy(face,"Face")
+id_sketcher1 = geompy.addToStudy(sketcher1,"Sketcher1")
+id_sketcher2 = geompy.addToStudy(sketcher2,"Sketcher2")
+
+# display the first sketcher and the second sketcher with its planar face
+gg.createAndDisplayGO(id_face)
+gg.setDisplayMode(id_face,1)
+gg.setTransparency(id_face,0.5)
+gg.createAndDisplayGO(id_sketcher1)
+gg.createAndDisplayGO(id_sketcher2)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_transformation_page Transformation
+
+<ul>
+<li>\subpage tui_basic_operations_page</li>
+<li>\subpage tui_boolean_operations_page</li>
+<li>\subpage tui_transformation_operations_page</li>
+<li>\subpage tui_blocks_operations_page</li>
+<li>\subpage tui_repairing_operations_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_transformation_operations_page Transformation Operations
+
+\anchor tui_translation
+<br><h2>Translation</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(10, 40, 0)
+p2 = geompy.MakeVertex( 0, 0, 50)
+p3 = geompy.MakeVertex(50, 80, 0)
+v = geompy.MakeVector(p1, p2)
+vt = geompy.MakeVector(p1, p3)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# translate the given object along the vector, specified by its end points
+# (all three functions produce the same result)
+translation1 = geompy.MakeTranslationTwoPoints(cylinder, p1, p3)
+translation2 = geompy.MakeTranslation(cylinder, 40, 40, 0)
+translation3 = geompy.MakeTranslationVector(cylinder, vt)
+
+# add objects in the study
+id_cylinder = geompy.addToStudy(cylinder, "Cylinder")
+id_translation1 = geompy.addToStudy(translation1, "Translation1")
+id_translation2 = geompy.addToStudy(translation2, "Translation2")
+id_translation3 = geompy.addToStudy(translation3, "Translation3")
+
+# display the results
+gg.createAndDisplayGO(id_cylinder)
+gg.setDisplayMode(id_cylinder,1)
+gg.createAndDisplayGO(id_translation1)
+gg.setDisplayMode(id_translation1,1)
+gg.createAndDisplayGO(id_translation2)
+gg.setDisplayMode(id_translation2,1)
+gg.createAndDisplayGO(id_translation3)
+gg.setDisplayMode(id_translation3,1)
+\endcode
+
+\anchor tui_rotation
+<br><h2>Rotation</h2>
+
+\code
+import geompy
+import salome
+import math
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(10, 40, 0)
+p2 = geompy.MakeVertex( 0, 0, 50)
+p3 = geompy.MakeVertex(10, 50,-20)
+p4 = geompy.MakeVertex(10, 50, 60)
+v = geompy.MakeVector(p1, p2)
+vr = geompy.MakeVector(p3, p4)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# rotate the given object around the given axis by the given angle
+rotation1 = geompy.MakeRotation(cylinder, vr, math.pi)
+rotation2 = geompy.MakeRotationThreePoints(cylinder, p4, p1, p2)
+
+# add objects in the study
+id_vr = geompy.addToStudy(vr, "Rotation 1 axis")
+id_p4 = geompy.addToStudy(p4, "Rotation 2 center")
+id_p1 = geompy.addToStudy(p1, "Rotation 2 point 1")
+id_p2 = geompy.addToStudy(p2, "Rotation 2 point 2")
+id_cylinder = geompy.addToStudy(cylinder, "Cylinder")
+id_rotation1 = geompy.addToStudy(rotation1, "Rotation 1")
+id_rotation2 = geompy.addToStudy(rotation2, "Rotation 2")
+
+# display the results
+gg.createAndDisplayGO(id_vr)
+gg.createAndDisplayGO(id_p4)
+gg.createAndDisplayGO(id_p1)
+gg.createAndDisplayGO(id_p2)
+gg.createAndDisplayGO(id_cylinder)
+gg.setDisplayMode(id_cylinder,1)
+gg.createAndDisplayGO(id_rotation1)
+gg.createAndDisplayGO(id_rotation2)
+gg.setDisplayMode(id_rotation1,1)
+gg.setDisplayMode(id_rotation2,1)
+\endcode
+
+\anchor tui_modify_location
+<br><h2>Modify Location</h2>
+
+\code
+import geompy
+import salome
+import math
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a vertex and a vector
+p1 = geompy.MakeVertex(10, 40, 0)
+p2 = geompy.MakeVertex( 0, 0, 50)
+v = geompy.MakeVector(p1, p2)
+
+# create a cylinder
+height = 35
+radius1 = 20
+cylinder = geompy.MakeCylinder(p1, v, radius1, height)
+
+# create local coordinate systems
+cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
+cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
+
+# modify the location of the given object
+position = geompy.MakePosition(cylinder, cs1, cs2)
+
+# add objects in the study
+id_cs1 = geompy.addToStudy(cs1, "Coordinate system 1")
+id_cs2 = geompy.addToStudy(cs2, "Coordinate system 2")
+id_cylinder = geompy.addToStudy(cylinder, "Cylinder")
+id_position = geompy.addToStudy(position, "Position")
+
+# display the results
+gg.createAndDisplayGO(id_cylinder)
+gg.setDisplayMode(id_cylinder,1)
+gg.createAndDisplayGO(id_position)
+gg.setDisplayMode(id_position,1)
+\endcode
+
+\anchor tui_mirror
+<br><h2>Mirror Image</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a box
+box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+# create an object, symmetrical to another object through the given plane
+p1 = geompy.MakeVertex( 0, 25, 0)
+p2 = geompy.MakeVertex( 5, 25, 0)
+p3 = geompy.MakeVertex( 0,-30, 40)
+plane = geompy.MakePlaneThreePnt(p1, p2, p3, 1000.)
+mirror1 = geompy.MakeMirrorByPlane(box, plane)
+
+# create an object, symmetrical to another object through the given axis
+p4 = geompy.MakeVertex( 210, 210, -20)
+p5 = geompy.MakeVertex( 210, 210, 220)
+axis = geompy.MakeVector(p4, p5)
+mirror2 = geompy.MakeMirrorByAxis(box, axis)
+
+# create an object, symmetrical to another object through the given point
+mirror3 = geompy.MakeMirrorByPoint(box, p4)
+
+# add objects in the study
+id_box = geompy.addToStudy(box, "Box")
+id_plane = geompy.addToStudy(plane, "Plane")
+id_mirror1 = geompy.addToStudy(mirror1, "Mirror plane")
+id_axis = geompy.addToStudy(axis, "Axis")
+id_mirror2 = geompy.addToStudy(mirror2, "Mirror axis")
+id_p4 = geompy.addToStudy(p4, "Point")
+id_mirror3 = geompy.addToStudy(mirror3, "Mirror point")
+
+# display the results
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_plane)
+gg.createAndDisplayGO(id_mirror1)
+gg.setDisplayMode(id_mirror1,1)
+gg.createAndDisplayGO(id_axis)
+gg.createAndDisplayGO(id_mirror2)
+gg.setDisplayMode(id_mirror2,1)
+gg.createAndDisplayGO(id_p4)
+gg.createAndDisplayGO(id_mirror3)
+gg.setDisplayMode(id_mirror3,1)
+\endcode
+
+\anchor tui_scale
+<br><h2>Scale Transform</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a box and a sphere
+box = geompy.MakeBoxDXDYDZ(200, 200, 200)
+
+# scale the given object by the factor
+p0 = geompy.MakeVertex(100, 100, 100)
+factor = 0.5
+scale = geompy.MakeScaleTransform(box, p0, factor)
+
+# add objects in the study
+id_box = geompy.addToStudy(box, "Box")
+id_scale = geompy.addToStudy(scale, "Scale")
+
+# display the results
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.setTransparency(id_box,0.5)
+gg.createAndDisplayGO(id_scale)
+gg.setDisplayMode(id_scale,1)
+\endcode
+
+\anchor tui_offset
+<br><h2>Offset Surface</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create a box and a sphere
+box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
+
+# create a new object as offset of the given object
+offset = geompy.MakeOffset(box, 70.)
+
+# add objects in the study
+id_box = geompy.addToStudy(box, "Box")
+id_offset = geompy.addToStudy(offset, "Offset")
+
+# display the results
+gg.createAndDisplayGO(id_box)
+gg.setDisplayMode(id_box,1)
+gg.createAndDisplayGO(id_offset)
+\endcode
+
+\anchor tui_multi_translation
+<br><h2>Multi Translation</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices and vectors
+p0 = geompy.MakeVertex( 0., 0., 0.)
+px = geompy.MakeVertex(20., 0., 0.)
+py = geompy.MakeVertex( 0., 20., 0.)
+pz = geompy.MakeVertex( 0., 0., 20.)
+pxy = geompy.MakeVertex( 50., 0., 0.)
+pxyz = geompy.MakeVertex( 50., 50., 50.)
+vz = geompy.MakeVector(p0, pz)
+vxy = geompy.MakeVector(px, py)
+vtr1d = geompy.MakeVector(p0, pxyz)
+vtr2d = geompy.MakeVector(p0, pxy)
+
+# create an arc
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create a planar face
+face = geompy.MakeFace(wire, 1)
+
+# create a prism
+prism = geompy.MakePrismVecH(face, vz, 20.0)
+
+# translate the given object along the given vector a given number of times
+tr1d = geompy.MakeMultiTranslation1D(prism, vtr1d, 20, 4)
+
+# consequently apply two specified translations to the object a given number of times
+tr2d = geompy.MakeMultiTranslation2D(prism, vtr1d, 20, 4, vtr2d, 80, 3)
+
+# add objects in the study
+id_prism = geompy.addToStudy(prism,"Prism")
+id_tr1d = geompy.addToStudy(tr1d,"Translation 1D")
+id_tr2d = geompy.addToStudy(tr2d,"Translation 2D")
+
+# display the prism and the results of fillet operation
+gg.createAndDisplayGO(id_prism)
+gg.setDisplayMode(id_prism,1)
+gg.createAndDisplayGO(id_tr1d)
+gg.setDisplayMode(id_tr1d,1)
+gg.createAndDisplayGO(id_tr2d)
+gg.setDisplayMode(id_tr2d,1)
+\endcode
+
+\anchor tui_multi_rotation
+<br><h2>Multi Rotation</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create vertices and vectors
+p0 = geompy.MakeVertex( 0., 0., 0.)
+px = geompy.MakeVertex(20., 0., 0.)
+py = geompy.MakeVertex( 0., 20., 0.)
+pz = geompy.MakeVertex( 0., 0., 20.)
+pxyz = geompy.MakeVertex( 50., 50., 10.)
+vz = geompy.MakeVector(p0, pz)
+vxy = geompy.MakeVector(px, py)
+vrot1d = geompy.MakeVector(p0, pxyz)
+
+# create an arc
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create a planar face
+face = geompy.MakeFace(wire, 1)
+
+# create a prism
+prism = geompy.MakePrismVecH(face, vz, 20.0)
+
+# rotate the given object around the given axis by the given angle a given number of times
+rot1d = geompy.MultiRotate1D(prism, vrot1d, 4)
+
+# rotate the given object around the given axis by the given angle a given number of times
+# and multi-translate the result of each rotation
+rot2d = geompy.MultiRotate2D(prism, vrot1d, 60, 4, 50, 5)
+
+# add objects in the study
+id_prism = geompy.addToStudy(prism,"Prism")
+id_rot1d = geompy.addToStudy(rot1d,"Rotation 1D")
+id_rot2d = geompy.addToStudy(rot2d,"Rotation 2D")
+
+# display the prism and the results of fillet operation
+gg.createAndDisplayGO(id_prism)
+gg.setDisplayMode(id_prism,1)
+gg.createAndDisplayGO(id_rot1d)
+gg.setDisplayMode(id_rot1d,1)
+gg.createAndDisplayGO(id_rot2d)
+gg.setDisplayMode(id_rot2d,1)
+\endcode
+
+\anchor tui_fillet
+<br><h2>Fillet</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+radius = 10.
+ShapeTypeEdge = geompy.ShapeType["EDGE"]
+
+# create vertices and vectors
+p0 = geompy.MakeVertex( 0., 0., 0.)
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex( 0., 100., 0.)
+pz = geompy.MakeVertex( 0., 0., 100.)
+vz = geompy.MakeVector(p0, pz)
+vxy = geompy.MakeVector(px, py)
+
+# create an arc
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create a planar face
+face = geompy.MakeFace(wire, 1)
+
+# create a prism
+prism = geompy.MakePrismVecH(face, vz, 100.0)
+
+# get the list of IDs (IDList) for the fillet
+prism_edges = geompy.SubShapeAllSorted(prism, ShapeTypeEdge)
+IDlist_e = []
+IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
+IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
+IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
+
+# make a fillet on the specified edges of the given shape
+fillet = geompy.MakeFillet(prism, radius, ShapeTypeEdge, IDlist_e)
+
+# make a fillet on all edges of the given shape
+filletall = geompy.MakeFilletAll(prism, radius)
+
+# add objects in the study
+id_prism = geompy.addToStudy(prism,"Prism")
+id_fillet = geompy.addToStudy(fillet,"Fillet")
+id_filletall = geompy.addToStudy(filletall,"Fillet all")
+
+# display the prism and the results of fillet operation
+gg.createAndDisplayGO(id_prism)
+gg.setDisplayMode(id_prism,1)
+gg.createAndDisplayGO(id_fillet)
+gg.setDisplayMode(id_fillet,1)
+gg.createAndDisplayGO(id_filletall)
+gg.setDisplayMode(id_filletall,1)
+\endcode
+
+\anchor tui_chamfer
+<br><h2>Chamfer</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+d1 = 10.
+d2 = 10.
+ShapeTypeFace = geompy.ShapeType["FACE"]
+
+# create vertices and vectors
+p0 = geompy.MakeVertex( 0., 0., 0.)
+px = geompy.MakeVertex(100., 0., 0.)
+py = geompy.MakeVertex( 0., 100., 0.)
+pz = geompy.MakeVertex( 0., 0., 100.)
+vz = geompy.MakeVector(p0, pz)
+vxy = geompy.MakeVector(px, py)
+
+# create an arc
+arc = geompy.MakeArc(py, pz, px)
+
+# create a wire
+wire = geompy.MakeWire([vxy, arc])
+
+# create a planar face
+face = geompy.MakeFace(wire, 1)
+
+# create a prism
+prism = geompy.MakePrismVecH(face, vz, 100.0)
+
+# get the list of IDs (IDList) for the chamfer
+prism_faces = geompy.SubShapeAllSorted(prism, ShapeTypeFace)
+f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
+f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
+IDlist_f = [f_ind_1, f_ind_2]
+
+# perform a chamfer on the edges common to the specified faces
+chamfer_e = geompy.MakeChamferEdge(prism, d1, d2, f_ind_1, f_ind_2)
+
+# perform a chamfer on all edges of the specified faces
+chamfer_f = geompy.MakeChamferFaces(prism, d1, d2, IDlist_f)
+chamfer_f1 = geompy.MakeChamfer(prism, d1, d2, ShapeTypeFace, IDlist_f)
+
+# perform a symmetric chamfer on all edges of the given shape
+chamfer_all = geompy.MakeChamferAll(prism, d1)
+
+# add objects in the study
+id_prism = geompy.addToStudy(prism,"Prism")
+id_chamfer_e = geompy.addToStudy(chamfer_e,"Chamfer edge")
+id_chamfer_f = geompy.addToStudy(chamfer_f,"Chamfer faces")
+id_chamfer_f1 = geompy.addToStudy(chamfer_f1,"Chamfer faces 1")
+id_chamfer_all = geompy.addToStudy(chamfer_all,"Chamfer all")
+
+# display the prism and the results of chamfer operation
+gg.createAndDisplayGO(id_prism)
+gg.setDisplayMode(id_prism,1)
+gg.createAndDisplayGO(id_chamfer_e)
+gg.setDisplayMode(id_chamfer_e,1)
+gg.createAndDisplayGO(id_chamfer_f)
+gg.setDisplayMode(id_chamfer_f,1)
+gg.createAndDisplayGO(id_chamfer_f1)
+gg.setDisplayMode(id_chamfer_f1,1)
+gg.createAndDisplayGO(id_chamfer_all)
+gg.setDisplayMode(id_chamfer_all,1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_viewing_geom_objs_page Viewing Geometrical Objects
+
+\anchor tui_change_disp_mode
+<br><h2>Changing Display Mode</h2>
+
+\code
+import salome
+import geompy
+box = geompy.MakeBox(0,0,0, 50,50,50)
+
+sphere = geompy.MakeSphere(50,50,50, 30)
+fuse = geompy.MakeBoolean(box,sphere,3)
+fuse_id = geompy.addToStudy(fuse,"Fuse")
+
+gg = salome.ImportComponentGUI("GEOM")
+gg.createAndDisplayGO(fuse_id)
+gg.setDisplayMode(fuse_id,1)
+\endcode
+
+\anchor tui_change_color
+<br><h2> Changing Color</h2>
+
+\code
+import salome
+import geompy
+box = geompy.MakeBox(0,0,0, 50,50,50)
+
+sphere = geompy.MakeSphere(50,50,50, 30)
+fuse = geompy.MakeBoolean(box,sphere,3)
+fuse_id = geompy.addToStudy(fuse,"Fuse")
+
+gg = salome.ImportComponentGUI("GEOM")
+gg.createAndDisplayGO(fuse_id)
+gg.setDisplayMode(fuse_id,1)
+gg.setColor(fuse_id,218,165,31)
+\endcode
+
+\anchor tui_change_transparency
+<br><h2>Changing Transparency</h2>
+
+\code
+import salome
+import geompy
+
+box = geompy.MakeBox(0,0,0, 50,50,50)
+sphere = geompy.MakeSphere(50,50,50, 30)
+
+fuse = geompy.MakeBoolean(box,sphere,3)
+fuse_id = geompy.addToStudy(fuse,"Fuse")
+
+gg = salome.ImportComponentGUI("GEOM")
+gg.createAndDisplayGO(fuse_id)
+gg.setDisplayMode(fuse_id,1)
+gg.setColor(fuse_id,218,165,31)
+gg.setTransparency(fuse_id,0.5)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page tui_working_with_groups_page Working with Groups
+
+<br><h2>Creation of a group</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create two vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+p200 = geompy.MakeVertex(200., 200., 200.)
+
+# create a box from two points
+Box = geompy.MakeBoxTwoPnt(p0, p200)
+
+# create a group from the faces of the box
+group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
+
+# add objects to the group
+SubFaceList = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"])
+for i in [0, 3, 5] :
+ FaceID = geompy.GetSubShapeID(Box, SubFaceList[i])
+ geompy.AddObject(group, FaceID)
+
+# add all selected shapes from the list to the group
+# (the program doesn't raise error, if some shapes are already included)
+geompy.UnionList(group, [SubFaceList[0], SubFaceList[2], SubFaceList[5]])
+
+# remove an object from the group
+geompy.RemoveObject(group, FaceID)
+
+# remove all selected shapes from the group
+# (the program doesn't raise error, if some shapes are not included)
+geompy.DifferenceList(group, [SubFaceList[2], SubFaceList[3], SubFaceList[4]])
+id_group1 = geompy.addToStudy(group, "Group1")
+
+# display the contents of the group
+gg.createAndDisplayGO(id_group1)
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br><h2>Adding an object to the group</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create two vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+p200 = geompy.MakeVertex(200., 200., 200.)
+
+# create a box from two points
+Box = geompy.MakeBoxTwoPnt(p0, p200)
+
+# create a group from the faces of the box
+group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
+
+# add objects to the group
+SubFaceList = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"])
+for i in [0, 3, 5] :
+ FaceID = geompy.GetSubShapeID(Box, SubFaceList[i])
+ geompy.AddObject(group, FaceID)
+id_group1 = geompy.addToStudy(group, "Group1")
+
+# display the contents of the group
+gg.createAndDisplayGO(id_group1)
+salome.sg.updateObjBrowser(1)
+\endcode
+
+<br><h2>Removing an object from the group</h2>
+
+\code
+import geompy
+import salome
+gg = salome.ImportComponentGUI("GEOM")
+
+# create two vertices
+p0 = geompy.MakeVertex(0. , 0. , 0. )
+p200 = geompy.MakeVertex(200., 200., 200.)
+
+# create a box from two points
+Box = geompy.MakeBoxTwoPnt(p0, p200)
+
+# create a group from the faces of the box
+group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
+
+# add objects to the group
+SubFaceList = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"])
+for i in [0, 3, 5] :
+ FaceID = geompy.GetSubShapeID(Box, SubFaceList[i])
+ geompy.AddObject(group, FaceID)
+
+# add all selected shapes from the list to the group
+# (the program doesn't raise errors, if some shapes are already included)
+geompy.UnionList(group, [SubFaceList[0], SubFaceList[2], SubFaceList[5]])
+
+# remove an object from the group
+geompy.RemoveObject(group, FaceID)
+id_group1 = geompy.addToStudy(group, "Group1")
+
+# display the contents of the group
+gg.createAndDisplayGO(id_group1)
+salome.sg.updateObjBrowser(1)
+\endcode
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page using_boolean_operations_page Using Boolean Operations
+
+\n You can use the following boolean operations for construction of more
+complex geometrical objects (2D & 3D elements):
+
+<ul>
+<li>\ref fuse_operation_page "Fuse"</li>
+<li>\ref common_operation_page "Common"</li>
+<li>\ref cut_operation_page "Cut"</li>
+<li>\ref section_opeartion_page "Section"</li>
+</ul>
+
+There is a general TUI command covering all these operations, which
+can be used alongside with separate commands for each operation.
+\par
+<em>geompy.MakeBoolean(Shape1, Shape2, Operation),</em> where \em
+Shape1 is the first argument and \em Shape2 is the second argument of
+Boolean operation, \em Operation is a type of the Boolean operation (1
+— Common, 2 — Cut, 3 — Fuse, 4 — Section).
+
+
+Besides, you can use advanced TUI commands performing these operations
+independently from each other:
+\par
+<em>geompy.MakeFuse(Shape1, Shape2)</em>, where \em Shape1 and \em
+Shape2 is the second argument of Fuse operation;
+\par
+<em>geompy.MakeCommon(Shape1, Shape2)</em>, where \em Shape1 and \em
+Shape2 is the second argument of Common operation;
+\par
+<em>geompy.MakeCut(Shape1, Shape2)</em>, where \em Shape1 and \em
+Shape2 is the second argument of Cut operation;
+\par
+<em>geompy.MakeSection(Shape1, Shape2)</em>, where \em Shape1 and \em
+Shape2 is the second argument of Section operation;
+
+\n Our <b>TUI Scripts</b> provide you with useful examples of the use of
+\ref tui_boolean_operations_page "Boolean Operations".
+
+*/
--- /dev/null
+/*!
+
+\page using_measurement_tools_page Using measurement tools
+
+\n Measurement tools in GEOM are necessary for getting different data
+concerning created or imported geometrical objects. They are:
+
+<ul>
+<li>\ref point_coord_anchor "Point coordinates"</li>
+<li>\ref basic_prop_anchor "Basic properties"</li>
+<li>\ref center_mass_anchor "Center of mass"</li>
+<li>\ref inertia_anchor "Inertia"</li>
+<li>\ref normale_anchor "Normal to a Face"</li>
+<li>\ref boundaries_anchor "Check Free Boundaries"</li>
+<li>\ref faces_anchor "Check Faces"</li>
+<li>\ref bounding_box_anchor "Bounding box"</li>
+<li>\ref min_distance_anchor "Min. distance"</li>
+<li>\ref angle_anchor "Angle"</li>
+<li>\ref tolerance_anchor "Tolerance"</li>
+<li>\ref whatis_anchor "WhatIs"</li>
+<li>\ref check_anchor "Check"</li>
+<li>\ref check_compound_anchor "Check compound of blocks"</li>
+</ul>
+
+\n Our <b>TUI Scripts</b> show how to use
+\ref tui_measurement_tools_page "Measurement Tools" with <b>TUI
+commands</b>.
+
+\n <em>To use measurement tools:</em>
+\par
+In the <b>Main menu</b> select \b Measures submenu.
+
+\anchor point_coord_anchor
+<br><h2>Point coordinates</h2>
+
+\n Returns the coordinates of a point.
+
+\n <b>Result:</b> Point coordinates (X, Y, Z) in 3D space in the form of Python Tuple.
+\n <b>TUI Command:</b> <em>geompy.PointCoordinates(Point),</em>
+where \em Point is a point whose coordinates are inquired.
+
+\image html measures1.png
+
+\anchor basic_prop_anchor
+<br><h2>Basic properties</h2>
+
+\n Returns the properties (Length, Surface & Volume) for the selected
+geometrical object.
+
+\n <b>Result:</b> Display Length, Surface & Volume in the form of
+Python Tuple.
+\n <b>TUI Command:</b> <em>geompy.BasicProperties(Shape),</em> where
+\em Shape is a shape whose properties are inquired.
+
+\image html neo-basicprop.png
+
+\anchor center_mass_anchor
+<br><h2>Center of mass</h2>
+
+\n Calculates and returns the coordinates of the gravity center for
+the selected geometrical object.
+
+\n <b>Result:</b> GEOM_Object (vertex).
+\n <b>TUI Command:</b> <em> geompy.MakeCDG(Shape),</em> where \em Shape is
+the shape for which a center of gravity is computed.
+
+\image html measures3.png
+
+\anchor inertia_anchor
+<br><h2>Inertia</h2>
+
+Returns the axial moments of inertia for the selected geometrical object.
+
+\n <b>Result:</b> Displays the matrix of the own moments of inertia and
+the relative moments of inertia in the form of Python Tuple
+ <center>(I11, I12, I13,</center>
+ <center>I21, I22, I23,</center>
+ <center>I31, I32, I33,</center>
+ <center>Ix, Iy, Iz).</center>
+\n <b>TUI Command:</b> <em>geompy.Inertia(Shape),</em> where \em Shape is
+a shape for which the own matrix of inertia and the relative moments of inertia are
+returned.
+
+\image html measures4.png
+
+\anchor normale_anchor
+<br><h2>Normal to a Face</h2>
+
+\n Calculates the normal vector to the selected \b Face. The \b Point
+is a point of the \Face, where the Normal should be calculated.
+
+\image html normaletoface.png
+
+\anchor boundaries_anchor
+<br><h2>Check Free Boundaries</h2>
+
+\n Detects and highlights wires and edges that are not shared between
+two faces and are considered a shape's boundary.
+
+\n <b>TUI Command:</b> <em>(NoError, ClosedWires, OpenWires) =
+geompy.GetFreeBoundary(Shape),</em> where \em Shape is a shape to be
+checked, \em NoError is false if an error occurred while checking free
+boundaries, \em ClosedWires is a list of closed free boundary wires,
+\em OpenWires is a list of open free boundary wires.
+
+\image html repair9.png
+
+\anchor faces_anchor
+<br><h2>Check Free Faces</h2>
+
+\n Highlights all free faces of a given shape. A free
+face is a face which is not shared between two objects of the shape.
+
+\n \b NOTE: This functionality works only in VTK viewer.
+
+\n \b Result: a list of IDs of all free faces, containing in the shape.
+\n <b>TUI Command:</b> <em>GetFreeFacesIDs(Shape),</em> where \em Shape is
+a shape to be checked.
+
+\image html repair10.png
+
+\anchor bounding_box_anchor
+<br><h2>Bounding box</h2>
+
+\n Returns the dimensions of the bounding box for the selected
+geometrical object.
+
+\n <b>Result:</b> Displays the dimensions of the bounding box of a
+geometrical object in the form of Python Tuple (Xmin, Xmax, Ymin,
+Ymax, Zmin, Zmax).
+\n <b>TUI Command:</b> <em>geompy.BoundingBox(Shape),</em> where \em Shape
+is a shape for which a bounding box is computed.
+
+\image html measures5.png
+
+\anchor min_distance_anchor
+<br><h2>Min. distance</h2>
+
+\n Returns the minimum distance between two geometrical objects and
+the coordinates of the vector of distance and shows the vector in the viewer.
+
+\n <b>TUI Command:</b> <em>geompy.MinDistance(Shape1, Shape2),</em>
+where \em Shape1 and \em Shape2 are shapes between which the minimal
+distance is computed.
+
+\image html distance.png
+
+\anchor angle_anchor
+<br><h2>Angle</h2>
+
+\n Returns the angle between two lines or linear edges
+\n <b>TUI Command:</b> <em>geompy.GetAngle(shape1, shape2),</em> where
+Shape1 and Shape2 are shapes between which the angle is computed.
+
+\image html angle.png
+
+\anchor tolerance_anchor
+<br><h2>Tolerance</h2>
+
+\n Returns the maximum and the minimum tolerance for the selected
+geometrical object.
+
+\n <b>Result:</b> Displays the tolerance values (FaceMinTol,
+FaceMaxTol, EgdeMinTol, EgdeMaxTol, VertexMinTol, VertexMaxTol).
+\n <b>TUI Command:</b> <em>geompy.Tolerance(Shape),</em> where \em Shape
+is a shape for which minimal and maximal tolerances are returned.
+
+\image html new-tolerance.png
+
+\anchor whatis_anchor
+<br><h2>WhatIs</h2>
+
+\n Displays types and quantities of all elements composing the
+selected geometrical object.
+
+\n <b>TUI Command:</b> <em>geompy.WhatIs(Shape),</em> where \em Shape is a
+shape from which a description is returned.
+
+\image html measures8.png
+
+\anchor check_anchor
+<br><h2>Check</h2>
+
+\n Checks the topology of the selected geometrical object and returns
+True if it is valid. Check also geometry checkbox allows to test the
+geometry as well.
+
+\n <b>Result:</b> Boolean.
+\n <b>TUI Command:</b> <em>geompy.(theShape, theIsCheckGeom = 0),</em>
+where is theShape is the shape checked for validity.
+
+\image html measures9.png
+
+\anchor check_compound_anchor
+<br><h2>Check compound of blocks</h2>
+
+\n Checks whether a shape is a compound of glued blocks. To be
+considered as a compound of blocks, the given shape must satisfy the
+following conditions:
+<ul>
+<li>Each element of the compound should be a Block (6 faces and 12 edges);</li>
+<li>A connection between two Blocks should be an entire quadrangle face or an entire edge;</li>
+<li>The compound should be connected;</li>
+<li>Two quadrangle faces should be glued.</li>
+</ul>
+
+\n Informs of the following possible errors:
+<ul>
+<li>not a block;</li>
+<li>not glued;</li>
+<li>not connected;</li>
+<li>extra or degenerated edge.</li>
+</ul>
+
+\n <b>Result:</b> Boolean; highlight in the viewer.
+\n <b>TUI Command:</b>
+<em>geompy.CheckCompoundOfBlocks(Compound).</em> Checks if the shape
+is a valid compound of blocks. If it is true, then the validity flag
+is returned, and encountered errors are printed in the python console.
+
+\image html measures10.png
+
+*/
--- /dev/null
+/*!
+
+\page view_geom_obj_page Overview
+
+\n Newly created geometrical objects are automatically displayed in
+the <b>OCC 3D Viewer</b>.
+
+\n <b>OCC 3D Viewer</b> is described in the documentation on <b>GUI
+module</b>.
+\n After the object has appeared in the Viewer, you can select it with
+left mouse click to change its presentation parameters and access to
+other useful options by right-clicking on the selected object.
+
+\image html dialog.png
+
+<ul>
+<li><b>Rename</b> - allows to change the name of the geometric
+object.</li>
+<li><b>Delete</b> - irreversibly deletes the selected object from the
+viewer and from the Object Browser.</li>
+<li>\ref display_mode_page "Display Mode" - allows to select between
+Wireframe and Shading presentation.</li>
+<li>\ref color_page "Color" - allows to change the filling color in
+the standard <b>Select Color</b> menu.</li>
+<li>\ref transparency_page "Transparency" - allows to change the
+transparency of geometrical objects.</li>
+<li>\ref isolines_page "Isos" - allows to change the number of
+isolines displayed within a shape.</li>
+<li><b>Hide</b> - allows to hide the selected geometrical object from the
+viewer. TUI Command : <em>sg.EraseOnly(ID)</em>
+\n \image html image18.gif
+</li>
+<li><b>Hide all</b> - allows to hide all objects from the viewer. TUI
+Command: <em>sg.EraseAll()</em>
+\n \image html image26.gif
+</li>
+<li><b>Display Only</b> - allows to display only the selected
+geometrical object. TUI Command: <em>sg.DisplayOnly(ID)</em>
+\n \image html image33.gif
+</li>
+<li><b>Update</b> - refreshes the presentation of your geometrical object in the
+Object Browser, applying all recent changes.</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.
+\n\n Some of these functionalities are available through right-clicking
+on the viewer background:
+
+\image html image2.jpg <br></li>
+
+<li><b>Select Only</b> provides a filter for exclusive selection of objects of a certain type.</li>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page view_geom_obj_chapter_page Viewing Geometrical Objects
+
+<ul>
+<li>\subpage view_geom_obj_page</li>
+<li>\subpage display_mode_page</li>
+<li>\subpage color_page</li>
+<li>\subpage transparency_page</li>
+<li>\subpage isolines_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page work_with_groups_page Working with groups
+
+Creation and editing groups of subshapes of a geometrical object makes
+handling subshapes much easier. This functionality is available in OCC
+viewer only.
+
+<br><h2>Create a group</h2>
+
+\image html image56.gif
+
+To create a group of subshapes of a geometrical object in the main
+menu select <b>New entity > Group > Create</b>
+\n The following menu will appear:
+
+\image html geomcreategroup.png
+
+In this Menu:
+
+<ul>
+<li><b>Shape Type</b> radio button define the type of elements for the
+group (points, wires, faces, shells or solids).</li>
+<li><b>Group Name</b> - here you can enter the name of the group, by
+default, it is Group_n.</li>
+<li>Then, using the "Select" button, select the <b>Main Shape</b> (a
+geometrical object on which the group will be created). You can select
+the elements of your group in two ways: </li>
+<ul>
+<li>Clicking <b>Select Sub-Shapes</b> button you can select them
+manually in the 3D Viewer, and add to the group by clicking the \b Add
+button (keep down the Shift button on the keyboard to select several
+elements and add all them together). The indexes of the selected
+elements will be displayed in the list. To delete elements from the
+list, select them and click \b Remove button.</li>
+<li>Clicking <b>Select All</b> button you can add all object's
+elements of a certain type in the list of the elements of the
+group. To delete elements from the list, select them and click \b
+Remove button.</li>
+</ul>
+<li>Finally, confirm your selection by clicking \b OK (also closes the
+Menu) or \b Apply (leaves the Menu open for creation of other groups),
+or skip it by clicking \b Close button.</li>
+</ul>
+
+\n The Result of the operation will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b> <em>geompy.CreateGroup(MainShape,
+ShapeType),</em> where MainShape is a shape for which the group is
+created, ShapeType is a type of shapes in the created group.
+\n <b>Arguments:</b> 1 Shape + Type of subshape.
+
+<b>Example:</b>
+
+\image html image193.jpg
+
+
+<br><h2>Edit a group</h2>
+
+\image html image57.gif
+
+To \b Edit an existing group in the main menu select <b>New entity >
+Group > Edit</b>. This menu is designed in the same way as the
+<b>Create a group</b> menu.
+
+\n The \b Result of the operation will be a \b GEOM_Object.
+
+\n <b>TUI Command:</b>
+<ul>
+<li><em>geompy.AddObject(Group, SubShapeID),</em> where Group is a
+group to which a sub shape has to be added, SubShapeID is an ID of the
+sub shape to be added to the group.</li>
+<li><em>geompy.RemoveObject(Group, SubShapeID),</em> where Group is a
+group from which a sub shape has to be removed, SubShapeID is an ID of
+the sub shape to be removed from the group.</li>
+<li><em>geompy.GetObjectIDs(Group),</em> where Group is a group for which its object's are returned.
+\n Returns: List of IDs.</li>
+</ul>
+
+\n <b>Arguments:</b> 1 Shape + its subshapes.
+
+\n <b>Dialog Box:</b>
+
+\image html editgroup.png
+
+Our <b>TUI Scripts</b> provide you with useful examples of
+\ref tui_working_with_groups_page "Working with Groups".
+
+*/
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Isos</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-size:12pt; }
-p.whs2 { font-size:12pt; margin-left:40px; }
-img_whs3 { border:none; width:255px; height:150px; float:none; border-style:none; }
-img_whs4 { border:none; width:400px; height:420px; float:none; border-style:none; }
-p.whs5 { font-family:'Times New Roman' , serif; font-size:12pt; }
--->
-</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("Geometry module\nViewing geometrical objects\nIsolines");
-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>Isolines</h1>
-
-<p class="whs1">In this menu you can change the number of isolines
- displayed within a shape.</p>
-
-<p class="whs1"><b style="font-weight: bold;">Arguments:</b>
- 2 values (number of isolines).</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/neo-isos.png" x-maintain-ratio="TRUE" width="255px" height="150px" border="0" class="img_whs3"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs1"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/colorsn.png" x-maintain-ratio="TRUE" width="400px" height="420px" border="0" class="img_whs4"> <img src="pics/isos_u12_v12sn.png" x-maintain-ratio="TRUE" width="400px" height="420px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </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>Line</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:26px; height:23px; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:324px; float:none; border-style:none; }
-p.whs5 { color:#808080; font-size:12pt; }
-p.whs6 { font-size:12pt; color:#000000; }
-p.whs7 { color:#808080; font-size:12pt; margin-left:40px; }
-img_whs8 { border:none; width:357px; height:322px; float:none; border-style:none; }
-p.whs9 { font-size:12pt; 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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nLine");
-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><b><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="image5.gif" width="26px" height="23px" border="0" class="img_whs1"> </font></span></b>Line</h1>
-
-<p>To create a <span style="font-weight: bold;"><B>Line</B></span> in the <span
- style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Basic - > Line</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create a <span style="font-weight: bold;"><B>Line</B></span>
- you should define <span style="font-weight: bold;"><B>Point1</B></span> and <span
- style="font-weight: bold;"><B>Point2</B></span>, which are the points through
- which the
- <span style="font-weight: bold;"><B>Line</B></span> passes.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b>
- GEOM_Object (edge).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b>
- <span style="font-style: italic;"><I>geompy.MakeLineTwoPnt(Point1, Point2)</I></span>
- </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 vertices.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/line.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs5"> </p>
-
-<p class="whs7"><img src="pics/lines.png" x-maintain-ratio="TRUE" width="357px" height="322px" border="0" class="img_whs8"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs9">NB! <span style="font-weight: normal;">There
- is another way to create a line, which is currently accessible only via</span>
- TUI <span style="font-weight: normal;">commands.</span></p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><span style="font-weight: normal;">You
- can define a line passing
- through the given</span> Point <span style="font-weight: normal;">and
- parallel to the given</span> Vector. </p>
-
-<p class="whs9"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakeLine(Point,
- Vector)</I></span> </p>
-
-<p class="whs9"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="basic_geometrical_objects.htm#bookmark1">Basic
- Geometric Objects</a>. </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>Local Coordinate System</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:16px; height:16px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-weight:bold; font-size:14pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:391px; float:none; border-style:none; }
-p.whs5 { font-weight:bold; font-size:14pt; }
-p.whs6 { font-size:12pt; font-weight:normal; }
-img_whs7 { border:none; width:312px; height:289px; float:none; border-style:none; }
-p.whs8 { font-size:12pt; font-weight:bold; }
-img_whs9 { border:none; width:312px; height:359px; float:none; border-style:none; }
-p.whs10 { font-weight:bold; text-indent:-40px; font-size:14pt; margin-left:40px; }
-p.whs11 { font-weight:bold; margin-left:80px; text-indent:-80px; font-size:12pt; }
-p.whs12 { font-weight:bold; text-indent:-80px; font-size:12pt; margin-left:120px; }
-img_whs13 { border:none; width:200px; height:219px; 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 {text-indent:1pt; }";
- strNSS += "p.whs11 {text-indent:1pt; }";
- strNSS += "p.whs12 {text-indent: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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nLocal Coordinate System");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image35.gif" width="16px" height="16px" border="0" class="img_whs1"></font></span>Local Coordinate
- System</h1>
-
-<p>To create a <span style="font-weight: bold;"><B>Local Coordinate System</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Basic - > Local Coordinate
- System</B></span></p>
-
-<p class="whs2">There are three algorithms to choose from.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Firstly, you can define the values of X, Y,
- and Z coordinates of origin and the directions of X and Y axes directly
- in the menu.</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>TUI command:</B></span>
- <span style="font-style: italic;"><I>geompy.MakeMarker(OX, OY, OZ, XDX, XDY,
- XDZ, YDX, YDY, YDZ)</I></span>, where OX, OY, OZ are coordinates of the origin
- of LCS, XDX, XDY, XDZ is a vector of OX direction
- of the LCS and YDX, YDY, YDZ is a a vector of OY direction of the LCS.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + Coordinates of origin, X axis direction, Y axis direction.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-localcs1.png" x-maintain-ratio="TRUE" width="312px" height="391px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6">Secondly, you can simply
- select any object in the object browser or 3D viewer, in this case the
- coordinates of origin and axes direction of the LCS are calculated automatically
- basing on the selected object. </p>
-
-<p class="whs6"><b style="font-weight: bold;">Arguments:
- </b>Name + reference object.</p>
-
-<p class="whs6"> </p>
-
-<p class="whs3"><img src="pics/neo-localcs2.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">The last algorithm of LCS construction allows
- to define the coordinates of origin by a point and axes directions by
- a line or a vector. </p>
-
-<p class="whs8"><b style="font-weight: bold;">Arguments:</b>
- <span style="font-weight: normal;">Name + 1 point of origin + X axis direction,
- Y axis direction.</span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-localcs3.png" x-maintain-ratio="TRUE" width="312px" height="359px" border="0" class="img_whs9"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Press «OK» or «Apply» button to create an LCS
- at the location with the specified coordinates. The new object is shown
- in the Object Browser and in 3D viewer.</p>
-
-<p class="whs10"> </p>
-
-<p class="whs11">Example:</p>
-
-<p class="whs12"><img src="image145.jpg" width="200px" height="219px" border="0" class="img_whs13"></p>
-
-<p class="whs12"> </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>Measurement Tools</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nMeasurement Tools");
-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>Measurement Tools</h1>
-
-<h3>Point Coordinates</h3>
-
-<p class="whs1">import math</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a point</p>
-
-<p class="whs1">point = geompy.MakeVertex(15.,
- 23., 80.)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># get the coordinates
- of the point and check its values</p>
-
-<p class="whs1">coords = geompy.PointCoordinates(point)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># check the obtained
- coordinate values </p>
-
-<p class="whs1">tolerance = 1.e-07</p>
-
-<p class="whs1">def IsEqual(val1,
- val2): return (math.fabs(val1 - val2) < tolerance)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">if IsEqual(coords[0],
- 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.):</p>
-
-<p class="whs1"> print
- "All values are OK."</p>
-
-<p class="whs1">else :</p>
-
-<p class="whs1"> print
- "Coordinates of point must be (15, 23, 80), but returned (",</p>
-
-<p class="whs1"> print
- coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;"> pass</span>
- </p>
-
-<h3>Basic Properties</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import math</p>
-
-<p> </p>
-
-<p># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">props = geompy.BasicProperties(box)</p>
-
-<p class="whs1">print "\nBox
- 100x30x100 Basic Properties:"</p>
-
-<p class="whs1">print " Wires
- length: ", props[0]</p>
-
-<p class="whs1">print " Surface
- area: ", props[1]</p>
-
-<p class="whs1">print " Volume
- :
- ", props[2]</p>
-
-<p class="whs1">length = math.sqrt((props[0]
- - 1840)*(props[0] - 1840))</p>
-
-<p class="whs1">area = math.sqrt((props[1]
- - 32000)*(props[1] - 32000))</p>
-
-<p class="whs1">volume = math.sqrt((props[2]
- - 300000)*(props[2] - 300000))</p>
-
-<p class="whs1">if length > 1e-7
- or area > 1e-7 or volume > 1e-7:</p>
-
-<p class="whs1"> print
- "While must be:"</p>
-
-<p class="whs1"> print
- " Wires length: ", 1840</p>
-
-<p class="whs1"> print
- " Surface area: ", 32000</p>
-
-<p class="whs1"> print
- " Volume :
- ", 300000.</p>
-
-<h3>Center of masses</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">cm = geompy.MakeCDG(box)</p>
-
-<p class="whs1">if cm is None:</p>
-
-<p class="whs1"> raise
- RuntimeError, "MakeCDG(box) failed"</p>
-
-<p class="whs1">else:</p>
-
-<p class="whs1"> print
- "\nCentre of gravity of box has been successfully obtained:"</p>
-
-<p class="whs1"> coords
- = geompy.PointCoordinates(cm)</p>
-
-<p class="whs1"> print
- "(", coords[0], ", ", coords[1], ", ", coords[2],
- ")"</p>
-
-<p class="whs1"> dx
- = math.sqrt((coords[0] - 50)*(coords[0] - 50))</p>
-
-<p class="whs1"> dy
- = math.sqrt((coords[1] - 15)*(coords[1] - 15))</p>
-
-<p class="whs1"> dz
- = math.sqrt((coords[2] - 50)*(coords[2] - 50))</p>
-
-<p class="whs1"> if
- dx > 1e-7 or dy > 1e-7 or dz > 1e-7:</p>
-
-<p class="whs1"> print
- "But must be (50, 15, 50)" </p>
-
-<h3>Inertia</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">In = geompy.Inertia(box)</p>
-
-<p class="whs1">print "\nInertia
- matrix of box 100x30x100:"</p>
-
-<p class="whs1">print " (",
- In[0], ", ", In[1], ", ", In[2], ")"</p>
-
-<p class="whs1">print " (",
- In[3], ", ", In[4], ", ", In[5], ")"</p>
-
-<p class="whs1">print " (",
- In[6], ", ", In[7], ", ", In[8], ")"</p>
-
-<p class="whs1">print "Main moments
- of inertia of box 100x30x100:"</p>
-
-<p class="whs1">print " Ix =
- ", In[9], ", Iy = ", In[10], ", Iz = ", In[11]
- </p>
-
-<p class="whs1"> </p>
-
-<h3>Bounding Box</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">bb = geompy.BoundingBox(box)</p>
-
-<p class="whs1">print "\nBounding
- Box of box 100x30x100:"</p>
-
-<p class="whs1">print " Xmin
- = ", bb[0], ", Xmax = ", bb[1]</p>
-
-<p class="whs1">print " Ymin
- = ", bb[2], ", Ymax = ", bb[3]</p>
-
-<p class="whs1">print " Zmin
- = ", bb[4], ", Zmax = ", bb[5] </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<h3>Minimal Distance </h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">box2 = geompy.MakeBox(105,0,0,200,30,100)</p>
-
-<p class="whs1">min_dist = geompy.MinDistance(box1,box2)</p>
-
-<p class="whs1">print "\nMinimal
- distance between box1 and box2 = ", min_dist </p>
-
-<p class="whs1"> </p>
-
-<h3>Tolerance</h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">Toler = geompy.Tolerance(box)</p>
-
-<p class="whs1">print "\nBox
- 100x30x100 tolerance:"</p>
-
-<p class="whs1">print " Face
- min. tolerance: ", Toler[0]</p>
-
-<p class="whs1">print " Face
- max. tolerance: ", Toler[1]</p>
-
-<p class="whs1">print " Edge
- min. tolerance: ", Toler[2]</p>
-
-<p class="whs1">print " Edge
- max. tolerance: ", Toler[3]</p>
-
-<p class="whs1">print " Vertex
- min. tolerance: ", Toler[4]</p>
-
-<p class="whs1">print " Vertex
- max. tolerance: ", Toler[5] </p>
-
-<p class="whs1"> </p>
-
-<h3>What Is</h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">Descr = geompy.WhatIs(box)</p>
-
-<p class="whs1">print "\nBox
- 100x30x100 description:"</p>
-
-<p class="whs1">print Descr </p>
-
-<p class="whs1"> </p>
-
-<h3>Check Shape</h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
-
-<p class="whs1">IsValid = geompy.CheckShape(box)</p>
-
-<p class="whs1">if IsValid == 0:</p>
-
-<p class="whs1"> raise
- RuntimeError, "Invalid box created"</p>
-
-<p class="whs1">else:</p>
-
-<p class="whs1"> print
- "\nBox is valid" </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </p>
-
-<h3>Check Compound of Blocks</h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
-
-<p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># make a compound</p>
-
-<p class="whs1">compound = geompy.MakeCompound([box1,
- box2])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># glue the faces of the
- compound</p>
-
-<p class="whs1">tolerance = 1e-5</p>
-
-<p class="whs1">glue = geompy.MakeGlueFaces(compound,
- tolerance)</p>
-
-<p class="whs1">IsValid = geompy.CheckCompoundOfBlocks(glue)</p>
-
-<p class="whs1">if IsValid == 0:</p>
-
-<p class="whs1"> raise
- RuntimeError, "Invalid compound created"</p>
-
-<p class="whs1">else:</p>
-
-<p class="whs1"> print
- "\nCompound is valid" </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"> </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>Mirror Image</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-size:12pt; }
-p.whs2 { font-size:12pt; margin-left:40px; }
-img_whs3 { border:none; width:312px; height:350px; float:none; border-style:none; }
-img_whs4 { border:none; width:174px; height:233px; float:none; border-style:none; }
-img_whs5 { border:none; float:none; width:174px; height:233px; border-style:none; }
-img_whs6 { border:none; width:227px; height:176px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:199px; height:177px; border-style:none; }
-img_whs8 { border:none; float:none; width:250px; height:350px; border-style:none; }
-img_whs9 { border:none; float:none; width:248px; height:349px; border-style:none; }
-p.whs10 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nMirror Image");
-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>Mirror Image</h1>
-
-<p class="whs1"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Mirror Image</B></span> in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Mirror Image</B></span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">This operation creates a symmetrical copy of
- an <span style="font-weight: bold;"><B>Object, </B></span>which can be mirrored
- in three different ways.<span style="font-weight: bold;"><B> Create a copy
- </B></span>checkbox allows to keep the initial object, otherwise it will be
- removed.</p>
-
-<p class="whs1"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Firstly an Object
- can be mirrored through a Point of symmetry</font></span></p>
-
-<p class="whs1"><b style="font-weight: bold;">TUI Command:
- </b><span style="font-style: italic;"><I>geompy.MakeMirrorByPoint(Object,
- Point)</I></span> </p>
-
-<p class="whs1"><b style="font-weight: bold;">Arguments: <span
- style="font-weight: normal;">Name + </span></b>1 shape + 1 vertex.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/transformation7.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs3"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/mirror_pointsn1.png" x-maintain-ratio="TRUE" width="174px" height="233px" border="0" class="img_whs4"> <img src="pics/mirror_pointsn2.png" x-maintain-ratio="TRUE" width="174px" height="233px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Secondly an
- Object can be mirrored through an Axis of symmetry </font></span></p>
-
-<p class="whs1"><b style="font-weight: bold;">TUI Command:
- </b><span style="font-style: italic;"><I>geompy.MakeMirrorByAxis(Object,
- Axis)</I></span> </p>
-
-<p class="whs1"><b style="font-weight: bold;">Arguments: <span
- style="font-weight: normal;">Name + </span></b>1 shape + 1 vector.</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/transformation8.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs3"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/mirror_axissn1.png" x-maintain-ratio="TRUE" width="227px" height="176px" border="0" class="img_whs6"> <img src="pics/mirror_axissn2.png" x-maintain-ratio="TRUE" width="199px" height="177px" border="0" class="img_whs7"></p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">Finally an <span style="font-weight: bold;"><B>Object</B></span>
- can be mirrored through a <span style="font-weight: bold;"><B>Plane</B></span>
- of symmetry </p>
-
-<p class="whs1"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeMirrorByPlane(Shape,
- Plane)</I></span>, </p>
-
-<p class="whs1"><b style="font-weight: bold;">Arguments:</b>
- <b><span style="font-weight: normal;">Name + </span></b>1 shape + 1 plane</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/transformation9.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs3"> </p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"><img src="pics/mirror_planesn1.png" x-maintain-ratio="TRUE" width="250px" height="350px" border="0" class="img_whs8"> <img src="pics/mirror_planesn2.png" x-maintain-ratio="TRUE" width="248px" height="349px" border="0" class="img_whs9"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs10"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark5">Transformation
- Operations</a>. </font></span></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>Modify the Location</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:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:350px; float:none; border-style:none; }
-img_whs5 { border:none; width:431px; height:233px; border-style:none; }
-img_whs6 { border:none; width:312px; height:385px; float:none; border-style:none; }
-img_whs7 { border:none; width:214px; height:222px; border-style:none; }
-table.whs8 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs9 { width:50%; }
-tr.whs10 { x-cell-content-align:top; }
-td.whs11 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
-td.whs12 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
-td.whs13 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
-img_whs14 { border:none; width:238px; height:218px; border-style:none; }
-td.whs15 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }
-img_whs16 { border:none; width:316px; height:215px; border-style:none; }
-p.whs17 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs17 {margin-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nModify the Location");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="image59.gif" width="25px" height="22px" border="0" class="img_whs1"> </font></span>Modify the Location</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o<span
- style="font-weight: bold;"><B> Modify the Location</B></span> in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Modify the Location.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation modifies the <span style="font-weight: bold;"><B>Location</B></span>
- of an <span style="font-weight: bold;"><B>Object. </B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">The first algorithm places the object so that
- its center coincides with the center of an End Local Coordinate System.</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Create a copy
- </B></span>checkbox allows to keep the initial object, otherwise it will be
- removed.</p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><span><b style="font-weight: bold;">A</span>rguments:</b>
- Name + 1 Object + End Coordinate System.</font></span></p>
-
-<p> </p>
-
-<p class="whs3"><img src="pics/transformation5.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs4"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">In the picture the initial cube with the global
- coordinate system is to
- the right and the modified cube with the Local Coordinate System in the
- center of it is to the left . </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="image30.gif" width="431px" height="233px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">The second algorithm modifies
- the location of an object using Start and End LSC, although the final
- position of the object will not coincide with the center of either
- of the two systems. In this method the object is shifted from its initial
- position by the value of the remainder after subtraction of the coordinates
- of the Start LSC from the coordinates of the End LSC. </p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Create a copy
- </B></span>checkbox allows to keep the initial object, otherwise it will be
- removed.</p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 Object + Start Coordinate System + End Coordinate System.</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/transformation6.png" x-maintain-ratio="TRUE" width="312px" height="385px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">In this picture we see the initial cube with
- the global coordinate system and two LCS: LocalCS1 (GCS+100 along x-axis)
- and LocalCS2 (GCS+200 along x-axis) </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="image1.gif" width="214px" height="222px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<table x-use-null-cells cellspacing="0" width="100%" class="whs8">
-<col class="whs9">
-<col class="whs9">
-
-<tr valign="top" class="whs10">
-<td width="50%" class="whs11">
-<p class="whs2">Selecting Start LCS = LCS1 and End LCS = LCS2,
- we obtain the translated cube at the position (100;0;0)</p>
-<p> </td>
-<td width="50%" class="whs12">
-<p class="whs2">Selecting Start LCS = LCS2 and End LCS = LCS1,
- we obtain the translated cube at the position (-100;0;0)</td></tr>
-
-<tr valign="top" class="whs10">
-<td width="50%" class="whs13">
-<p><img src="image2.gif" width="238px" height="218px" border="0" class="img_whs14"></td>
-<td width="50%" class="whs15">
-<p><img src="image4.gif" width="316px" height="215px" border="0" class="img_whs16"></td></tr>
-</table>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- geompy.MakePosition(theObject, theStartLCS, theEndLCS), </i>where theObject
- is a shape, location of which is modified, theStartLCS is a location to
- move the shape from, theEndLCS is a location to move the shape to.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs17"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark2">Transformation
- Operations</a>. </font></span></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>Multi Rotation</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; }
-p.whs4 { font-size:12pt; font-weight:normal; }
-p.whs5 { font-size:12pt; margin-left:40px; }
-img_whs6 { border:none; width:312px; height:346px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:315px; height:260px; border-style:none; }
-img_whs8 { border:none; float:none; width:301px; height:260px; border-style:none; }
-img_whs9 { border:none; width:312px; height:450px; float:none; border-style:none; }
-img_whs10 { border:none; float:none; width:310px; height:405px; border-style:none; }
-img_whs11 { border:none; float:none; width:337px; height:405px; 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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nMulti Rotation");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image133.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Multi
- Rotation</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Multi Rotation</B></span> in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Multi Rotation</B></span> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation creates several geometrical
- objects rotated in <span style="font-weight: bold;"><B>one </B></span>or <span
- style="font-weight: bold;"><B>two </B></span>dimensions basing on the initial
- geometrical object. </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">The</span> Result <span style="font-weight: normal;">will
- be one or several</span></b> GEOM_Objects (compound).</font></span></p>
-
-<p> </p>
-
-<p class="whs2">To produce a <span style="font-weight: bold;"><B>Simple
- Multi Rotation</B></span> (in one dimension) you need to define a <span style="font-weight: bold;"><B>Shape</B></span>
- to be rotated, an <span style="font-weight: bold;"><B>Axis</B></span> of rotation
- and a <span style="font-weight: bold;"><B>Number of Times</B></span> the shape
- must be rotated. <span style="font-weight: bold;"><B>Rotation Angle</B></span>
- will be 2*PI/NbTimes</p>
-
-<p class="whs3"><b style="font-weight: bold;">TUI
- Command: </b><span style="font-style: italic; font-weight: normal;"><I>geompy.MultiRotate1D(Shape,
- Axis, NbTimes)</I></span></p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- </b><span style="font-weight: normal;">Name + 1 shape + 1 vector for direction
- + 1 value (repetition).</span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4">There is a <span style="font-weight: bold;"><B>TUI</B></span>-only<span
- style="font-weight: bold;"> <B></B></span>command <span style="font-style: italic;"><I>geompy.MakeMultiRotation1D(Shape,
- Dir, Point, NbTimes)</I></span> which works in the same way, but the Axis
- is defined by
- direction and point. </p>
-
-<p class="whs3"> </p>
-
-<p class="whs5"><img src="pics/neo-mrot1.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs6"> </p>
-
-<p class="whs5"><img src="pics/multi_rotation1d1.png" x-maintain-ratio="TRUE" width="315px" height="260px" border="0" class="img_whs7"> <img src="pics/multi_rotation1d2.png" x-maintain-ratio="TRUE" width="301px" height="260px" border="0" class="img_whs8"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Double Multi
- Rotation</B></span> (in two dimensions) rotates the given <span style="font-weight: bold;"><B>Object</B></span>
- around the given <span style="font-weight: bold;"><B>Axis</B></span> on the given
- <span style="font-weight: bold;"><B>Angle</B></span> a given <span style="font-weight: bold;"><B>Number
- of Times</B></span> and multi-translates each rotation result. Translation
- direction passes through the center of gravity of the rotated shape and
- its projection on the rotation axis. <span style="font-weight: bold;"><B>Reverse
- </B></span>checkbox allows to set the direction of rotation.</p>
-
-<p class="whs2"><b style="font-weight: bold;">T<span style="font-weight: bold;"><B>UI
- Command: </B></span><span style="font-weight: normal;">g</span></b><span style="font-style: italic;"><I>eompy.MultiRotate2D(Shape,
- Axis, Angle, NbTimes1, Step, NbTimes2)</I></span></p>
-
-<p class="whs2"><span style="font-style: italic;"><I><b style="font-weight: bold;">A</I></span><span
- style="font-weight: bold;"><B>rguments: </B></span></b>Name + 1 shape + 1 vector
- for direction + 1 angle + 1 value (repetition) + 1 step value + 1 value
- (repetition);</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">There is a <span style="font-weight: bold;"><B>TUI</B></span>-only
- command <span style="font-style: italic;"><I>geompy.MakeMultiRotation2D(Shape,
- Dir, Point, Angle, nbtimes1, Step, nbtimes2)</I></span> which works in the
- same way, but the Axis is defined by
- direction and point. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/neo-mrot2.png" x-maintain-ratio="TRUE" width="312px" height="450px" border="0" class="img_whs9"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><img src="pics/multi_rotation2d1.png" x-maintain-ratio="TRUE" width="310px" height="405px" border="0" class="img_whs10"> <img src="pics/multi_rotation2d2.png" x-maintain-ratio="TRUE" width="337px" height="405px" border="0" class="img_whs11"></p>
-
-<p class="whs2"> <span
- style="font-size: 12pt; margin-left: 40px;"><font size=3 style="font-size:12pt;"> </font></span></p>
-
-<p class="whs5">Our <span style="font-weight: bold;"><B>TUI
- Scripts</B></span> provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark9">Transformation
- Operations</a>. </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>Multi Transformation</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:24px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:381px; float:none; border-style:none; }
-img_whs6 { border:none; width:301px; height:306px; float:none; border-style:none; }
-img_whs7 { border:none; width:312px; height:494px; float:none; border-style:none; }
-img_whs8 { border:none; width:277px; height:304px; float:none; border-style:none; }
-p.whs9 { font-weight:bold; }
-p.whs10 { font-size:12pt; text-indent:-40px; font-weight:bold; margin-left:80px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs10 {text-indent: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("Geometry module\nTransforming geometrical objects\nBlocks Operations\nMulti Transformation");
-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="image52.gif" width="24px" height="22px" border="0" class="img_whs1"> Block Multi Transformation</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Multi Transformation</B></span> operation
- in the Main Menu select <span style="font-weight: bold;"><B>Operations -
- > Blocks - > Multi Transformation</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation makes several translations of
- a block (solid) in <span style="font-weight: bold;"><B>one</B></span> or <span
- style="font-weight: bold;"><B>two</B></span> directions depending on the arguments
- specified by the user.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result<span style="font-weight: normal;"> in both cases will be a</span></b>
- GEOM_Object.</p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Simple Multi
- Transformation (in one direction).</b></p>
-
-<p class="whs3"><b style="font-weight: bold;">TUI
- Command:</b><i> </i><span style="font-style: italic; font-weight: normal;"><I>geompy.
- MakeMultiTransformation1D(Block, DirFaceID1, DirFaceID2, NbTimes), </I></span><span
- style="font-weight: normal;">where</span><span style="font-style: italic; font-weight: normal;"><I>
- Block </I></span><span style="font-weight: normal;">is a block to be transformed,</span><span
- style="font-style: italic; font-weight: normal;"><I> DirFaceID1 </I></span><span
- style="font-weight: normal;">is an ID of the face which defines the first
- direction of transformation,</span><span style="font-style: italic; font-weight: normal;"><I>
- DirFaceID2 </I></span><span style="font-weight: normal;">is an ID of the face
- which defines the second direction of transformation,</span><span style="font-style: italic; font-weight: normal;"><I>
- NbTimes </I></span><span style="font-weight: normal;">is a number of transformations.</span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 hexahedral solid + 1 or 2 faces + 1 integer (number of blocks).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/mtransf1.png" x-maintain-ratio="TRUE" width="312px" height="381px" border="0" class="img_whs5"> <img src="pics/multi_transformationsn1d.png" x-maintain-ratio="TRUE" width="301px" height="306px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Double
- Multi Transformation (in two directions).</b></font></span></p>
-
-<p class="whs2"><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI
- Command:</b><i> </i></B></span><span style="font-size: 12pt; font-style: italic;"><font size=3 style="font-size:12pt;"><I>geompy.
- MakeMultiTransformation2D(Block, DirFaceID1U, DirFaceID2U, NbTimesU, DirFaceID1V,
- DirFaceID2V, NbTimesV)</I></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, where Block
- is a block to be transformed, DirFaceID1U and DirFaceID2U are IDs of the
- faces, which define directions of the first transformation, DirFaceID1V
- and DirFaceID2V are ID\92s of the faces which define directions of the second
- transformation, NbTimesU and NbTimesV are numbers of transformations.</font></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b><span
- style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Name
- + 1 hexahedral solid + 2, 3 or 4 faces + 2 integers (number of blocks).</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/mtransf2.png" x-maintain-ratio="TRUE" width="312px" height="494px" border="0" class="img_whs7"> <img src="pics/multi_transformationsn2d.png" x-maintain-ratio="TRUE" width="277px" height="304px" border="0" class="img_whs8"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs9"> <span
- style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Our</font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> TUI Scripts</font></span><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of</font></span><span style="font-size: 12pt;">
- <font size=3 style="font-size:12pt;"><a href="blocks_operations.htm#bookmark4">Blocks Operations</a>. </font></span></p>
-
-<p class="whs9"> </p>
-
-<p> </p>
-
-<p class="whs10"> </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>Multi Translation</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:398px; float:none; border-style:none; }
-img_whs5 { border:none; height:203px; float:none; width:282px; border-style:none; }
-img_whs6 { border:none; width:291px; height:202px; float:none; border-style:none; }
-img_whs7 { border:none; width:312px; height:509px; float:none; border-style:none; }
-img_whs8 { border:none; float:none; width:292px; height:209px; border-style:none; }
-img_whs9 { border:none; width:288px; height:209px; float:none; border-style:none; }
-p.whs10 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nMulti Translation");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image132.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Multi Translation</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Multi Translation</B></span> in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Multi Translation</B></span> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: normal;">This operation</b>
- makes several translations of a shape in <span style="font-weight: bold;"><B>one</B></span>
- or <span style="font-weight: bold;"><B>two</B></span> directions.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be one or several</span></b>
- GEOM_Objects (compound).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To produce a <span style="font-weight: bold;"><B>Simple
- Multi Translation</B></span> (in one direction) you need to indicate a <span
- style="font-weight: bold;"><B>Shape</B></span> to be translated, a <span style="font-weight: bold;"><B>Vector</B></span>
- of translation, a <span style="font-weight: bold;"><B>Step</B></span> of translation
- and a <span style="font-weight: bold;"><B>Number of Times</B></span> the shape
- must be moved.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:
- </b><span style="font-style: italic;"><I>geompy.MakeMultiTranslation1D(Shape,
- Dir, Step, NbTimes)</I></span></p>
-
-<p class="whs2"><b>A<span style="font-weight: bold;"><B>rguments:
- </B></span></b>Name + 1 shape + 1 vector (for direction) + 1 step value +
- 1 value (repetition).</p>
-
-<p class="whs3"><img src="pics/mtrans1.png" x-maintain-ratio="TRUE" width="312px" height="398px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/multi_translation_initialsn.png" x-maintain-ratio="TRUE" height="203px" width="282px" border="0" class="img_whs5"> <img src="pics/multi_translation1dsn.png" x-maintain-ratio="TRUE" width="291px" height="202px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To produce a
- </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Double Multi
- Translation</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (in two directions)
- you need to indicate a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Shape</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> to be translated and a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Vector</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> of translation, a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Step</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> of translation and a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Number
- of Times</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> the shape must be moved
- along each axis.</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:
- <span style="font-style: italic; font-weight: normal;"><I>g</I></span></b><span
- style="font-style: italic;"><I>eompy.MakeMultiTranslation2D(Shape, Dir1,
- Step1, NbTimes1, Dir2, Step2, NbTimes2)</I></span>, where <span style="font-style: italic;"><I>Shape</I></span>
- is a shape to be translated, <span style="font-style: italic;"><I>Dir1</I></span>
- is the first direction of translation, <span style="font-style: italic;"><I>Step1</I></span>
- of the first translation, <span style="font-style: italic;"><I>NbTimes1</I></span>
- is a number of translations to be done along <span style="font-style: italic;"><I>Dir1</I></span>,
- <span style="font-style: italic;"><I>Dir2</I></span> is the second direction
- of translation, <span style="font-style: italic;"><I>Step2</I></span> of the
- second translation, <span style="font-style: italic;"><I>NbTimes2</I></span>
- is a number of translations to be done along <span style="font-style: italic;"><I>Dir2</I></span>.</p>
-
-<p class="whs2"><b style="font-weight: bold;">A<span style="font-weight: bold;"><B>rguments:
- </B></span></b>Name + 1 shape + 2 vectors defining the direction + 2 step
- values + 2 values (repetitions).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/mtrans2.png" x-maintain-ratio="TRUE" width="312px" height="509px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/multi_translation_initialsn.png" x-maintain-ratio="TRUE" width="292px" height="209px" border="0" class="img_whs8"> <img src="pics/multi_translation2dsn.png" x-maintain-ratio="TRUE" width="288px" height="209px" border="0" class="img_whs9"></p>
-
-<p class="whs2"> <span style="list-style: disc;
- margin-left: 0in;
- margin-right: 0in;
- margin-top: 0px;
- margin-bottom: 0px;"> </span></p>
-
-<p class="whs10"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark8">Transformation
- Operations</a>. </font></span></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>Blocks</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-size:14pt; font-weight:bold; }
-img_whs2 { border:none; float:none; width:30px; height:30px; border-style:none; }
-ul.whs3 { list-style:disc; }
-img_whs4 { border:none; width:23px; height:22px; border-style:none; }
-p.whs5 { font-size:12pt; }
-p.whs6 { font-size:12pt; font-style:italic; font-weight:normal; }
-table.whs7 { x-cell-content-align:top; width:66.515%; border-spacing:0px; }
-col.whs8 { width:32.996%; }
-col.whs9 { width:33.052%; }
-col.whs10 { width:33.952%; }
-tr.whs11 { x-cell-content-align:top; }
-td.whs12 { width:32.996%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs13 { border:none; width:312px; height:410px; float:none; border-style:none; }
-td.whs14 { width:33.052%; padding-right:10px; padding-left:10px; border-right-style:none; border-top-style:none; border-bottom-style:none; }
-td.whs15 { width:33.952%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-p.whs16 { font-weight:bold; }
-p.whs17 { margin-left:40px; }
-img_whs18 { border:none; width:250px; height:195px; border-style:none; }
-img_whs19 { border:none; width:24px; height:22px; border-style:none; }
-table.whs20 { x-cell-content-align:top; width:40.406%; border-spacing:0px; }
-col.whs21 { width:49.761%; }
-col.whs22 { width:50.239%; }
-td.whs23 { width:49.761%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs24 { border:none; width:312px; height:324px; float:none; border-style:none; }
-td.whs25 { width:50.239%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs26 { border:none; width:312px; height:464px; float:none; border-style:none; }
-td.whs27 { width:49.761%; padding-right:10px; padding-left:10px; border-left-style:none; border-right-style:none; border-bottom-style:none; }
-td.whs28 { width:50.239%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
-p.whs29 { font-size:12pt; font-weight:bold; }
-p.whs30 { font-size:12pt; font-weight:bold; margin-left:0px; }
-img_whs31 { border:none; width:300px; height:234px; float:none; border-style:none; }
-img_whs32 { border:none; width:251px; height:234px; border-style:none; }
-p.whs33 { font-size:12pt; margin-left:40px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs30 {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("Geometry module\nCreating geometrical objects\nBuilding by blocks");
-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>Building by blocks</h1>
-
-<p class="whs1"><span style="font-size: 14pt; font-weight: bold;"><font size=4 style="font-size:14pt;"><B>Introduction.</B></font></span></p>
-
-<p> </p>
-
-<p>Below are some general notions about blocks:</p>
-
-<p> </p>
-
-<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><img src="i_blue.jpg" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="30px" height="30px" border="0" class="img_whs2"></b></font></span>A block is a an elementary geometric solid that
- has specific geometric constraints oriented for meshing. In the hexahedral
- case, blocks have 6 faces and each face has 4 edges. </p>
-
-<p> </p>
-
-<p>Tetrahedral Block - is a block with constraints for tetrahedral meshing.
- </p>
-
-<p> </p>
-
-<p>Hexahedral Block - is a block with constraints for hexahedral meshing.</p>
-
-<p> </p>
-
-<p>Block Compound - is a compound composed of blocks only.</p>
-
-<p> </p>
-
-<p>These functionalities are available from the main menu via <span style="font-style: italic;"><I>New
- Entity / Blocks.</I></span></p>
-
-<p> </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p><a href="#QuadrangleFace">Quadrangle face</a></p></li>
-
- <li class=kadov-p><p><a href="#HexahedralSolid">Hexahedral solid</a></p></li>
-</ul>
-
-<p> </p>
-
-<p> </p>
-
-<p><a name=QuadrangleFace><img src="image29.gif" width="23px" height="22px" border="0" class="img_whs4"><span style="font-size: 14pt; font-weight: bold;"><font size=4 style="font-size:14pt;"><B>Quadrangle
- face</B></font></span></a></p>
-
-<p> </p>
-
-<p class="whs5"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Description:</b>
- Builds a face using the below mentioned arguments. This operation allows
- to build a face bypassing the intermediate stage of building edges and
- wires (in the case of building by 4 points) or wires (in the case of building
- by 4 or 2 edges).</font></span></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">T</b><b>he</font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Result </font></span><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">of
- the operation will be a</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b> GEOM_Object</b></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (face).</font></span></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">TUI Command:</b></p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs6"><b style="font-weight: normal;">geompy.MakeQuad4Vertices(V1,
- V2, V3, V4), <span style="font-style: normal;">where V1, V2, V3, V4 are
- four vertices from which a face is constructed. Edges are created automatically.</span></b></p></li>
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.MakeQuad2Edges(E1,
- E2)</I></span>, where E1, E2 are edges from which the face is constructed,
- two other edges are created automatically.</p></li>
-
- <li class=kadov-p><p class="whs5"><b style="font-weight: normal;"><span
- style="font-style: italic;"><I>g</b>eompy.MakeQuad(E1, E2, E3, E4)</I></span>,
- where E1, E2, E3, E4 are four edges from which the face is constructed.</p></li>
-</ul>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Arguments:</b>
- </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs5">Name + 4 Points, or</p></li>
-
- <li class=kadov-p><p class="whs5">Name + 2 Edges, or </p></li>
-
- <li class=kadov-p><p class="whs5">Name + 4 Edges.</p></li>
-</ul>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<table x-use-null-cells cellspacing="0" width="66.515%" class="whs7">
-<col class="whs8">
-<col class="whs9">
-<col class="whs10">
-
-<tr valign="top" class="whs11">
-<td width="32.996%" class="whs12">
-<p><img src="pics/block1.png" x-maintain-ratio="TRUE" width="312px" height="410px" border="0" class="img_whs13"></td>
-<td width="33.052%" class="whs14">
-<p><img src="pics/block2.png" x-maintain-ratio="TRUE" width="312px" height="410px" border="0" class="img_whs13"></td>
-<td width="33.952%" class="whs15">
-<p><img src="pics/block3.png" x-maintain-ratio="TRUE" width="312px" height="410px" border="0" class="img_whs13"></td></tr>
-</table>
-
-<p class="whs5"> </p>
-
-<p> </p>
-
-<p class="whs16">Example:</p>
-
-<p class="whs16"> </p>
-
-<p class="whs17"><img src="image185.jpg" width="250px" height="195px" border="0" class="img_whs18"> </p>
-
-<p> </p>
-
-<p> </p>
-
-<p><a name=HexahedralSolid><img src="image51.gif" width="24px" height="22px" border="0" class="img_whs19"> <span style="font-size: 14pt; font-weight: bold;"><font size=4 style="font-size:14pt;"><B>Hexahedral
- solid</B></font></span></a></p>
-
-<p> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Description:</b>
- Builds a hexahedral solid. either of the below mentioned arguments. This
- operation allows to build a solid bypassing the intermediate stage of
- building a shell and 4 faces (in the case of building by 2 faces) or just
- a shell (in the case of building by 6 faces).</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result<span style="font-weight: normal;"> of the operation will be a</span></b><b>
- GEOM_Object</b> (solid).</p>
-
-<p> </p>
-
-<p class="whs5"><b style="font-weight: bold;">TUI Command:</b></p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.MakeHexa2Faces(F1,
- F2)</I></span><span style="font-style: italic;"><I>, where F1 and F2 are faces
- from which the hexahedron is constructed, other four faces are created
- automatically.</I></span></p></li>
-
- <li class=kadov-p><p class="whs5"><span style="font-style: italic;"><I>geompy.MakeHexa(F1,
- F2, F3, F4, F5, F6)</I></span>, where F1 \96 F6 are six faces from which the
- hexahedron is constructed.</p></li>
-</ul>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Arguments:</b>
- </p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs5">Name + 2 Faces, or </p></li>
-
- <li class=kadov-p><p class="whs5">Name + 6 Faces.</p></li>
-</ul>
-
-<p class="whs5"> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs5"> </p>
-
-<table x-use-null-cells cellspacing="0" width="40.406%" class="whs20">
-<col class="whs21">
-<col class="whs22">
-
-<tr valign="top" class="whs11">
-<td width="49.761%" class="whs23">
-<p class="whs5"><b style="font-weight: bold;"> <img src="pics/block4.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs24"></b></td>
-<td width="50.239%" class="whs25">
-<p><img src="pics/block5.png" x-maintain-ratio="TRUE" width="312px" height="464px" border="0" class="img_whs26"></td></tr>
-
-<tr valign="top" class="whs11">
-<td colspan="1" rowspan="1" width="49.761%" class="whs27">
-<p class="whs5"> </td>
-<td colspan="1" rowspan="1" width="50.239%" class="whs28">
-<p> </td></tr>
-</table>
-
-<p class="whs5"> </p>
-
-<p class="whs29">Example:</p>
-
-<p class="whs29"> </p>
-
-<p class="whs30"><img src="image180.jpg" x-maintain-ratio="TRUE" width="300px" height="234px" border="0" class="img_whs31"> <img src="image181.jpg" width="251px" height="234px" border="0" class="img_whs32"> </p>
-
-<p class="whs33"><b style="font-weight: bold;"> </b> </p>
-
-<p class="whs5">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of <a href="building_by_blocks.htm">Building
- by Blocks</a>. </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>Offset Surface</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:24px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; font-weight:bold; }
-img_whs4 { border:none; width:312px; height:315px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; }
-p.whs6 { font-size:12pt; margin-left:40px; }
-img_whs7 { border:none; width:235px; height:236px; float:none; border-style:none; }
-p.whs8 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nOffset Surface");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image37.gif" width="24px" height="22px" border="0" class="img_whs1"></font></span>Offset Surface</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- an <span style="font-weight: bold;"><B>Offset Surface</B></span> in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Transformation
- - ></B></span> <span style="font-weight: bold;"><B>Offset Surface</B></span></p>
-
-<p> </p>
-
-<p class="whs2">This operation<span style="font-weight: bold;">
- <B></B></span>translates each point of an<span style="font-weight: bold;"><B> Object</B></span>
- (a set of Objects) along a local normal by a given <span style="font-weight: bold;"><B>Offset</B></span>
- distance (signed number, negative value meaning inner offset). <span style="font-weight: bold;"><B>Offset</B></span>
- operation is applicable to faces, shells and solids.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: bold;"><B>T</B></span>UI
- Command: </b><span style="font-style: italic;"><I>geompy.MakeOffset(Shape,
- Offset)</I></span>, where Shape is a shape which has to be an offset, Offset
- is a value of the offset.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name + Object (face, shell, solid, compound)
- + Offset value </font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/transformation11.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5">Example:</p>
-
-<p class="whs6"><img src="pics/offsetsn.png" x-maintain-ratio="TRUE" width="235px" height="236px" border="0" class="img_whs7"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs8"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark7">Transformation
- Operations</a>. </font></span></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>Partition</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:normal; }
-p.whs4 { font-weight:bold; font-size:14pt; }
-p.whs5 { font-size:12pt; margin-left:40px; }
-img_whs6 { border:none; width:400px; height:350px; float:none; border-style:none; }
-img_whs7 { border:none; width:400px; height:324px; float:none; border-style:none; }
-img_whs8 { border:none; float:none; width:297px; height:245px; border-style:none; }
-img_whs9 { border:none; float:none; width:273px; height:245px; 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("Geometry module\nTransforming geometrical objects\nBasic Operations\nPartition");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_operationgui_functions_salome2_sp3_operationgui_functions_image87.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Partition</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Partition</B></span> in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>Operations - >
- Partition</B></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b><span style="font-weight: normal;">This
- operation </b>builds a shape by intersection of two shapes or a shape
- and a plane.</span></p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be any</span> </b>GEOM_Object.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><b><span style="font-weight: bold;"><B>Intersection
- of two shapes.</B></span></b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3">As far as the intersection
- of two objects can produce any type of geometrical objects, <span style="font-weight: bold;"><B>Reconstruction
- Limit</B></span> box allows to choose the preferrable result, i.e. a solid,
- a shell, a list of faces, etc.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakePartition(ListOfShapes,
- ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs,
- ListOfMaterials)</I></span>, where <span style="font-style: italic;"><I>ListOfShapes</I></span>
- is a list of shapes to be intersected and <span
- style="font-style: italic;"><I>ListOfTools</I></span>
- is a list of shapes to intersect the shapes from ListOfShapes. </p>
-
-<p class="whs2">Since the implementation of a new version of
- PartitionAlgo other parameters are ignored by the current functionality
- and remain there only to support the old scripts. </p>
-
-<p class="whs2"><b>Arguments:</b> Name + 2 lists of shapes
- (the shapes from the first list will be intersected with the shapes from
- the second list) + reconstruction limit.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/partition1.png" x-maintain-ratio="TRUE" width="400px" height="350px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs4">Intersection of a Shape
- and a Plane.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>TUI Command</B></span>
- <span style="font-style: italic;"><I>geompy.MakeHalfPartition(Shape,
- Plane), </I></span>where<span style="font-style: italic;"><I> Shape</I></span> is
- a Shape to be intersected and <span style="font-style: italic;"><I>Plane</I></span>
- is a Tool shape, to intersect the <span style="font-style: italic;"><I>Shape</I></span>.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 shape which will be intersected + 1 cutting face.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/partition2.png" x-maintain-ratio="TRUE" width="400px" height="324px" border="0" class="img_whs7"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/partitionsn1.png" x-maintain-ratio="TRUE" width="297px" height="245px" border="0" class="img_whs8"> <img src="pics/partitionsn2.png" x-maintain-ratio="TRUE" width="273px" height="245px" border="0" class="img_whs9"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of the use of <a href="basic_operations.htm#bookmark">Basic Operations</a>.
- </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>Pipe Creation</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs5 { border:none; width:260px; height:200px; float:none; border-style:none; }
-img_whs6 { border:none; float:none; width:260px; height:200px; 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("Geometry module\nCreating geometrical objects\nCreating Complex Objects\nPipe");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image59.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Pipe Construction</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">generate
- a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Pipe</B></font></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Generation -
- > Extrusion along a path</B></span></p>
-
-<p> </p>
-
-<p>To create an extruded <span style="font-weight: bold;"><B>Pipe</B></span> shape,
- you need to define the <span style="font-weight: bold;"><B>Base Object </B></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">(vertex, edge, wire, face or shell)</font></span><span
- style="font-weight: bold;"><B>,</B></span> which will be extruded and the <span
- style="font-weight: bold;"><B>Path Object</B></span> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">(edge,
- face or shell) </font></span>along which the Base Object will be extruded. </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b>
- GEOM_Object (edge, face, solid or compsolid).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakePipe(baseShape, pathShape)</I></span>
- </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape (vertex, edge, wire, face or shell) serving as base object
- + 1 shape (edge, face or shell) for definition of the path.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/pipe.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/pipe_wire_edgesn.png" x-maintain-ratio="TRUE" width="260px" height="200px" border="0" class="img_whs5"> <img src="pics/pipesn.png" x-maintain-ratio="TRUE" width="260px" height="200px" border="0" class="img_whs6"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="complex_objects.htm#bookmark3">Complex Geometric
- Objects</a>. </p>
-
-<p> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> </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>Plane</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:346px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; }
-img_whs6 { border:none; width:312px; height:385px; float:none; border-style:none; }
-img_whs7 { border:none; width:400px; height:315px; float:none; }
-table.whs8 { x-cell-content-align:top; width:72.604%; border-spacing:0px; }
-col.whs9 { width:32.089%; }
-col.whs10 { width:32.008%; }
-col.whs11 { width:35.903%; }
-tr.whs12 { x-cell-content-align:top; }
-td.whs13 { width:32.089%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs14 { border:none; width:258px; height:249px; float:none; border-style:none; }
-td.whs15 { width:32.008%; padding-right:10px; padding-left:10px; border-right-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs16 { border:none; width:291px; height:181px; float:none; border-style:none; }
-td.whs17 { width:35.903%; 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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nPlane");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image33.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Plane</h1>
-
-<p>To create a <span style="font-weight: bold;"><B>Plane</B></span> in the <span
- style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Basic - > Plane</B></span></p>
-
-<p> </p>
-
-<p>There are three algorithms to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">create
- a plane in the 3D space.</font></span></p>
-
-<p><b style="font-weight: bold;"><span style="font-weight: normal;">The</span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Result </font></span><span style="font-weight: normal;">of
- each operation will be a</span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> GEOM_Object
- (face).</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Firstly, you can define a <span style="font-weight: bold;"><B>Plane</B></span>
- by a <span style="font-weight: bold;"><B>Point </B></span>through which the
- plane passes, a <span style="font-weight: bold;"><B>Vector </B></span>giving
- a normal of the plane and a <span style="font-weight: bold;"><B>Size of the
- Plane</B></span> (size of a side of quadrangle face, representing the plane).</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI
- Command:</b> </B></span><span style="font-style: italic;"><I>geompy.MakePlane(Point,
- Vector, TrimSize)</I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 vertex + 1 vector +
- 1 value (to define the size of the plane).</p>
-
-<p class="whs3"><b style="font-weight: bold;"><img src="pics/plane1.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs4"></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Secondly, you can define a <span style="font-weight: bold;"><B>Plane</B></span>
- by three <span style="font-weight: bold;"><B>Points </B></span>through which
- the plane
- passes and a <span style="font-weight: bold;"><B>Size of the Plane</B></span>.</p>
-
-<p class="whs5"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakePlaneThreePnt(Point1,
- Point2, Point3, TrimSize)</I></span> </p>
-
-<p class="whs5"><b style="font-weight: bold;">Arguments:
- </b><span style="font-weight: normal;">Name + 3 vertices + 1 value (to
- define the size of the plane).</span></p>
-
-<p class="whs5"> </p>
-
-<p class="whs3"><img src="pics/plane2.png" x-maintain-ratio="TRUE" width="312px" height="385px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Finally, you can define a <span style="font-weight: bold;"><B>Plane
- </B></span>by another <span style="font-weight: bold;"><B>Plane</B></span> or <span
- style="font-weight: bold;"><B>Local Coordinate System</B></span> and a <span
- style="font-weight: bold;"><B>Size of the Plane</B></span>. </p>
-
-<p class="whs2"><span style="font-weight: bold;"><B><b style="font-weight: bold;">TUI
- Command:</b> </B></span>geompy.MakePlaneFace(Face, TrimSize) </p>
-
-<p class="whs2"><b>Arguments: </b>Name + 1 face + 1 value (to
- define the size of the plane).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/plane3.png" x-maintain-ratio="TRUE" width="400px" height="315px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5">Examples:</p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><span style="font-weight: normal; font-style: italic;"><I>Planes</I></span>
- <span
- style="font-weight: normal; font-style: italic;"><I>A
- Plane created on a Plane of another size</I></span></p>
-
-<p class="whs2"> </p>
-
-<table x-use-null-cells cellspacing="0" width="72.604%" class="whs8">
-<col class="whs9">
-<col class="whs10">
-<col class="whs11">
-
-<tr valign="top" class="whs12">
-<td width="32.089%" class="whs13">
-<p class="whs2"><img src="pics/planes1.png" x-maintain-ratio="TRUE" width="258px" height="249px" border="0" class="img_whs14"></td>
-<td width="32.008%" class="whs15">
-<p class="whs2"><img src="pics/plane_on_face.png" x-maintain-ratio="TRUE" width="291px" height="181px" border="0" class="img_whs16"></td>
-<td width="35.903%" class="whs17">
-<p class="whs2"> </td></tr>
-</table>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="basic_geometrical_objects.htm#bookmark6">Basic
- Geometric Objects</a>. </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>Point</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:332px; float:none; border-style:none; }
-img_whs5 { border:none; width:312px; height:473px; float:none; border-style:none; }
-p.whs6 { font-size:12pt; margin-left:120px; }
-p.whs7 { font-size:12pt; margin-left:0px; }
-p.whs8 { font-size:12pt; font-style:italic; margin-left:0px; }
-img_whs9 { border:none; width:312px; height:421px; float:none; border-style:none; }
-p.whs10 { font-size:12pt; color:#000000; }
-p.whs11 { color:#808080; font-size:12pt; }
-img_whs12 { border:none; width:354px; height:326px; float:none; border-style:none; }
-p.whs13 { color:#808080; font-size:12pt; margin-left:40px; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs7 {margin-left:1pt; }";
- strNSS += "p.whs8 {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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nPoint");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image27.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Point</h1>
-
-<p>To create a <span style="font-weight: bold;"><B>Point</B></span> in the <span
- style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Basic - > Point</B></span></p>
-
-<p> </p>
-
-<p>There are three algorithms to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">create
- a </font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Point</B></font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the 3D space.</font></span></p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Each
- time the</span> Result <span style="font-weight: normal;">of the operation
- will be a</span></b> GEOM_Object (vertex).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Firstly,
- we can define a point by setting its X, Y and Z </span><span style="font-weight: bold;"><B>C</B></span></b><b><span
- style="font-weight: bold;"><B>oordinates</B></span><span style="font-weight: normal;">.</span>
- </b></p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b>
- <span style="font-style: italic;"><I>g</I></span>eompy.MakeVertex(X,
- Y, Z) </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- <b><span style="font-weight: normal;">(Vertex_n by default) </span></b>+
- X, Y and Z coordinates of the point.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/point1.png" x-maintain-ratio="TRUE" width="312px" height="332px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Secondly, we
- can define a point by a <span style="font-weight: bold;"><B>Reference</B></span>
- to another point and the shift of the coordinates of the new point regarding
- the coordinates of the old one. </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b>
- <span style="font-style: italic;"><I>geompy.MakeVertexWithRef(Reference,
- X, Y, Z).</I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 reference point + 3 coordinates defining the position of this point
- regarding the reference one.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><span style="font-style: italic;"><I><img src="pics/neo-point2.png" x-maintain-ratio="TRUE" width="312px" height="473px" border="0" class="img_whs5"></I></span></p>
-
-<p class="whs6"> </p>
-
-<p class="whs7">Finally, we can define a
- point by an <span style="font-weight: bold;"><B>Edge</B></span> and a <span style="font-weight: bold;"><B>Parameter</B></span>
- indicating
- its position on the Edge. For example, 0.5 means that the point is located
- in the middle of the edge.<span style="font-style: italic;"> <I></I></span></p>
-
-<p class="whs8"><span style="font-style: italic;"><I><b style="font-weight: bold; font-style: normal;">TUI
- Command :</b> geompy.MakeVertexOnCurve(Edge,
- Parameter).</I></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: N</b>ame
- + 1 edge +
- 1 Parameter defining the position of the point on the given edge.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><span style="font-style: italic;"><I><b
- style="font-weight: bold;"><img src="pics/point3.png" x-maintain-ratio="TRUE" width="312px" height="421px" border="0" class="img_whs9"></b></I></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs10"><span style="font-style: italic;"><I><span
- style="font-size: 12pt; color: #000000;"><font size=3 color=black style="font-size:12.000000pt;"><b style="font-weight: bold;"><b
- style="font-weight: bold;">E</b>xample:</b></font></span></I></span></p>
-
-<p class="whs11"> </p>
-
-<p class="whs3"><span style="font-style: italic;"><I><b
- style="font-weight: bold;"><img src="pics/points.png" x-maintain-ratio="TRUE" width="354px" height="326px" border="0" class="img_whs12"></b></I></span></p>
-
-<p class="whs13"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="basic_geometrical_objects.htm#bookmark" style="font-style: normal;">Basic
- Geometric Objects</a>. </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>Primitives</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-family:'Lucida Console' , monospace; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nPrimitives");
-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>Primitives</h1>
-
-<h3><a name=bookmark>Creation of a Box</a></h3>
-
-<p>i<span style="font-family: 'Lucida Console', monospace;">mport geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(15,
- 25, 35)</p>
-
-<p class="whs1">p70 = geompy.MakeVertex(70,
- 70, 70)</p>
-
-<p> </p>
-
-<p># create boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBoxDXDYDZ(10,
- 20, 30)</p>
-
-<p class="whs1">box2 = geompy.MakeBox(10,20,30,
- 15,25,35)</p>
-
-<p class="whs1">box3 = geompy.MakeBoxTwoPnt(p0,
- p70)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box1 = geompy.addToStudy(box1,"Box1")</p>
-
-<p class="whs1">id_box2 = geompy.addToStudy(box2,"Box2")</p>
-
-<p class="whs1">id_box3 = geompy.addToStudy(box3,"Box3")</p>
-
-<p> </p>
-
-<p># display the boxes</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box3)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_box3,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark1>Creation of a Cylinder</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(25,
- 35, 45)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(70,
- 70, 70)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create cylinders</p>
-
-<p class="whs1">height = 40</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">radius1 = 15</p>
-
-<p class="whs1">cylinder1 = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">radius2 = 30</p>
-
-<p class="whs1">cylinder2 = geompy.MakeCylinderRH(radius2,
- height)</p>
-
-<p class="whs1"> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cylinder1 = geompy.addToStudy(cylinder1,"Cylinder1")</p>
-
-<p class="whs1">id_cylinder2 = geompy.addToStudy(cylinder2,"Cylinder2")</p>
-
-<p> </p>
-
-<p># display the cylinders</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cylinder1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cylinder1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cylinder2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cylinder2,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark2>Creation of a Sphere</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex</p>
-
-<p class="whs1">p = geompy.MakeVertex(55,
- 45, 25)</p>
-
-<p> </p>
-
-<p># create spheres</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">sphere1 = geompy.MakeSpherePntR(p,
- radius1)</p>
-
-<p class="whs1">radius2 = 15</p>
-
-<p class="whs1">sphere2 = geompy.MakeSphere(0,
- 0, 45, radius2)</p>
-
-<p class="whs1">radius3 = 30</p>
-
-<p class="whs1">sphere3 = geompy.MakeSphereR(radius3)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_sphere1 = geompy.addToStudy(sphere1,"Sphere1")</p>
-
-<p class="whs1">id_sphere2 = geompy.addToStudy(sphere2,"Sphere2")</p>
-
-<p class="whs1">id_sphere3 = geompy.addToStudy(sphere3,"Sphere3")</p>
-
-<p> </p>
-
-<p># display spheres</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sphere1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_sphere1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sphere2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_sphere2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sphere3)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_sphere3,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Creation of a Torus</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(35,
- 40, 45)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(35,
- 45, 70)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create toruses</p>
-
-<p class="whs1">torus1 = geompy.MakeTorus(p1,
- v, 20, 10)</p>
-
-<p class="whs1">torus2 = geompy.MakeTorusRR(30,
- 15)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_torus1 = geompy.addToStudy(torus1,"Torus1")</p>
-
-<p class="whs1">id_torus2 = geompy.addToStudy(torus2,"Torus2")</p>
-
-<p> </p>
-
-<p># display toruses</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_torus1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_torus1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_torus2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_torus2,1)</span>
- </p>
-
-<h3><a name=bookmark4>Creation of a Cone</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(35,
- 35, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(35,
- 35, 70)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create cones</p>
-
-<p class="whs1">cone1 = geompy.MakeCone(p1,
- v, 17, 1, 20)</p>
-
-<p class="whs1">cone2 = geompy.MakeConeR1R2H(30,
- 10, 30)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cone1 = geompy.addToStudy(cone1,"Cone1")</p>
-
-<p class="whs1">id_cone2 = geompy.addToStudy(cone2,"Cone2")</p>
-
-<p> </p>
-
-<p># display cones</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cone1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cone1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cone2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cone2,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">
-
-<html>
-
-<head>
-<title>Propagate</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:23px; height:21px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { margin-left:40px; font-size:12pt; }
-img_whs4 { border:none; width:312px; height:230px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; margin-left:40px; text-indent:-40px; }
-p.whs6 { font-size:12pt; margin-left:40px; text-indent:-40px; font-weight:bold; }
-p.whs7 { font-size:12pt; text-indent:-40px; font-weight:bold; margin-left:80px; }
-img_whs8 { border:none; width:250px; height:236px; border-style:none; }
-img_whs9 { border:none; width:250px; height:233px; border-style:none; }
-p.whs10 { font-weight:bold; }
--->
-</style><script type="text/javascript" language="JavaScript">
-<!--
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
-{
- var strNSS = "<style type='text/css'>";
- strNSS += "p.whs5 {text-indent:1pt; }";
- strNSS += "p.whs6 {text-indent:1pt; }";
- strNSS += "p.whs7 {text-indent: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("Geometry module\nTransforming geometrical objects\nBlocks Operations\nPropagate");
-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="image3.gif" width="23px" height="21px" border="0" class="img_whs1"> Propagate</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Propagate</B></span> operation in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Blocks
- - ></B></span> <span style="font-weight: bold;"><B>Propagate</B></span></p>
-
-<p> </p>
-
-<p class="whs2">This operation breaks a multitude of edges
- of a shape into groups (builds all possible propagation groups).</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> List of
- GEOM_Objects. Each Geom Object will contain a group of edges.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.Propagate(Shape)</I></span>,
- where Shape is a shape to build propagation groups on.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: <span
- style="font-weight: normal;">1 Shape.</span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/mtransf4.png" x-maintain-ratio="TRUE" width="312px" height="230px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs6">Example:</p>
-
-<p class="whs6"> </p>
-
-<p class="whs7"><img src="image15.jpg" width="250px" height="236px" border="0" class="img_whs8"> <img src="image16.jpg" width="250px" height="233px" border="0" class="img_whs9"> </p>
-
-<p class="whs7"> </p>
-
-<p class="whs10"> <span
- style="font-weight: normal;">Our</span> TUI
- Scripts<span style="font-weight: normal;"> provide you with useful examples
- of the use of</span> <a href="blocks_operations.htm#bookmark6">Blocks
- Operations</a>. </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>Repairing Operations</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nTransformation\nRepairing Operations");
-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>Repairing Operations</h1>
-
-<h3><a name=bookmark>Shape Processing</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices, an edge, an arc, a wire, a face and a prism</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(0,0,0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(200,0,0)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(100,150,0)</p>
-
-<p class="whs1">edge = geompy.MakeEdge(p1,p2)</p>
-
-<p class="whs1">arc =
- geompy.MakeArc(p1,p3,p2)</p>
-
-<p class="whs1">wire = geompy.MakeWire([edge,arc])</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- 1)</p>
-
-<p class="whs1">theShape = geompy.MakePrismVecH(face,
- edge, 130)</p>
-
-<p> </p>
-
-<p># check the shape at the beginning</p>
-
-<p class="whs1">print "Before
- ProcessShape:"</p>
-
-<p class="whs1">isValid = geompy.CheckShape(theShape)</p>
-
-<p class="whs1">if isValid == 0:</p>
-
-<p class="whs1"> print
- "The shape is not valid"</p>
-
-<p class="whs1">else:</p>
-
-<p class="whs1"> print
- "The shape seems to be valid"</p>
-
-<p class="whs1"> </p>
-
-<p># process the Shape</p>
-
-<p class="whs1">Operators = ["FixShape"]</p>
-
-<p class="whs1">Parameters = ["FixShape.Tolerance3d"]</p>
-
-<p class="whs1">Values = ["1e-7"]</p>
-
-<p class="whs1">PS = geompy.ProcessShape(theShape,
- Operators, Parameters, Values)</p>
-
-<p> </p>
-
-<p># check the shape at the end</p>
-
-<p class="whs1">print "After
- ProcessShape:"</p>
-
-<p class="whs1">isValid = geompy.CheckShape(PS)</p>
-
-<p class="whs1">if isValid == 0:</p>
-
-<p class="whs1"> print
- "The shape is not valid"</p>
-
-<p class="whs1"> raise
- RuntimeError, "It seems, that the ProcessShape() has failed"</p>
-
-<p class="whs1">else:</p>
-
-<p class="whs1"> print
- "The shape seems to be valid"</p>
-
-<p> </p>
-
-<p># add in the study and display</p>
-
-<p class="whs1">Id_Shape = geompy.addToStudy(theShape,
- "Invalid Shape")</p>
-
-<p class="whs1">Id_PS =
- geompy.addToStudy(PS, "Processed Shape")</p>
-
-<p class="whs1">gg.createAndDisplayGO(Id_Shape)</p>
-
-<p class="whs1">gg.setDisplayMode(Id_Shape,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(Id_PS)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(Id_PS,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark1>Suppress Faces</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p> </p>
-
-<p># The list of IDs (IDList) for suppress faces</p>
-
-<p class="whs1">sup_faces = []</p>
-
-<p class="whs1">sup_faces = geompy.SubShapeAllSorted(box,
- geompy.ShapeType["FACE"])</p>
-
-<p> </p>
-
-<p># get indices of the sub-shape </p>
-
-<p class="whs1">f1_id = geompy.GetSubShapeID(box,
- sup_faces[3])</p>
-
-<p> </p>
-
-<p># remove faces from the given object (shape)</p>
-
-<p class="whs1">result = geompy.SuppressFaces(box,
- [f1_id])</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs1">id_result = geompy.addToStudy(result,
- "Result")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_result)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark2>Close Contour</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices and vectors</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0.,
- 0.)</p>
-
-<p class="whs1">py =
- geompy.MakeVertex( 0.,
- 100., 0.)</p>
-
-<p class="whs1">py1 = geompy.MakeVertex(
- 0., 140.,
- 0.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0.,
- 0.,
- 100.)</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p> </p>
-
-<p># create an arc</p>
-
-<p class="whs1">arc = geompy.MakeArc(py1,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># close an open wire by creation of an edge between ends</p>
-
-<p class="whs1">wire_close = geompy.CloseContour(wire,
- [1], 0)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_wire = geompy.addToStudy(wire,
- "Wire")</p>
-
-<p class="whs1">id_wire_close = geompy.addToStudy(wire_close,
- "Wire close")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_wire)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_wire_close)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Suppress Internal Wires</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(55,
- 65, 50)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(55,
- 0, 50)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 100</p>
-
-<p class="whs1">radius1 = 40</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,
- 100, 100)</p>
-
-<p> </p>
-
-<p># make a cut</p>
-
-<p class="whs1">cut = geompy.MakeCut(box,
- cylinder)</p>
-
-<p> </p>
-
-<p># suppress all internal wires</p>
-
-<p class="whs1">result = geompy.SuppressInternalWires(cut,
- [])</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cut = geompy.addToStudy(cut,
- "Cut")</p>
-
-<p class="whs1">id_result = geompy.addToStudy(result,
- "Result")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cut)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cut,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_result)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark4>Suppress Holes</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(35,
- 35, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(35,
- 35, 50)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 20</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create a cone</p>
-
-<p class="whs1">cone = geompy.MakeCone(p1,
- v, 70, 0, 80)</p>
-
-<p> </p>
-
-<p># make a cut</p>
-
-<p class="whs1">cut = geompy.MakeCut(cone,
- cylinder)</p>
-
-<p> </p>
-
-<p># get faces as sub-shapes</p>
-
-<p class="whs1">faces = []</p>
-
-<p class="whs1">faces = geompy.SubShapeAllSorted(cut,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">f_2 = geompy.GetSubShapeID(cut,
- faces[2])</p>
-
-<p> </p>
-
-<p># remove one face from the shape</p>
-
-<p class="whs1">cut_without_f_2 =
- geompy.SuppressFaces(cut, [f_2])</p>
-
-<p> </p>
-
-<p># get wires as sub-shapes</p>
-
-<p class="whs1">wires = []</p>
-
-<p class="whs1">wires = geompy.SubShapeAllSorted(cut_without_f_2,
- geompy.ShapeType["WIRE"])</p>
-
-<p class="whs1">w_0 = geompy.GetSubShapeID(cut_without_f_2,
- wires[0])</p>
-
-<p> </p>
-
-<p># suppress the selected wire</p>
-
-<p class="whs1">result = geompy.SuppressHoles(cut_without_f_2,
- [w_0])</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cut = geompy.addToStudy(cut,
- "Cut")</p>
-
-<p class="whs1">id_cut_without_f_2
- = geompy.addToStudy(cut_without_f_2, "Cut without f_2")</p>
-
-<p class="whs1">id_result = geompy.addToStudy(result,
- "Result")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cut)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cut,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cut_without_f_2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cut_without_f_2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_result)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark5>Sewing</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create base points</p>
-
-<p class="whs1">px = geompy.MakeVertex(100.,
- 0., 0.)</p>
-
-<p class="whs1">py = geompy.MakeVertex(0.,
- 100., 0.)</p>
-
-<p class="whs1">pz = geompy.MakeVertex(0.,
- 0., 100.)</p>
-
-<p> </p>
-
-<p># create base geometry 2D & 3D</p>
-
-<p class="whs1">vector = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create base objects</p>
-
-<p class="whs1">angle = 45. * math.pi
- / 180</p>
-
-<p class="whs1">WantPlanarFace = 1
- #True</p>
-
-<p class="whs1">wire = geompy.MakeWire([vector,
- arc])</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- WantPlanarFace)</p>
-
-<p class="whs1">face_rot = geompy.MakeRotation(face,
- vector, angle)</p>
-
-<p> </p>
-
-<p># make sewing</p>
-
-<p class="whs1">precision = 0.00001</p>
-
-<p class="whs1">sewing = geompy.MakeSewing([face,
- face_rot], precision)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_face = geompy.addToStudy(face,
- "Face")</p>
-
-<p class="whs1">id_face_rot = geompy.addToStudy(face_rot,
- "Face rotation")</p>
-
-<p class="whs1">id_sewing = geompy.addToStudy(sewing,
- "Sewing")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face_rot)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face_rot,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sewing)</p>
-
-<p class="whs1">gg.setDisplayMode(id_sewing,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark6>Glue Faces</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
-
-<p class="whs1">box2 = <span style="font-family: 'Lucida Console', monospace;">geompy.MakeBox(100,0,0,250,50,100)</span></p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># make compound</p>
-
-<p class="whs1">compound = geompy.MakeCompound([box1,
- box2])</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># glue compound's faces</p>
-
-<p class="whs1">tolerance = 1e-5</p>
-
-<p class="whs1">glue = geompy.MakeGlueFaces(compound,
- tolerance)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in study</p>
-
-<p class="whs1">id_box1 = geompy.addToStudy(box1,
- "Box1")</p>
-
-<p class="whs1">id_box2 = geompy.addToStudy(box2,
- "Box2")</p>
-
-<p class="whs1">id_compound = geompy.addToStudy(compound,
- "Compound")</p>
-
-<p class="whs1">id_glue = geompy.addToStudy(glue,
- "Glue faces")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_compound)</p>
-
-<p class="whs1">gg.setDisplayMode(id_compound,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_glue)</p>
-
-<p class="whs1">gg.setDisplayMode(id_glue,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark7>Add Point on Edge</a></h3>
-
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- geompy</span></p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create vertices</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(0,0,50)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(60,0,50)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># make an edge</p>
-
-<p class="whs1">edge = geompy.MakeEdge(p1,
- p2) #geompy.GetSubShape(box, edge_ind)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># divide an edge</p>
-
-<p class="whs1">divide = geompy.DivideEdge(edge,
- -1, 0.5, 0)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_edge = geompy.addToStudy(edge,
- "Edge")</p>
-
-<p class="whs1">edge_points = geompy.SubShapeAllSorted(edge,
- geompy.ShapeType["VERTEX"])</p>
-
-<p class="whs1">for point in edge_points:</p>
-
-<p class="whs1"> geompy.addToStudyInFather(edge,
- point, "Edge's point")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">id_divide = geompy.addToStudy(divide,
- "Divided edge")</p>
-
-<p class="whs1">edge_points = geompy.SubShapeAllSorted(divide,
- geompy.ShapeType["VERTEX"])</p>
-
-<p class="whs1">for point in edge_points:</p>
-
-<p class="whs1"> geompy.addToStudyInFather(divide,
- point, "Edge's point after divide")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs2"> </p>
-
-<h3><a name=bookmark8>Check Free Boundaries</a></h3>
-
-<p class="whs1">import os</p>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create boxes</p>
-
-<p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
-
-<p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># make a compound</p>
-
-<p class="whs1">compound = geompy.MakeCompound([box1,
- box2])</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># import from *.brep</p>
-
-<p class="whs1">ImportBREP = geompy.ImportBREP("<span
- style="font-family: 'Lucida Console', monospace;">os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep")</span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># get a face</p>
-
-<p class="whs1">faces = geompy.SubShapeAllSorted(ImportBREP,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># get the free boundary
- for face 32</p>
-
-<p class="whs1">Res = geompy.GetFreeBoundary(faces[32])</p>
-
-<p class="whs1">isSuccess =
- Res[0]</p>
-
-<p class="whs1">ClosedWires = Res[1]</p>
-
-<p class="whs1">OpenWires =
- Res[2]</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">i<span style="font-family: 'Lucida Console', monospace;">f
- isSuccess == 1 :</span></p>
-
-<p class="whs1"> print
- "Checking free boudaries is OK."</p>
-
-<p class="whs1">else :</p>
-
-<p class="whs1"> print
- "Checking free boudaries is KO!"</p>
-
-<p class="whs1">print "len(ClosedWires)
- = ", len(ClosedWires)</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">for wire in ClosedWires
- :</p>
-
-<p class="whs1"> wire_name
- = "Face 32 -> Close wires : WIRE %d"%(i+1)</p>
-
-<p class="whs1"> geompy.addToStudy(ClosedWires[i],
- wire_name)</p>
-
-<p class="whs1"> if
- i < len(ClosedWires) :</p>
-
-<p class="whs1"> i
- = i+ 1</p>
-
-<p class="whs1">print "len(OpenWires)
- = ", len(OpenWires)</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">for wire in OpenWires
- :</p>
-
-<p class="whs1"> wire_name
- = "Face 32 -> Open wires : WIRE %d"%(i+1)</p>
-
-<p class="whs1"> geompy.addToStudy(OpenWires[i],
- wire_name)</p>
-
-<p class="whs1"> if
- i < len(OpenWires) :</p>
-
-<p class="whs1"> i
- = i+ 1</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># get the free boundary
- for face 41</p>
-
-<p class="whs1">Res = geompy.GetFreeBoundary(faces[41])</p>
-
-<p class="whs1">isSuccess =
- Res[0]</p>
-
-<p class="whs1">ClosedWires = Res[1]</p>
-
-<p class="whs1">OpenWires =
- Res[2]</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">if isSuccess == 1
- :</p>
-
-<p class="whs1"> print
- "Checking free boudaries is OK."</p>
-
-<p class="whs1">else :</p>
-
-<p class="whs1"> print
- "Checking free boudaries is KO!"</p>
-
-<p class="whs1">print "len(ClosedWires)
- = ", len(ClosedWires)</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">for wire in ClosedWires
- :</p>
-
-<p class="whs1"> wire_name
- = "Face 41 -> Close wires : WIRE %d"%(i+1)</p>
-
-<p class="whs1"> geompy.addToStudy(ClosedWires[i],
- wire_name)</p>
-
-<p class="whs1"> if
- i < len(ClosedWires) :</p>
-
-<p class="whs1"> i
- = i+ 1</p>
-
-<p class="whs1">print "len(OpenWires)
- = ", len(OpenWires)</p>
-
-<p class="whs1">i = 0</p>
-
-<p class="whs1">for wire in OpenWires
- :</p>
-
-<p class="whs1"> wire_name
- = "Face 41 -> Open wires : WIRE %d"%(i+1)</p>
-
-<p class="whs1"> geompy.addToStudy(OpenWires[i],
- wire_name)</p>
-
-<p class="whs1"> if
- i < len(OpenWires) :</p>
-
-<p class="whs1"> i
- = i+ 1</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># add the imported object
- to the study</p>
-
-<p class="whs1">id_ImportBREP = geompy.addToStudy(ImportBREP,
- "ImportBREP")</p>
-
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
-<p class="whs2"> </p>
-
-<h3><a name=bookmark9>Check Free Faces</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(35,
- 35, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(35,
- 35, 50)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">cylinder = geompy.MakeCone(p1,
- v, 30, 20, 20)</p>
-
-<p> </p>
-
-<p># create a cone</p>
-
-<p class="whs1">cone = geompy.MakeCone(p1,
- v, 70, 40, 60)</p>
-
-<p> </p>
-
-<p># make cut</p>
-
-<p class="whs1">cut = geompy.MakeCut(cone,
- cylinder)</p>
-
-<p> </p>
-
-<p># get faces as sub-shapes</p>
-
-<p class="whs1">faces = []</p>
-
-<p class="whs1">faces = geompy.SubShapeAllSorted(cut,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">f_2 = geompy.GetSubShapeID(cut,
- faces[0])</p>
-
-<p> </p>
-
-<p># remove one face from the shape</p>
-
-<p class="whs1">cut_without_f_2 =
- geompy.SuppressFaces(cut, [f_2])</p>
-
-<p> </p>
-
-<p># suppress the specified wire</p>
-
-<p class="whs1">result = geompy.GetFreeFacesIDs(cut_without_f_2)</p>
-
-<p class="whs1">print "A number
- of free faces is ", len(result)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">all_faces = geompy.SubShapeAllSorted(cut_without_f_2,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">for face in all_faces
- :</p>
-
-<p class="whs1"> sub_shape_id
- = geompy.GetSubShapeID(cut_without_f_2, face)</p>
-
-<p class="whs1"> if
- result.count(sub_shape_id) > 0 :</p>
-
-<p class="whs1"> face_name
- = "Free face %d"%(sub_shape_id)</p>
-
-<p class="whs1"> geompy.addToStudy(face,
- face_name)</p>
-
-<p> </p>
-
-<p># in this example all faces from cut_without_f_2 are free</p>
-
-<p class="whs1">id_cut_without_f_2
- = geompy.addToStudy(cut_without_f_2, "Cut without f_2")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cut_without_f_2)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cut_without_f_2,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">
-
-<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">
-<!--
-img_whs1 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:350px; float:none; border-style:none; }
-img_whs5 { border:none; width:268px; height:275px; 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("Geometry module\nCreating geometrical objects\nCreating Complex Objects\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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_generationgui_functions_salome2_sp3_generationgui_functions_image57.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span>Revolution</h1>
-
-<p><b><span style="font-weight: normal;">T</span></b><b><span style="font-weight: normal;">o</span>
- <span style="font-weight: normal; font-size: 12pt;"><font size=3 style="font-size:12pt;">create an extruded
- shape by</font></span><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><span style="font-size: 12pt; font-weight: bold;"><font size=3 style="font-size:12pt;"><B>Revolution</B></font></span><span
- style="font-weight: normal;"> in the </span><span style="font-weight: bold;"><B>Main
- Menu</B></span><span style="font-weight: normal;"> select </span><span style="font-weight: bold;"><B>New
- Entity - > Generation -
- > Revolution</B></span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To create an extruded shape by <span style="font-weight: bold;"><B>Revolution</B></span>
- you need to define the source <span style="font-weight: bold;"><B>Object</B></span>
- to rotate, the <span style="font-weight: bold;"><B>Axis</B></span> of revolution
- and the <span style="font-weight: bold;"><B>Angle</B></span> by which the Shape
- has to be rotated around the <span style="font-weight: bold;"><B>Axis</B></span>
- (in degrees).</p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><span
- style="font-weight: normal;">The</span> Result <span style="font-weight: normal;">of
- the operation will be a</span></b> GEOM_Object (edge, face, solid or compsolid).</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeRevolution(Shape, Axis,
- Angle)</I></span>.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape (vertex, edge, wire, face or shell) serving as base object
- + 1 vector (for direction) + 1 value (angle).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/revolution.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/revolutionsn.png" x-maintain-ratio="TRUE" width="268px" height="275px" border="0" class="img_whs5"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of creation of <a href="complex_objects.htm#bookmark1">Complex
- Geometric Objects</a>. </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>Rotation</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:400px; height:388px; float:none; border-style:none; }
-p.whs5 { font-weight:bold; font-size:12pt; }
-p.whs6 { font-size:12pt; margin-left:0px; }
-img_whs7 { border:none; width:400px; height:432px; float:none; border-style:none; }
-p.whs8 { margin-left:40px; }
-img_whs9 { border:none; width:247px; height:292px; float:none; border-style:none; }
-img_whs10 { border:none; width:257px; height:291px; float:none; border-style:none; }
-p.whs11 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom: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 += "p.whs11 {margin-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nRotation");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image129.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Rotation</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Rotation</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Operations - > Transformation - >
- Rotation</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation <span style="font-weight: bold;"><B>rotates</B></span>
- the initial shape. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The
- first</span> </b><span style="font-weight: bold;"><B>Rotation</B></span> algorithm
- needs you to define an <span style="font-weight: bold;"><B>Object</B></span>
- to be rotated,
- an <span style="font-weight: bold;"><B>Axis</B></span> of rotation and an <span
- style="font-weight: bold;"><B>Angle</B></span> of rotation.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeRotation(Shape, Axis,
- Angle)</I></span> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- 1 shape + 1 vector for direction of rotation + 1 angle.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/transformation4.png" x-maintain-ratio="TRUE" width="400px" height="388px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs5"><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Reverse
- <span style="font-weight: normal;">checkbox allows to specify the direction
- of rotation.</span></B></font></span></p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Create a copy
- </B></span>checkbox allows to keep the initial object, otherwise it will be
- removed.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be any</span> </b>GEOM_Object.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs6">The second algorithm allows
- to define the rotated <span style="font-weight: bold;"><B>Object</B></span> by
- three points. Rotation axis will pass through the <span style="font-weight: bold;"><B>Central
- Point</B></span> and will be will be orthogonal to a plane defned by three
- points. In this case rotation <span style="font-weight: bold;"><B>Angle</B></span>
- is the angle between two vectors directed from the first point to the
- second and to the third.</p>
-
-<p class="whs6"><span style="font-weight: bold;"><B>TUI
- Command:</B></span> <span style="font-style: italic;"><I>geompy.MakeRotationThreePoints(Shape,
- CentralPoint, Point1, Point2).</I></span></p>
-
-<p class="whs6"><span style="font-weight: bold;"><B>Arguments:</B></span>
- 1 shape + 3 points. </p>
-
-<p class="whs6"> </p>
-
-<p class="whs3"><img src="pics/transformation4a.png" x-maintain-ratio="TRUE" width="400px" height="432px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs8"><img src="pics/rotationsn1.png" x-maintain-ratio="TRUE" width="247px" height="292px" border="0" class="img_whs9"> <img src="pics/rotationsn2.png" x-maintain-ratio="TRUE" width="257px" height="291px" border="0" class="img_whs10"></p>
-
-<p class="whs11"> </p>
-
-<p class="whs11"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark1">Transformation
- Operations</a>. </font></span></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>Scale Transform</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:350px; float:none; border-style:none; }
-p.whs5 { margin-left:40px; font-size:12pt; }
-img_whs6 { border:none; width:206px; height:233px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:216px; height:234px; border-style:none; }
-p.whs8 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nScale Transform");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image131.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Scale
- Transform</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Scale Transform</B></span> in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Scale Transform</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation creates a scaled shape basing
- on the initial shape. For this, you need to define the <span style="font-weight: bold;"><B>Shape</B></span>
- to be scaled, the <span style="font-weight: bold;"><B>Central Point</B></span>
- of scale and the Scale Factor.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b> GEOM_Object.</p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeScaleTransform(Shape,
- CenterOfScale, Factor)</I></span>, </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 shape(s) + 1 vertex + 1 Scale Factor.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/transformation10.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/scale_transformsn1.png" x-maintain-ratio="TRUE" width="206px" height="233px" border="0" class="img_whs6"> <img src="pics/scale_transformsn2.png" x-maintain-ratio="TRUE" width="216px" height="234px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs8"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark6">Transformation
- Operations</a>. </font></span></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>Section</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
-p.whs4 { font-size:12pt; margin-right:0in; margin-top:0px; margin-bottom:0px; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs6 { border:none; width:253px; height:266px; float:none; border-style:none; }
-img_whs7 { border:none; width:215px; height:265px; float:none; border-style:none; }
-p.whs8 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom: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;margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs4 {margin-right:1pt;margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs8 {margin-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nBoolean Operations\nSection");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_booleangui_functions_salome2_sp3_booleangui_functions_image4.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Section</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Section</B></span> operation in the Main
- Menu select <span style="font-weight: bold;"><B>Operations - > Boolean
- - > Section</B></span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><span style="font-weight: normal;">This
- operation creates</span> </b>the section between 2 shapes. </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span> </b>GEOM_Object
- (COMPOUND).</p>
-
-<p class="whs3"><span style="font-weight: bold;"><B>TUI Command:</B></span>
- <span style="font-style: italic;"><I>geompy.MakeSection(s1,
- s2)</I></span> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:</b>
- Name + 2 shapes.</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/neo-section.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/fusesn1.png" x-maintain-ratio="TRUE" width="253px" height="266px" border="0" class="img_whs6"> <img src="pics/sectionsn.png" x-maintain-ratio="TRUE" width="215px" height="265px" border="0" class="img_whs7"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs8"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="boolean_operations.htm#bookmark3">Boolean
- Operations</a>. </font></span></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>Sewing</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-family:'Times New Roman' , serif; font-size:12pt; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:346px; float:none; border-style:none; }
-img_whs6 { border:none; width:343px; height:123px; float:none; border-style:none; }
-img_whs7 { border:none; width:150px; height:132px; border-style:none; }
-p.whs8 { 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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nSewing");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><b style="font-weight: bold;"><img src="files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image119.gif" width="20px" height="20px" border="0" class="img_whs1"> </b></font></span>Sewing</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Sewing</B></span> operation in the Main
- Menu select <span style="font-weight: bold;"><B>Repair - > Sewing</B></span>.</p>
-
-<p> </p>
-
-<p class="whs3">This
- operation allows to sew several shapes.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><b><span
- style="font-weight: normal;">T</b>he</span> Result <span style="font-weight: normal;">will
- be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object. </B></span></b></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeSewing(ListOfShape, Precision)</I></span>,
- where ListOfShape is list of shapes to be sewed, Precision is a precision
- for sewing.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/repair6.png" x-maintain-ratio="TRUE" width="312px" height="346px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 or more shapes + 1 value (sew precision).</p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><span style="font-weight: bold;"><B>Detect
- </B></span>button allows to display the number of free boundaries in your
- shape:</font></span></p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"><img src="pics/neo-detect2.png" x-maintain-ratio="TRUE" width="343px" height="123px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="image112.jpg" width="150px" height="132px" border="0" class="img_whs7"> <img src="image113.jpg" width="150px" height="132px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs8"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark5">Repairing
- Operations</a>. </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>Shape Processing</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-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:403px; height:469px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; }
-ul.whs6 { list-style:disc; }
-p.whs7 { font-size:12pt; margin-left:48px; }
-p.whs8 { font-size:12pt; margin-left:0px; }
-p.whs9 { font-size:12pt; margin-left:0px; font-weight:bold; }
-p.whs10 { font-size:12pt; font-weight:bold; margin-left:48px; }
-p.whs11 { font-size:12pt; margin-left:48px; font-weight:normal; }
-p.whs12 { font-size:12pt; margin-left:88px; font-weight:normal; }
-p.whs13 { font-size:12pt; margin-left:0px; font-weight:normal; }
-p.whs14 { font-size:12pt; margin-left:48px; font-weight:bold; }
-p.whs15 { font-size:12pt; font-weight:bold; margin-left:0px; }
-img_whs16 { border:none; width:300px; height:214px; border-style:none; }
-img_whs17 { border:none; width:244px; height:214px; border-style:none; }
-p.whs18 { font-family:'Times New Roman' , serif; font-size:14pt; }
-p.whs19 { font-family:'Times New Roman' , serif; font-size:12pt; }
-img_whs20 { border:none; width:239px; height:214px; border-style:none; }
-p.whs21 { font-weight:bold; }
--->
-</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.whs9 {margin-left:1pt; }";
- strNSS += "p.whs13 {margin-left:1pt; }";
- strNSS += "p.whs15 {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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nShape Processing");
-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><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="image41.gif" width="25px" height="24px" border="0" class="img_whs1"></font></span>Shape Processing</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Shape Processing</B></span> operation in
- the Main Menu select <span style="font-weight: bold;"><B>Repair - ></B></span>
- <span style="font-weight: bold;"><B>Shape Processing.</B></span></p>
-
-<p class="whs2">This operation processes one or more shapes
- using various operators.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b><b> <span
- style="font-weight: bold;"><B>GEOM_Object</b>.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.ProcessShape(Shape, Operators,
- Parameters, Values)</I></span>, where Shape is a processed shape, Operators
- is a list of operators ("FixShape", "SplitClosedFaces",
- etc.), Parameters is a list of parameters (\93FixShape.Tolerance3d\94, etc),
- Values is a list of values of parameters placed in the same order as in
- the list of Parameters .</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">In this dialog box you can select the object
- that you need to process, define its name and operators applied to it
- during processing. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/repair1.png" x-maintain-ratio="TRUE" width="403px" height="469px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs5">Operators and Parameters<span
- style="font-weight: normal;"> (TUI names are given in brackets)</span></p>
-
-<p class="whs2"> </p>
-
-<ul type="disc" class="whs6">
-
- <li class=kadov-p><p class="whs2"><span style="font-weight: bold;"><B>Fix
- Shape</B></span> (FixShape) - corrects invalid shapes. </p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>3D Tolerance</B></span> (FixShape.Tolerance3d)
- - work tolerance for detection of the problems and correction of them.</p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>Max 3D Tolerance</B></span> (FixShape.MaxTolerance3d)
- - maximal
- possible tolerance of the shape after correction.</p></li>
-
- <li class=kadov-p><p class="whs8"><span
- style="font-weight: bold;"><B>Fix Face Size</B></span> (FixFaceSize) - removes
- small faces, such as spots and strips. </p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>Tolerance</B></span> (FixFaceSize.Tolerance) -
- defines minimum possible face size.</p></li>
-
- <li class=kadov-p><p class="whs8"><span
- style="font-weight: bold;"><B>Drop Small Edges</B></span> (DropSmallEdges) -
- removes edges, which merge with neighbouring edges.</p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>3D Tolerance</B></span> (DropSmallEdges.Tolerance3d)
- - defines minimum possible distance between two parallel edges.</p></li>
-
- <li class=kadov-p><p class="whs8"><span
- style="font-weight: bold;"><B>Split Angle</B></span> (SplitAngle) - splits faces
- based on conical surfaces, surfaces of revolution and cylindrical surfaces
- in segments using a certain angle . </p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>Angle</B></span> (SplitAngle.Angle) - the central
- angle of the resulting segments (i.e. we obtain two segments if Angle=180,
- four if Angle=90, etc).</p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>Max. Tolerance</B></span> (SplitAngle.MaxTolerance)
- - maximum possible tolerance among the resulting segments.</p></li>
-
- <li class=kadov-p><p class="whs9">Split Closed Faces
- <span style="font-weight: normal;">(SplitClosedFaces)</span> - <span style="font-weight: normal;">splits
- closed faces in segments. The number of segments depends on the number
- of splitting points.</span></p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>Number of splitting points</B></span> (SplitClosedFaces.NbSplitPoints)
- - the number of splitting points.</p></li>
-
- <li class=kadov-p><p class="whs9">Split Continuity<span
- style="font-weight: normal;"> (SplitContinuity) - splits shapes to reduce
- continuities of curves and surfaces.</span></p></li>
-
- <li class=kadov-p><p class="whs10">3D Tolerance<span style="font-weight: normal;">
- (SplitContinuity.Tolerance3d) - 3D tolerance for correction of geometry.</span></p></li>
-
- <li class=kadov-p><p class="whs10">Surface Continuity<span
- style="font-weight: normal;"> (SplitContinuity.SurfaceContinuity) - required
- continuity for surfaces.</span></p></li>
-
- <li class=kadov-p><p class="whs10">Curve Continuity <span
- style="font-weight: normal;">(SplitContinuity.CurveContinuity)</span>
- - <span style="font-weight: normal;">required continuity for curves.</span></p></li>
-</ul>
-
-<p class="whs11">This and the previous parameters can
- take the following values:</p>
-
-<p class="whs12"><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;"><span
- style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">P</font></span>arametric Continuity
- </font></span></p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>C0</B></span>
- (Positional Continuity): curves are joined (the end positions of curves
- or surfaces are coincidental. The curves or surfaces may still meet at
- an angle, giving rise to a sharp corner or edge).</p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>C1</B></span>
- (Tangential Continuity): first derivatives are equal (the end vectors
- of curves or surfaces are parallel, ruling out sharp edges). </p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>C2</B></span>
- (Curvature Continuity): first and second derivatives are equal (the end
- vectors of curves or surfaces are of the same magnitude).</p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>CN</B></span>
- N-th derivatives are equal (both the direction and the magnitude of the
- Nth derivatives of curves or surfaces (d/du C(u)) are the same at junction.</p>
-
-<p class="whs12">Geometric Continuity </p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>G1</B></span>:
- first derivatives are proportional at junction</p>
-
-<p class="whs12">The curve tangents thus have the same
- direction, but not necessarily the same magnitude. i.e., C1'(1) = (a,b,c)
- and C2'(0) = (k*a, k*b, k*c). </p>
-
-<p class="whs12"><span style="font-weight: bold;"><B>G2</B></span>:
- first and second derivatives are proportional at junction </p>
-
-<p class="whs12">As the names imply, geometric continuity
- requires the geometry to be continuous, while parametric continuity requires
- that the underlying parameterization was continuous as well. </p>
-
-<p class="whs12">Parametric continuity of order n implies
- geometric continuity of order n, but not vice-versa. </p>
-
-<ul type="disc" class="whs6">
-
- <li class=kadov-p><p class="whs13"><span style="font-weight: bold;"><B>Bspline
- Restriction</B></span> (BsplineRestriction) - converts curves and surfaces
- to Bsplines and processes them with the following parameters:</p></li>
-
- <li class=kadov-p><p class="whs14">Surface Mode<span style="font-weight: normal;">
- (BSplineRestriction.SurfaceMode) - approximation of surfaces if restriction
- is necessary.</span></p></li>
-
- <li class=kadov-p><p class="whs14">3D Curve Mode<span
- style="font-weight: normal;"> (BSplineRestriction.Curve3dMode) - conversion
- of any 3D curve to BSpline and approximation.</span></p></li>
-
- <li class=kadov-p><p class="whs14">2D Curve Mode<span
- style="font-weight: normal;"> (BSplineRestriction.Curve2dMode) -</span>
- <span style="font-weight: normal;">conversion of any 2D curve to BSpline
- and approximation.</span></p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>3D
- Tolerance</B></span> (BSplineRestriction.Tolerance3d) - defines the possibility
- of surfaces and 3D curves approximation with the specified parameters.</p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>2D
- Tolerance</B></span> (BSplineRestriction.Tolerance2d) - defines the possibility
- of surfaces and 2D curves approximation with the specified parameters.</p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Required
- Degree</B></span> (BSplineRestriction.RequiredDegree) - required degree of
- the resulting BSplines.</p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Required
- number of segments</B></span> (BSplineRestriction.RequiredNbSegments) - required
- maximum number of segments of resultant BSplines</p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>3D
- Continuity</B></span> (BSplineRestriction.Continuity3d) - continuity of the
- resulting surfaces and 3D curves.</p></li>
-
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>2D
- Continuity</B></span> (BSplineRestriction.Continuity2d) - continuity of the
- resulting 2D curves.</p></li>
-
- <li class=kadov-p><p class="whs8"><span
- style="font-weight: bold;"><B>To Bezier</B></span> (ToBezier) - converts curves
- and surfaces of any type to Bezier curves and surfaces. </p></li>
-
- <li class=kadov-p><p class="whs14">Surface Mode<span style="font-weight: normal;">
- (ToBezier.SurfaceMode) - if checked in, allows conversion of surfaces.</span></p></li>
-
- <li class=kadov-p><p class="whs14">3D Curve Mode <span
- style="font-weight: normal;">(ToBezier.Curve3dMode) - if checked in, allows
- conversion of 2D curves.</span></p></li>
-
- <li class=kadov-p><p class="whs14">2D Curve Mode <span
- style="font-weight: normal;">(ToBezier.Curve2dMode) - if checked in, allows
- conversion of 3D curves.</span></p></li>
-
- <li class=kadov-p><p class="whs14">Max Tolerance<span
- style="font-weight: normal;"> (ToBezier.MaxTolerance) </span>- <span style="font-weight: normal;">defines</span>
- <span style="font-weight: normal;">tolerance for detection and correction
- of problems.</span> </p></li>
-
- <li class=kadov-p><p class="whs15">Same Parameter<span
- style="font-weight: normal;"> (SameParameter) \96 fixes
- edges of 2D and 3D curves not having the same parameter.</span> </p></li>
-
- <li class=kadov-p><p class="whs7"><span
- style="font-weight: bold;"><B>3D Tolerance</B></span> (SameParameter.Tolerance3d)
- \96 defines<span style="font-weight: bold;"> <B></B></span>tolerance for fixing
- of edges.<span style="font-weight: bold;"> <B></B></span></p></li>
-</ul>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/repair1.png" x-maintain-ratio="TRUE" width="403px" height="469px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p> </p>
-
-<p class="whs2">Shape before applying Shape Processing (FixShape
- operator).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="image154.jpg" width="300px" height="214px" border="0" class="img_whs16"> <img src="image156.jpg" width="244px" height="214px" border="0" class="img_whs17"></p>
-
-<p class="whs18"> </p>
-
-<p class="whs19">The
- same shape after applying Shape Processing.</p>
-
-<p class="whs18"> </p>
-
-<p class="whs3"><img src="image160.jpg" width="239px" height="214px" border="0" class="img_whs20"></p>
-
-<p class="whs21"> </p>
-
-<p class="whs21"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark">Repairing
- Operations</a>. </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>Shell</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:289px; float:none; border-style:none; }
-img_whs5 { border:none; width:188px; height:178px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nShell");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image17.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Shell</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- a <span style="font-weight: bold;"><B>Shell</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>New Entity - > Build - > Shell</B></span></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">You
- can</span> <span style="font-weight: normal;">c</span></b>reate a <span
- style="font-weight: bold;"><B>Shell</B></span> from a list of faces and (or)
- shells.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result<span style="font-weight: normal;"> will be a </b> </span>GEOM_Object
- (shell).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeShell(ListOfShape)</I></span>
- </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">List of faces having connected edges.</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-obj5.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/shellsn.png" x-maintain-ratio="TRUE" width="188px" height="178px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#bookmark2">Advanced Geometric
- Objects</a>. </p>
-
-<p> </p>
-
-<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">
-
-<html>
-
-<head>
-<title>Sketcher</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; float:none; width:30px; height:30px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { margin-left:108px; font-size:12pt; }
-ul.whs4 { list-style:disc; }
-p.whs5 { margin-left:40px; font-size:12pt; }
-img_whs6 { border:none; width:321px; height:496px; float:none; border-style:none; }
-p.whs7 { font-size:12pt; margin-left:40px; text-indent:-40px; }
-p.whs8 { font-size:12pt; margin-left:40px; text-indent:-40px; font-weight:bold; }
-p.whs9 { font-size:12pt; text-indent:-40px; font-weight:bold; margin-left:80px; }
-img_whs10 { border:none; width:200px; height:200px; 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.whs7 {text-indent:1pt; }";
- strNSS += "p.whs8 {text-indent:1pt; }";
- strNSS += "p.whs9 {text-indent: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("Geometry module\nCreating geometrical objects\nSketcher");
-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>Sketcher</h1>
-
-<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><img src="i_blue.jpg" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="30px" height="30px" border="0" class="img_whs1"></b></font></span>Sketcher allows to create curves of 2 types: line
- segment and arc. The
- curve is created from the current point (center of coordinates when the
- sketcher is started). The
- end of the curve is defined by means of "destination", which
- can be a destination point (for segment only) or destination direction
- coupled with length of a segment or angle and radius of an arc.</p>
-
-<p> </p>
-
-<p>Sketcher is able to create planar curves only. Therefore, it is necessary
- to select a working plane before starting a sketch (by default, XOY plane
- is used). Sketcher creates curves lying in the current working plane (New
- Entity -> Basic -> Working Plane).</p>
-
-<p> </p>
-
-<p>This functionality is available from the main menu via <span style="font-style: italic;"><I>New
- Entity / Sketch.</I></span></p>
-
-<p> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">T</span></b><b><span
- style="font-weight: normal;">he</span> Result <span style="font-weight: normal;">of
- the operation will be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object</b>.</B></span></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeSketcher(Command, WorkingPlane)</I></span></p>
-
-<p class="whs3">This algorithm creates
- a sketcher (wire or face), following the textual description, passed through
- the Command argument. The edges of the resulting wire or face will be
- arcs of circles and/or linear segments.</p>
-
-<p class="whs3"><span style="font-style: italic;"><I>Command</I></span>
- is a string, defining the sketcher by the coordinates of points in the
- local working plane.</p>
-
-<p class="whs3"><span style="font-style: italic;"><I>WorkingPlane</I></span>
- is a planar face of the working plane (a list of 9 doubles which are coordinates
- of OZ and OX of the local working plane).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- </p>
-
-<p class="whs2"><span><font size=3 style="font-size:12pt;">1. Element type (segment or arc).</font></span></p>
-
-<p class="whs2">2. Destination type (point or direction).</p>
-
-<p class="whs2">3. <span>Destination point by means of:</span></p>
-
-<ul type="disc" class="whs4">
-
- <li class=kadov-p><p class="whs2">absolute coordinates
- X,Y;</p></li>
-
- <li class=kadov-p><p class="whs2">relative coordinates
- DX, DY (with respect to the current point);</p></li>
-
- <li class=kadov-p><p class="whs2">selection of an existing
- point.</p></li>
-</ul>
-
-<p class="whs2">4. Destination direction by means of:</p>
-
-<ul type="disc" class="whs4">
-
- <li class=kadov-p><p class="whs2">angle between the new
- segment and the previous one;</p></li>
-
- <li class=kadov-p><p class="whs2">perpendicular to the
- previous segment (same as previous, but angle is predefined and is equal
- to 90 degrees);</p></li>
-
- <li class=kadov-p><p class="whs2">tangent to the previous
- segment;</p></li>
-
- <li class=kadov-p><p class="whs2">vector components DX,
- DY.</p></li>
-</ul>
-
-<p class="whs2">5. Parameters of an element (for segment :
- length or target X or Y coordinate value, for arc : radius and angle).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/neo-scetcher1.png" x-maintain-ratio="TRUE" width="321px" height="496px" border="0" class="img_whs6"> <img src="pics/neo-scetcher2.png" x-maintain-ratio="TRUE" width="321px" height="496px" border="0" class="img_whs6"></p>
-
-<p class="whs7"> </p>
-
-<p class="whs8">Example:</p>
-
-<p class="whs9"> </p>
-
-<p class="whs9"><img src="image204.jpg" width="200px" height="200px" border="0" class="img_whs10"> <img src="image206.jpg" width="200px" height="200px" border="0" class="img_whs10"></p>
-
-<p class="whs9"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of the use of <a href="sketcher_tui.htm">Sketcher</a>.
- </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>Sketcher</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'MS Sans Serif' , sans-serif; }
--->
-</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("Geometry module\nTUI Scripts\nCreating Geometric Objects\nSketcher");
-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>Sketcher</h1>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(70.,
- 0., 0.)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(70.,
- 70., 80.)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- 0., 70., 0.)</p>
-
-<p> </p>
-
-<p>#create a vector from two points</p>
-
-<p class="whs1">vector_arc = geompy.MakeVector(p1,
- p3)</p>
-
-<p> </p>
-
-<p># create an arc from three points</p>
-
-<p class="whs1">arc = geompy.MakeArc(p1,
- p2, p3)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vector_arc,
- arc])</p>
-
-<p> </p>
-
-<p># create a planar face</p>
-
-<p class="whs1">isPlanarWanted = 1</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- isPlanarWanted)</p>
-
-<p> </p>
-
-<p># create a sketcher (face), following the textual description</p>
-
-<p class="whs1">sketcher1 = geompy.MakeSketcher("Sketcher:F
- -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WF",</p>
-
-<p class="whs1"> [100,0,0,
- 1,1,1, -1,1,0])</p>
-
-<p> </p>
-
-<p># create a sketcher (wire) on the given face</p>
-
-<p class="whs1">sketcher2 = geompy.MakeSketcherOnPlane("Sketcher:F
- 10 -30:R 10:C 20 180:R 15:L 50:WW",</p>
-
-<p class="whs1"> face)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs2">id_face = geompy.addToStudy(face,"Face")</p>
-
-<p class="whs2">id_sketcher1 = geompy.addToStudy(sketcher1,"Sketcher1")</p>
-
-<p class="whs2">id_sketcher2 = geompy.addToStudy(sketcher2,"Sketcher2")</p>
-
-<p> </p>
-
-<p># display the first sketcher and the second sketcher with its planar
- face</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_face)</p>
-
-<p class="whs1">gg.setDisplayMode(id_face,1)</p>
-
-<p class="whs1">gg.setTransparency(id_face,0.5)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_sketcher1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_sketcher2)</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>Solid</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:315px; float:none; border-style:none; }
-img_whs6 { border:none; width:215px; height:190px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nSolid");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image18.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Solid</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- a <span style="font-weight: bold;"><B>Solid</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>New Entity - > Build - > Solid.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><span style="font-weight: normal;">You
- can create a</span> Solid <span style="font-weight: normal;">from a list
- of shells.</span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span><span style="font-weight: normal;">
- </b> </span>GEOM_Object
- (SOLID).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeSolid(ListOfShape)</I></span>,
- where ListOfShape is a list of shells from which the solid is constructed.</p>
-
-<p class="whs2"><b>Arguments:</b> Name + A closed shell or
- a list of shells.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/neo-obj6.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3">Example:</p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/solidsn.png" x-maintain-ratio="TRUE" width="215px" height="190px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#bookmark3">Advanced Geometric
- Objects</a>. </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>Sphere</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { margin-left:40px; }
-img_whs4 { border:none; width:312px; height:315px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-weight:bold; }
-img_whs6 { border:none; width:286px; height:284px; float:none; border-style:none; }
-p.whs7 { margin-left:40px; 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("Geometry module\nCreating geometrical objects\nCreating Primitives\nSphere");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image101.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Sphere</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create a <span style="font-weight: bold;"><B>Sphere</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Primitives - > Sphere</B></span></p>
-
-<p> </p>
-
-<p>There are two algorithms for creation of a <span style="font-weight: bold;"><B>Sphere</B></span>.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (SOLID).</p>
-
-<p> </p>
-
-<p class="whs2">Firstly, you can define a <span style="font-weight: bold;"><B>Sphere</B></span>
- by the <span style="font-weight: bold;"><B>Center Point</B></span> and the <span
- style="font-weight: bold;"><B>Radius</B></span>.</p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> <span style="font-style: italic;"><I>geompy.MakeSphere(Point,
- Radius)</I></span></p>
-
-<p><b style="font-weight: bold;">Arguments:</b> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name
- + </font></span>1 vertex + 1 value (Radius).</p>
-
-<p class="whs3"><b style="font-weight: bold;"><img src="pics/sphere1.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs4"></b></p>
-
-<p> </p>
-
-<p><b style="font-weight: bold;"><span style="font-weight: normal;">Secondly,
- you can define a</span> Sphere <span style="font-weight: normal;">with
- the center at the origin of coordinate system by the</span> Radius.</b></p>
-
-<p><b style="font-weight: bold;">TUI Command: <span style="font-weight: normal; font-style: italic;"><I>geompy.
- MakeSphereR(Radius)</I></span></b></p>
-
-<p><b style="font-weight: bold;">Arguments:</b> <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Name
- + </font></span>1 value
- (Radius from the origin).</p>
-
-<p class="whs3"><img src="pics/sphere2.png" x-maintain-ratio="TRUE" width="312px" height="315px" border="0" class="img_whs4"></p>
-
-<p class="whs5"> </p>
-
-<p class="whs5">NB! <span style="font-weight: normal;">The
- is another way to create a </span>Sphere<span style="font-weight: normal;">,
- which is currently accessible only via</span> TUI <span style="font-weight: normal;">commands.</span></p>
-
-<p class="whs5"><span style="font-weight: normal;">You
- can define the</span> Sphere <span style="font-weight: normal;">by the
- coordinates of the</span> Center Point <span style="font-weight: normal;">and
- its</span> Radius <span style="font-weight: normal;">(in this way you
- don't need to create it in advance).</span> </p>
-
-<p class="whs5"><b style="font-weight: bold;">TUI
- Command:</b> <span style="font-weight: normal; font-style: italic;"><I>geompy.MakeSphere(X,
- Y, Z, Radius)</I></span></p>
-
-<p> </p>
-
-<p><b style="font-weight: bold;">Example:</b></p>
-
-<p> </p>
-
-<p class="whs3"><img src="pics/spheres.png" x-maintain-ratio="TRUE" width="286px" height="284px" border="0" class="img_whs6"></p>
-
-<p class="whs7"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="primitives.htm#bookmark2">Primitives</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</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>Suppress Faces</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:289px; float:none; border-style:none; }
-img_whs5 { border:none; float:none; width:222px; height:213px; border-style:none; }
-img_whs6 { border:none; float:none; width:210px; height:214px; border-style:none; }
-p.whs7 { 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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nSuppress Faces");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Suppress Faces</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Suppress Faces</B></span> operation in
- the Main Menu select <span style="font-weight: bold;"><B>Repair - > Suppress
- Faces</B></span>.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation suppresses a face of a shape.
- This operation is available in <span style="font-weight: bold;"><B>OCC Viewer</B></span>
- only. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b><b> <span
- style="font-weight: bold;"><B>GEOM_Object </B></span></b>(ListOfGeomShapes).<span
- style="font-weight: bold;"><B>.</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b>TUI Command:</b><i> </i><span style="font-style: italic;"><I>geompy.SuppressFaces(Shape,
- ListOfID)</I></span>, where Shape is a shape to be processed, ListOfID is
- a list of faces ID's to be removed.</p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + Faces which should be removed (you can select them in the 3D viewer).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/repair2.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs4"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/suppress_faces1.png" x-maintain-ratio="TRUE" width="222px" height="213px" border="0" class="img_whs5"> <img src="pics/suppress_faces2.png" x-maintain-ratio="TRUE" width="210px" height="214px" border="0" class="img_whs6"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs7"><span style="font-weight: normal;">Our</span>
- TUI Scripts <span style="font-weight: normal;">provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark1">Repairing
- Operations</a>. </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>Suppress Holes</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:381px; float:none; border-style:none; }
-img_whs5 { border:none; width:343px; height:123px; float:none; border-style:none; }
-img_whs6 { border:none; width:150px; height:136px; border-style:none; }
-p.whs7 { 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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nSuppress Holes");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image122.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Suppress Holes</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span
- style="font-weight: bold;"><B>Suppress Holes</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>Repair - > Suppress Holes</B></span>.</p>
-
-<p> </p>
-
-<p>This operation removes holes on a selected shape. <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This
- operation is available in </font></span><span style="font-weight: bold;"><B>OCC
- Viewer</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> only. </font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><b><span
- style="font-weight: normal;">T</b>he</span> Result <span style="font-weight: normal;">will
- be a</span></b><b> <span style="font-weight: bold;"><B>GEOM_Object. </B></span></b></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.SuppressHoles(Shape, ListOfWireID)</I></span>,
- where Shape is a shape where holes must be removed, ListOfWireID is a
- list of wire sub shapes ID\92s. If it is empty, then all holes are removed.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/repair5.png" x-maintain-ratio="TRUE" width="312px" height="381px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments: </b>Name
- + 1 shape + Wires which should be removed.</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Remove all
- holes </B></span>checkbox allows to fill all holes of a definite shape.</p>
-
-<p class="whs2"><span style="font-weight: bold;"><B>Detect </B></span>button
- allows to display the number of free boundaries in your shape:</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"><img src="pics/neo-detect2.png" x-maintain-ratio="TRUE" width="343px" height="123px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"> <img src="image109.jpg" width="150px" height="136px" border="0" class="img_whs6"> <img src="image110.jpg" width="150px" height="136px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs7"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark4">Repairing
- Operations</a>. </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>Suppress Internal Wires</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-ul.whs3 { list-style:disc; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:350px; float:none; border-style:none; }
-p.whs6 { font-size:12pt; font-weight:bold; }
-img_whs7 { border:none; width:225px; height:268px; float:none; border-style:none; }
-img_whs8 { border:none; float:none; width:234px; height:267px; border-style:none; }
-p.whs9 { 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("Geometry module\nTransforming geometrical objects\nRepairing Operations\nSuppress Internal Wires");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_repairgui_functions_salome2_sp3_repairgui_functions_image121.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Suppress Internal
- Wires</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o <span
- style="font-weight: bold;"><B>Suppress Internal Wires</B></span> in the Main
- Menu select <span style="font-weight: bold;"><B>Repair - > Suppress Internal
- Wires</B></span>.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This operation removes all internal wires or
- specified internal wires from user specified faces. This operation is
- available in <span style="font-weight: bold;"><B>OCC Viewer</B></span> only.
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">will be a</span></b><b> <span
- style="font-weight: bold;"><B>GEOM_Object. </B></span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.SuppressInternalWires(Shape,
- Wires)</I></span>, where Shape is a shape where wires are to be removed, Wires
- is a list of wires ID\92s to be removed; if the list is empty then all internal
- wires are removed.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b></p>
-
-<ul type="disc" class="whs3">
-
- <li class=kadov-p><p class="whs2">Name of the resulting
- object</p></li>
-
- <li class=kadov-p><p class="whs2">User specified face</p></li>
-
- <li class=kadov-p><p class="whs2">User specified internal
- wires (lying on this face except for its boundary), or, in case the <span
- style="font-weight: bold;"><B>Remove all internal wires</B></span> box is checked,
- all internal wires</p></li>
-</ul>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/repair4.png" x-maintain-ratio="TRUE" width="312px" height="350px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs6">Example:</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/supp_int_wires1.png" x-maintain-ratio="TRUE" width="225px" height="268px" border="0" class="img_whs7"> <img src="pics/supp_int_wires2.png" x-maintain-ratio="TRUE" width="234px" height="267px" border="0" class="img_whs8"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs9"><span style="font-weight: normal;">Our</span>
- TUI Scripts<span style="font-weight: normal;"> provide you with useful
- examples of the use of</span> <a href="repairing_operations.htm#bookmark3">Repairing
- Operations</a>. </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>Transformation Operations</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-family:'Lucida Console' , monospace; }
-p.whs2 { font-family:'Times New Roman' , serif; }
--->
-</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("Geometry module\nTUI Scripts\nTransformation\nTransformation Operations");
-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>Transformation Operations</h1>
-
-<h3><a name=bookmark>Translation</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(10,
- 40, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 50)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(50,
- 80, 0)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p class="whs1">vt = geompy.MakeVector(p1,
- p3)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># translate the given object along the vector, specified by its end
- points</p>
-
-<p># (all three functions produce the same result)</p>
-
-<p class="whs1">translation1 = geompy.MakeTranslationTwoPoints(cylinder,
- p1, p3)</p>
-
-<p class="whs1">translation2 = geompy.MakeTranslation(cylinder,
- 40, 40, 0)</p>
-
-<p class="whs1">translation3 = geompy.MakeTranslationVector(cylinder,
- vt)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cylinder = geompy.addToStudy(cylinder,
- "Cylinder")</p>
-
-<p class="whs1">id_translation1 =
- geompy.addToStudy(translation1, "Translation1")</p>
-
-<p class="whs1">id_translation2 =
- geompy.addToStudy(translation2, "Translation2")</p>
-
-<p class="whs1">id_translation3 =
- geompy.addToStudy(translation3, "Translation3")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cylinder)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cylinder,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_translation1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_translation1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_translation2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_translation2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_translation3)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_translation3,1)</span>
- </p>
-
-<h3><a name=bookmark1>Rotation</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(10, 40, 0)</p>
-<p class="whs1">p2 = geompy.MakeVertex( 0, 0, 50)</p>
-<p class="whs1">p3 = geompy.MakeVertex(10, 50,-20)</p>
-<p class="whs1">p4 = geompy.MakeVertex(10, 50, 60)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1, p2)</p>
-<p class="whs1">vr = geompy.MakeVector(p3, p4)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1, v, radius1, height)</p>
-
-<p> </p>
-
-<p># rotate the given object around the given axis by the given angle</p>
-
-<p class="whs1">rotation1 = geompy.MakeRotation(cylinder, vr, math.pi)</p>
-<p class="whs1">rotation2 = geompy.MakeRotationThreePoints(cylinder, p4, p1, p2)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_vr = geompy.addToStudy(vr, "Rotation 1 axis")</p>
-<p class="whs1">id_p4 = geompy.addToStudy(p4, "Rotation 2 center")</p>
-<p class="whs1">id_p1 = geompy.addToStudy(p1, "Rotation 2 point 1")</p>
-<p class="whs1">id_p2 = geompy.addToStudy(p2, "Rotation 2 point 2")</p>
-<p class="whs1">id_cylinder = geompy.addToStudy(cylinder, "Cylinder")</p>
-<p class="whs1">id_rotation1 = geompy.addToStudy(rotation1, "Rotation 1")</p>
-<p class="whs1">id_rotation2 = geompy.addToStudy(rotation2, "Rotation 2")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_vr)</p>
-<p class="whs1">gg.createAndDisplayGO(id_p4)</p>
-<p class="whs1">gg.createAndDisplayGO(id_p1)</p>
-<p class="whs1">gg.createAndDisplayGO(id_p2)</p>
-<p class="whs1">gg.createAndDisplayGO(id_cylinder)</p>
-<p class="whs1">gg.setDisplayMode(id_cylinder,1)</p>
-<p class="whs1">gg.createAndDisplayGO(id_rotation1)</p>
-<p class="whs1">gg.createAndDisplayGO(id_rotation2)</p>
-<p class="whs1">gg.setDisplayMode(id_rotation1,1)</p>
-<p class="whs1">gg.setDisplayMode(id_rotation2,1)</p>
-
-<p> </p>
-
-<h3><a name=bookmark4>Modify Location</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import math</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a vertex and a vector</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(10,
- 40, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 0, 0, 50)</p>
-
-<p class="whs1">v = geompy.MakeVector(p1,
- p2)</p>
-
-<p> </p>
-
-<p># create a cylinder</p>
-
-<p class="whs1">height = 35</p>
-
-<p class="whs1">radius1 = 20</p>
-
-<p class="whs1">cylinder = geompy.MakeCylinder(p1,
- v, radius1, height)</p>
-
-<p> </p>
-
-<p># create local coordinate systems</p>
-
-<p class="whs1">cs1 = geompy.MakeMarker(
- 0, 0, 0, 1,0,0, 0,1,0)</p>
-
-<p class="whs1">cs2 = geompy.MakeMarker(30,40,40,
- 1,0,0, 0,1,0)</p>
-
-<p> </p>
-
-<p># modify the location of the given object</p>
-
-<p class="whs1">position = geompy.MakePosition(cylinder,
- cs1, cs2)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_cs1 = geompy.addToStudy(cs1,
- "Coordinate system 1")</p>
-
-<p class="whs1">id_cs2 = geompy.addToStudy(cs2,
- "Coordinate system 2")</p>
-
-<p class="whs1">id_cylinder = geompy.addToStudy(cylinder,
- "Cylinder")</p>
-
-<p class="whs1">id_position = geompy.addToStudy(position,
- "Position")</p>
-
-<p class="whs1"> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_cylinder)</p>
-
-<p class="whs1">gg.setDisplayMode(id_cylinder,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_position)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_position,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark5>Mirror Image</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a box</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p> </p>
-
-<p># create an object, symmetrical to another object through the given
- plane</p>
-
-<p class="whs1">p1 = geompy.MakeVertex(
- 0, 25, 0)</p>
-
-<p class="whs1">p2 = geompy.MakeVertex(
- 5, 25, 0)</p>
-
-<p class="whs1">p3 = geompy.MakeVertex(
- 0,-30, 40)</p>
-
-<p class="whs1">plane = geompy.MakePlaneThreePnt(p1,
- p2, p3, 1000.)</p>
-
-<p class="whs1">mirror1 = geompy.MakeMirrorByPlane(box,
- plane)</p>
-
-<p> </p>
-
-<p># create an object, symmetrical to another object through the given
- axis</p>
-
-<p class="whs1">p4 = geompy.MakeVertex(
- 210, 210, -20)</p>
-
-<p class="whs1">p5 = geompy.MakeVertex(
- 210, 210, 220)</p>
-
-<p class="whs1">axis = geompy.MakeVector(p4,
- p5)</p>
-
-<p class="whs1">mirror2 = geompy.MakeMirrorByAxis(box,
- axis)</p>
-
-<p> </p>
-
-<p># create an object, symmetrical to another object through the given
- point</p>
-
-<p class="whs1">mirror3 = geompy.MakeMirrorByPoint(box,
- p4)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs1">id_plane = geompy.addToStudy(plane,
- "Plane")</p>
-
-<p class="whs1">id_mirror1 = geompy.addToStudy(mirror1,
- "Mirror plane")</p>
-
-<p class="whs1">id_axis = geompy.addToStudy(axis,
- "Axis")</p>
-
-<p class="whs1">id_mirror2 = geompy.addToStudy(mirror2,
- "Mirror axis")</p>
-
-<p class="whs1">id_p4 = geompy.addToStudy(p4,
- "Point")</p>
-
-<p class="whs1">id_mirror3 = geompy.addToStudy(mirror3,
- "Mirror point")</p>
-
-<p> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_plane)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_mirror1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_mirror1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_axis)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_mirror2)</p>
-
-<p class="whs1">gg.setDisplayMode(id_mirror2,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_p4)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_mirror3)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_mirror3,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark6>Scale Transform </a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># create a box and a
- sphere</p>
-
-<p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># scale the given object
- by the factor</p>
-
-<p class="whs1">p0 = geompy.MakeVertex(100,
- 100, 100)</p>
-
-<p class="whs1">factor = 0.5</p>
-
-<p class="whs1">scale = geompy.MakeScaleTransform(box,
- p0, factor)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># add objects in the
- study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs1">id_scale = geompy.addToStudy(scale,
- "Scale")</p>
-
-<p class="whs1"> </p>
-
-<p class="whs2"># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p class="whs1">gg.setTransparency(id_box,0.5)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_scale)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_scale,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark7>Offset Surface</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create a box and a sphere</p>
-
-<p class="whs1">box = geompy.MakeBox(20,
- 20, 20, 200, 200, 200)</p>
-
-<p> </p>
-
-<p># create a new object as offset of the given object</p>
-
-<p class="whs1">offset = geompy.MakeOffset(box,
- 70.)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_box = geompy.addToStudy(box,
- "Box")</p>
-
-<p class="whs1">id_offset = geompy.addToStudy(offset,
- "Offset")</p>
-
-<p class="whs1"> </p>
-
-<p># display the results</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_box)</p>
-
-<p class="whs1">gg.setDisplayMode(id_box,1)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_offset)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark8>Multi Translation</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices and vectors</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0., 0.,
- 0.)</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(20., 0.,
- 0.)</p>
-
-<p class="whs1">py =
- geompy.MakeVertex( 0., 20., 0.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0., 0.,
- 20.)</p>
-
-<p class="whs1">pxy = geompy.MakeVertex(
- 50., 0., 0.)</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(
- 50., 50., 50.)</p>
-
-<p class="whs1">vz =
- geompy.MakeVector(p0, pz)</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs1">vtr1d = geompy.MakeVector(p0,
- pxyz)</p>
-
-<p class="whs1">vtr2d = geompy.MakeVector(p0,
- pxy)</p>
-
-<p> </p>
-
-<p># create an arc</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># create a planar face</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- 1)</p>
-
-<p> </p>
-
-<p># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrismVecH(face,
- vz, 20.0)</p>
-
-<p> </p>
-
-<p># translate the given object along the given vector a given number of
- times</p>
-
-<p class="whs1">tr1d = geompy.MakeMultiTranslation1D(prism,
- vtr1d, 20, 4)</p>
-
-<p> </p>
-
-<p># consequently apply two specified translations to the object a given
- number of times</p>
-
-<p class="whs1">tr2d = geompy.MakeMultiTranslation2D(prism,
- vtr1d, 20, 4, vtr2d, 80, 3)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_prism = geompy.addToStudy(prism,"Prism")</p>
-
-<p class="whs1">id_tr1d = geompy.addToStudy(tr1d,"Translation
- 1D")</p>
-
-<p class="whs1">id_tr2d = geompy.addToStudy(tr2d,"Translation
- 2D")</p>
-
-<p> </p>
-
-<p># display the prism and the results of fillet operation</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism)</p>
-
-<p class="whs1">gg.setDisplayMode(id_prism,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_tr1d)</p>
-
-<p class="whs1">gg.setDisplayMode(id_tr1d,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_tr2d)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_tr2d,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark9>Multi Rotation</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p> </p>
-
-<p># create vertices and vectors</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0., 0.,
- 0.)</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(20., 0.,
- 0.)</p>
-
-<p class="whs1">py =
- geompy.MakeVertex( 0., 20., 0.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0., 0.,
- 20.)</p>
-
-<p class="whs1">pxyz = geompy.MakeVertex(
- 50., 50., 10.)</p>
-
-<p class="whs1">vz =
- geompy.MakeVector(p0, pz)</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p class="whs1">vrot1d = geompy.MakeVector(p0,
- pxyz)</p>
-
-<p> </p>
-
-<p># create an arc</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># create a planar face</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- 1)</p>
-
-<p> </p>
-
-<p># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrismVecH(face,
- vz, 20.0)</p>
-
-<p> </p>
-
-<p># rotate the given object around the given axis by the given angle a
- given number of times</p>
-
-<p class="whs1">rot1d = geompy.MultiRotate1D(prism,
- vrot1d, 4)</p>
-
-<p> </p>
-
-<p># rotate the given object around the given axis by the given angle a
- given number of times</p>
-
-<p># and multi-translate the result of each rotation</p>
-
-<p class="whs1">rot2d = geompy.MultiRotate2D(prism,
- vrot1d, 60, 4, 50, 5)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_prism = geompy.addToStudy(prism,"Prism")</p>
-
-<p class="whs1">id_rot1d = geompy.addToStudy(rot1d,"Rotation
- 1D")</p>
-
-<p class="whs1">id_rot2d = geompy.addToStudy(rot2d,"Rotation
- 2D")</p>
-
-<p> </p>
-
-<p># display the prism and the results of fillet operation</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism)</p>
-
-<p class="whs1">gg.setDisplayMode(id_prism,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_rot1d)</p>
-
-<p class="whs1">gg.setDisplayMode(id_rot1d,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_rot2d)</p>
-
-<p class="whs1">gg.setDisplayMode(id_rot2d,1)
- </p>
-
-<p class="whs1"> </p>
-
-<h3><a name=bookmark2>Fillet</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">radius =
- 10.</p>
-
-<p class="whs1">ShapeTypeEdge = geompy.ShapeType["EDGE"]</p>
-
-<p class="whs1"> </p>
-
-<p># create vertices and vectors</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0.,
- 0.)</p>
-
-<p class="whs1">py =
- geompy.MakeVertex( 0.,
- 100., 0.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0.,
- 0.,
- 100.)</p>
-
-<p class="whs1">vz =
- geompy.MakeVector(p0, pz)</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p> </p>
-
-<p># create an arc</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># create a planar face</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- 1)</p>
-
-<p> </p>
-
-<p># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrismVecH(face,
- vz, 100.0)</p>
-
-<p> </p>
-
-<p># get the list of IDs (IDList) for the fillet</p>
-
-<p class="whs1">prism_edges = geompy.SubShapeAllSorted(prism,
- ShapeTypeEdge)</p>
-
-<p class="whs1">IDlist_e = []</p>
-
-<p class="whs1">IDlist_e.append(geompy.GetSubShapeID(prism,
- prism_edges[0]))</p>
-
-<p class="whs1">IDlist_e.append(geompy.GetSubShapeID(prism,
- prism_edges[1]))</p>
-
-<p class="whs1">IDlist_e.append(geompy.GetSubShapeID(prism,
- prism_edges[2]))</p>
-
-<p> </p>
-
-<p># make a fillet on the specified edges of the given shape</p>
-
-<p class="whs1">fillet = geompy.MakeFillet(prism,
- radius, ShapeTypeEdge, IDlist_e)</p>
-
-<p> </p>
-
-<p># make a fillet on all edges of the given shape</p>
-
-<p class="whs1">filletall = geompy.MakeFilletAll(prism,
- radius)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_prism = geompy.addToStudy(prism,"Prism")</p>
-
-<p class="whs1">id_fillet = geompy.addToStudy(fillet,"Fillet")</p>
-
-<p class="whs1">id_filletall = geompy.addToStudy(filletall,"Fillet
- all")</p>
-
-<p> </p>
-
-<p># display the prism and the results of fillet operation</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism)</p>
-
-<p class="whs1">gg.setDisplayMode(id_prism,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_fillet)</p>
-
-<p class="whs1">gg.setDisplayMode(id_fillet,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_filletall)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_filletall,1)</span>
- </p>
-
-<p> </p>
-
-<h3><a name=bookmark3>Chamfer</a></h3>
-
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
-
-<p class="whs1">d1 = 10.</p>
-
-<p class="whs1">d2 = 10.</p>
-
-<p class="whs1">ShapeTypeFace = geompy.ShapeType["FACE"]</p>
-
-<p> </p>
-
-<p># create vertices and vectors</p>
-
-<p class="whs1">p0 =
- geompy.MakeVertex( 0.,
- 0.,
- 0.)</p>
-
-<p class="whs1">px =
- geompy.MakeVertex(100., 0.,
- 0.)</p>
-
-<p class="whs1">py =
- geompy.MakeVertex( 0.,
- 100., 0.)</p>
-
-<p class="whs1">pz =
- geompy.MakeVertex( 0.,
- 0.,
- 100.)</p>
-
-<p class="whs1">vz =
- geompy.MakeVector(p0, pz)</p>
-
-<p class="whs1">vxy = geompy.MakeVector(px,
- py)</p>
-
-<p> </p>
-
-<p># create an arc</p>
-
-<p class="whs1">arc = geompy.MakeArc(py,
- pz, px)</p>
-
-<p> </p>
-
-<p># create a wire</p>
-
-<p class="whs1">wire = geompy.MakeWire([vxy,
- arc])</p>
-
-<p> </p>
-
-<p># create a planar face</p>
-
-<p class="whs1">face = geompy.MakeFace(wire,
- 1)</p>
-
-<p> </p>
-
-<p># create a prism</p>
-
-<p class="whs1">prism = geompy.MakePrismVecH(face,
- vz, 100.0)</p>
-
-<p> </p>
-
-<p># get the list of IDs (IDList) for the chamfer</p>
-
-<p class="whs1">prism_faces = geompy.SubShapeAllSorted(prism,
- ShapeTypeFace)</p>
-
-<p class="whs1">f_ind_1 = geompy.GetSubShapeID(prism,
- prism_faces[0])</p>
-
-<p class="whs1">f_ind_2 = geompy.GetSubShapeID(prism,
- prism_faces[1])</p>
-
-<p class="whs1">IDlist_f = [f_ind_1,
- f_ind_2]</p>
-
-<p> </p>
-
-<p># perform a chamfer on the edges common to the specified faces</p>
-
-<p class="whs1">chamfer_e = geompy.MakeChamferEdge(prism,
- d1, d2, f_ind_1, f_ind_2)</p>
-
-<p> </p>
-
-<p># perform a chamfer on all edges of the specified faces</p>
-
-<p class="whs1">chamfer_f = geompy.MakeChamferFaces(prism,
- d1, d2, IDlist_f)</p>
-
-<p class="whs1">chamfer_f1 = geompy.MakeChamfer(prism,
- d1, d2, ShapeTypeFace, IDlist_f)</p>
-
-<p> </p>
-
-<p># perform a symmetric chamfer on all edges of the given shape</p>
-
-<p class="whs1">chamfer_all = geompy.MakeChamferAll(prism,
- d1)</p>
-
-<p> </p>
-
-<p># add objects in the study</p>
-
-<p class="whs1">id_prism = geompy.addToStudy(prism,"Prism")</p>
-
-<p class="whs1">id_chamfer_e = geompy.addToStudy(chamfer_e,"Chamfer
- edge")</p>
-
-<p class="whs1">id_chamfer_f = geompy.addToStudy(chamfer_f,"Chamfer
- faces")</p>
-
-<p class="whs1">id_chamfer_f1 = geompy.addToStudy(chamfer_f1,"Chamfer
- faces 1")</p>
-
-<p class="whs1">id_chamfer_all = geompy.addToStudy(chamfer_all,"Chamfer
- all")</p>
-
-<p> </p>
-
-<p># display the prism and the results of chamfer operation</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_prism)</p>
-
-<p class="whs1">gg.setDisplayMode(id_prism,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_chamfer_e)</p>
-
-<p class="whs1">gg.setDisplayMode(id_chamfer_e,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_chamfer_f)</p>
-
-<p class="whs1">gg.setDisplayMode(id_chamfer_f,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_chamfer_f1)</p>
-
-<p class="whs1">gg.setDisplayMode(id_chamfer_f1,1)</p>
-
-<p class="whs1">gg.createAndDisplayGO(id_chamfer_all)</p>
-
-<p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_chamfer_all,1)</span>
- </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>Translation</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:393px; float:none; border-style:none; }
-img_whs6 { border:none; width:312px; height:385px; float:none; border-style:none; }
-p.whs7 { margin-left:40px; }
-img_whs8 { border:none; width:331px; height:334px; float:none; border-style:none; }
-img_whs9 { border:none; width:320px; height:333px; float:none; border-style:none; }
-p.whs10 { list-style:disc; margin-left:0in; margin-right:0in; margin-top:0px; margin-bottom:0px; }
--->
-</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-left:1pt;margin-right:1pt;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("Geometry module\nTransforming geometrical objects\nTransformation Operations\nTranslation");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_transformationgui_functions_salome2_sp3_transformationgui_functions_image128.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Translation</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o produce
- a <span style="font-weight: bold;"><B>Translation</B></span> in the Main Menu
- select <span style="font-weight: bold;"><B>Operations - > Transformation
- - > Translation</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">This Operation makes a translation of an <span
- style="font-weight: bold;"><B>Object</B></span>. To translate a shape you need
- to define the base shape and the coordinates of the vector of translation.
- <span style="font-weight: bold;"><B>Create a copy </B></span>checkbox allows
- to keep the initial object, otherwise it will be removed.</p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of all operations will be any</span></b>
- GEOM_Object.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Firstly you can define an <span style="font-weight: bold;"><B>Object</B></span>
- and the vector coordinates along the axes. </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeTranslation(Shape, DX,
- DY, DZ)</I></span>, where Shape is a shape to be translated, DX, DY, DZ are
- components of translation vector.</p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:</b>
- <b><span style="font-weight: normal;">Name + </b>1 shape + 3 values (coordinates).</span></p>
-
-<p class="whs3"> </p>
-
-<p class="whs4"><img src="pics/transformation1.png" x-maintain-ratio="TRUE" width="312px" height="393px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Secondly you can define an <span style="font-weight: bold;"><B>Object</B></span>
- and the start and the end points of the vector </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:
- </b><span style="font-style: italic;"><I>geompy.MakeTranslationTwoPoints(Object,
- Point1, Point2)</I></span> </p>
-
-<p class="whs2"><span><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments</font></span>:
- <span style="font-weight: normal;">Name + </span></b>1 shape + 2 vertices</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/transformation2.png" x-maintain-ratio="TRUE" width="312px" height="393px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><span><font size=3 style="font-size:12pt;">Finally you can define an Object and
- the vector </font></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:
- </b>geompy.MakeTranslationVector(Object, Vector)</p>
-
-<p class="whs2"><span><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments</font></span>:
- <span style="font-weight: normal;">Name + </span></b>1 shape + 1 vector.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"><img src="pics/transformation3.png" x-maintain-ratio="TRUE" width="312px" height="385px" border="0" class="img_whs6"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs7"><img src="pics/translationsn1.png" x-maintain-ratio="TRUE" width="331px" height="334px" border="0" class="img_whs8"> <img src="pics/translationsn2.png" x-maintain-ratio="TRUE" width="320px" height="333px" border="0" class="img_whs9"></p>
-
-<p class="whs7"> </p>
-
-<p class="whs10"> <span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our </font></span><span
- style="font-weight: bold;"><B>TUI Scripts</B></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">
- provide you with useful examples of the use of <a href="transformation_operations.htm#bookmark">Transformation
- Operations</a>. </font></span></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>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 { font-size:12pt; font-weight:normal; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:354px; height:177px; float:none; border-style:none; }
-p.whs5 { font-size:12pt; font-style:italic; font-weight:normal; }
-img_whs6 { border:none; float:none; height:430px; width:400px; border-style:none; }
-img_whs7 { border:none; height:430px; float:none; width:400px; border-style:none; }
-p.whs8 { margin-left:40px; font-size:12pt; }
--->
-</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("Geometry module\nViewing geometrical objects\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">You can change the transparency
- of a shape in the range between 0 (absolutely opaque) and 1 (absolutely
- transparent and thus invisible) in the following dialog box.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-transparency.png" x-maintain-ratio="TRUE" width="354px" height="177px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">or
- using a</span> TUI Command:</b><i> gg.setTransparency(ID, Double)</i></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Examples:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5">Opaque 50%
- Transparent</p>
-
-<p class="whs3"><img src="pics/colorsn.png" x-maintain-ratio="TRUE" height="430px" width="400px" border="0" class="img_whs6"> <img src="pics/transparencysn.png" x-maintain-ratio="TRUE" height="430px" width="400px" border="0" class="img_whs7"></p>
-
-<p class="whs8"> </p>
-
-<p class="whs2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Our TUI Scripts
- provide you with useful examples of <a href="changing_display_parameters.htm#bookmark2">Changing
- Display Parameters</a>. </font></span></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>Turus</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-weight:bold; }
-p.whs4 { font-weight:bold; margin-left:40px; }
-img_whs5 { border:none; width:312px; height:376px; float:none; border-style:none; }
-p.whs6 { margin-left:40px; }
-img_whs7 { border:none; width:272px; height:275px; 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("Geometry module\nCreating geometrical objects\nCreating Primitives\nTorus");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_primitivegui_functions_salome2_sp3_primitivegui_functions_image102.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Torus</h1>
-
-<p><b><span style="font-weight: normal;">T</b>o</span> create a <span style="font-weight: bold;"><B>Torus</B></span>
- in the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span
- style="font-weight: bold;"><B>New Entity - > Primitives - > Torus</B></span></p>
-
-<p> </p>
-
-<p>There are two algorithms for creation of a <span style="font-weight: bold;"><B>Torus</B></span>.
- </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (SOLID).</p>
-
-<p> </p>
-
-<p>Firstly, you can define a <span style="font-weight: bold;"><B>Torus</B></span>
- by the given <span style="font-weight: bold;"><B>Base Point</B></span>, the normal
- <span style="font-weight: bold;"><B>Vector</B></span> and the Major and Minor
- <span style="font-weight: bold;"><B>Radiuses</B></span>. </p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> <span style="font-style: italic;"><I>geompy.MakeTorus(Point,
- Vector, RadiusMajor, RadiusMinor) </I></span>, </p>
-
-<p class="whs3"><b style="font-weight: bold;">Arguments:
- </b><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">Name + 1 vertex
- + 1 vector (for direction) + 2 values (1 & 2 Radius).</font></span></p>
-
-<p class="whs4"><b style="font-weight: bold;"><img src="pics/torus1.png" x-maintain-ratio="TRUE" width="312px" height="376px" border="0" class="img_whs5"></b></p>
-
-<p> </p>
-
-<p>Secondly, you can define a Torus with the center at the origin of coordinates
- by its Major and Minor <span style="font-weight: bold;"><B>Radiuses</B></span>.
- </p>
-
-<p><b style="font-weight: bold;">TUI Command:</b> g<span style="font-style: italic;"><I>eompy.MakeTorusRR(RadiusMajor,
- RadiusMinor)</I></span> </p>
-
-<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments:
- </b>Name + </font></span>2 values (1 & 2 Radius from the origin).</p>
-
-<p class="whs6"><img src="pics/torus2.png" x-maintain-ratio="TRUE" width="312px" height="376px" border="0" class="img_whs5"></p>
-
-<p> </p>
-
-<p><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs6"> </p>
-
-<p class="whs6"><img src="pics/toruses.png" x-maintain-ratio="TRUE" width="272px" height="275px" border="0" class="img_whs7"></p>
-
-<p class="whs6"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="primitives.htm#bookmark3">Primitives</a>. </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>Vector</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-style:italic; }
-p.whs4 { font-size:12pt; font-weight:bold; }
-p.whs5 { font-size:12pt; margin-left:40px; }
-img_whs6 { border:none; width:312px; height:324px; float:none; border-style:none; }
-img_whs7 { border:none; width:312px; height:358px; float:none; border-style:none; }
-p.whs8 { font-size:12pt; margin-left:40px; font-weight:bold; }
-img_whs9 { border:none; width:156px; height:203px; }
--->
-</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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nVector");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image32.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span></b>Vector</h1>
-
-<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: normal;">T</b></font></span>o
- create a <span style="font-weight: bold;"><B>Vector</B></span> in the <span style="font-weight: bold;"><B>Main
- Menu</B></span> select <span style="font-weight: bold;"><B>New Entity - >
- Basic - > Vector</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">There
- are 2 algorithms to create a</span> Vector <span style="font-weight: normal;">in
- the 3D space.</span> </b></p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of each operation will be a</span></b>
- GEOM_Object (edge).</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">Firstly,
- you can define a</span> Vector <span style="font-weight: normal;">by its</span>
- Start <span style="font-weight: normal;">and</span> End Points</b></p>
-
-<p class="whs3"><b style="font-style: normal;"><span
- style="font-weight: bold;"><B>TUI Command:</b><b> </B></span><span
- style="font-weight: normal;">g</b>eompy.MakeVector(Point1,
- Point2)</span></p>
-
-<p class="whs4"><b style="font-weight: bold;">Arguments
- : </b><span style="font-weight: normal;">Name + 2 vertices.</span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/vector1.png" x-maintain-ratio="TRUE" width="312px" height="324px" border="0" class="img_whs6"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Secondly, you can define a <span style="font-weight: bold;"><B>Vector</B></span>
- starting in the <span style="font-weight: bold;"><B>Origin of coordinates</B></span>
- by its <span style="font-weight: bold;"><B>End Point.</B></span> </p>
-
-<p class="whs2"><b><span style="font-weight: bold;"><B>TUI Command:</b><b>
- </B></span><span style="font-weight: bold; font-style: italic;"><I><B> </B></I></span></b><span
- style="font-style: italic;"><I>geompy.MakeVectorDXDYDZ(DX,
- DY, DZ)</I></span> </p>
-
-<p class="whs2"><span><font size=3 style="font-size:12pt;"><b style="font-weight: bold;">Arguments
- : </b></font></span>Name + 3 values </p>
-
-<p class="whs2"> </p>
-
-<p class="whs5"><img src="pics/vector2.png" x-maintain-ratio="TRUE" width="312px" height="358px" border="0" class="img_whs7"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs8"><img src="image34.gif" width="156px" height="203px" border="0" class="img_whs9"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="basic_geometrical_objects.htm#bookmark5">Basic
- Geometric Objects</a>. </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 Geometrical Objects</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:340px; height:308px; border-style:none; }
-ul.whs2 { list-style:disc; }
-p.whs3 { font-weight:bold; }
-img_whs4 { border:none; width:26px; height:26px; border-style:none; }
-img_whs5 { border:none; width:23px; height:24px; border-style:none; }
-img_whs6 { border:none; width:279px; height:230px; 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("Geometry module\nViewing geometrical objects\nViewing Geometrical Objects");
-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 Geometrical Objects</h1>
-
-<p>Newly created geometrical objects are automatically displayed in the
- <span style="font-weight: bold;"><B>OCC 3D Viewer</B></span>. </p>
-
-<p> </p>
-
-<p><span style="font-weight: bold;"><B>OCC 3D Viewer</B></span> is described in
- the documentation on <span style="font-weight: bold;"><B>GUI module</B></span>.</p>
-
-<p>After the object has appeared in the Viewer, you can select it with
- left mouse click to change its presentation parameters and access to other
- useful options by right-clicking on the selected object<span style="font-weight: bold;"><B>.</B></span></p>
-
-<p> </p>
-
-<p><img src="image1.jpg" width="340px" height="308px" border="0" class="img_whs1"></p>
-
-<p> </p>
-
-<ul type="disc" class="whs2">
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Rename - </B></span>allows
- to change the name of the geometric object.<span style="font-weight: bold;">
- <B></B></span></p></li>
-
- <li class=kadov-p><p class="whs3"><a href="wireframe_and_shading.htm">Display
- Mode</a> - <span style="font-weight: normal;">allows to select between
- Wireframe and Shading presentation.</span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><a href="color.htm">Color</a>
- - </B></span>allows to change the filling color in the standard<span style="font-weight: bold;"><B>
- Select Color</B></span> menu.<span style="font-weight: bold;"> <B></B></span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><a href="transparency.htm">T</B></span><span
- style="font-weight: bold;"><B>ransparency</B></span></a> - allows to change the
- transparency of mesh elements.</p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><a href="isos.htm">Isos</a></B></span>
- - allows to <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">change the number of isolines
- displayed within a shape.</font></span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><img src="image18.gif" width="26px" height="26px" border="0" class="img_whs4"> Erase</B></span> - allows to hide the selected mesh from the
- viewer. <b><span style="font-size: 12pt; font-weight: normal;"><font size=3 style="font-size:12pt;">TUI Command</font></span><span
- style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> :</b><i> sg.EraseOnly(ID)</i></font></span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><img src="image26.gif" width="26px" height="26px" border="0" class="img_whs4"> Erase all</B></span> -
- allows to hide all objects from the viewer. <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b
- style="font-weight: normal;">TUI Command:</b><i> sg.EraseAll()</i></font></span></p></li>
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B><img src="image33.gif" width="23px" height="24px" border="0" class="img_whs5"> Display Only</B></span> -allows to display only the selected
- mesh, hiding all other from the viewer. <span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b
- style="font-weight: normal;">TUI Command:</b><i> sg.DisplayOnly(ID)</i></font></span></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><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>
-
-<p>Some of these functionalities are available through right-clicking on
- the viewer background:</p>
-
-<p> </p>
-
-<p><img src="image2.jpg" width="279px" height="230px" border="0" class="img_whs6"></p>
-
-<p> </p>
-
-<ul type="disc" class="whs2">
-
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Select Only</B></span>
- provides a filter for exclusive selection of objects of a certain type.
- </p></li>
-</ul>
-
-<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>Geometry 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>Geometry 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="geometry.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>Geometry 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:40 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 = "geometry.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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
-
-<html>
-
-<head>
-<title>Wire</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:312px; height:289px; float:none; border-style:none; }
-img_whs5 { border:none; width:208px; height:197px; 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("Geometry module\nCreating geometrical objects\nCreating Advanced Geometrical Objects\nWire");
-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><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="salome2_sp3_buildgui_functions_salome2_sp3_buildgui_functions_image15.gif" width="20px" height="20px" border="0" class="img_whs1"> </font></span>Wire</h1>
-
-<p class="whs2"><b style="font-weight: normal;">T</b>o create
- a <span style="font-weight: bold;"><B>Wire</B></span> in the Main Menu select
- <span style="font-weight: bold;"><B>New Entity - > Build - > Wire</B></span></p>
-
-<p> </p>
-
-<p>You can create a <span style="font-weight: bold;"><B>Wire</B></span> from several
- connected edges and wires by selecting them in the object browser or in
- the viewer holding Shift button. </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;"> will
- be a</span></b> GEOM_Object (WIRE).</p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command :</b><i>
- </i><span style="font-style: italic;"><I>geompy.MakeWire(ListOfShape).</I></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + List of connected wires or edges..</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/neo-obj3.png" x-maintain-ratio="TRUE" width="312px" height="289px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Example:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/wiresn.png" x-maintain-ratio="TRUE" width="208px" height="197px" border="0" class="img_whs5"></p>
-
-<p class="whs3"> </p>
-
-<p class="whs2">Our TUI Scripts provide you with useful examples
- of creation of <a href="geometrical_objects.htm#Creation">Advanced Geometric
- Objects</a>. </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>Wireframe and Shading</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:0px; }
-p.whs2 { font-family:'Times New Roman' , serif; font-size:12pt; }
-p.whs3 { font-family:'Times New Roman' , serif; font-size:12pt; font-style:italic; }
-p.whs4 { font-size:12pt; margin-left:40px; }
-img_whs5 { border:none; width:400px; height:420px; float:none; border-style:none; }
-img_whs6 { border:none; float:none; width:400px; height:420px; border-style:none; }
-p.whs7 { font-size:12pt; }
--->
-</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-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("Geometry module\nViewing geometrical objects\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 class=TODO
- style="font-family: 'Times New Roman', serif;
- font-size: 12pt;
- font-style: normal;">This option is relevant for viewing 3D
- objects. <span style="font-weight: bold;"><B>Wireframe</B></span> mode means
- that you can see only edges
- of the object, while its shells remain transparent. <span style="font-weight: bold;"><B>Shading</B></span>
- mode means that the shells are filled with color.</p>
-
-<p class=TODO
- style="font-family: 'Times New Roman', serif;
- font-size: 12pt;
- font-style: normal;"> </p>
-
-<p class="whs1">To change the display mode right-click on
- this geometrical object in the viewer and from the pop-up menu select
- <span style="font-weight: bold;"><B>Display mode --> Wireframe</B></span>
- or<span style="font-weight: bold;"><B> Shading</B></span>.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI
- Command:</b><i> gg.setDisplayMode(ID, Short)</i></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Examples:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3">Wireframe </p>
-
-<p class="whs4"><img src="pics/disp_mode1sn.png" x-maintain-ratio="TRUE" width="400px" height="420px" border="0" class="img_whs5"> </p>
-
-<p class="whs3">Shading</p>
-
-<p class="whs4"><img src="pics/disp_mode2sn.png" x-maintain-ratio="TRUE" width="400px" height="420px" border="0" class="img_whs6"></p>
-
-<p class="whs4"> </p>
-
-<p class="whs7">Our TUI Scripts provide you with useful examples
- of <a href="changing_display_parameters.htm#bookmark">Changing Display
- Parameters</a>. </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>Working Plane</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 { width:20px; height:20px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; margin-left:40px; }
-img_whs4 { border:none; width:400px; height:277px; float:none; border-style:none; }
-img_whs5 { border:none; width:400px; height:312px; float:none; border-style:none; }
-img_whs6 { border:none; width:400px; height:320px; float:none; border-style:none; }
-table.whs7 { x-cell-content-align:top; width:39.231%; border-spacing:0px; }
-col.whs8 { width:52.696%; }
-col.whs9 { width:47.304%; }
-tr.whs10 { x-cell-content-align:top; }
-td.whs11 { width:52.696%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
-p.whs12 { font-style:italic; }
-td.whs13 { width:47.304%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
-td.whs14 { width:52.696%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
-img_whs15 { border:none; width:176px; height:217px; border-style:none; }
-td.whs16 { width:47.304%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }
-img_whs17 { border:none; width:191px; height:217px; 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("Geometry module\nCreating geometrical objects\nCreating Basic Geometric Objects\nWorking Plane");
-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><b style="font-weight: bold;"><span style="font-size: 14pt;"><font size=4 style="font-size:14pt;"><img src="files/salome2_sp3_basicgui_functions_salome2_sp3_basicgui_functions_image34.gif" width="20px" height="20px" border="0" class="img_whs1"></font></span></b>Working Plane</h1>
-
-<p>Definition of a <span style="font-weight: bold;"><B>Working Plane</B></span>
- is necessary for work with <span style="font-weight: bold;"><B><a href="sketcher.htm">Sketcher</a></B></span>.
- </p>
-
-<p> </p>
-
-<p>To create a <span style="font-weight: bold;"><B>Working Plane</B></span> in
- the <span style="font-weight: bold;"><B>Main Menu</B></span> select <span style="font-weight: bold;"><B>New
- Entity - > Basic - > Working Plane</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">There is a number of algorithms to set the
- <span style="font-weight: bold;"><B>Working Plane</B></span> and the Camera Position.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Firstly, you can select a <span style="font-weight: bold;"><B>Plane</B></span>,<span
- style="font-weight: bold;"> <B></B></span>a <span style="font-weight: bold;"><B>Planar
- Face</B></span> or a <span style="font-weight: bold;"><B>Local Coordinate System</B></span>
- to be your <span style="font-weight: bold;"><B>Working Plane</B></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 1 selection (face or planar face), </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/workplane4.png" x-maintain-ratio="TRUE" width="400px" height="277px" border="0" class="img_whs4"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Secondly, you can define a <span style="font-weight: bold;"><B>Working
- Plane</B></span> by two <span style="font-weight: bold;"><B>Vectors</B></span></p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- Name + 2
- vectors.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/workplane5.png" x-maintain-ratio="TRUE" width="400px" height="312px" border="0" class="img_whs5"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">Finally, you can select one of three basic
- projections of XYZ coordinate system to be your <span style="font-weight: bold;"><B>Working
- Plane</B></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><img src="pics/workplane6.png" x-maintain-ratio="TRUE" width="400px" height="320px" border="0" class="img_whs6"></p>
-
-<p> </p>
-
-<p><span style="font-weight: bold;"><B>Reverse the plane normal</B></span> checkbox
- allows changing the direction of the working plane.</p>
-
-<p> </p>
-
-<p><span style="font-weight: bold;"><B>Example:</B></span> Working plane on the
- upper face of a box. </p>
-
-<p> </p>
-
-<table x-use-null-cells cellspacing="0" width="39.231%" class="whs7">
-<col class="whs8">
-<col class="whs9">
-
-<tr valign="top" class="whs10">
-<td width="52.696%" class="whs11">
-<p class="whs12">Normal Direction</td>
-<td width="47.304%" class="whs13">
-<p class="whs12">Reversed Direction</td></tr>
-
-<tr valign="top" class="whs10">
-<td width="52.696%" class="whs14">
-<p><img src="image36.gif" width="176px" height="217px" border="0" class="img_whs15"></td>
-<td width="47.304%" class="whs16">
-<p><img src="image47.gif" width="191px" height="217px" border="0" class="img_whs17"></td></tr>
-</table>
-
-<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>Working with groups</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:24px; height:22px; border-style:none; }
-p.whs2 { font-size:12pt; }
-p.whs3 { font-size:12pt; font-weight:bold; margin-left:40px; }
-img_whs4 { border:none; border-style:none; width:312px; height:379px; float:none; }
-p.whs5 { font-size:12pt; margin-left:0px; font-weight:normal; }
-ul.whs6 { list-style:disc; }
-img_whs7 { border:none; width:50px; height:31px; border-style:none; }
-p.whs8 { font-size:12pt; margin-left:48px; }
-p.whs9 { font-size:12pt; margin-left:0px; }
-p.whs10 { font-size:12pt; font-weight:bold; }
-p.whs11 { font-size:12pt; margin-left:40px; }
-img_whs12 { border:none; width:250px; height:307px; border-style:none; }
-img_whs13 { border:none; width:22px; height:22px; border-style:none; }
-p.whs14 { font-size:12pt; margin-left:40px; font-weight:bold; }
-img_whs15 { border:none; width:312px; height:379px; float:none; 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.whs5 {margin-left:1pt; }";
- strNSS += "p.whs9 {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("Geometry module\nCreating geometrical objects\nWorking with 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>Working with groups</h1>
-
-<p>Creation and editing groups of subshapes of a geometrical object makes
- handling subshapes much easier. This functionality is available in OCC
- viewer only.</p>
-
-<p> </p>
-
-<p><img src="image56.gif" width="24px" height="22px" border="0" class="img_whs1"> <span style="font-weight: bold; font-size: 14pt;"><font size=4 style="font-size:14pt;"><B>Create
- a group</B></font></span></p>
-
-<p> </p>
-
-<p class="whs2">To create a group of subshapes of a geometrical
- object in the main menu select <span style="font-weight: bold;"><B>New entity
- > Group > Create</B></span>. </p>
-
-<p class="whs2">The following menu will appear. </p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"><b style="font-weight: bold;"><img src="pics/geomcreategroup.png" x-maintain-ratio="TRUE" width="312px" height="379px" border="0" class="img_whs4"></b></p>
-
-<p class="whs3"> </p>
-
-<p class="whs5">In this Menu: </p>
-
-<p class="whs5"> </p>
-
-<ul type="disc" class="whs6">
-
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Shape
- Type</B></span> radio button define the type of elements for the group (points,
- lines, planes or shapes). </p></li>
-
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Group
- Name</B></span> - here you can enter the name of the group, by default, it
- is Group_n.</p></li>
-
- <li class=kadov-p><p class="whs5">Then, using the <img src="image28.gif" width="50px" height="31px" border="0" class="img_whs7"> button, select the <span style="font-weight: bold;"><B>Main
- Shape</B></span> (a geometrical object on which the group will be created).
- You can select the elements of your group in two ways:</p></li>
-
- <li class=kadov-p><p class="whs8">Clicking
- <span style="font-weight: bold;"><B>Select Sub-Shapes</B></span> button you can
- select them manually in the 3D Viewer, and add to the group by clicking
- the <span style="font-weight: bold;"><B>Add</B></span> button (keep down the
- Shift button on the keyboard to select several elements and add all them
- together). The indexes of the selected elements will be displayed in the
- list. To delete elements from the list, select them and click <span style="font-weight: bold;"><B>Remove</B></span>
- button. </p></li>
-
- <li class=kadov-p><p class="whs8">Clicking
- <span style="font-weight: bold;"><B>Select All</B></span> button you can add
- all object's elements of a certain type in the list of the elements of
- the group. To delete elements from the list, select them and click <span
- style="font-weight: bold;"><B>Remove</B></span> button. </p></li>
-
- <li class=kadov-p><p class="whs9">Finally,
- confirm your selection by clicking <span style="font-weight: bold;"><B>OK
- </B></span>(also closes the Menu) or <span style="font-weight: bold;"><B>Apply</B></span>
- (leaves the Menu open for creation of other groups), or skip it by clicking
- <span style="font-weight: bold;"><B>Close</B></span> button. </p></li>
-</ul>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b><b>
- GEOM_Object<span style="font-weight: normal;">.</span></b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i><span style="font-style: italic;"><I>geompy.CreateGroup(MainShape, ShapeType)</I></span>,
- where MainShape is a shape for which the group is created, ShapeType is
- a type of shapes in the created group.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- 1 Shape + Type of subshape.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs10">Example:</p>
-
-<p class="whs10"> </p>
-
-<p class="whs11"><img src="image193.jpg" width="250px" height="307px" border="0" class="img_whs12"></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><img src="image57.gif" width="22px" height="22px" border="0" class="img_whs13"> <span style="font-weight: bold; font-size: 14pt;"><font size=4 style="font-size:14pt;"><B>Edit
- a group</B></font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2">To<span style="font-weight: bold;"><B> Edit </B></span>an
- existing group in the main menu select <span style="font-weight: bold;"><B>New
- entity > Group > Edit</B></span>. This menu is designed in the same
- way as the <span style="font-weight: bold;"><B>Create a group</B></span> menu.
- </p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;"><span style="font-weight: normal;">The</span>
- Result <span style="font-weight: normal;">of the operation will be a</span></b><b>
- GEOM_Object<span style="font-weight: normal;">.</span></b></p>
-
-<p> </p>
-
-<p class="whs2"><b style="font-weight: bold;">TUI Command:</b><i>
- </i></p>
-
-<ul type="disc" class="whs6">
-
- <li class=kadov-p><p class="whs2"><i><span style="font-style: italic;"><I>g</i>eompy.AddObject(Group,
- SubShapeID)</I></span>, where Group is a group to which a sub shape has to
- be added, SubShapeID is an ID of the sub shape to be added to the group</p></li>
-
- <li class=kadov-p><p class="whs2"><span style="font-style: italic;"><I>geompy.RemoveObject(Group,
- SubShapeID)</I></span>, where Group is a group from which a sub shape has
- to be removed, SubShapeID is an ID of the sub shape to be removed from
- the group</p></li>
-
- <li class=kadov-p><p class="whs2"><span style="font-style: italic;"><I>geompy.GetObjectIDs(Group)</I></span>,
- where Group is a group for which its object ID\92s are returned. </p></li>
-</ul>
-
-<p class="whs11"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Returns:
- List of IDs.</font></span></p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Arguments:</b>
- 1 Shape + its subshapes.</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"><b style="font-weight: bold;">Dialog Box:</b></p>
-
-<p class="whs2"> </p>
-
-<p class="whs14"><b style="font-weight: bold;"><img src="pics/editgroup.png" x-maintain-ratio="TRUE" width="312px" height="379px" border="0" class="img_whs15"></b></p>
-
-<p class="whs14"> </p>
-
-<p class="whs2">Our <span style="font-weight: bold;"><B>TUI Scripts</B></span>
- provide you with useful examples of <a href="working_with_groups.htm">Working
- with Groups</a>. </p>
-
-<p> </p>
-
-<script type="text/javascript" language="javascript1.2">
-<!--
-if (window.writeIntopicBar)
- writeIntopicBar(0);
-//-->
-</script>
-</body>
-</html>
EXTRA_DIST+=GEOM
+doxygen=@DOXYGEN@
+
usr_docs:
- cp -fr $(srcdir)/GEOM ./
- -find $(PWD) -name CVS -prune -exec rm -rf {} \;
+ cd ./GEOM; \
+ echo "Processing geompyDC.py file: "; \
+ $(doxygen) ./doxyfile_py; \
+ echo "Running doxygen in directory: "`pwd`; \
+ $(doxygen) ./doxyfile;
docs: usr_docs
uninstall-local:
rm -rf $(docdir)/gui/GEOM
+
+docguidir=$(docdir)/gui/GEOM
+
+nodist_docgui_DATA= GEOM/doxyfile
+nodist_docgui_DATA+= GEOM/doxyfile_py
+EXTRA_DIST+= GEOM/doxyfile.in
+EXTRA_DIST+= GEOM/doxyfile_py.in
\ No newline at end of file
# 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 =
cp -fr $(srcdir)/GEOM ./INPUT; \
cp -f ./GEOM/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)/GEOM/sources/ GEOM ; \
+ cp -fr $(srcdir)/GEOM/sources/ GEOM/ ; \
rm -fr INPUT
doctuidir=$(docdir)/tui/GEOM
#include "SALOME_Exception.idl"
#include "SALOME_Component.idl"
#include "SALOMEDS.idl"
+#include "SALOMEDS_Attributes.idl"
#include "SALOME_GenericObj.idl"
*/
string GetName();
+ /*!
+ * Set color of the object.
+ * \param theColor is a color of the object.
+ */
+ void SetColor(in SALOMEDS::Color theColor);
+
+ /*!
+ * Get color of the object.
+ */
+ SALOMEDS::Color GetColor();
+
+ /*!
+ * Toggle auto color mode on the object.
+ * \param theAtoColor is a flag which toggles auto color mode.
+ */
+ void SetAutoColor(in boolean theAutoColor);
+
+ /*!
+ * Get flag of object's auto color mode.
+ */
+ boolean GetAutoColor();
+
/*!
* Set a Study entry where this object was published.
*/
GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve,
in double theParameter);
+ /*!
+ * Create a point, on two lines intersection.
+ * \param theRefLine1, theRefLine2 The referenced lines.
+ * \return New GEOM_Object, containing the created point.
+ */
+ GEOM_Object MakePointOnLinesIntersection (in GEOM_Object theRefLine1,
+ in GEOM_Object theRefLine2);
/*!
* Create a vector, corresponding to tangent to the given parameter on the given curve.
*/
GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
+ /*!
+ * Create a line, given by two faces intersection.
+ * \param theFace1 First of two faces, defining the line.
+ * \param theFace2 Second of two faces, defining the line.
+ * \return New GEOM_Object, containing the created line.
+ */
+ GEOM_Object MakeLineTwoFaces (in GEOM_Object theFace1, in GEOM_Object theFace2);
+
/*!
* Create a plane, passing through the three given points
* \param thePnt1 First of three points, defining the plane.
GEOM_Object MakePrismVecH (in GEOM_Object theBase,
in GEOM_Object theVec,
in double theH);
+ /* The Same Prism but in 2 directions (forward&backward) */
+ GEOM_Object MakePrismVecH2Ways (in GEOM_Object theBase,
+ in GEOM_Object theVec,
+ in double theH);
/*!
* Create a shape by extrusion of the base shape along a vector, defined by two points.
GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
in GEOM_Object thePoint1,
in GEOM_Object thePoint2);
+ /* The same prism but in two directions forward&backward */
+ GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2);
/*!
* Create a shape by extrusion of the base shape along
GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
in GEOM_Object theAxis,
in double theAngle);
+ /* The Same Revolution but in both ways forward&backward */
+ GEOM_Object MakeRevolutionAxisAngle2Ways (in GEOM_Object theBase,
+ in GEOM_Object theAxis,
+ in double theAngle);
/*!
* Create a filling from the given compound of contours.
* \param theSeqSubBases - list of corresponding subshapes of section shapes.
* \param theLocations - list of locations on the path corresponding
* specified list of the Bases shapes. Number of locations
- * should be equal to number of bases or list of locations can be empty.
+ * should be equal to number of bases.
* \param thePath - Path shape to extrude the base shape along it.
* \param theWithContact - the mode defining that the section is translated to be in
* contact with the spine.
in GEOM_Object thePath,
in boolean theWithContact ,
in boolean theWithCorrection );
-
+
+ /*!
+ * Create solids between given sections
+ * \param theSeqBases - list of sections (shell or face).
+ * \param theLocations - list of corresponding vertexes
+ * \return New GEOM_Object, containing the created solids.
+ */
+ GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases,
+ in ListOfGO theLocations);
};
/*!
* Replace coincident faces in theShape by one face.
* \param theShape Initial shape.
* \param theTolerance Maximum distance between faces, which can be considered as coincident.
+ * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
* \return New GEOM_Object, containing a copy of theShape without coincident faces.
*/
- GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance);
+ GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids);
/*!
* Find coincident faces in theShape for possible gluing.
* \param theShape Initial shape.
* \param theTolerance Maximum distance between faces, which can be considered as coincident.
* \param theFaces List of faces for gluing.
+ * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
* \return New GEOM_Object, containing a copy of theShape without some faces.
*/
GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
- in ListOfGO theFaces);
+ in ListOfGO theFaces, in boolean doKeepNonSolids);
/*!
* Explode a shape on subshapes of a given type.
in shape_state theState);
/*!
- * Get sub-shape(s) of theShapeWhere, which are
+ * Get sub-shape(s) of \a theShapeWhere, which are
* coincident with \a theShapeWhat or could be a part of it.
* \param theShapeWhere Shape to find sub-shapes of.
* \param theShapeWhat Shape, specifying what to find.
GEOM_Object GetInPlace (in GEOM_Object theShapeWhere,
in GEOM_Object theShapeWhat);
+ /*!
+ * Get sub-shape(s) of \a theShapeWhere, which are
+ * coincident with \a theShapeWhat or could be a part of it.
+ *
+ * Implementation of this method is based on a saved history of an operation,
+ * produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
+ * arguments (an argument shape or a sub-shape of an argument shape).
+ * The operation could be the Partition or one of boolean operations,
+ * performed on simple shapes (not on compounds).
+ *
+ * \param theShapeWhere Shape to find sub-shapes of.
+ * \param theShapeWhat Shape, specifying what to find.
+ * \return Group of all found sub-shapes or a single found sub-shape.
+ */
+ GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
+
/*!
* Get sub-shape of theShapeWhere, which are
* coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX.
* \note Each compound from ListShapes and ListTools will be exploded in order
* to avoid possible intersection between shapes from this compound.
* \param theLimit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
+ # \param KeepNonlimitShapes: if this parameter == 0 - only shapes with
+ # type <= Limit are kept in the result,
+ # else - shapes with type > Limit are kept
+ # also (if they exist)
*
* After implementation new version of PartitionAlgo (October 2006)
* other parameters are ignored by current functionality. They are kept
in ListOfGO theRemoveInside,
in short theLimit,
in boolean theRemoveWebs,
- in ListOfLong theMaterials);
+ in ListOfLong theMaterials,
+ in short theKeepNonlimitShapes);
/*!
* Perform partition operation.
in ListOfGO theRemoveInside,
in short theLimit,
in boolean theRemoveWebs,
- in ListOfLong theMaterials);
+ in ListOfLong theMaterials,
+ in short theKeepNonlimitShapes);
/*!
* Perform partition of the Shape with the Plane
GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in GEOM_Object thePnt3);
-
+ /*!
+ * Create a circle with given center, with a radius equals the distance from center to Point1
+ * and on a plane defined by all of three points.
+ * \param thePnt1,thePnt2,thePnt3 Points, defining the circle.
+ * \return New GEOM_Object, containing the created circle.
+ */
+ GEOM_Object MakeCircleCenter2Pnt (in GEOM_Object thePnt1,
+ in GEOM_Object thePnt2,
+ in GEOM_Object thePnt3);
/*!
* Create an ellipse with given center, normal vector and radiuses.
* \param thePnt Ellipse center.
GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
in double theR,
in ListOfLong theEdges);
+ GEOM_Object MakeFilletEdgesR1R2 (in GEOM_Object theShape,
+ in double theR1,
+ in double theR2,
+ in ListOfLong theEdges);
/*!
* Perform a fillet on all edges of the specified faces of the given shape.
GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
in double theR,
in ListOfLong theFaces);
+ GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
+ in double theR1,
+ in double theR2,
+ in ListOfLong theFaces);
/*!
* Perform a symmetric chamfer on all edges of the given shape.
GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
in double theD1, in double theD2,
in long theFace1, in long theFace2);
+ /*!
+ * The Same but with params theD = Chamfer Lenght
+ * and theAngle = Chamfer Angle (Angle in radians)
+ */
+ GEOM_Object MakeChamferEdgeAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in long theFace1, in long theFace2);
/*!
* Perform a chamfer on all edges of the specified faces.
GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
in double theD1, in double theD2,
in ListOfLong theFaces);
+ /*!
+ * The Same but with params theD = Chamfer Lenght
+ * and theAngle = Chamfer Angle (Angle in radians)
+ */
+ GEOM_Object MakeChamferFacesAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in ListOfLong theFaces);
+
+ /*!
+ * Perform a chamfer on edges,
+ * with distance D1 on the first specified face (if several for one edge)
+ * \param theShape Shape, to perform chamfer on.
+ * \param theD1 theD2 Chamfer size
+ * \param theEdges Sequence of edges of \a theShape.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeChamferEdges (in GEOM_Object theShape,
+ in double theD1, in double theD2,
+ in ListOfLong theEdges);
+ /*!
+ * The Same but with params theD = Chamfer Lenght
+ * and theAngle = Chamfer Angle (Angle in radians)
+ */
+ GEOM_Object MakeChamferEdgesAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in ListOfLong theEdges);
/*!
* Perform an Archimde operation on the given shape with given parameters.
*/
GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
+ /*!
+ * Get a vector, representing the normal of theFace.
+ * If the face is not planar, theOptionalPoint is obligatory.
+ * \param theFace Shape (face) to define the normal of.
+ * \param theOptionalPoint Shape (point) to define the normal at.
+ * Can be NULL in case of planar face.
+ * \return New GEOM_Object, containing the created normal vector.
+ */
+ GEOM_Object GetNormal (in GEOM_Object theFace,
+ in GEOM_Object theOptionalPoint);
+
/*!
* Get inertia matrix and moments of inertia of theShape.
* \param theShape Shape to calculate inertia of.
out double X1, out double Y1, out double Z1,
out double X2, out double Y2, out double Z2);
+ /*!
+ * Get angle between the given lines or linear edges.
+ * \param theShape1,theShape2 Shapes to find angle between. Lines or linear edges.
+ * \return Value of the angle between the given shapes.
+ */
+ double GetAngle (in GEOM_Object theShape1, in GEOM_Object theShape2);
/*!
* Get point coordinates
in GEOM_Object thePnt2) ;
GEOM_Object MakeLineTwoPnt (in GEOM_Object thePnt1,
in GEOM_Object thePnt2) ;
+ GEOM_Object MakeLineTwoFaces (in GEOM_Object theFace1,
+ in GEOM_Object theFace2) ;
GEOM_Object MakePlaneThreePnt (in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in GEOM_Object thePnt3,
GEOM_Object MakePrismVecH (in GEOM_Object theBase,
in GEOM_Object theVec,
in double theH) ;
+ GEOM_Object MakePrismVecH2Ways (in GEOM_Object theBase,
+ in GEOM_Object theVec,
+ in double theH) ;
GEOM_Object MakePrismTwoPnt (in GEOM_Object theBase,
in GEOM_Object thePoint1,
in GEOM_Object thePoint2) ;
+ GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase,
+ in GEOM_Object thePoint1,
+ in GEOM_Object thePoint2) ;
GEOM_Object MakePipe (in GEOM_Object theBase,
in GEOM_Object thePath) ;
GEOM_Object MakeRevolutionAxisAngle (in GEOM_Object theBase,
in GEOM_Object theAxis,
in double theAngle) ;
+ GEOM_Object MakeRevolutionAxisAngle2Ways (in GEOM_Object theBase,
+ in GEOM_Object theAxis,
+ in double theAngle) ;
GEOM_Object MakeFilling (in GEOM_Object theShape,
in long theMinDeg, in long theMaxDeg,
in double theTol2D, in double theTol3D,
in boolean theWithContact ,
in boolean theWithCorrection );
+ GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases,
+ in ListOfGO theLocations );
+
//-----------------------------------------------------------//
// BooleanOperations //
//-----------------------------------------------------------//
in GEOM_List theRemoveInside,
in short theLimit,
in boolean theRemoveWebs,
- in GEOM_List theMaterials) ;
+ in GEOM_List theMaterials,
+ in short theKeepNonlimitShapes);
GEOM_Object MakeHalfPartition (in GEOM_Object theShape,
in GEOM_Object thePlane) ;
GEOM_Object MakeSolidShells (in GEOM_List theShells) ;
GEOM_Object MakeCompound (in GEOM_List theShapes) ;
GEOM_Object MakeGlueFaces (in GEOM_Object theShape,
- in double theTolerance);
+ in double theTolerance,
+ in boolean doKeepNonSolids);
GEOM_List GetGlueFaces (in GEOM_Object theShape,
in double theTolerance);
GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape,
in double theTolerance,
- in ListOfGO theFaces);
+ in ListOfGO theFaces,
+ in boolean doKeepNonSolids);
GEOM_List MakeExplode (in GEOM_Object theShape,
in long theShapeType,
in boolean isSorted) ;
GEOM_Object MakeCircleThreePnt (in GEOM_Object thePnt1,
in GEOM_Object thePnt2,
in GEOM_Object thePnt3) ;
+ GEOM_Object MakeCircleCenter2Pnt (in GEOM_Object thePnt1,
+ in GEOM_Object thePnt2,
+ in GEOM_Object thePnt3) ;
GEOM_Object MakeEllipse (in GEOM_Object thePnt,
in GEOM_Object theVec,
in double theRMajor,
GEOM_Object MakeFilletEdges (in GEOM_Object theShape,
in double theR,
in GEOM_List theEdges) ;
+ GEOM_Object MakeFilletEdgesR1R2 (in GEOM_Object theShape,
+ in double theR1,
+ in double theR2,
+ in GEOM_List theEdges) ;
GEOM_Object MakeFilletFaces (in GEOM_Object theShape,
in double theR,
in GEOM_List theFaces) ;
+ GEOM_Object MakeFilletFacesR1R2 (in GEOM_Object theShape,
+ in double theR1,
+ in double theR2,
+ in GEOM_List theFaces) ;
GEOM_Object MakeChamferAll (in GEOM_Object theShape,
in double theD) ;
GEOM_Object MakeChamferEdge (in GEOM_Object theShape,
in double theD1, in double theD2,
in long theFace1, in long theFace2) ;
+ GEOM_Object MakeChamferEdgeAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in long theFace1, in long theFace2) ;
GEOM_Object MakeChamferFaces (in GEOM_Object theShape,
in double theD1, in double theD2,
in GEOM_List theFaces) ;
+ GEOM_Object MakeChamferFacesAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in GEOM_List theFaces) ;
+ GEOM_Object MakeChamferEdges (in GEOM_Object theShape,
+ in double theD1, in double theD2,
+ in GEOM_List theEdges) ;
+ GEOM_Object MakeChamferEdgesAD (in GEOM_Object theShape,
+ in double theD, in double theAngle,
+ in GEOM_List theEdges) ;
GEOM_Object MakeArchimede (in GEOM_Object theShape,
in double theWeight,
in double theWaterDensity,
</outParameter-list>
<DataStream-list></DataStream-list>
</component-service>
+ <component-service>
+ <service-name>GetDumpName</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theStudyEntry</inParameter-name>
+ <inParameter-type>string</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>string</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>GetAllDumpNames</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list></inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>string_array</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
</component-service-list>
</component-interface-list>
<constraint>hostname = localhost</constraint>
<component-name>GEOM_Superv</component-name>
<component-username>GEOM_Superv</component-username>
<component-type>OTHER</component-type>
- <component-author>mkr</component-author>
+ <component-author></component-author>
<component-version>@VERSION@</component-version>
<component-comment>Supervision wrapper for Geometry component</component-comment>
<component-multistudy>1</component-multistudy>
- <component-impltype>1</component-impltype>
+ <component-impltype>1</component-impltype>
<component-icone></component-icone>
<constraint></constraint>
<component-interface-list>
<component-service-list>
<component-service>
<service-name>SetStudyID</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>CreateListOfGO</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list></inParameter-list>
</component-service>
<component-service>
<service-name>AddItemToListOfGO</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>CreateListOfLong</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list></inParameter-list>
</component-service>
<component-service>
<service-name>AddItemToListOfLong</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>CreateListOfDouble</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list></inParameter-list>
</component-service>
<component-service>
<service-name>AddItemToListOfDouble</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePointXYZ</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePointWithReference</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePointOnCurve</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theRefCurve</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theParameter</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>MakeTangentOnCurve</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeVectorDXDYDZ</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeVectorTwoPnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeLineTwoPnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePlaneThreePnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePlanePntVec</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePlaneFace</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeMarker</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</outParameter-list>
<DataStream-list></DataStream-list>
</component-service>
+ <component-service>
+ <service-name>MakeTangentPlaneOnFace</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theFace</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theParameterU</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theParameterV</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theTrimSize</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
<component-service>
<service-name>MakeBox</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeBoxDXDYDZ</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeBoxTwoPnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCylinderPntVecRH</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCylinderRH</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSphere</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSphereR</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSpherePntR</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeTorusPntVecRR</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeTorusRR</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeConePntVecR1R2H</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeConeR1R2H</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePrismVecH</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePrismTwoPnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePipe</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeRevolutionAxisAngle</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFilling</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</outParameter-list>
<DataStream-list></DataStream-list>
</component-service>
+ <component-service>
+ <service-name>MakeThruSections</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theSeqSections</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theModeSolid</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>thePreci</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theRuled</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>MakePipeWithDifferentSections</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theSeqBases</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theLocations</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>thePath</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theWithContact</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theWithCorrection</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>MakePipeWithShellSections</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theSeqBases</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theSeqSubBases</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theLocations</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>thePath</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theWithContact</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theWithCorrection</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
<component-service>
<service-name>MakeBoolean</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFuse</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakePartition</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
<inParameter-type>GEOM_List</inParameter-type>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
+ <inParameter>
+ <inParameter-name>theKeepNonlimitShapes</inParameter-name>
+ <inParameter-type>short</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
</inParameter-list>
<outParameter-list>
<outParameter>
</component-service>
<component-service>
<service-name>MakeHalfPartition</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>Export</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>Import</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>ImportTranslators</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list></inParameter-list>
</component-service>
<component-service>
<service-name>ExportTranslators</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list></inParameter-list>
</component-service>
<component-service>
<service-name>TranslateTwoPoints</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>TranslateTwoPointsCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>TranslateDXDYDZ</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>TranslateDXDYDZCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>TranslateVector</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>TranslateVectorCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MultiTranslate1D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MultiTranslate2D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>Rotate</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>RotateCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>RotateThreePoints</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>RotateThreePointsCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MultiRotate1D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MultiRotate2D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorPlane</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorPlaneCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorAxis</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorAxisCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorPoint</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MirrorPointCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>OffsetShape</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>OffsetShapeCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>ScaleShape</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>ScaleShapeCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>PositionShape</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>PositionShapeCopy</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeEdge</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeWire</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFace</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFaceWires</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeShell</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSolidShell</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSolidShells</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCompound</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeGlueFaces</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theShape</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theTolerance</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>doKeepNonSolids</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_Object</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>GetGlueFaces</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
<inParameter-comment>unknown</inParameter-comment>
</inParameter>
</inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>GEOM_List</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>MakeGlueFacesByList</service-name>
+ <service-author></service-author>
+ <service-version></service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>theShape</inParameter-name>
+ <inParameter-type>GEOM_Object</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theTolerance</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>theFaces</inParameter-name>
+ <inParameter-type>ListOfGO</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>doKeepNonSolids</inParameter-name>
+ <inParameter-type>boolean</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
<outParameter-list>
<outParameter>
<outParameter-name>return</outParameter-name>
</component-service>
<component-service>
<service-name>MakeExplode</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>NumberOfFaces</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>NumberOfEdges</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>ChangeOrientation</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeQuad4Vertices</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeQuad</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeQuad2Edges</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeHexa</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeHexa2Faces</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetPoint</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetEdge</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetEdgeNearPoint</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetFaceByPoints</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetFaceByEdges</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetOppositeFace</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetFaceNearPoint</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetFaceByNormale</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>IsCompoundOfBlocks</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
<outParameter-list>
<outParameter>
<outParameter-name>return</outParameter-name>
- <outParameter-type>long</outParameter-type>
+ <outParameter-type>boolean</outParameter-type>
<outParameter-comment>unknown</outParameter-comment>
</outParameter>
<outParameter>
</component-service>
<component-service>
<service-name>CheckCompoundOfBlocks</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
<outParameter-list>
<outParameter>
<outParameter-name>return</outParameter-name>
- <outParameter-type>long</outParameter-type>
+ <outParameter-type>boolean</outParameter-type>
<outParameter-comment>unknown</outParameter-comment>
</outParameter>
<outParameter>
</component-service>
<component-service>
<service-name>PrintBCErrors</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>ExplodeCompoundOfBlocks</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetBlockNearPoint</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetBlockByParts</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetBlocksByParts</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeMultiTransformation1D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeMultiTransformation2D</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCirclePntVecR</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeCircleThreePnt</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeEllipse</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeArc</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeArcCenter</service-name>
- <service-author>ngr</service-author>
- <service-version>3.2.6</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</outParameter>
</outParameter-list>
<DataStream-list></DataStream-list>
- </component-service> <component-service>
+ </component-service>
+ <component-service>
<service-name>MakePolyline</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSplineBezier</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSplineInterpolation</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeSketcher</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFilletAll</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFilletEdges</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeFilletFaces</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeChamferAll</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeChamferEdge</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeChamferFaces</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>MakeArchimede</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetSubShapeIndex</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>CreateGroup</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>AddObject</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>RemoveObject</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetType</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetMainShape</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
</component-service>
<component-service>
<service-name>GetObjects</service-name>
- <service-author>mkr</service-author>
- <service-version>2.1.0</service-version>
+ <service-author></service-author>
+ <service-version></service-version>
<service-comment>unknown</service-comment>
<service-by-default>0</service-by-default>
<inParameter-list>
GEOM_fr.xml \
GEOM.config \
SalomeApp.xml \
+Plugin \
GEOMDS_Resources \
ImportExport \
ShHealing \
+angle.png \
arc.png \
archimede.png \
axisinertia.png \
chamferall.png \
chamferedge.png \
chamferface.png \
+chamferedgefromface.png \
change_orientation.png \
check.png \
circle.png \
circlepointvector.png \
circle3points.png \
+circlecenter2pnts.png \
common.png \
cone.png \
conedxyz.png \
geometry.png \
line.png \
line2points.png \
+line2faces.png \
lineedge.png \
linepointvector.png \
mindist.png \
multitranslation.png \
multitranslationdouble.png \
multitranslationsimple.png \
+normale.png \
offset.png \
orientation.png \
partition.png \
planeworkingorigin.png \
point2.png \
pointonedge.png \
+point_line_intersection.png \
polyline.png \
prism.png \
prism2.png \
redo.png \
undo.png \
arccenter.png \
-glue2.png
+glue2.png \
+remove_extra_edges.png
nodist_salomeres_DATA = GEOMCatalog.xml
--- /dev/null
+! Description of available plugins
+! ********************************
+!
+a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin
+!
+! standard attribute drivers plugin
+!
+ad696000-5b34-11d1-b5ba-00a0c9064368.Location: StdPlugin
+ad696001-5b34-11d1-b5ba-00a0c9064368.Location: StdPlugin
+ad696002-5b34-11d1-b5ba-00a0c9064368.Location: StdPlugin
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
bool modal, Qt::WindowFlags fl )
: GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl )
{
- QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_ARC" ) ) );
- QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_ARC_CENTER" ) ) );
- QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_ARC" ) ) );
+ QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_ARC_CENTER" ) ) );
+ QPixmap image2( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
setWindowTitle( tr( "GEOM_ARC_TITLE" ) );
layout->addWidget( Group3Pnts );
layout->addWidget( Group3Pnts2 );
- setHelpFileName( "arc.htm" );
+ setHelpFileName( "create_arc_page.html" );
Init();
}
void BasicGUI_ArcDlg::Init()
{
/* init variables */
- // myGeomGUI->SetState( 0 );
- globalSelection( GEOM_POINT );
-
- myConstructorId = -1;
myEditCurrentArgument = Group3Pnts->LineEdit1;
- myEditCurrentArgument->setFocus();
myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
Group3Pnts2->CheckButton1->setChecked( false );
connect( Group3Pnts2->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( ReverseSense() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_ARC" ) );
initName();
- // reset
- myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
- Group3Pnts->LineEdit1->setText( "" );
- Group3Pnts->LineEdit2->setText( "" );
- Group3Pnts->LineEdit3->setText( "" );
- Group3Pnts2->LineEdit1->setText( "" );
- Group3Pnts2->LineEdit2->setText( "" );
- Group3Pnts2->LineEdit3->setText( "" );
- if ( getConstructorId() == 0 ) myEditCurrentArgument = Group3Pnts->LineEdit1;
- if ( getConstructorId() == 1 ) myEditCurrentArgument = Group3Pnts2->LineEdit1;
-
- ConstructorsClicked( getConstructorId() );
return true;
}
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
+ QString aName = GEOMBase::GetName(aSelectedObject);
+
+ // Get Selected object if selected subshape
+ TopoDS_Shape aShape;
+ if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull())
+ {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes(firstIObject(), aMap);
+ if (aMap.Extent() == 1) // Local Selection
+ {
+ int anIndex = aMap(1);
+ aName += QString(":vertex_%1").arg(anIndex);
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName);
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId());
+ aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex);
+ }
+ else
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ else // Global Selection
+ {
+ if (aShape.ShapeType() != TopAbs_VERTEX) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText(aName);
+
switch ( getConstructorId() ) {
case 0:
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject;
break;
case 1:
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
if ( myEditCurrentArgument == Group3Pnts2->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit2 ) myPoint2 = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 ) myPoint3 = aSelectedObject;
void BasicGUI_ArcDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- // myGeomGUI->SetState( 0 );
- globalSelection( GEOM_POINT );
-
- myEditCurrentArgument = Group3Pnts->LineEdit1;
- myEditCurrentArgument->setFocus();
-
- Group3Pnts->LineEdit1->setText( "" );
- Group3Pnts->LineEdit2->setText( "" );
- Group3Pnts->LineEdit3->setText( "" );
- myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ),
+ this,
+ SLOT(SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
-
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose : public slot to deactivate if active
-//=================================================================================
-void BasicGUI_ArcDlg::DeactivateActiveDialog()
-{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::DeactivateActiveDialog();
}
//=================================================================================
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void BasicGUI_ArcDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : ConstructorsClicked()
// purpose : Radio button management
//=================================================================================
void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch ( constructorId ) {
case 0:
{
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); //Select Vertex on All Shapes
+
Group3Pnts2->hide();
Group3Pnts->show();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL(currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ Group3Pnts->LineEdit1->setText( Group3Pnts2->LineEdit1->text() );
+ Group3Pnts->LineEdit2->setText( Group3Pnts2->LineEdit2->text() );
+ Group3Pnts->LineEdit3->setText( Group3Pnts2->LineEdit3->text() );
+
+ myEditCurrentArgument = Group3Pnts->LineEdit1;
break;
}
case 1:
{
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); //Select Vertex on All Shapes
+
Group3Pnts->hide();
Group3Pnts2->show();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+
+ Group3Pnts2->LineEdit1->setText( Group3Pnts->LineEdit1->text() );
+ Group3Pnts2->LineEdit2->setText( Group3Pnts->LineEdit2->text() );
+ Group3Pnts2->LineEdit3->setText( Group3Pnts->LineEdit3->text() );
+ myEditCurrentArgument = Group3Pnts2->LineEdit1;
break;
}
}
updateGeometry();
resize( minimumSize() );
+ myEditCurrentArgument->setFocus();
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
+
+ if ( CORBA::is_nil( myPoint1 ) )
+ SelectionIntoArgument();
+
displayPreview();
}
{
displayPreview();
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void BasicGUI_ArcDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[Group3Pnts->LineEdit1->text()] = myPoint1;
+ objMap[Group3Pnts->LineEdit2->text()] = myPoint2;
+ objMap[Group3Pnts->LineEdit3->text()] = myPoint3;
+ break;
+ case 1:
+ objMap[Group3Pnts2->LineEdit1->text()] = myPoint1;
+ objMap[Group3Pnts2->LineEdit2->text()] = myPoint2;
+ objMap[Group3Pnts2->LineEdit3->text()] = myPoint3;
+ break;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
- virtual void closeEvent( QCloseEvent* );
-
private:
void Init();
void enterEvent( QEvent* );
private:
- int myConstructorId;
GEOM::GEOM_Object_var myPoint1, myPoint2, myPoint3;
DlgRef_3Sel* Group3Pnts;
bool ClickOnApply();
void ActivateThisDialog();
- void DeactivateActiveDialog();
void ConstructorsClicked( int );
void LineEditReturnPressed();
void SelectionIntoArgument();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
-#include <GEOMImpl_Types.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
//=================================================================================
// class : BasicGUI_CircleDlg()
{
QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CIRCLE_PV" ) ) );
QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CIRCLE_PNTS" ) ) );
+ QPixmap image3( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CIRCLE_C2P" ) ) );
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
setWindowTitle( tr( "GEOM_CIRCLE_TITLE" ) );
mainFrame()->GroupConstructors->setTitle( tr( "GEOM_CIRCLE" ) );
mainFrame()->RadioButton1->setIcon( image0 );
mainFrame()->RadioButton2->setIcon( image2 );
- mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
- mainFrame()->RadioButton3->close();
+ mainFrame()->RadioButton3->setIcon( image3 );
GroupPntVecR = new DlgRef_2Sel1Spin( centralWidget() );
GroupPntVecR->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
Group3Pnts->LineEdit2->setReadOnly( true );
Group3Pnts->LineEdit3->setReadOnly( true );
+ GroupCenter2Pnts = new DlgRef_3Sel( centralWidget() );
+ GroupCenter2Pnts->GroupBox1->setTitle( tr( "GEOM_CENTER_2POINTS" ) );
+ GroupCenter2Pnts->TextLabel1->setText( tr( "GEOM_CENTER_POINT" ) );
+ GroupCenter2Pnts->TextLabel2->setText( tr( "GEOM_POINT1" ) );
+ GroupCenter2Pnts->TextLabel3->setText( tr( "GEOM_POINT2" ) );
+ GroupCenter2Pnts->PushButton1->setIcon( image1 );
+ GroupCenter2Pnts->PushButton2->setIcon( image1 );
+ GroupCenter2Pnts->PushButton3->setIcon( image1 );
+
+ GroupCenter2Pnts->LineEdit1->setReadOnly( true );
+ GroupCenter2Pnts->LineEdit2->setReadOnly( true );
+ GroupCenter2Pnts->LineEdit3->setReadOnly( true );
+
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( GroupPntVecR );
layout->addWidget( Group3Pnts );
+ layout->addWidget( GroupCenter2Pnts );
/***************************************************************/
- setHelpFileName( "circle.htm" );
+ setHelpFileName( "create_circle_page.html" );
Init();
}
double aStep = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPntVecR->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 );
+ initSpinBox( GroupPntVecR->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupPntVecR->SpinBox_DX->setValue( 100 );
/* signals and slots connections */
connect( Group3Pnts->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
connect( Group3Pnts->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupCenter2Pnts->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupCenter2Pnts->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupCenter2Pnts->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+
connect( GroupPntVecR->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
connect( GroupPntVecR->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupPntVecR->SpinBox_DX, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT(SelectionIntoArgument() ) ) ;
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_CIRCLE" ) );
//=================================================================================
void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
+
myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
switch ( constructorId ) {
case 0:
{
Group3Pnts->hide();
+ GroupCenter2Pnts->hide();
GroupPntVecR->show();
myEditCurrentArgument = GroupPntVecR->LineEdit1;
case 1:
{
GroupPntVecR->hide();
+ GroupCenter2Pnts->hide();
Group3Pnts->show();
myEditCurrentArgument = Group3Pnts->LineEdit1;
Group3Pnts->LineEdit3->setText( "" );
break;
}
+ case 2:
+ {
+ GroupPntVecR->hide();
+ Group3Pnts->hide();
+ GroupCenter2Pnts->show();
+
+ myEditCurrentArgument = GroupCenter2Pnts->LineEdit1;
+ GroupCenter2Pnts->LineEdit1->setText( "" );
+ GroupCenter2Pnts->LineEdit2->setText( "" );
+ GroupCenter2Pnts->LineEdit3->setText( "" );
+ break;
+ }
}
qApp->processEvents();
resize( minimumSize() );
myEditCurrentArgument->setFocus();
- globalSelection( GEOM_POINT );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT(SelectionIntoArgument() ) );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
}
//=================================================================================
{
myEditCurrentArgument->setText( "" );
- if ( IObjectCount() != 1 ) {
- if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil();
- else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil();
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil();
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil();
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil();
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ SALOME_ListIO aList;
+ aSelMgr->selectedObjects( aList );
+
+ if ( aList.Extent() != 1 ) {
+ if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit1 ) myPoint4 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit2 ) myPoint5 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit3 ) myPoint6 = GEOM::GEOM_Object::_nil();
return;
}
// nbSel == 1
+ Handle(SALOME_InteractiveObject) anIO = aList.First();
+
Standard_Boolean aRes = Standard_False;
- GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
- if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
- if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = aSelectedObject;
- else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = aSelectedObject;
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject;
- else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject;
+ GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(anIO, aRes);
+ if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ // If selected Vertex or Edge on the some Shape Get selection Subshape
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes(anIO, aMap);
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap(1);
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
+ if ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) myPoint = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) myDir = aSelectedObject;
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = aSelectedObject;
+ else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) myPoint3 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit1 ) myPoint4 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit2 ) myPoint5 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit3 ) myPoint6 = aSelectedObject;
}
displayPreview();
{
QPushButton* send = (QPushButton*)sender();
- if ( send == GroupPntVecR->PushButton1 ) myEditCurrentArgument = GroupPntVecR->LineEdit1;
- else if ( send == GroupPntVecR->PushButton2 ) myEditCurrentArgument = GroupPntVecR->LineEdit2;
- else if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1;
- else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2;
- else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3;
+ if ( send == GroupPntVecR->PushButton1 ) myEditCurrentArgument = GroupPntVecR->LineEdit1;
+ else if ( send == GroupPntVecR->PushButton2 ) myEditCurrentArgument = GroupPntVecR->LineEdit2;
+ else if ( send == Group3Pnts->PushButton1 ) myEditCurrentArgument = Group3Pnts->LineEdit1;
+ else if ( send == Group3Pnts->PushButton2 ) myEditCurrentArgument = Group3Pnts->LineEdit2;
+ else if ( send == Group3Pnts->PushButton3 ) myEditCurrentArgument = Group3Pnts->LineEdit3;
+ else if ( send == GroupCenter2Pnts->PushButton1 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit1;
+ else if ( send == GroupCenter2Pnts->PushButton2 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit2;
+ else if ( send == GroupCenter2Pnts->PushButton3 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit3;
+
myEditCurrentArgument->setFocus();
-
- if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 )
- globalSelection( GEOM_LINE );
- else
- globalSelection( GEOM_POINT );
+
+ if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) {
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+ }
+ else {
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+ }
+
SelectionIntoArgument();
}
send == GroupPntVecR->LineEdit2 ||
send == Group3Pnts->LineEdit1 ||
send == Group3Pnts->LineEdit2 ||
- send == Group3Pnts->LineEdit3 ) {
+ send == Group3Pnts->LineEdit3 ||
+ send == GroupCenter2Pnts->LineEdit1 ||
+ send == GroupCenter2Pnts->LineEdit2 ||
+ send == GroupCenter2Pnts->LineEdit3 ) {
myEditCurrentArgument = send;
GEOMBase_Skeleton::LineEditReturnPressed();
}
void BasicGUI_CircleDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- globalSelection( GEOM_POINT );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- // myGeomGUI->SetState( 0 );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
//=================================================================================
double BasicGUI_CircleDlg::getRadius() const
{
- return GroupPntVecR->SpinBox_DX->value();
+ double r = 0.;
+ switch ( getConstructorId() ) {
+ case 0:
+ r = GroupPntVecR->SpinBox_DX->value(); break;
+ }
+ return r;
}
//=================================================================================
else if ( id == 1 )
return !myPoint1->_is_nil() && !myPoint2->_is_nil() && !myPoint3->_is_nil() &&
!isEqual( myPoint1, myPoint2 ) && !isEqual( myPoint1, myPoint3 ) && !isEqual( myPoint2, myPoint3 );
+ else if ( id == 2 )
+ return !myPoint4->_is_nil() && !myPoint5->_is_nil() && !myPoint6->_is_nil() &&
+ !isEqual( myPoint4, myPoint5 ) && !isEqual( myPoint5, myPoint6 ) && !isEqual( myPoint4, myPoint6 );
return false;
}
anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeCircleThreePnt( myPoint1, myPoint2, myPoint3 );
res = true;
break;
+ case 2:
+ anObj = GEOM::GEOM_ICurvesOperations::_narrow( getOperation() )->MakeCircleCenter2Pnt( myPoint4, myPoint5, myPoint6 );
+ res = true;
+ break;
}
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
+ else {
+ MESSAGE( "Execute Object is NULL!" );
+ }
return res;
}
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void BasicGUI_CircleDlg::closeEvent( QCloseEvent* e )
+void BasicGUI_CircleDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPntVecR->LineEdit1->text()] = myPoint;
+ objMap[GroupPntVecR->LineEdit2->text()] = myDir;
+ break;
+ case 1:
+ objMap[Group3Pnts->LineEdit1->text()] = myPoint1;
+ objMap[Group3Pnts->LineEdit2->text()] = myPoint2;
+ objMap[Group3Pnts->LineEdit3->text()] = myPoint3;
+ break;
+ case 2:
+ objMap[GroupCenter2Pnts->LineEdit1->text()] = myPoint4;
+ objMap[GroupCenter2Pnts->LineEdit2->text()] = myPoint5;
+ objMap[GroupCenter2Pnts->LineEdit3->text()] = myPoint6;
+ break;
+ }
+ addSubshapesToFather( objMap );
}
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
double getRadius() const;
private:
- GEOM::GEOM_Object_var myPoint, myDir, myPoint1, myPoint2, myPoint3;
+ GEOM::GEOM_Object_var myPoint, myDir, myPoint1, myPoint2, myPoint3, myPoint4, myPoint5, myPoint6;
DlgRef_2Sel1Spin* GroupPntVecR;
DlgRef_3Sel* Group3Pnts;
+ DlgRef_3Sel* GroupCenter2Pnts;
private slots:
void ClickOnOk();
#include <SUIT_ResourceMgr.h>
#include <SUIT_Session.h>
#include <SalomeApp_Application.h>
+#include <SalomeApp_Study.h>
#include <LightApp_SelectionMgr.h>
#include <SALOME_ListIteratorOfListIO.hxx>
#include <SALOME_ListIO.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "curve.htm" );
+ setHelpFileName( "create_curve_page.html" );
Init();
}
myPoints = new GEOM::ListOfGO();
myPoints->length( 0 );
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
/* signals and slots connections */
connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog( ) ) );
connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
connect( GroupPoints->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
-
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ) ;
+
initName( tr( "GEOM_CURVE" ) );
ConstructorsClicked( 0 );
}
return false;
initName();
- ConstructorsClicked( getConstructorId() );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
return true;
}
myEditCurrentArgument->setText( "" );
Standard_Boolean aRes = Standard_False;
- int i = 0;
+
int IOC = IObjectCount();
- bool is_append = myPoints->length() < IOC; // if true - add point, else remove
- myPoints->length( IOC ); // this length may be greater than number of objects,
+ // bool is_append = myPoints->length() < IOC; // if true - add point, else remove
+ // myPoints->length( IOC ); // this length may be greater than number of objects,
// that will actually be put into myPoints
- for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) {
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ SalomeApp_Application* app =
+ dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ _PTR(Study) aDStudy = appStudy->studyDS();
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+
+ int anIndex;
+ TopoDS_Shape aShape;
+ TColStd_IndexedMapOfInteger aMapIndexes;
+ GEOM::GEOM_Object_var anObject;
+ std::list<GEOM::GEOM_Object_var> aList;
+ SALOME_ListIO selected;
+ aSelMgr->selectedObjects( selected, QString::null, false );
+
+ for ( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() ) {
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- //TopoDS_Shape aPointShape;
- //if ( myGeomBase->GetShape( aSelectedObject, aPointShape, TopAbs_VERTEX ) )
- int pos = isPointInList(myOrderedSel, aSelectedObject);
- if ( is_append && pos == -1 )
- myOrderedSel.push_back( aSelectedObject );
- myPoints[i++] = aSelectedObject;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ aSelMgr->GetIndexes( anIt.Value(), aMapIndexes );
+
+ if ( aMapIndexes.Extent() > 0 ) {
+ for ( int ii = 1; ii <= aMapIndexes.Extent(); ii++ ) {
+ anIndex = aMapIndexes(ii);
+ QString aName = GEOMBase::GetName( aSelectedObject );
+ aName = aName + ":vertex_" + QString::number( anIndex );
+ anObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ //Find Object in study
+ _PTR(SObject) obj ( aDStudy->FindObjectID( anIt.Value()->getEntry() ) );
+ bool inStudy = false;
+ for (_PTR(ChildIterator) iit ( aDStudy->NewChildIterator( obj ) ); iit->More(); iit->Next() ) {
+ _PTR(SObject) child( iit->Value() );
+ QString aChildName = child->GetName().c_str();
+ if ( aChildName == aName ) {
+ inStudy = true;
+ CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject( iit->Value() );
+ anObject = GEOM::GEOM_Object::_narrow( corbaObj );
+ }
+ }
+
+ if ( !inStudy )
+ GeometryGUI::GetGeomGen()->AddInStudy( GeometryGUI::ClientStudyToStudy( aDStudy ),
+ anObject, aName.toLatin1().data(), aSelectedObject );
+
+ int pos = isPointInList( myOrderedSel, anObject );
+ if ( pos == -1 ) {
+ myOrderedSel.push_back( anObject );
+ }
+ // if (!inStudy)
+ aList.push_back(anObject);
+ }
+ }
+ else { // aMap.Extent() == 0
+ int pos = isPointInList( myOrderedSel, aSelectedObject );
+ if ( pos == -1 )
+ myOrderedSel.push_back( aSelectedObject );
+ aList.push_back( aSelectedObject );
+ }
+ }
}
}
- myPoints->length( i ); // this is the right length, smaller of equal to the previously set
+ myPoints->length( aList.size() );
+
+ int k = 0;
+ for ( list<GEOM::GEOM_Object_var>::iterator j = aList.begin(); j != aList.end(); j++ )
+ myPoints[k++] = *j;
+
if ( IOC == 0 )
myOrderedSel.clear();
else
removeUnnecessaryPnt( myOrderedSel, myPoints );
- if ( myOrderedSel.size() == myPoints->length() ) {
- int k = 0;
- for ( list<GEOM::GEOM_Object_var>::iterator j = myOrderedSel.begin(); j!= myOrderedSel.end(); j++ )
- myPoints[k++] = *j;
- }
- else {
- //cout << "ERROR: Ordered sequence size != selection sequence size! ("<<myOrderedSel.size()<<"!="<<myPoints->length()<<")"<<endl;
- }
- if ( i )
- GroupPoints->LineEdit1->setText( QString::number( i ) + "_" + tr( "GEOM_POINT" ) + tr( "_S_" ) );
-
- displayPreview();
+ // if ( myOrderedSel.size() == myPoints->length() ) {
+ myPoints->length( myOrderedSel.size() );
+ k = 0;
+ for ( list<GEOM::GEOM_Object_var>::iterator j = myOrderedSel.begin(); j != myOrderedSel.end(); j++ )
+ myPoints[k++] = *j;
+ // }
+
+ if ( myPoints->length() > 0 )
+ GroupPoints->LineEdit1->setText( QString::number( myPoints->length() ) + "_" + tr( "GEOM_POINT" ) + tr( "_S_" ) );
+
+displayPreview();
}
void BasicGUI_CurveDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
- // myGeomGUI->SetState( 0 );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
- globalSelection( GEOM_POINT );
ConstructorsClicked( getConstructorId() );
}
return res;
}
-
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void BasicGUI_CurveDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "ellipse.htm" );
+ setHelpFileName( "create_ellipse_page.html" );
Init();
}
{
/* init variables */
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
myPoint = myDir = GEOM::GEOM_Object::_nil();
- // myGeomGUI->SetState( 0 );
-
/* Get setting of step value from file configuration */
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
double aMajorR( 200. ), aMinorR( 100. );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( aMajorR );
GroupPoints->SpinBox_DY->setValue( aMinorR );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupPoints->SpinBox_DY, SLOT( SetStep( double ) ) );
// <<-
- connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(),
- SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_ELLIPSE" ) );
}
GroupPoints->LineEdit1->setText( "" );
GroupPoints->LineEdit2->setText( "" );
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ //globalSelection(GEOM_POINT);
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
return true;
}
}
Standard_Boolean aRes = Standard_False;
+ Handle(SALOME_InteractiveObject) anIO = firstIObject();
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
- if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ // Get Selected object if selected subshape
+ TopoDS_Shape aShape;
+
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( anIO, aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap(1);
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = aSelectedObject;
}
void BasicGUI_EllipseDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection( GEOM_POINT );
if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
myEditCurrentArgument->setFocus();
+ globalSelection(); // close local contexts, if any
if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
else
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
SelectionIntoArgument();
}
void BasicGUI_EllipseDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
GroupPoints->LineEdit2->setText( "" );
myPoint = myDir = GEOM::GEOM_Object::_nil();
- globalSelection( GEOM_POINT );
+ //globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
//=================================================================================
}
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void BasicGUI_EllipseDlg::closeEvent( QCloseEvent* e )
+void BasicGUI_EllipseDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ objMap[GroupPoints->LineEdit1->text()] = myPoint;
+ objMap[GroupPoints->LineEdit2->text()] = myDir;
+
+ addSubshapesToFather( objMap );
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
{
QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_LINE_2P" ) ) );
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+ QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_LINE_2F" ) ) );
setWindowTitle( tr( "GEOM_LINE_TITLE" ) );
/***************************************************************/
mainFrame()->GroupConstructors->setTitle( tr( "GEOM_LINE" ) );
mainFrame()->RadioButton1->setIcon( image0 );
- mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose );
- mainFrame()->RadioButton2->close();
+ mainFrame()->RadioButton2->setIcon( image2 );
mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
mainFrame()->RadioButton3->close();
GroupPoints->TextLabel2->setText( tr( "GEOM_POINT_I" ).arg( 2 ) );
GroupPoints->PushButton1->setIcon( image1 );
GroupPoints->PushButton2->setIcon( image1 );
-
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
+ GroupFaces = new DlgRef_2Sel( centralWidget() );
+ GroupFaces->GroupBox1->setTitle( tr( "GEOM_FACES" ) );
+ GroupFaces->TextLabel1->setText( tr( "GEOM_FACE_I" ).arg( "1" ) );
+ GroupFaces->TextLabel2->setText( tr( "GEOM_FACE_I" ).arg( "2" ) );
+ GroupFaces->PushButton1->setIcon( image1 );
+ GroupFaces->PushButton2->setIcon( image1 );
+ GroupFaces->LineEdit1->setReadOnly( true );
+ GroupFaces->LineEdit2->setReadOnly( true );
+
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( GroupPoints );
+ layout->addWidget( GroupFaces );
/***************************************************************/
- setHelpFileName( "line.htm" );
+ setHelpFileName( "create_line_page.html" );
Init();
}
void BasicGUI_LineDlg::Init()
{
/* init variables */
- myEditCurrentArgument = GroupPoints->LineEdit1;
-
- myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil();
-
- // myGeomGUI->SetState( 0 );
- globalSelection( GEOM_POINT );
+ //myEditCurrentArgument = GroupPoints->LineEdit1;
+ //myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil();
+ //globalSelection(); // close local contexts, if any
+ //localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
/* signals and slots connections */
connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) );
connect( myGeomGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) );
+ connect( this, SIGNAL( constructorsClicked( int ) ), this, SLOT( ConstructorsClicked( int ) ) );
+
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
connect( GroupPoints->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupFaces->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupFaces->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
connect( GroupPoints->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
connect( GroupPoints->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupFaces->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupFaces->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_LINE" ) );
+
+ ConstructorsClicked( 0 );
}
return false;
initName();
+
+ myEditCurrentArgument->setText( "" );
+ ConstructorsClicked( getConstructorId() );
+
return true;
}
+//=================================================================================
+// function : ConstructorsClicked()
+// purpose : Radio button management
+//=================================================================================
+void BasicGUI_LineDlg::ConstructorsClicked( int constructorId )
+{
+ switch ( constructorId ) {
+ case 0:
+ {
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ myEditCurrentArgument->setText( "" );
+ myPoint1 = GEOM::GEOM_Object::_nil();
+ myPoint2 = GEOM::GEOM_Object::_nil();
+
+ GroupPoints->show();
+ GroupFaces->hide();
+ break;
+ }
+ case 1:
+ {
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_FACE );
+
+ myEditCurrentArgument = GroupFaces->LineEdit1;
+ myEditCurrentArgument->setText("");
+ myFace1 = GEOM::GEOM_Object::_nil();
+ myFace2 = GEOM::GEOM_Object::_nil();
+ GroupPoints->hide();
+ GroupFaces->show();
+ break;
+ }
+ }
+
+ qApp->processEvents();
+ updateGeometry();
+ resize( minimumSize() );
+
+ SelectionIntoArgument();
+}
//=================================================================================
// function : SelectionIntoArgument()
if ( IObjectCount() != 1 ) {
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil();
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupFaces->LineEdit1 ) myFace1 = GEOM::GEOM_Object::_nil();
+ else if ( myEditCurrentArgument == GroupFaces->LineEdit2 ) myFace2 = GEOM::GEOM_Object::_nil();
return;
}
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupFaces->LineEdit1 ||
+ myEditCurrentArgument == GroupFaces->LineEdit2 )
+ aNeedType = TopAbs_FACE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_FACE )
+ aName += QString( ":face_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupFaces->LineEdit1 ) myFace1 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupFaces->LineEdit2 ) myFace2 = aSelectedObject;
}
displayPreview();
QPushButton* send = (QPushButton*)sender();
if ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
+ else if ( send == GroupFaces->PushButton1 ) myEditCurrentArgument = GroupFaces->LineEdit1;
+ else if ( send == GroupFaces->PushButton2 ) myEditCurrentArgument = GroupFaces->LineEdit2;
myEditCurrentArgument->setFocus();
SelectionIntoArgument();
}
QLineEdit* send = (QLineEdit*)sender();
if ( send == GroupPoints->LineEdit1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
else if ( send == GroupPoints->LineEdit2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
+ else if ( send == GroupFaces->LineEdit1 ) myEditCurrentArgument = GroupFaces->LineEdit1;
+ else if ( send == GroupFaces->LineEdit2 ) myEditCurrentArgument = GroupFaces->LineEdit2;
else return;
GEOMBase_Skeleton::LineEditReturnPressed();
}
void BasicGUI_LineDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
-
- // myGeomGUI->SetState( 0 );
- globalSelection( GEOM_POINT );
-
- myEditCurrentArgument = GroupPoints->LineEdit1;
- myEditCurrentArgument->setFocus();
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
- GroupPoints->LineEdit1->setText( "" );
- GroupPoints->LineEdit2->setText( "" );
- myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil();
+ ConstructorsClicked( getConstructorId() );
}
//=================================================================================
//=================================================================================
void BasicGUI_LineDlg::DeactivateActiveDialog()
{
- // myGeomGUI->SetState( -1 );
GEOMBase_Skeleton::DeactivateActiveDialog();
}
//=================================================================================
bool BasicGUI_LineDlg::isValid( QString& msg )
{
- return !myPoint1->_is_nil() && !myPoint2->_is_nil();
+ const int id = getConstructorId();
+ if ( id == 0 )
+ return !myPoint1->_is_nil() && !myPoint2->_is_nil();
+ else if ( id == 1 )
+ return !myFace1->_is_nil() && !myFace2->_is_nil();
+ return false;
}
//=================================================================================
//=================================================================================
bool BasicGUI_LineDlg::execute( ObjectList& objects )
{
- GEOM::GEOM_Object_var anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeLineTwoPnt( myPoint1, myPoint2 );
+ bool res = false;
+ GEOM::GEOM_Object_var anObj;
+ switch ( getConstructorId() ) {
+ case 0 :
+ anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeLineTwoPnt( myPoint1, myPoint2 );
+ res = true;
+ break;
+ case 1 :
+ anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->MakeLineTwoFaces( myFace1, myFace2 );
+ res = true;
+ break;
+ }
+
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
- return true;
+
+ return res;
}
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void BasicGUI_LineDlg::closeEvent( QCloseEvent* e )
+void BasicGUI_LineDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+ switch ( getConstructorId() ) {
+ case 0 :
+ objMap[GroupPoints->LineEdit1->text()] = myPoint1;
+ objMap[GroupPoints->LineEdit2->text()] = myPoint2;
+ break;
+ case 1 :
+ objMap[GroupFaces->LineEdit1->text()] = myFace1;
+ objMap[GroupFaces->LineEdit2->text()] = myFace2;
+ break;
+ }
+ addSubshapesToFather( objMap );
}
-
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
private:
GEOM::GEOM_Object_var myPoint1;
GEOM::GEOM_Object_var myPoint2;
+ GEOM::GEOM_Object_var myFace1;
+ GEOM::GEOM_Object_var myFace2;
DlgRef_2Sel* GroupPoints;
+ DlgRef_2Sel* GroupFaces;
private slots:
void ClickOnOk();
void ActivateThisDialog();
void DeactivateActiveDialog();
+ void ConstructorsClicked( int );
void LineEditReturnPressed();
void SelectionIntoArgument();
layout->addWidget( Group1 );
layout->addWidget( Group2 );
- setHelpFileName( "local_coordinate_system.htm" );
+ setHelpFileName( "create_lcs_page.html" );
Init();
}
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( onOk() ) );
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( onApply() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) );
initName( tr( "LCS_NAME" ) );
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter ) {
- initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
connect( anIter.value(), SIGNAL( valueChanged( double ) ),
this, SLOT( onValueChanged( double ) ) );
}
void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
{
if ( myConstructorId == constructorId && myConstructorId == 0 ) {
+ globalSelection(); // close local contexts, if any
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
activate( GEOM_MARKER );
displayPreview();
myConstructorId = constructorId;
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch ( constructorId ) {
case 0:
Group1->hide();
Group2->hide();
aMainGrp->show();
+ globalSelection(); // close local contexts, if any
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
activate( GEOM_MARKER );
break;
Group1->show();
Group2->show();
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
myEditCurrentArgument = Group2->LineEdit1;
Group2->LineEdit1->setText( "" );
Group2->LineEdit2->setText( "" );
updateGeometry();
resize( minimumSize() );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( onSelectionDone() ) );
onSelectionDone();
}
else {
TColStd_IndexedMapOfInteger aMap;
aSelMgr->GetIndexes( anIO, aMap );
- if ( aMap.Extent() == 1 ) {
+ if ( aMap.Extent() == 1 ) { // Local Selection
int anIndex = aMap( 1 );
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
- aSelMgr->clearSelected();
+ aSelMgr->clearSelected(); // ???
}
if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) {
}
myEditCurrentArgument->setText( "" );
- QString aName;
if ( IObjectCount() == 1 ) {
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes );
if ( !CORBA::is_nil( aSelectedObj ) && aRes ) {
- aName = GEOMBase::GetName( aSelectedObj );
+ QString aName = GEOMBase::GetName( aSelectedObj );
if ( getConstructorId() == 1 ) { // by shape position
// Get shape's position
else if ( getConstructorId() == 2 ) { // by point and two vectors
TopoDS_Shape aShape;
if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) ) {
- GEOM::short_array anIndexes;
+ TopAbs_ShapeEnum aNeedType = TopAbs_EDGE;
+ if ( myEditCurrentArgument == Group2->LineEdit1 )
+ aNeedType = TopAbs_VERTEX;
TColStd_IndexedMapOfInteger aMap;
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
if ( !aMap.IsEmpty() ) {
int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( "_edge_%1" ).arg( anIndex );
+ else
+ aName += QString( "_vertex_%1" ).arg( anIndex );
+
TopTools_IndexedMapOfShape aShapes;
TopExp::MapShapes( aShape, aShapes );
aShape = aShapes.FindKey( anIndex );
}
else if ( send == Group2->PushButton1 ) {
myEditCurrentArgument = Group2->LineEdit1;
- globalSelection( GEOM_POINT );
+ //globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == Group2->PushButton2 ) {
myEditCurrentArgument = Group2->LineEdit2;
- globalSelection( GEOM_LINE );
+ //globalSelection( GEOM_LINE );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == Group2->PushButton3 ) {
myEditCurrentArgument = Group2->LineEdit3;
- globalSelection( GEOM_LINE );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
void BasicGUI_MarkerDlg::onActivate()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionDone() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( onSelectionDone() ) );
ConstructorsClicked( getConstructorId() );
}
return true;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void BasicGUI_MarkerDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : onValueChanged
// purpose :
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
- virtual void closeEvent( QCloseEvent* );
virtual void displayPreview ( const bool = false,
const bool = true,
const bool = true,
#include <LightApp_SelectionMgr.h>
#include <TColStd_MapOfInteger.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
#include <GEOMImpl_Types.hxx>
layout->addWidget( GroupFace );
/***************************************************************/
- setHelpFileName( "plane.htm" );
+ setHelpFileName( "create_plane_page.html" );
Init();
}
double aTrimSize = 2000.0;
/* min, max, step and decimals for spin boxes */
- initSpinBox( GroupPntDir->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 );
+ initSpinBox( GroupPntDir->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupPntDir->SpinBox_DX->setValue( aTrimSize );
- initSpinBox( Group3Pnts->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 );
+ initSpinBox( Group3Pnts->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
Group3Pnts->SpinBox_DX->setValue( aTrimSize );
- initSpinBox( GroupFace->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 );
+ initSpinBox( GroupFace->SpinBox_DX, 0.001, COORD_MAX, aStep, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupFace->SpinBox_DX->setValue( aTrimSize );
/* signals and slots connections */
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupFace->SpinBox_DX, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_PLANE" ) );
//=================================================================================
void BasicGUI_PlaneDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
myPoint = myDir = myPoint1 = myPoint2 = myPoint3 = myFace = GEOM::GEOM_Object::_nil();
switch ( constructorId ) {
GroupPntDir->LineEdit2->setText( "" );
/* for the first argument */
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
break;
}
case 1: /* plane from 3 points */
Group3Pnts->LineEdit3->setText( "" );
/* for the first argument */
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
break;
}
case 2: /* plane from a planar face selection */
resize( minimumSize() );
myEditCurrentArgument->setFocus();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
}
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+ else if ( myEditCurrentArgument == GroupFace->LineEdit1 )
+ aNeedType = TopAbs_FACE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else if (aNeedType == TopAbs_FACE)
+ aName += QString( ":face_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = aSelectedObject;
else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = aSelectedObject;
void BasicGUI_PlaneDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection( GEOM_POINT );
if ( send == GroupPntDir->PushButton1 ) myEditCurrentArgument = GroupPntDir->LineEdit1;
else if ( send == GroupPntDir->PushButton2 ) myEditCurrentArgument = GroupPntDir->LineEdit2;
myEditCurrentArgument->setFocus();
- if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
- globalSelection( GEOM_LINE );
+ if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) {
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+ }
else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) {
- //globalSelection( GEOM_PLANE );
TColStd_MapOfInteger aMap;
aMap.Add( GEOM_PLANE );
aMap.Add( GEOM_MARKER );
globalSelection( aMap );
}
- else
- globalSelection( GEOM_POINT );
+ else { // 3 Pnts
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+ }
SelectionIntoArgument();
}
void BasicGUI_PlaneDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
-
- // myGeomGUI->SetState( 0 );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
//=================================================================================
void BasicGUI_PlaneDlg::DeactivateActiveDialog()
{
- // myGeomGUI->SetState( -1 );
GEOMBase_Skeleton::DeactivateActiveDialog();
}
return res;
}
-
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void BasicGUI_PlaneDlg::closeEvent( QCloseEvent* e )
+void BasicGUI_PlaneDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
-}
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPntDir->LineEdit1->text()] = myPoint;
+ objMap[GroupPntDir->LineEdit2->text()] = myDir;
+ break;
+ case 1:
+ objMap[Group3Pnts->LineEdit1->text()] = myPoint1;
+ objMap[Group3Pnts->LineEdit2->text()] = myPoint2;
+ objMap[Group3Pnts->LineEdit3->text()] = myPoint3;
+ break;
+ case 2:
+ objMap[GroupFace->LineEdit1->text()] = myFace;
+ break;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_POINT_EDGE" ) ) );
QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
QPixmap image3( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_POINT_REF" ) ) );
+ QPixmap image4( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_POINT_LINES") ) );
setWindowTitle( tr( "GEOM_POINT_TITLE" ) );
mainFrame()->RadioButton1->setIcon( image0 );
mainFrame()->RadioButton2->setIcon( image3 );
mainFrame()->RadioButton3->setIcon( image1 );
+ mainFrame()->RadioButton4->show();
+ mainFrame()->RadioButton4->setIcon( image4 );
GroupXYZ = new DlgRef_3Spin( centralWidget() );
GroupXYZ->GroupBox1->setTitle( tr( "GEOM_COORDINATES" ) );
GroupRefPoint->TextLabel3->setText( tr( "GEOM_DY" ) );
GroupRefPoint->TextLabel4->setText( tr( "GEOM_DZ" ) );
+ GroupLineIntersection = new DlgRef_2Sel( centralWidget() );
+ GroupLineIntersection->GroupBox1->setTitle( tr( "GEOM_LINE_INTERSECTION" ) );
+ GroupLineIntersection->TextLabel1->setText( tr( "GEOM_LINE1" ) );
+ GroupLineIntersection->TextLabel2->setText( tr( "GEOM_LINE2" ) );
+ GroupLineIntersection->PushButton1->setIcon( image2 );
+ GroupLineIntersection->PushButton2->setIcon( image2 );
+
myCoordGrp = new QGroupBox( tr( "GEOM_COORDINATES" ), centralWidget() );
QGridLayout* myCoordGrpLayout = new QGridLayout( myCoordGrp );
myCoordGrpLayout->addWidget( new QLabel( tr( "GEOM_X" ), myCoordGrp ), 0, 0 );
layout->addWidget( GroupXYZ );
layout->addWidget( GroupOnCurve );
layout->addWidget( GroupRefPoint );
+ layout->addWidget( GroupLineIntersection );
layout->addWidget( myCoordGrp );
myX->setReadOnly( true );
myY->setPalette( aPal );
myZ->setPalette( aPal );
+ // setHelpFileName( "create_point_page.html" );
setHelpFileName( "point.htm" );
Init();
{
GroupOnCurve->LineEdit1->setReadOnly( true );
GroupRefPoint->LineEdit1->setReadOnly( true );
+ GroupLineIntersection->LineEdit1->setReadOnly( true );
+ GroupLineIntersection->LineEdit2->setReadOnly( true );
myEdge = GEOM::GEOM_Object::_nil();
myRefPoint = GEOM::GEOM_Object::_nil();
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes */
- initSpinBox( GroupXYZ->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupXYZ->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupXYZ->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupXYZ->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupXYZ->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupXYZ->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupXYZ->SpinBox_DX->setValue( 0.0 );
GroupXYZ->SpinBox_DY->setValue( 0.0 );
GroupXYZ->SpinBox_DZ->setValue( 0.0 );
- initSpinBox( GroupRefPoint->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupRefPoint->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupRefPoint->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupRefPoint->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupRefPoint->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupRefPoint->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupRefPoint->SpinBox_DX->setValue( 0.0 );
GroupRefPoint->SpinBox_DY->setValue( 0.0 );
GroupRefPoint->SpinBox_DZ->setValue( 0.0 );
step = 0.1;
- initSpinBox( GroupOnCurve->SpinBox_DX, 0., 1., step, 3 );
+ initSpinBox( GroupOnCurve->SpinBox_DX, 0., 1., step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
GroupOnCurve->SpinBox_DX->setValue( 0.5 );
/* signals and slots connections */
connect( GroupOnCurve->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
connect( GroupOnCurve->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupLineIntersection->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupLineIntersection->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupLineIntersection->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupLineIntersection->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+
connect( GroupOnCurve->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
connect( GroupXYZ->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
connect( GroupXYZ->SpinBox_DY, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupRefPoint->SpinBox_DZ, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged() ),
+ this, SLOT(SelectionIntoArgument() ) );
+
initName( tr( "GEOM_VERTEX" ) );
//=================================================================================
void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
{
+ globalSelection(); // close local contexts, if any
+
switch ( constructorId ) {
case 0:
{
GroupRefPoint->hide();
GroupOnCurve->hide();
+ GroupLineIntersection->hide();
myCoordGrp->hide();
myEditCurrentArgument->setText( "" );
myRefPoint = GEOM::GEOM_Object::_nil();
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupXYZ->hide();
GroupOnCurve->hide();
+ GroupLineIntersection->hide();
GroupRefPoint->show();
myEditCurrentArgument->setText( "" );
myEdge = GEOM::GEOM_Object::_nil();
- globalSelection( GEOM_EDGE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
GroupXYZ->hide();
GroupRefPoint->hide();
+ GroupLineIntersection->hide();
GroupOnCurve->show();
myCoordGrp->show();
break;
}
+ case 3:
+ {
+ myEditCurrentArgument = GroupLineIntersection->LineEdit1;
+ GroupLineIntersection->LineEdit1->setText( "" );
+ GroupLineIntersection->LineEdit2->setText( "" );
+ myLine1 = GEOM::GEOM_Object::_nil();
+ myLine2 = GEOM::GEOM_Object::_nil();
+
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+
+ GroupXYZ->hide();
+ GroupRefPoint->hide();
+ GroupOnCurve->hide();
+
+ myCoordGrp->hide();
+
+ GroupLineIntersection->show();
+ break;
+ }
}
myX->setText( "" );
Handle(SALOME_InteractiveObject) anIO = firstIObject();
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- if ( id == 0 ) {
- // get CORBA reference to data object
- TopoDS_Shape aShape = myGeomGUI->GetShapeReader().GetShape( myGeomGUI->GetGeomGen(), aSelectedObject );
- if ( aShape.IsNull() )
- return;
-
- if ( aShape.ShapeType() != TopAbs_VERTEX ) {
- TColStd_IndexedMapOfInteger aMap;
- LightApp_Application* anApp =
- (LightApp_Application*)(SUIT_Session::session()->activeApplication());
- anApp->selectionMgr()->GetIndexes( anIO, aMap );
+ QString aName = GEOMBase::GetName(aSelectedObject);
+
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( id == 2 || id == 3 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes(firstIObject(), aMap);
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
- if ( aMap.Extent() == 1 ) {
- int anIndex = aMap( 1 );
- TopTools_IndexedMapOfShape aShapes;
- TopExp::MapShapes( aShape, aShapes );
- aShape = aShapes.FindKey( anIndex );
-
- if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX )
- return;
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ if ( id == 0 ) return;
}
- else
- return;
}
+ }
+ if ( id == 0 ) {
+ if ( aShape.IsNull() ) return;
gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( aShape ) );
GroupXYZ->SpinBox_DX->setValue( aPnt.X() );
GroupXYZ->SpinBox_DY->setValue( aPnt.Y() );
}
else if ( id == 1 ) {
myRefPoint = aSelectedObject;
- GroupRefPoint->LineEdit1->setText( GEOMBase::GetName( aSelectedObject ) );
+ GroupRefPoint->LineEdit1->setText( aName );
}
else if ( id == 2 ) {
myEdge = aSelectedObject;
- GroupOnCurve->LineEdit1->setText( GEOMBase::GetName( aSelectedObject ) );
+ GroupOnCurve->LineEdit1->setText( aName );
+ }
+ else if ( id == 3 ) {
+ if ( myEditCurrentArgument == GroupLineIntersection->LineEdit1 ) {
+ myLine1 = aSelectedObject;
+ myEditCurrentArgument->setText( aName );
+ }
+ else if ( myEditCurrentArgument == GroupLineIntersection->LineEdit2 ) {
+ myLine2 = aSelectedObject;
+ myEditCurrentArgument->setText( aName );
+ }
}
}
}
void BasicGUI_PointDlg::LineEditReturnPressed()
{
QLineEdit* send = (QLineEdit*)sender();
- if ( send == GroupRefPoint->LineEdit1 || send == GroupOnCurve->LineEdit1 )
- {
- myEditCurrentArgument = send;
- GEOMBase_Skeleton::LineEditReturnPressed();
- }
+ if ( send == GroupRefPoint->LineEdit1 ||
+ send == GroupOnCurve->LineEdit1 ||
+ send == GroupLineIntersection->LineEdit1 ||
+ send == GroupLineIntersection->LineEdit2 ) {
+ myEditCurrentArgument = send;
+ GEOMBase_Skeleton::LineEditReturnPressed();
+ }
}
//=================================================================================
void BasicGUI_PointDlg::SetEditCurrentArgument()
{
+ globalSelection(); // close local contexts, if any
+
QPushButton* send = (QPushButton*)sender();
+ globalSelection( GEOM_POINT ); // to break previous local selection
if ( send == GroupRefPoint->PushButton1 ) {
GroupRefPoint->LineEdit1->setFocus();
myEditCurrentArgument = GroupRefPoint->LineEdit1;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupOnCurve->PushButton1 ) {
GroupOnCurve->LineEdit1->setFocus();
myEditCurrentArgument = GroupOnCurve->LineEdit1;
- globalSelection( GEOM_EDGE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+ }
+ else if ( send == GroupLineIntersection->PushButton1 ) {
+ GroupLineIntersection->LineEdit1->setFocus();
+ myEditCurrentArgument = GroupLineIntersection->LineEdit1;
+
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+ }
+ else if ( send == GroupLineIntersection->PushButton2 ) {
+ GroupLineIntersection->LineEdit2->setFocus();
+ myEditCurrentArgument = GroupLineIntersection->LineEdit2;
+
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
}
return !myRefPoint->_is_nil();
else if ( id == 2 )
return !myEdge->_is_nil();
+ else if ( id == 3 )
+ return ( !myLine1->_is_nil() && !myLine2->_is_nil() );
return false;
}
MakePointOnCurve( myEdge, getParameter() );
res = true;
break;
+ case 3 :
+ anObj = GEOM::GEOM_IBasicOperations::_narrow( getOperation() )->
+ MakePointOnLinesIntersection( myLine1, myLine2 );
+ res = true;
+ break;
}
if ( getConstructorId() == 1 || getConstructorId() == 2 ) {
}
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void BasicGUI_PointDlg::closeEvent( QCloseEvent* e )
+void BasicGUI_PointDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ break;
+ case 1:
+ objMap[GroupRefPoint->LineEdit1->text()] = myRefPoint;
+ break;
+ case 2:
+ objMap[GroupOnCurve->LineEdit1->text()] = myEdge;
+ break;
+ case 3:
+ objMap[GroupLineIntersection->LineEdit1->text()] = myLine1;
+ objMap[GroupLineIntersection->LineEdit2->text()] = myLine2;
+ break;
+ }
+ addSubshapesToFather( objMap );
}
class DlgRef_1Sel1Spin;
class DlgRef_3Spin;
+class DlgRef_2Sel;
class DlgRef_1Sel3Spin;
class QLineEdit;
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
private:
GEOM::GEOM_Object_var myEdge;
GEOM::GEOM_Object_var myRefPoint;
+ GEOM::GEOM_Object_var myLine1;
+ GEOM::GEOM_Object_var myLine2;
DlgRef_3Spin* GroupXYZ;
DlgRef_1Sel3Spin* GroupRefPoint;
DlgRef_1Sel1Spin* GroupOnCurve;
+ DlgRef_2Sel* GroupLineIntersection;
QGroupBox* myCoordGrp;
QLineEdit* myX;
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "vector.htm" );
+ setHelpFileName( "create_vector_page.html" );
/* Initialisations */
Init();
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes */
- initSpinBox( GroupDimensions->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY
double dx( 0. ), dy( 0. ), dz( 200. );
GroupDimensions->SpinBox_DX->setValue( dx );
connect( GroupDimensions->CheckButton1, SIGNAL( stateChanged( int ) ), this, SLOT( ReverseVector( int ) ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT(SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr("GEOM_VECTOR") );
//=================================================================================
void BasicGUI_VectorDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
myPoint1 = GEOM::GEOM_Object::_nil();
myPoint2 = GEOM::GEOM_Object::_nil();
GroupPoints->LineEdit1->setText( "" );
GroupPoints->LineEdit2->setText( "" );
- globalSelection( GEOM_POINT );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT(SelectionIntoArgument() ) );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break;
}
case 1:
{
GroupPoints->hide();
GroupDimensions->show();
+ globalSelection(); // close local contexts, if any
double dx( 0. ), dy( 0. ), dz( 0. );
GroupDimensions->SpinBox_DX->setValue( dx );
Standard_Boolean aRes = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ QString aName = GEOMBase::GetName(aSelectedObject);
+
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != TopAbs_VERTEX ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText(aName);
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject;
}
void BasicGUI_VectorDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
//=================================================================================
void BasicGUI_VectorDlg::DeactivateActiveDialog()
{
- // myGeomGUI->SetState( -1 );
GEOMBase_Skeleton::DeactivateActiveDialog();
}
return res;
}
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void BasicGUI_VectorDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit1->text()] = myPoint1;
+ objMap[GroupPoints->LineEdit2->text()] = myPoint2;
+ break;
+ case 1:
+ return;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <TColStd_MapOfInteger.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
// QT Includes
#include <QCheckBox>
layout->addWidget( Group3 );
layout->addWidget( aReverseGroupBox );
- setHelpFileName( "working_plane.htm" );
+ setHelpFileName( "create_wplane_page.html" );
Init();
}
}
case 1:
{
- globalSelection( GEOM_LINE );
+ //globalSelection( GEOM_LINE );
+ GEOM::GEOM_Object_var anObj;
+ localSelection( anObj, TopAbs_EDGE );
Group1->hide();
Group3->hide();
void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument()
{
myEditCurrentArgument->setText( "" );
+ QString aName;
const int id = getConstructorId();
if ( IObjectCount() != 1 ) {
if ( !aRes || CORBA::is_nil( aSelectedObject ) )
return;
+ aName = GEOMBase::GetName(aSelectedObject);
+
if ( myEditCurrentArgument == Group1->LineEdit1 )
myFace = aSelectedObject;
- else if ( myEditCurrentArgument == Group2->LineEdit1 )
- myVectX = aSelectedObject;
- else if ( myEditCurrentArgument == Group2->LineEdit2 )
- myVectZ = aSelectedObject;
+ else if ( myEditCurrentArgument == Group2->LineEdit1 ||
+ myEditCurrentArgument == Group2->LineEdit2 ) {
+ if ( aRes && !aSelectedObject->_is_nil() ) {
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName = aName + ":edge_" + QString::number( anIndex );
+
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ if ( myEditCurrentArgument == Group2->LineEdit1 )
+ myVectX = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ else
+ myVectZ = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ if ( myEditCurrentArgument == Group2->LineEdit1 )
+ myVectX = aSelectedObject;
+ else
+ myVectZ = aSelectedObject;
+ }
+ aSelMgr->clearSelected();
+ }
+ }
+ }
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ myEditCurrentArgument->setText( aName );
updateWPlane();
}
}
else if ( send == Group2->PushButton1 ) {
myEditCurrentArgument = Group2->LineEdit1;
- globalSelection( GEOM_LINE );
+ GEOM::GEOM_Object_var anObj;
+ localSelection( anObj, TopAbs_EDGE );
}
else if ( send == Group2->PushButton2 ) {
myEditCurrentArgument = Group2->LineEdit2;
- globalSelection( GEOM_LINE );
+ GEOM::GEOM_Object_var anObj;
+ localSelection( anObj, TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
ActivateThisDialog();
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void BasicGUI_WorkingPlaneDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : updateWPlane
// purpose :
if ( showPreview ) {
GEOM::GEOM_IBasicOperations_var aBasicOp = getGeomEngine()->GetIBasicOperations( getStudyId() );
- GEOM::GEOM_Object_var anObj = aBasicOp->MakeMarker( myWPlane.Location().X(), myWPlane.Location().Y(), myWPlane.Location().Z(),
- myWPlane.XDirection().X(), myWPlane.XDirection().Y(), myWPlane.XDirection().Z(),
- myWPlane.YDirection().X(), myWPlane.YDirection().Y(), myWPlane.YDirection().Z() );
+ GEOM::GEOM_Object_var anObj = aBasicOp->MakeMarker( myWPlane.Location().X(), myWPlane.Location().Y(), myWPlane.Location().Z(),
+ myWPlane.XDirection().X(), myWPlane.XDirection().Y(), myWPlane.XDirection().Z(),
+ myWPlane.YDirection().X(), myWPlane.YDirection().Y(), myWPlane.YDirection().Z() );
displayPreview( anObj );
}
BasicGUI_WorkingPlaneDlg( GeometryGUI*, QWidget* = 0, bool = false, Qt::WindowFlags = 0 );
~BasicGUI_WorkingPlaneDlg();
-protected:
- virtual void closeEvent( QCloseEvent* );
-
private:
void Init();
void enterEvent( QEvent* );
layout->addWidget( Group6F );
/***************************************************************/
- setHelpFileName( "newentity_blocks.htm#HexahedralSolid" );
+ setHelpFileName( "build_by_blocks_page.html#hexa_solid_anchor" );
Init();
}
layout->addWidget( myGrp1 );
/***************************************************************/
- setHelpFileName( "explode_on_blocks.htm" );
+ setHelpFileName( "explode_on_blocks_operation_page.html" );
Init();
}
/***************************************************************/
- setHelpFileName( "propagate.htm" );
+ setHelpFileName( "propagate_operation_page.html" );
Init();
}
ActivateThisDialog();
}
-
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void BlocksGUI_PropagateDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void activateSelection();
private:
/***************************************************************/
- setHelpFileName( "newentity_blocks.htm#QuadrangleFace" );
+ setHelpFileName( "build_by_blocks_page.html#quad_face_anchor" );
Init();
}
layout->addWidget( myGrp2 );
/***************************************************************/
- setHelpFileName( "multi_transformation.htm" );
+ setHelpFileName( "multi_transformation_operation_page.html" );
Init();
}
image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_COMMON" ) ) );
aTitle = tr( "GEOM_COMMON" );
aCaption = tr( "GEOM_COMMON_TITLE" );
- setHelpFileName( "common.htm" );
+ setHelpFileName( "common_operation_page.html" );
break;
case BooleanGUI::CUT:
image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CUT" ) ) );
aTitle = tr( "GEOM_CUT" );
aCaption = tr( "GEOM_CUT_TITLE" );
- setHelpFileName( "cut.htm" );
+ setHelpFileName( "cut_operation_page.html" );
break;
case BooleanGUI::FUSE:
image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_FUSE" ) ) );
aTitle = tr( "GEOM_FUSE" );
aCaption = tr( "GEOM_FUSE_TITLE" );
- setHelpFileName( "fuse.htm" );
+ setHelpFileName( "fuse_operation_page.html" );
break;
case BooleanGUI::SECTION:
image0 = QPixmap( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_SECTION" ) ) );
aTitle = tr( "GEOM_SECTION" );
aCaption = tr( "GEOM_SECTION_TITLE" );
- setHelpFileName( "section.htm" );
+ setHelpFileName( "section_opeartion_page.html" );
break;
}
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
layout->addWidget( GroupShapes );
/***************************************************************/
- setHelpFileName( "compound.htm" );
+ setHelpFileName("create_compound_page.html");
/* Initialisations */
Init();
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "edge.htm" );
+ setHelpFileName("create_edge_page.html");
/* Initialisations */
Init();
layout->addWidget( GroupWire );
/***************************************************************/
- setHelpFileName( "face.htm" );
+ setHelpFileName("create_face_page.html");
/* Initialisations */
Init();
layout->addWidget( GroupShell );
/***************************************************************/
- setHelpFileName("shell.htm");
+ setHelpFileName("create_shell_page.html");
/* Initialisations */
Init();
layout->addWidget( GroupSolid );
/***************************************************************/
- setHelpFileName( "solid.htm" );
+ setHelpFileName("create_solid_page.html");
/* Initialisations */
Init();
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "wire.htm" );
+ setHelpFileName( "create_wire_page.html" );
/* Initialisations */
Init();
listIO.Append( anIObject );
}
}
- GEOM_Displayer(anActiveStudy).Erase( listIO, true );
+
+ SUIT_ViewWindow* viewWindow = app->desktop()->activeWindow();
+ bool aIsForced = true;
+ if(viewWindow->getViewManager()->getType() == SVTK_Viewer::Type())
+ aIsForced = false;
+
+ GEOM_Displayer(anActiveStudy).Erase( listIO, aIsForced);
getGeometryGUI()->getApp()->selectionMgr()->clearSelected();
}
}
//////////////////////////////////////////
-// DlgRef_1Sel1List4Btn
+// DlgRef_1Sel1List1Check3Btn
//////////////////////////////////////////
-DlgRef_1Sel1List4Btn::DlgRef_1Sel1List4Btn( QWidget* parent, Qt::WindowFlags f )
+DlgRef_1Sel1List1Check3Btn::DlgRef_1Sel1List1Check3Btn( QWidget* parent, Qt::WindowFlags f )
: QWidget( parent, f )
{
setupUi( this );
}
-DlgRef_1Sel1List4Btn::~DlgRef_1Sel1List4Btn()
+DlgRef_1Sel1List1Check3Btn::~DlgRef_1Sel1List1Check3Btn()
{
}
{
}
+//////////////////////////////////////////
+// DlgRef_2Sel1List1Check
+//////////////////////////////////////////
+
+DlgRef_2Sel1List1Check::DlgRef_2Sel1List1Check( QWidget* parent, Qt::WindowFlags f )
+: QWidget( parent, f )
+{
+ setupUi( this );
+}
+
+DlgRef_2Sel1List1Check::~DlgRef_2Sel1List1Check()
+{
+}
+
//////////////////////////////////////////
// DlgRef_2Sel1List
//////////////////////////////////////////
{
}
+//////////////////////////////////////////
+// DlgRef_2Sel3Spin2Rb
+//////////////////////////////////////////
+
+DlgRef_2Sel3Spin2Rb::DlgRef_2Sel3Spin2Rb( QWidget* parent, Qt::WindowFlags f )
+: QWidget( parent, f )
+{
+ setupUi( this );
+}
+
+DlgRef_2Sel3Spin2Rb::~DlgRef_2Sel3Spin2Rb()
+{
+}
+
//////////////////////////////////////////
// DlgRef_2Sel3Spin
//////////////////////////////////////////
DlgRef_Skeleton::~DlgRef_Skeleton()
{
}
+
+//////////////////////////////////////////
+// Utility functions
+//////////////////////////////////////////
+
+QString DlgRef::PrintDoubleValue( double theValue, int thePrecision )
+{
+ QString aRes;
+ aRes.setNum( theValue, 'g', thePrecision );
+
+ // remove trailing zeroes
+ QString delim( "." );
+
+ int idx = aRes.lastIndexOf( delim );
+ if ( idx == -1 )
+ return aRes;
+
+ QString iPart = aRes.left( idx );
+ QString fPart = aRes.mid( idx + 1 );
+
+ while ( !fPart.isEmpty() && fPart.at( fPart.length() - 1 ) == '0' )
+ fPart.remove( fPart.length() - 1, 1 );
+
+ aRes = iPart;
+ if ( !fPart.isEmpty() )
+ aRes += delim + fPart;
+
+ return aRes;
+}
};
//////////////////////////////////////////
-// DlgRef_1Sel1List4Btn
+// DlgRef_1Sel1List1Check3Btn
//////////////////////////////////////////
-#include "ui_DlgRef_1Sel1List4Btn_QTD.h"
+#include "ui_DlgRef_1Sel1List1Check3Btn_QTD.h"
-class DLGREF_EXPORT DlgRef_1Sel1List4Btn : public QWidget,
- public Ui::DlgRef_1Sel1List4Btn_QTD
+class DLGREF_EXPORT DlgRef_1Sel1List1Check3Btn : public QWidget,
+ public Ui::DlgRef_1Sel1List1Check3Btn_QTD
{
Q_OBJECT
public:
- DlgRef_1Sel1List4Btn( QWidget* = 0, Qt::WindowFlags = 0 );
- ~DlgRef_1Sel1List4Btn();
+ DlgRef_1Sel1List1Check3Btn( QWidget* = 0, Qt::WindowFlags = 0 );
+ ~DlgRef_1Sel1List1Check3Btn();
};
//////////////////////////////////////////
~DlgRef_1SelExt();
};
+//////////////////////////////////////////
+// DlgRef_2Sel1List1Check
+//////////////////////////////////////////
+
+#include "ui_DlgRef_2Sel1List1Check_QTD.h"
+
+class DLGREF_EXPORT DlgRef_2Sel1List1Check : public QWidget,
+ public Ui::DlgRef_2Sel1List1Check_QTD
+{
+ Q_OBJECT
+
+public:
+ DlgRef_2Sel1List1Check( QWidget* = 0, Qt::WindowFlags = 0 );
+ ~DlgRef_2Sel1List1Check();
+};
+
//////////////////////////////////////////
// DlgRef_2Sel1List
//////////////////////////////////////////
~DlgRef_2Sel2Spin();
};
+//////////////////////////////////////////
+// DlgRef_2Sel3Spin2Rb
+//////////////////////////////////////////
+
+#include "ui_DlgRef_2Sel3Spin2Rb_QTD.h"
+
+class DLGREF_EXPORT DlgRef_2Sel3Spin2Rb : public QWidget,
+ public Ui::DlgRef_2Sel3Spin2Rb_QTD
+{
+ Q_OBJECT
+
+public:
+ DlgRef_2Sel3Spin2Rb( QWidget* = 0, Qt::WindowFlags = 0 );
+ ~DlgRef_2Sel3Spin2Rb();
+};
+
//////////////////////////////////////////
// DlgRef_2Sel3Spin
//////////////////////////////////////////
~DlgRef_Skeleton();
};
+//////////////////////////////////////////
+// Utility functions
+//////////////////////////////////////////
+
+namespace DlgRef
+{
+ QString PrintDoubleValue( double, int = 16 );
+};
+
#endif // GEOM_DLGREF_H
--- /dev/null
+<ui version="4.0" >
+ <class>DlgRef_1Sel1List1Check3Btn_QTD</class>
+ <widget class="QWidget" name="DlgRef_1Sel1List1Check3Btn_QTD" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>156</width>
+ <height>180</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <property name="horizontalSpacing" >
+ <number>6</number>
+ </property>
+ <property name="verticalSpacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TextLabel1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL1</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="PushButton1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" colspan="2" >
+ <widget class="QLineEdit" name="LineEdit1" />
+ </item>
+ <item row="1" column="0" colspan="3" >
+ <widget class="QCheckBox" name="CheckButton1" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3" >
+ <widget class="QPushButton" name="PushButton2" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item rowspan="3" row="2" column="0" colspan="3" >
+ <widget class="QListWidget" name="ListView1" />
+ </item>
+ <item row="2" column="3" >
+ <widget class="QPushButton" name="PushButton3" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3" >
+ <widget class="QPushButton" name="PushButton4" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="3" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <tabstops>
+ <tabstop>PushButton1</tabstop>
+ <tabstop>LineEdit1</tabstop>
+ <tabstop>CheckButton1</tabstop>
+ <tabstop>ListView1</tabstop>
+ <tabstop>PushButton2</tabstop>
+ <tabstop>PushButton3</tabstop>
+ <tabstop>PushButton4</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
+++ /dev/null
-<ui version="4.0" >
- <class>DlgRef_1Sel1List4Btn_QTD</class>
- <widget class="QWidget" name="DlgRef_1Sel1List4Btn_QTD" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>221</width>
- <height>174</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string/>
- </property>
- <layout class="QGridLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item row="0" column="0" >
- <widget class="QGroupBox" name="GroupBox1" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
- <string/>
- </property>
- <layout class="QGridLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item rowspan="3" row="2" column="0" colspan="3" >
- <widget class="QListWidget" name="ListView1" />
- </item>
- <item row="1" column="3" >
- <widget class="QPushButton" name="PushButton3" >
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="3" >
- <widget class="QPushButton" name="PushButton2" >
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="0" column="0" >
- <widget class="QLabel" name="TextLabel1" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>TL1</string>
- </property>
- <property name="wordWrap" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="0" column="2" colspan="2" >
- <widget class="QLineEdit" name="LineEdit1" />
- </item>
- <item row="0" column="1" >
- <widget class="QPushButton" name="PushButton1" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="2" column="3" >
- <widget class="QPushButton" name="PushButton4" >
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="3" column="3" >
- <widget class="QPushButton" name="PushButton5" >
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="4" column="3" >
- <spacer>
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>20</width>
- <height>21</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <layoutdefault spacing="6" margin="11" />
- <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
- <tabstops>
- <tabstop>PushButton1</tabstop>
- <tabstop>LineEdit1</tabstop>
- <tabstop>PushButton2</tabstop>
- <tabstop>PushButton3</tabstop>
- <tabstop>ListView1</tabstop>
- <tabstop>PushButton4</tabstop>
- <tabstop>PushButton5</tabstop>
- </tabstops>
- <resources/>
- <connections/>
-</ui>
--- /dev/null
+<ui version="4.0" >
+ <class>DlgRef_2Sel1List1Check_QTD</class>
+ <widget class="QWidget" name="DlgRef_2Sel1List1Check_QTD" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>211</width>
+ <height>121</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <property name="horizontalSpacing" >
+ <number>0</number>
+ </property>
+ <property name="verticalSpacing" >
+ <number>0</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TextLabel1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL1</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="PushButton1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QLineEdit" name="LineEdit1" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="TextLabel2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL2</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QPushButton" name="PushButton2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QLineEdit" name="LineEdit2" />
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="TextLabel3" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL3</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="2" >
+ <widget class="QComboBox" name="ComboBox1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="3" >
+ <widget class="QCheckBox" name="CheckButton1" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <tabstops>
+ <tabstop>PushButton1</tabstop>
+ <tabstop>LineEdit1</tabstop>
+ <tabstop>PushButton2</tabstop>
+ <tabstop>LineEdit2</tabstop>
+ <tabstop>ComboBox1</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+<ui version="4.0" >
+ <class>DlgRef_2Sel3Spin2Rb_QTD</class>
+ <widget class="QWidget" name="DlgRef_2Sel3Spin2Rb_QTD" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>211</width>
+ <height>128</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>DlgRef_2Sel3Spin2Rb_QTD</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <property name="horizontalSpacing" >
+ <number>0</number>
+ </property>
+ <property name="verticalSpacing" >
+ <number>0</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TextLabel1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL1</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="PushButton1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" colspan="3" >
+ <widget class="QLineEdit" name="LineEdit1" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="TextLabel2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL2</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QPushButton" name="PushButton2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" colspan="3" >
+ <widget class="QLineEdit" name="LineEdit2" />
+ </item>
+ <item row="2" column="0" >
+ <widget class="QRadioButton" name="RadioButton1" >
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="QLabel" name="TextLabel3" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL3</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2" >
+ <widget class="QDoubleSpinBox" name="SpinBox_DX" />
+ </item>
+ <item row="3" column="0" >
+ <widget class="QRadioButton" name="RadioButton2" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" >
+ <widget class="QLabel" name="TextLabel4" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL4</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" >
+ <widget class="QDoubleSpinBox" name="SpinBox_DY" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3" >
+ <widget class="QLabel" name="TextLabel5" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL5</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="4" >
+ <widget class="QDoubleSpinBox" name="SpinBox_DZ" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <tabstops>
+ <tabstop>PushButton1</tabstop>
+ <tabstop>LineEdit1</tabstop>
+ <tabstop>PushButton2</tabstop>
+ <tabstop>LineEdit2</tabstop>
+ <tabstop>RadioButton1</tabstop>
+ <tabstop>SpinBox_DX</tabstop>
+ <tabstop>RadioButton2</tabstop>
+ <tabstop>SpinBox_DY</tabstop>
+ <tabstop>SpinBox_DZ</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
ui_DlgRef_1Sel1Check1List_QTD.h \
ui_DlgRef_1Sel1Check1Sel_QTD.h \
ui_DlgRef_1Sel1Check_QTD.h \
- ui_DlgRef_1Sel1List4Btn_QTD.h \
+ ui_DlgRef_1Sel1List1Check3Btn_QTD.h \
ui_DlgRef_1Sel1Spin1Check_QTD.h \
ui_DlgRef_1Sel1Spin_QTD.h \
ui_DlgRef_1Sel2Spin1View1Check_QTD.h \
ui_DlgRef_1Sel_QTD.h \
ui_DlgRef_1SelExt_QTD.h \
ui_DlgRef_1Spin_QTD.h \
+ ui_DlgRef_2Sel1List1Check_QTD.h \
ui_DlgRef_2Sel1List_QTD.h \
ui_DlgRef_2Sel1Spin2Check_QTD.h \
ui_DlgRef_2Sel1Spin_QTD.h \
ui_DlgRef_2Sel2Spin1Check_QTD.h \
ui_DlgRef_2Sel2Spin_QTD.h \
+ ui_DlgRef_2Sel3Spin2Rb_QTD.h \
ui_DlgRef_2Sel3Spin_QTD.h \
ui_DlgRef_2Sel4Spin1Check_QTD.h \
ui_DlgRef_2Sel_QTD.h \
myLastX2 = 0.0;
myLastY2 = 0.0;
- myHelpFileName = "sketcher.htm";
+ myHelpFileName = "create_sketcher_page.html";
/* Get setting of step value from file configuration */
double step = SUIT_Session::session()->resourceMgr()->doubleValue( "Geometry", "SettingsGeomStep", 100.0 );
/* min, max, step and decimals for spin boxes */
- initSpinBox( Group1Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group4Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 0.1, 3 );
- initSpinBox( Group4Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 0.1, 3 );
- initSpinBox( Group4Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group4Spin->SpinBox_DS, COORD_MIN, COORD_MAX, 5., 3 );
+ initSpinBox( Group1Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group4Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 0.1, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group4Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 0.1, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group4Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group4Spin->SpinBox_DS, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
/* displays Dialog */
MainWidget->GroupConstructors->setEnabled( false );
if ( myConstructorId == 0 ) { // SEGMENT
if ( constructorId == 1 ) { // XY
mySketchType = PT_ABS;
- initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group2Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_X2" ) );
Group2Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_Y2" ) );
myX = 0.0;
}
else if ( constructorId == 0 ) { // DXDY
mySketchType = PT_RELATIVE;
- initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group2Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_DX2" ) );
Group2Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_DY2" ) );
myDX = 0.0;
myY = 0.0;
myLength = 100.0;
if ( myConstructorDirId == 2 ) { // Angle
- initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 5., 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( Group2Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group2Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_ANGLE2" ) );
Group2Spin->SpinBox_DX->setValue( myAngle );
Group2Spin->buttonApply->setFocus();
}
}
else if ( myConstructorDirId == 3 ) { // DXDY
- initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 0.1, 3 );
- initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 0.1, 3 );
- initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 0.1, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 0.1, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group3Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_VX2" ) );
Group3Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_VY2" ) );
myDX = 0.0;
if ( myConstructorDirId == 2 ) { // Angle
if ( constructorId == 2 ) { // Length
mySketchType = DIR_ANGLE_LENGTH;
- initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 5., 3 );
- initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, 5., 3 );
+ initSpinBox( Group3Spin->SpinBox_DX, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3Spin->SpinBox_DZ, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group3Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_ANGLE2" ) );
Group3Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_RADIUS2" ) );
Group3Spin->TextLabel3->setText( tr( "GEOM_SKETCHER_ANGLE2" ));
else if ( myConstructorDirId == 0 ) { // Perpendicular
if ( constructorId == 2 ) { // Length
mySketchType = DIR_PER_LENGTH;
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 5., 3 );
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group2Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_RADIUS2" ) );
Group2Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_ANGLE2" ) );
myRadius = 100.0;
else if ( myConstructorDirId == 1 ) { // Tangent
if ( constructorId == 2 ) { // Length
mySketchType = DIR_TAN_LENGTH;
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 5., 3 );
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2Spin->SpinBox_DY, COORD_MIN, COORD_MAX, 5., 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
Group2Spin->TextLabel1->setText( tr( "GEOM_SKETCHER_RADIUS2" ) );
Group2Spin->TextLabel2->setText( tr( "GEOM_SKETCHER_ANGLE2" ) );
myRadius = 100.0;
if ( myShape.ShapeType() != TopAbs_VERTEX )
myCommand.append( ":WW" );
}
- else
+ else {
+ // PAL16008 (Sketcher Validation should be equal to Apply&Close)
+ if ( Group1Spin->buttonApply->isEnabled() && Group1Spin->isVisible() ||
+ Group2Spin->buttonApply->isEnabled() && Group2Spin->isVisible() ||
+ Group3Spin->buttonApply->isEnabled() && Group3Spin->isVisible() ||
+ Group4Spin->buttonApply->isEnabled() && Group4Spin->isVisible() ||
+ Group1Sel ->buttonApply->isEnabled() && Group1Sel->isVisible() ) {
+ ClickOnApply();
+ }
myIsAllAdded = true;
+ }
if ( myCommand.size() > 2 )
if ( !onAccept() )
//=================================================================================
bool EntityGUI_SketcherDlg::ClickOnApply()
{
- ((QPushButton*)sender())->setFocus(); // to update value of currently edited spin-box (PAL11948)
+ if ( sender() && sender()->inherits( "QPushButton" ) )
+ ( (QPushButton*)sender() )->setFocus(); // to update value of currently edited spin-box (PAL11948)
myCommand.append( GetNewCommand() );
mySketchState = NEXT_POINT;
vz = Group4Spin->SpinBox_DZ->value();
vs = newValue;
}
+ // NPAL16010 (Sketcher Apply non available if only one line is modified)
+ // if ValueChangedInSpinBox() called from eventFilter()
+ else if ( Group1Spin->SpinBox_DX->hasFocus() ) {
+ vx = newValue;
+ }
+ else if ( Group2Spin->SpinBox_DX ->hasFocus() ) {
+ vx = newValue;
+ vy = Group2Spin->SpinBox_DY->value();
+ }
+ else if ( Group2Spin->SpinBox_DY->hasFocus() ) {
+ vx = Group2Spin->SpinBox_DX->value();
+ vy = newValue;
+ }
+ else if ( Group3Spin->SpinBox_DX->hasFocus() ) {
+ vx = newValue;
+ vy = Group3Spin->SpinBox_DY->value();
+ vz = Group3Spin->SpinBox_DZ->value();
+ }
+ else if ( Group3Spin->SpinBox_DY->hasFocus() ) {
+ vx = Group3Spin->SpinBox_DX->value();
+ vy = newValue;
+ vz = Group3Spin->SpinBox_DZ->value();
+ }
+ else if ( Group3Spin->SpinBox_DZ->hasFocus() ) {
+ vx = Group3Spin->SpinBox_DX->value();
+ vy = Group3Spin->SpinBox_DY->value();
+ vz = newValue;
+ }
+ else if ( Group4Spin->SpinBox_DX->hasFocus() ) {
+ vx = newValue;
+ vy = Group4Spin->SpinBox_DY->value();
+ vz = Group4Spin->SpinBox_DZ->value();
+ vs = Group4Spin->SpinBox_DS->value();
+ }
+ else if ( Group4Spin->SpinBox_DY->hasFocus() ) {
+ vx = Group4Spin->SpinBox_DX->value();
+ vy = newValue;
+ vz = Group4Spin->SpinBox_DZ->value();
+ vs = Group4Spin->SpinBox_DS->value();
+ }
+ else if ( Group4Spin->SpinBox_DZ->hasFocus() ) {
+ vx = Group4Spin->SpinBox_DX->value();
+ vy = Group4Spin->SpinBox_DY->value();
+ vz = newValue;
+ vs = Group4Spin->SpinBox_DS->value();
+ }
+ else if ( Group4Spin->SpinBox_DS->hasFocus() ) {
+ vx = Group4Spin->SpinBox_DX->value();
+ vy = Group4Spin->SpinBox_DY->value();
+ vz = Group4Spin->SpinBox_DZ->value();
+ vs = newValue;
+ }
if ( myConstructorId == 0 ) { // SEGMENT
if ( mySketchType == PT_ABS ) {
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "explode.htm" );
+ setHelpFileName( "create_explode_page.html" );
Init();
}
connect( GroupPoints->ComboBox1, SIGNAL( activated( int ) ), this, SLOT( ComboTextChanged() ) );
connect( GroupPoints->CheckButton1, SIGNAL( stateChanged( int ) ), this, SLOT( SubShapeToggled() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged( )), this, SLOT( SelectionIntoArgument() ) );
updateButtonState();
}
}
- return onAccept();
+ bool isOk = onAccept();
+
+ // restore selection, corresponding to current selection mode
+ SubShapeToggled();
+
+ return isOk;
}
void EntityGUI_SubShapeDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication( ) ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ) ;
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
SubShapeToggled();
updateButtonState();
}
//=================================================================================
void EntityGUI_SubShapeDlg::SubShapeToggled()
{
- if ( isAllSubShapes() )
- globalSelection( GEOM_ALLSHAPES );
- else
+ globalSelection( GEOM_ALLSHAPES );
+
+ if ( !isAllSubShapes() )
localSelection( myObject, shapeType() );
}
if ( aResult && !anObj->_is_nil() ) {
TColStd_IndexedMapOfInteger aMapIndex;
- ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
+ myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
isOk = aMapIndex.Extent() > 0;
if ( !isOk )
msg += tr( "NO_SUBSHAPES_SELECTED" );
if ( aResult && !anObj->_is_nil() ) {
TColStd_IndexedMapOfInteger aMapIndex;
- ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
+ myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
GEOM::GEOM_ILocalOperations_var aLocOp =
getGeomEngine()->GetILocalOperations( getStudyId() );
if(aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n");
aScript = "import geompy\n";
- aScript += "import math\n\n";
+ aScript += "import math\n";
+ aScript += "import SALOMEDS\n\n";
aScript += "def RebuildData(theStudy):";
aScript += "\n\tgeompy.init_geom(theStudy)";
//Add final part of the script
if(aLen && aSeq->Value(aLen) < aScriptLength) anUpdatedScript += aScript.SubString(aSeq->Value(aLen)+1, aScriptLength); // mkr : IPAL11865
+ // ouv : NPAL12872
+ for (anEntryToNameIt.Initialize( theObjectNames );
+ anEntryToNameIt.More();
+ anEntryToNameIt.Next())
+ {
+ const TCollection_AsciiString& aEntry = anEntryToNameIt.Key();
+ const TCollection_AsciiString& aName = anEntryToNameIt.Value();
+
+ TDF_Label L;
+ TDF_Tool::Label( aDoc->GetData(), aEntry, L );
+ if ( L.IsNull() )
+ continue;
+
+ Handle(GEOM_Object) obj = GEOM_Object::GetObject( L );
+ if ( obj.IsNull() )
+ continue;
+
+ bool anAutoColor = obj->GetAutoColor();
+ if ( anAutoColor )
+ {
+ TCollection_AsciiString aCommand( "\n\t" );
+ aCommand += aName + ".SetAutoColor(1)";
+ anUpdatedScript += aCommand.ToCString();
+ }
+
+ SALOMEDS::Color aColor = obj->GetColor();
+ if ( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 )
+ {
+ TCollection_AsciiString aCommand( "\n\t" );
+ aCommand += aName + ".SetColor(SALOMEDS.Color(" + aColor.R + "," + aColor.G + "," + aColor.B + "))";
+ anUpdatedScript += aCommand.ToCString();
+ }
+ }
+
// Make script to publish in study
if ( isPublished )
{
return result ;
}
+//================================================================================
+// function : MakeFilletR1R2()
+// purpose : Create a cylinder topology
+//================================================================================
+GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeFilletR1R2( GEOM::GEOM_Shape_ptr shape,
+ CORBA::Double radius1,
+ CORBA::Double radius2,
+ CORBA::Short ShapeType,
+ const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID )
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ GEOM::GEOM_Shape_var result;
+ TopoDS_Shape tds ;
+
+ const TopoDS_Shape aShape = GetTopoShape(shape) ;
+ if( aShape.IsNull() ) {
+ THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM);
+ }
+
+ BRepFilletAPI_MakeFillet fill(aShape);
+
+ try {
+ /* case all */
+ if(ListOfID.length() == 0) {
+ TopExp_Explorer Exp ( aShape, TopAbs_EDGE );
+ for (Exp; Exp.More(); Exp.Next()) {
+ TopoDS_Edge E =TopoDS::Edge(Exp.Current());
+ fill.Add(E);
+ }
+ for (int i = 1;i<=fill.NbContours();i++) {
+#if OCC_VERSION_MAJOR >= 5
+ fill.SetRadius(radius1,radius2,i,i);
+#else
+ fill.SetRadius(radius1,radius2,i);
+#endif
+ }
+ tds = fill.Shape();
+
+ } else {
+
+ /* case selection */
+ for ( unsigned int ind = 0; ind < ListOfID.length(); ind++ ) {
+ TopoDS_Shape ss ;
+ if( GetShapeFromIndex( aShape, (TopAbs_ShapeEnum)ShapeType, ListOfID[ind], ss ) ) {
+ TopoDS_Edge E = TopoDS::Edge(ss) ;
+ fill.Add( E );
+ }
+ }
+ for (int i = 1;i<=fill.NbContours();i++) {
+#if OCC_VERSION_MAJOR >= 5
+ fill.SetRadius(radius1,radius2,i,i);
+#else
+ fill.SetRadius(radius1,radius2,i);
+#endif
+ }
+ tds = fill.Shape();
+ }
+ }
+ catch(Standard_Failure) {
+ THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeFilletR1R2", SALOME::BAD_PARAM);
+ }
+
+ if (tds.IsNull()) {
+ THROW_SALOME_CORBA_EXCEPTION("Make Fillet aborted", SALOME::BAD_PARAM);
+ }
+ result = CreateObject(tds);
+ InsertInLabelOneArgument(aShape, shape, tds, result, myCurrentOCAFDoc) ;
+
+ return result ;
+}
//================================================================================
// function : MakeChamfer
return result ;
}
+//================================================================================
+// function : MakeChamferAD
+// purpose : Create a Chamfer topology by Lenght & Angle
+//================================================================================
+GEOM::GEOM_Shape_ptr GEOM_Gen_i::MakeChamferAD( GEOM::GEOM_Shape_ptr shape,
+ CORBA::Double d,
+ CORBA::Double angle,
+ CORBA::Short ShapeType,
+ const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID )
+ throw (SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ GEOM::GEOM_Shape_var result;
+ TopoDS_Shape tds ;
+
+ const TopoDS_Shape aShape = GetTopoShape(shape) ;
+ if( aShape.IsNull() ) {
+ THROW_SALOME_CORBA_EXCEPTION("Shape is null", SALOME::BAD_PARAM);
+ }
+
+ BRepFilletAPI_MakeChamfer MC(aShape);
+
+ try {
+ /* case all */
+ TopTools_IndexedDataMapOfShapeListOfShape M;
+ TopExp::MapShapesAndAncestors(aShape,TopAbs_EDGE,TopAbs_FACE,M);
+ if(ListOfID.length() == 0) {
+ for (int i = 1;i<=M.Extent();i++) {
+ TopoDS_Edge E = TopoDS::Edge(M.FindKey(i));
+ TopoDS_Face F = TopoDS::Face(M.FindFromIndex(i).First());
+ if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E))
+ MC.AddDA(d,angle,E,F);
+ }
+ tds = MC.Shape();
+
+ } else {
+
+ /* case selection */
+ for ( unsigned int ind = 0; ind < ListOfID.length(); ind++ ) {
+ TopoDS_Shape ss ;
+ if( GetShapeFromIndex( aShape, (TopAbs_ShapeEnum)ShapeType, ListOfID[ind], ss ) ) {
+ TopoDS_Edge E = TopoDS::Edge( ss ) ;
+ TopoDS_Face F = TopoDS::Face(M.FindFromKey(E).First());
+ if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E))
+ MC.AddDA(d,angle,E,F);
+ }
+ }
+ tds = MC.Shape();
+ }
+ }
+ catch(Standard_Failure) {
+ THROW_SALOME_CORBA_EXCEPTION("Exception catched in GEOM_Gen_i::MakeChamferAD", SALOME::BAD_PARAM);
+ }
+
+ if (tds.IsNull()) {
+ THROW_SALOME_CORBA_EXCEPTION("Make ChamferAD aborted", SALOME::BAD_PARAM);
+ }
+ result = CreateObject(tds);
+ InsertInLabelOneArgument(aShape, shape, tds, result, myCurrentOCAFDoc) ;
+ return result ;
+}
+
//=================================================================================
// function : CheckShape()
// purpose :
#define OK "PAL_NO_ERROR"
#define KO "PAL_NOT_DONE_ERROR"
+#define NOT_FOUND_ANY "NOT_FOUND_ANY"
#define ALREADY_PRESENT "PAL_ELEMENT_ALREADY_PRESENT"
#define NOT_EXISTS "PAL_ELEMENT_DOES_NOT_EXISTS"
#define INVALID_TYPE "INVALID_TYPE_OF_ELEMENT"
#include <TDataStd_UAttribute.hxx>
#include <TDataStd_Name.hxx>
#include <TDataStd_Comment.hxx>
+#include <TDataStd_RealArray.hxx>
+#include <TColStd_HArray1OfReal.hxx>
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#define TYPE_LABEL 2
#define FREE_LABEL 3
#define TIC_LABEL 4
+#define COLOR_LABEL 5
+#define AUTO_COLOR_LABEL 6
//=======================================================================
//function : GetObjectID
Handle(GEOM_Object) GEOM_Object::GetReferencedObject(TDF_Label& theLabel)
{
Handle(TDF_Reference) aRef;
- if (!theLabel.FindAttribute(TDF_Reference::GetID(), aRef)) return NULL;
+ if (!theLabel.FindAttribute(TDF_Reference::GetID(), aRef)) {
+ return NULL;
+ }
+
+ if(aRef.IsNull() || aRef->Get().IsNull()) {
+ return NULL;
+ }
+
// Get TreeNode of a referenced function
Handle(TDataStd_TreeNode) aT, aFather;
- if (!TDataStd_TreeNode::Find(aRef->Get(), aT)) return NULL;
+ if (!TDataStd_TreeNode::Find(aRef->Get(), aT)) {
+ return NULL;
+ }
+
// Get TreeNode of Object of the referenced function
aFather = aT->Father();
- if (aFather.IsNull()) return NULL;
+ if (aFather.IsNull()) {
+ return NULL;
+ }
// Get label of the referenced object
TDF_Label aLabel = aFather->Label();
-
+
return GEOM_Object::GetObject(aLabel);
}
return strdup(aName.ToCString());
}
+//=============================================================================
+/*!
+ * SetColor
+ */
+//=============================================================================
+void GEOM_Object::SetColor(const SALOMEDS::Color& theColor)
+{
+ Handle(TDataStd_RealArray) anArray = new TDataStd_RealArray();
+ anArray->Init( 1, 3 );
+ anArray->SetValue( 1, theColor.R );
+ anArray->SetValue( 2, theColor.G );
+ anArray->SetValue( 3, theColor.B );
+
+ Handle(TDataStd_RealArray) anAttr =
+ TDataStd_RealArray::Set(_label.FindChild(COLOR_LABEL), anArray->Lower(), anArray->Upper());
+ anAttr->ChangeArray(anArray->Array());
+}
+
+//=============================================================================
+/*!
+ * GetColor
+ */
+//=============================================================================
+SALOMEDS::Color GEOM_Object::GetColor()
+{
+ Handle(TDataStd_RealArray) anArray;
+ bool isFound = _label.FindChild(COLOR_LABEL).FindAttribute(TDataStd_RealArray::GetID(), anArray);
+
+ SALOMEDS::Color aColor;
+ aColor.R = isFound ? anArray->Value( 1 ) : 0.f;
+ aColor.G = isFound ? anArray->Value( 2 ) : 0.f;
+ aColor.B = isFound ? anArray->Value( 3 ) : 0.f;
+
+ return aColor;
+}
+
+//=============================================================================
+/*!
+ * SetAutoColor
+ */
+//=============================================================================
+void GEOM_Object::SetAutoColor(CORBA::Boolean theAutoColor)
+{
+ TDataStd_Integer::Set(_label.FindChild(AUTO_COLOR_LABEL), (int)theAutoColor);
+}
+
+//=============================================================================
+/*!
+ * GetAutoColor
+ */
+//=============================================================================
+CORBA::Boolean GEOM_Object::GetAutoColor()
+{
+ Handle(TDataStd_Integer) anAutoColor;
+ if(!_label.FindChild(AUTO_COLOR_LABEL).FindAttribute(TDataStd_Integer::GetID(), anAutoColor)) return false;
+
+ return anAutoColor->Get();
+}
+
//=============================================================================
/*!
* SetAuxData
Standard_Integer aLength = aSeq.Length();
if(aLength > 0) {
anArray = new TColStd_HSequenceOfTransient;
- for(Standard_Integer j =1; j<=aLength; j++)
- anArray->Append(GetReferencedObject(aSeq(j)));
+ for(Standard_Integer j =1; j<=aLength; j++) {
+ Handle(GEOM_Object) aRefObj = GetReferencedObject(aSeq(j));
+ if(!aRefObj.IsNull()) anArray->Append(aRefObj);
+ }
}
return anArray;
#include <TCollection_AsciiString.hxx>
#endif
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
class Handle_TColStd_HSequenceOfTransient;
class Standard_Transient;
class Handle_Standard_Type;
//Returns a name of this GEOM_Object
Standard_EXPORT char* GetName();
+ //Sets a color of this GEOM_Object
+ Standard_EXPORT void SetColor(const SALOMEDS::Color& theColor);
+
+ //Returns a color of this GEOM_Object
+ Standard_EXPORT SALOMEDS::Color GetColor();
+
+ //Toggles an auto color mode on this GEOM_Object
+ Standard_EXPORT void SetAutoColor(CORBA::Boolean theAutoColor);
+
+ //Returns a flag of auto color mode of this GEOM_Object
+ Standard_EXPORT CORBA::Boolean GetAutoColor();
+
//Sets an auxiliary data
Standard_EXPORT void SetAuxData(const char* theData);
TCollection_AsciiString aDescr;
if ( myAppend )
aDescr = myFunction->GetDescription() + "\n\t";
- aDescr += (char *)myStream.str().c_str();
+ std::string aString = myStream.str();
+ aDescr += (char *)aString.c_str();
myFunction->SetDescription( aDescr );
}
}
-// TPythonDump::operator TCollection_AsciiString () const
-// {
-// if (myCounter == 1) {
-// return TCollection_AsciiString ((char *)myStream.str().c_str());
-// }
-// return TCollection_AsciiString ();
-// }
-
TPythonDump& TPythonDump::operator<< (long int theArg)
{
myStream<<theArg;
# additionnal information to compil and link file
libGEOMbasic_la_CPPFLAGS = \
+ $(CORBA_CXXFLAGS) \
+ $(CORBA_INCLUDES) \
$(CAS_CPPFLAGS) \
$(KERNEL_CXXFLAGS) \
$(BOOST_CPPFLAGS) \
+ -I$(top_builddir)/idl \
-I$(top_builddir)/salome_adm/unix
libGEOMbasic_la_LDFLAGS = \
MapOfShape from TopTools,
Image from BRepAlgo,
- DSFiller from NMTTools,
- PDSFiller from NMTTools
+ PaveFiller from NMTTools,
+ PPaveFiller from NMTTools
--raises
is redefined;
PerformWithFiller(me:out;
- theDSF: DSFiller from NMTTools)
- ---Purpose: Performs calculations using prepared DSFiller
+ theDSF: PaveFiller from NMTTools)
+ ---Purpose: Performs calculations using prepared PaveFiller
-- object theDSF
is virtual;
--
-- protected methods
--
- --
PerformInternal(me:out;
- theDSF: DSFiller from NMTTools)
+ theDSF: PaveFiller from NMTTools)
---Purpose: Performs calculations using prepared DSFiller
-- object theDSF
- is protected;
- --
+ is virtual protected;
+
PrepareHistory (me:out)
---Purpose: Prepare information for history support
is redefined protected;
-- =====================================================
fields
- myDSFiller : PDSFiller from NMTTools is protected;
+ myPaveFiller : PPaveFiller from NMTTools is protected;
myShapes : ListOfShape from TopTools is protected;
-- Common usage
myNbTypes : Integer from Standard is protected;
mySameDomainShapes: IndexedDataMapOfShapeShape from TopTools is protected;
-- solids
myDraftSolids : IndexedDataMapOfShapeShape from TopTools is protected;
- myEntryPoint : Integer from Standard is protected;
+ myEntryPoint : Integer from Standard is protected;
--
end Builder;
#include <BOP_CorrectTolerances.hxx>
-#include <NMTTools_DSFiller.hxx>
-
#include <BRepLib.hxx>
+#include <NMTTools_PaveFiller.hxx>
//=======================================================================
//function :
GEOMAlgo_BuilderShape()
{
myNbTypes=9;
- myDSFiller=NULL;
+ myPaveFiller=NULL;
myEntryPoint=0; // Entry point through PerformWithFiller ()
}
//=======================================================================
GEOMAlgo_Builder::~GEOMAlgo_Builder()
{
if (myEntryPoint==1) {
- if (myDSFiller) {
- delete myDSFiller;
- myDSFiller=NULL;
+ if (myPaveFiller) {
+ delete myPaveFiller;
+ myPaveFiller=NULL;
}
}
}
aBB.Add(aCS, aS);
}
//
- if (myDSFiller) {
- delete myDSFiller;
- myDSFiller=NULL;
- }
- NMTTools_DSFiller* pDSF=new NMTTools_DSFiller;
+ NMTTools_PaveFiller* pPF=new NMTTools_PaveFiller;
//
- pDSF->SetCompositeShape(aCS);
- pDSF->Perform();
+ pPF->SetCompositeShape(aCS);
+ pPF->Perform();
//
myEntryPoint=1;
- PerformInternal(*pDSF);
+ PerformInternal(*pPF);
}
//=======================================================================
//function : PerformWithFiller
//purpose :
//=======================================================================
- void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_DSFiller& theDSF)
+ void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_PaveFiller& theDSF)
{
myEntryPoint=0;
//
//function : PerformInternal
//purpose :
//=======================================================================
- void GEOMAlgo_Builder::PerformInternal(const NMTTools_DSFiller& theDSF)
+ void GEOMAlgo_Builder::PerformInternal(const NMTTools_PaveFiller& pPF)
{
myErrorStatus=0;
//
Standard_Boolean bIsDone;
//
- // 0. myDSFiller
- myDSFiller=(NMTTools_DSFiller *)&theDSF;
+ // 0. myPaveFiller
+ myPaveFiller=(NMTTools_PaveFiller *)&pPF;
//
- bIsDone=myDSFiller->IsDone();
+ bIsDone=myPaveFiller->IsDone();
if (!bIsDone) {
- myErrorStatus=2; // DSFiller is failed
+ myErrorStatus=2; // PaveFiller is failed
return;
}
//
//
// 0 - Ok
// 1 - The object is just initialized
-// 2 - DSFiller is failed
+// 2 - PaveFiller is failed
// 10 - No shapes to process
// 30 - SolidBuilder failed
#ifndef _GEOMAlgo_Builder_HeaderFile
#define _GEOMAlgo_Builder_HeaderFile
-#ifndef _NMTTools_PDSFiller_HeaderFile
-#include <NMTTools_PDSFiller.hxx>
+#ifndef _NMTTools_PPaveFiller_HeaderFile
+#include <NMTTools_PPaveFiller.hxx>
#endif
#ifndef _TopTools_ListOfShape_HeaderFile
#include <TopTools_ListOfShape.hxx>
#ifndef _TopAbs_ShapeEnum_HeaderFile
#include <TopAbs_ShapeEnum.hxx>
#endif
-class NMTTools_DSFiller;
+class NMTTools_PaveFiller;
class TopoDS_Shape;
class TopTools_ListOfShape;
class BRepAlgo_Image;
//! Performs calculations <br>
Standard_EXPORT virtual void Perform() ;
-//! Performs calculations using prepared DSFiller <br>
+//! Performs calculations using prepared PaveFiller <br>
//! object theDSF <br>
-Standard_EXPORT virtual void PerformWithFiller(const NMTTools_DSFiller& theDSF) ;
+Standard_EXPORT virtual void PerformWithFiller(const NMTTools_PaveFiller& theDSF) ;
//! Adds argument theShape of the operation <br>
Standard_EXPORT virtual void AddShape(const TopoDS_Shape& theShape) ;
//! Performs calculations using prepared DSFiller <br>
//! object theDSF <br>
-Standard_EXPORT void PerformInternal(const NMTTools_DSFiller& theDSF) ;
+Standard_EXPORT virtual void PerformInternal(const NMTTools_PaveFiller& theDSF) ;
//! Prepare information for history support <br>
Standard_EXPORT virtual void PrepareHistory() ;
// Fields PROTECTED
//
-NMTTools_PDSFiller myDSFiller;
+NMTTools_PPaveFiller myPaveFiller;
TopTools_ListOfShape myShapes;
Standard_Integer myNbTypes;
TopTools_MapOfShape myMapFence;
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#ifndef _NMTTools_DSFiller_HeaderFile
-#include <NMTTools_DSFiller.hxx>
+#ifndef _NMTTools_PaveFiller_HeaderFile
+#include <NMTTools_PaveFiller.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#include <GEOMAlgo_Builder.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
-#include <NMTTools_DSFiller.hxx>
+//#include <NMTTools_DSFiller.hxx>
#include <NMTTools_PaveFiller.hxx>
#include <IntTools_Context.hxx>
#include <TopoDS_Shape.hxx>
//
#include <NMTDS_ShapesDataStructure.hxx>
//
-#include <NMTTools_DSFiller.hxx>
#include <NMTTools_PaveFiller.hxx>
#include <NMTTools_CommonBlockPool.hxx>
#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
//
Standard_Integer i, aNb, iV;
//
myImages.Bind(aV, aVSD);
//
mySameDomainShapes.Add(aV, aVSD);
- //
}
}
}
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
const BOPTools_SplitShapesPool& aSSP=pPF->SplitShapesPool();
NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool();
IntTools_Context& aCtx=pPF->ChangeContext();
//
Standard_Boolean bToReverse;
- Standard_Integer i, aNb, aNbSp, nSp, nSpR, nSpx;
+ Standard_Integer i, aNb, aNbSp, nSp, nSpR, nSpx, aIsCB;
TColStd_ListIteratorOfListOfInteger aItLB;
TColStd_ListOfInteger aLB;
TopoDS_Edge aEE, aESpR;
nSp=aPB.Edge();
const TopoDS_Shape& aSp=aDS.Shape(nSp);
//
- const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB);
+ //modified by NIZNHY-PKV Fri Nov 30 10:40:36 2007 f
+ //const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB);
+ const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB, aIsCB);
+ //modified by NIZNHY-PKV Fri Nov 30 10:40:48 2007t
nSpR=aPBR.Edge();
const TopoDS_Shape& aSpR=aDS.Shape(nSpR);
- if (aSpR.IsSame(aSp) && aSpR.IsSame(aE)) {
+ //modified by NIZNHY-PKV Fri Nov 30 10:41:39 2007f
+ //if (aSpR.IsSame(aSp) && aSpR.IsSame(aE)) {
+ if (aSpR.IsSame(aSp) && aSpR.IsSame(aE) && !aIsCB) {
+ //modified by NIZNHY-PKV Fri Nov 30 10:41:46 2007t
continue;
}
//
aIt.Initialize(aLPB);
for (; aIt.More(); aIt.Next()) {
const BOPTools_PaveBlock& aPB=aIt.Value();
- const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB);
+ //modified by NIZNHY-PKV Fri Nov 30 10:42:15 2007f
+ //const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB);
+ const BOPTools_PaveBlock& aPBR=pPF->RealPaveBlock(aPB, aLB, aIsCB);
+ //modified by NIZNHY-PKV Fri Nov 30 10:42:20 2007t
nSpR=aPBR.Edge();
const TopoDS_Shape& aSpR=aDS.Shape(nSpR);
//
TopTools_MapOfShape aMS;
TopTools_MapIteratorOfMapOfShape aItS;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx= pPF->ChangeContext();
//
aNbS=aDS.NumberOfShapesOfTheObject();
#include <BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger.hxx>
#include <BOPTools_ListOfPaveBlock.hxx>
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
-#include <BOPTools_InterferencePool.hxx>
#include <BOPTools_CArray1OfSSInterference.hxx>
#include <BOPTools_SSInterference.hxx>
#include <BOPTools_SequenceOfCurves.hxx>
#include <BOPTools_CArray1OfESInterference.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
-#include <NMTTools_DSFiller.hxx>
#include <NMTTools_PaveFiller.hxx>
#include <NMTTools_ListOfCoupleOfShape.hxx>
#include <NMTTools_Tools.hxx>
#include <GEOMAlgo_Tools3D.hxx>
#include <GEOMAlgo_WireEdgeSet.hxx>
#include <GEOMAlgo_BuilderFace.hxx>
+#include <NMTDS_InterfPool.hxx>
static
void UpdateCandidates(const Standard_Integer ,
//=======================================================================
void GEOMAlgo_Builder::FillIn2DParts()
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
- BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool();
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
+ NMTDS_InterfPool* pIP=pPF->IP();
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
NMTTools_CommonBlockPool& aCBP=pPF->ChangeCommonBlockPool();
//
//=======================================================================
void GEOMAlgo_Builder::BuildSplitFaces()
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
- BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool();
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
+ NMTDS_InterfPool* pIP=pPF->IP();
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
IntTools_Context& aCtx= pPF->ChangeContext();
//
//=======================================================================
void GEOMAlgo_Builder::FillSameDomainFaces()
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
- BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool();
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
+ NMTDS_InterfPool* pIP=pPF->IP();
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
IntTools_Context& aCtx= pPF->ChangeContext();
//
TopTools_ListOfShape aLFx;
TopTools_ListIteratorOfListOfShape aIt;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
//
aNb=aDS.NumberOfShapesOfTheObject();
for (i=1; i<=aNb; ++i) {
//=======================================================================
void GEOMAlgo_Builder::FillInternalVertices()
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
- BOPTools_InterferencePool* pIP=(BOPTools_InterferencePool*)&myDSFiller->InterfPool();
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
+ NMTDS_InterfPool* pIP=pPF->IP();
IntTools_Context& aCtx= pPF->ChangeContext();
//
BOPTools_CArray1OfSSInterference& aFFs=pIP->SSInterferences();
#include <IntTools_Context.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
-#include <NMTTools_DSFiller.hxx>
#include <NMTTools_PaveFiller.hxx>
#include <GEOMAlgo_Tools3D.hxx>
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx= pPF->ChangeContext();
//
Standard_Boolean bToReverse;
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx= pPF->ChangeContext();
//
Standard_Boolean bIsIN, bHasImage;
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx= pPF->ChangeContext();
//
Standard_Integer i, aNbS, iErr;
{
myErrorStatus=0;
//
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx= pPF->ChangeContext();
//
//Standard_Boolean bHasImage;
#include <NMTDS_ShapesDataStructure.hxx>
#include <NMTTools_PaveFiller.hxx>
-#include <NMTTools_DSFiller.hxx>
#include <GEOMAlgo_Tools3D.hxx>
//=======================================================================
const TopTools_ListOfShape& GEOMAlgo_Builder::Generated(const TopoDS_Shape& theS)
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx=pPF->ChangeContext();
//
Standard_Boolean bHasImage, bToReverse;
//=======================================================================
const TopTools_ListOfShape& GEOMAlgo_Builder::Modified(const TopoDS_Shape& theS)
{
- const NMTDS_ShapesDataStructure& aDS=myDSFiller->DS();
- NMTTools_PaveFiller* pPF=(NMTTools_PaveFiller*)&(myDSFiller->PaveFiller());
+ const NMTDS_ShapesDataStructure& aDS=*myPaveFiller->DS();
+ NMTTools_PaveFiller* pPF=myPaveFiller;
IntTools_Context& aCtx=pPF->ChangeContext();
//
Standard_Boolean bHasImage, bToReverse;
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_DataMapOfShapeShape.hxx>
+#include <Bnd_Box.hxx>
+#include <BRepBndLib.hxx>
+#include <BRepMesh_IncrementalMesh.hxx>
+
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
//
aEx.Free(bFree);
}
+//
+//=======================================================================
+//function : BuildTriangulation
+//purpose :
+//=======================================================================
+bool GEOMAlgo_FinderShapeOn::BuildTriangulation (const TopoDS_Shape& theShape)
+{
+ // calculate deflection
+ Standard_Real aDeviationCoefficient = 0.001;
+
+ Bnd_Box B;
+ BRepBndLib::Add(theShape, B);
+ Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
+ B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
+
+ Standard_Real dx = aXmax - aXmin, dy = aYmax - aYmin, dz = aZmax - aZmin;
+ Standard_Real aDeflection = Max(Max(dx, dy), dz) * aDeviationCoefficient * 4;
+ Standard_Real aHLRAngle = 0.349066;
+
+ // build triangulation
+ BRepMesh_IncrementalMesh Inc (theShape, aDeflection, Standard_False, aHLRAngle);
+
+ // check triangulation
+ bool isTriangulation = true;
+
+ TopExp_Explorer exp (theShape, TopAbs_FACE);
+ if (exp.More())
+ {
+ TopLoc_Location aTopLoc;
+ Handle(Poly_Triangulation) aTRF;
+ aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
+ if (aTRF.IsNull()) {
+ isTriangulation = false;
+ }
+ }
+ else // no faces, try edges
+ {
+ TopExp_Explorer expe (theShape, TopAbs_EDGE);
+ if (!expe.More()) {
+ isTriangulation = false;
+ }
+ else {
+ TopLoc_Location aLoc;
+ Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
+ if (aPE.IsNull()) {
+ isTriangulation = false;
+ }
+ }
+ }
+
+ return isTriangulation;
+}
//
// myErrorStatus :
// myWarningStatus
//
// 10 -subshapes of type myShapeType can not be fond in myShape
-
Standard_EXPORT static void CopySource(const TopoDS_Shape& aS,TopTools_DataMapOfShapeShape& aImages,TopTools_DataMapOfShapeShape& aOriginals,TopoDS_Shape& aSC) ;
-
-
-
+Standard_EXPORT static bool BuildTriangulation (const TopoDS_Shape& theShape);
protected:
#include <Poly_Triangle.hxx>
#include <Poly_PolygonOnTriangulation.hxx>
#include <Poly_Triangulation.hxx>
+#include <Poly_Polygon3D.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
#include <GEOMAlgo_SurfaceTools.hxx>
#include <GEOMAlgo_StateCollector.hxx>
+#include <GEOMAlgo_FinderShapeOn.hxx>
#include <GEOMAlgo_PassKey.hxx>
#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
//
aTRF=BRep_Tool::Triangulation(aF, aLoc);
if (aTRF.IsNull()) {
- myErrorStatus=20; // no triangulation found
- return;
+ if (!GEOMAlgo_FinderShapeOn::BuildTriangulation(aF)) {
+ myErrorStatus=20; // no triangulation found
+ return;
+ }
+ aTRF=BRep_Tool::Triangulation(aF, aLoc);
}
//
const gp_Trsf& aTrsf=aLoc.Transformation();
aLP.Clear();
BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc);
if (aTRE.IsNull() || aPTE.IsNull()) {
- myErrorStatus=20; // no triangulation found
- return;
+ Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(aE, aLoc);
+ if (aPE.IsNull()) {
+ if (!GEOMAlgo_FinderShapeOn::BuildTriangulation(aE)) {
+ myErrorStatus=20; // no triangulation found
+ return;
+ }
+ aPE = BRep_Tool::Polygon3D(aE, aLoc);
+ }
+ const gp_Trsf& aTrsf=aLoc.Transformation();
+ const TColgp_Array1OfPnt& aNodes=aPE->Nodes();
+ //
+ aNbNodes=aPE->NbNodes();
+ Standard_Integer low = aNodes.Lower(), up = aNodes.Upper();
+ for (j=low+1; j<up; ++j) {
+ aP=aNodes(j).Transformed(aTrsf);
+ aLP.Append(aP);
+ }
}
- //
- const gp_Trsf& aTrsf=aLoc.Transformation();
- const TColgp_Array1OfPnt& aNodes=aTRE->Nodes();
- //
- aNbNodes=aPTE->NbNodes();
- const TColStd_Array1OfInteger& aInds=aPTE->Nodes();
- for (j=2; j<aNbNodes; ++j) {
- aIndex=aInds(j);
- aP=aNodes(aIndex).Transformed(aTrsf);
- aLP.Append(aP);
+ else {
+ const gp_Trsf& aTrsf=aLoc.Transformation();
+ const TColgp_Array1OfPnt& aNodes=aTRE->Nodes();
+ //
+ aNbNodes=aPTE->NbNodes();
+ const TColStd_Array1OfInteger& aInds=aPTE->Nodes();
+ for (j=2; j<aNbNodes; ++j) {
+ aIndex=aInds(j);
+ aP=aNodes(aIndex).Transformed(aTrsf);
+ aLP.Append(aP);
+ }
}
//
aNb=aLP.Extent();
// try to fill it yourself
InnerPoints(aE, myNbPntsMin, aLP);
aNb=aLP.Extent();
-
}
}
//=======================================================================
#include <Poly_Triangle.hxx>
#include <Poly_PolygonOnTriangulation.hxx>
#include <Poly_Triangulation.hxx>
+#include <Poly_Polygon3D.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
#include <GEOMAlgo_SurfaceTools.hxx>
#include <GEOMAlgo_StateCollector.hxx>
+#include <GEOMAlgo_FinderShapeOn.hxx>
#include <GEOMAlgo_PassKey.hxx>
#include <GEOMAlgo_DataMapOfPassKeyInteger.hxx>
//
aTRF=BRep_Tool::Triangulation(aF, aLoc);
if (aTRF.IsNull()) {
- myErrorStatus=20; // no triangulation found
- return;
+ if (!GEOMAlgo_FinderShapeOn::BuildTriangulation(aF)) {
+ myErrorStatus=20; // no triangulation found
+ return;
+ }
+ aTRF=BRep_Tool::Triangulation(aF, aLoc);
}
//
const gp_Trsf& aTrsf=aLoc.Transformation();
aLP.Clear();
BRep_Tool::PolygonOnTriangulation(aE, aPTE, aTRE, aLoc);
if (aTRE.IsNull() || aPTE.IsNull()) {
- myErrorStatus=20; // no triangulation found
- return;
+ Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(aE, aLoc);
+ if (aPE.IsNull()) {
+ if (!GEOMAlgo_FinderShapeOn::BuildTriangulation(aE)) {
+ myErrorStatus=20; // no triangulation found
+ return;
+ }
+ aPE = BRep_Tool::Polygon3D(aE, aLoc);
+ }
+ const gp_Trsf& aTrsf=aLoc.Transformation();
+ const TColgp_Array1OfPnt& aNodes=aPE->Nodes();
+ //
+ aNbNodes=aPE->NbNodes();
+ Standard_Integer low = aNodes.Lower(), up = aNodes.Upper();
+ for (j=low+1; j<up; ++j) {
+ aP=aNodes(j).Transformed(aTrsf);
+ aLP.Append(aP);
+ }
}
- //
- const gp_Trsf& aTrsf=aLoc.Transformation();
- const TColgp_Array1OfPnt& aNodes=aTRE->Nodes();
- //
- aNbNodes=aPTE->NbNodes();
- const TColStd_Array1OfInteger& aInds=aPTE->Nodes();
- for (j=2; j<aNbNodes; ++j) {
- aIndex=aInds(j);
- aP=aNodes(aIndex).Transformed(aTrsf);
- aLP.Append(aP);
+ else {
+ const gp_Trsf& aTrsf=aLoc.Transformation();
+ const TColgp_Array1OfPnt& aNodes=aTRE->Nodes();
+ //
+ aNbNodes=aPTE->NbNodes();
+ const TColStd_Array1OfInteger& aInds=aPTE->Nodes();
+ for (j=2; j<aNbNodes; ++j) {
+ aIndex=aInds(j);
+ aP=aNodes(aIndex).Transformed(aTrsf);
+ aLP.Append(aP);
+ }
}
//
aNb=aLP.Extent();
// try to fill it yourself
InnerPoints(aE, myNbPntsMin, aLP);
aNb=aLP.Extent();
-
}
}
//=======================================================================
// 30- can not obtain the line from the link
// 40- point can not be classified
// 41- invalid data for classifier
-
myTolerance=0.0001;
myTol=myTolerance;
myCheckGeometry=Standard_True;
+ myKeepNonSolids=Standard_False;
myNbAlone=0;
}
//=======================================================================
return myCheckGeometry;
}
//=======================================================================
+//function : SetKeepNonSolids
+//purpose :
+//=======================================================================
+void GEOMAlgo_Gluer::SetKeepNonSolids(const Standard_Boolean aFlag)
+{
+ myKeepNonSolids=aFlag;
+}
+//=======================================================================
//function : AloneShapes
//purpose :
//=======================================================================
}
}
//=======================================================================
-//function : MakeSolids
+//function : MakeSubShapes
//purpose :
//=======================================================================
-void GEOMAlgo_Gluer::MakeSolids()
+void GEOMAlgo_Gluer::MakeSubShapes (const TopoDS_Shape& theShape,
+ TopTools_MapOfShape& theMS,
+ TopoDS_Compound& theResult)
{
- myErrorStatus=0;
+ if (theMS.Contains(theShape))
+ return;
//
- Standard_Integer aNbS;
- TopAbs_Orientation anOr;
- TopoDS_Compound aCmp;
- TopoDS_Solid aNewSolid;
- TopTools_IndexedMapOfShape aMS;
- TopExp_Explorer aExpS, aExp;
BRep_Builder aBB;
//
- aBB.MakeCompound(aCmp);
+ theMS.Add(theShape);
//
- aNbS=aMS.Extent();
- aExpS.Init(myShape, TopAbs_SOLID);
- for (; aExpS.More(); aExpS.Next()) {
- const TopoDS_Solid& aSolid=TopoDS::Solid(aExpS.Current());
- if (aMS.Contains(aSolid)) {
- continue;
+ if (theShape.ShapeType() == TopAbs_COMPOUND ||
+ theShape.ShapeType() == TopAbs_COMPSOLID)
+ {
+ TopoDS_Iterator It (theShape, Standard_True, Standard_True);
+ for (; It.More(); It.Next())
+ {
+ MakeSubShapes(It.Value(), theMS, theResult);
}
- aMS.Add(aSolid);
+ }
+ else if (theShape.ShapeType() == TopAbs_SOLID)
+ {
+ // build a solid
+ TopoDS_Solid aNewSolid;
+ TopExp_Explorer aExpS, aExp;
+ //
+ const TopoDS_Solid& aSolid = TopoDS::Solid(theShape);
//
- anOr=aSolid.Orientation();
+ TopAbs_Orientation anOr = aSolid.Orientation();
//
aBB.MakeSolid(aNewSolid);
aNewSolid.Orientation(anOr);
//
aExp.Init(aSolid, TopAbs_SHELL);
- for (; aExp.More(); aExp.Next()) {
+ for (; aExp.More(); aExp.Next())
+ {
const TopoDS_Shape& aShell=aExp.Current();
const TopoDS_Shape& aShellR=myOrigins.Find(aShell);
aBB.Add(aNewSolid, aShellR);
myImages.Bind(aNewSolid, aLS);
myOrigins.Bind(aSolid, aNewSolid);
//
- aBB.Add(aCmp, aNewSolid);
+ aBB.Add(theResult, aNewSolid);
+ }
+ else if (theShape.ShapeType() == TopAbs_WIRE)
+ {
+ if (myKeepNonSolids)
+ {
+ // just add image
+ if (!myOrigins.IsBound(theShape))
+ {
+ // build wire
+ const TopoDS_Wire& aW=TopoDS::Wire(theShape);
+ //
+ TopoDS_Wire newWire;
+ aBB.MakeWire(newWire);
+ //
+ TopExp_Explorer aExpE (aW, TopAbs_EDGE);
+ for (; aExpE.More(); aExpE.Next()) {
+ const TopoDS_Edge& aE=TopoDS::Edge(aExpE.Current());
+ TopoDS_Edge aER=TopoDS::Edge(myOrigins.Find(aE));
+ //
+ aER.Orientation(TopAbs_FORWARD);
+ if (!BRep_Tool::Degenerated(aER)) {
+ // build p-curve
+ //if (bIsUPeriodic) {
+ // GEOMAlgo_Tools::RefinePCurveForEdgeOnFace(aER, aFFWD, aUMin, aUMax);
+ //}
+ //BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aER, aFFWD);
+ //
+ // orient image
+ Standard_Boolean bIsToReverse=BOPTools_Tools3D::IsSplitToReverse1(aER, aE, myContext);
+ if (bIsToReverse) {
+ aER.Reverse();
+ }
+ }
+ else {
+ aER.Orientation(aE.Orientation());
+ }
+ //
+ aBB.Add(newWire, aER);
+ }
+ // xf
+ TopTools_ListOfShape aLW;
+ //
+ aLW.Append(aW);
+ myImages.Bind(newWire, aLW);
+ myOrigins.Bind(aW, newWire);
+ }
+ const TopoDS_Shape& aShapeR = myOrigins.Find(theShape);
+ aBB.Add(theResult, aShapeR);
+ }
}
+ else
+ {
+ if (myKeepNonSolids)
+ {
+ // just add image
+ const TopoDS_Shape& aShapeR = myOrigins.Find(theShape);
+ aBB.Add(theResult, aShapeR);
+ }
+ }
+}
+//=======================================================================
+//function : MakeSolids
+//purpose :
+//=======================================================================
+void GEOMAlgo_Gluer::MakeSolids()
+{
+ myErrorStatus=0;
+ //
+ BRep_Builder aBB;
+ TopoDS_Compound aCmp;
+ TopTools_MapOfShape aMS;
+ //
+ aBB.MakeCompound(aCmp);
+ //
+ // Add images of all initial sub-shapes in the result.
+ // If myKeepNonSolids==false, add only solids images.
+ MakeSubShapes(myShape, aMS, aCmp);
//
myResult=aCmp;
//
- aNbS=aMS.Extent();
- if (aNbS) {
- Standard_Real aTol=1.e-7;
+ if (aMS.Extent()) {
BOP_CorrectTolerances::CorrectCurveOnSurface(myResult);
}
}
#ifndef _TopTools_ListOfShape_HeaderFile
#include <TopTools_ListOfShape.hxx>
#endif
+#ifndef _TopTools_MapOfShape_HeaderFile
+#include <TopTools_MapOfShape.hxx>
+#endif
#ifndef _GEOMAlgo_ShapeAlgo_HeaderFile
#include <GEOMAlgo_ShapeAlgo.hxx>
#endif
#ifndef _TopAbs_ShapeEnum_HeaderFile
#include <TopAbs_ShapeEnum.hxx>
#endif
+#ifndef _TopoDS_Compound_HeaderFile
+#include <TopoDS_Compound.hxx>
+#endif
class TopTools_ListOfShape;
class TopoDS_Shape;
class TopoDS_Edge;
Standard_EXPORT Standard_Boolean CheckGeometry() const;
+Standard_EXPORT void SetKeepNonSolids(const Standard_Boolean aFlag) ;
+
+
Standard_EXPORT virtual void Perform() ;
Standard_EXPORT void MakeShells() ;
+Standard_EXPORT void MakeSubShapes(const TopoDS_Shape& theShape,
+ TopTools_MapOfShape& theMS,
+ TopoDS_Compound& theResult);
+
+
Standard_EXPORT void MakeSolids() ;
// Fields PROTECTED
//
Standard_Boolean myCheckGeometry;
+Standard_Boolean myKeepNonSolids;
Standard_Real myTol;
TopTools_DataMapOfShapeListOfShape myImages;
TopTools_DataMapOfShapeShape myOrigins;
aF=TopoDS::Face(aS);
//
aNbWires=NbWires(aF);
- if (aNbWires>1) {
- return;
- }
//
aSurf=BRep_Tool::Surface(aF);
GeomAdaptor_Surface aGAS(aSurf);
aInfo.SetLocation(aP0);
aInfo.SetPosition(aAx3);
//
+ if (aNbWires>1) return;
+ //
//aSurf->Bounds(aUMin, aUMax, aVMin, aVMax);
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aR1);
//
+ if (aNbWires>1) return;
+ //
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
aInfo.SetKindOfClosed(GEOMAlgo_KC_CLOSED);
//
aInfo.SetPosition(aAx3);
aInfo.SetRadius1(aR1);
//
+ if (aNbWires>1) return;
+ //
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
bInfU2=Precision::IsPositiveInfinite(aUMax);
aInfo.SetPosition(aAx3);
//aInfo.SetRadius1(aR1);
//
+ if (aNbWires>1) return;
+ //
BRepTools::UVBounds(aF, aUMin, aUMax, aVMin, aVMax);
bInfU1=Precision::IsNegativeInfinite(aUMin);
bInfU2=Precision::IsPositiveInfinite(aUMax);
aInfo.SetRadius1(aR1);
aInfo.SetRadius2(aR2);
//
+ if (aNbWires>1) return;
+ //
aInfo.SetKindOfBounds(GEOMAlgo_KB_TRIMMED);
-
+ //
FillDetails(aF, aTorus);
}
}
Limit(me)
returns ShapeEnum from TopAbs;
+
+ SetLimitMode(me:out;
+ aLimitMode:Integer from Standard);
+
+ LimitMode(me)
+ returns Integer from Standard;
+
--
-- Protected methods
--
myTools : ListOfShape from TopTools is protected;
myMapTools : MapOfShape from TopTools is protected;
myLimit : ShapeEnum from TopAbs is protected;
+ myLimitMode : Integer from Standard is protected;
+
end Splitter;
#include <BOP_CorrectTolerances.hxx>
-#include <NMTTools_DSFiller.hxx>
+
+static
+ void TreatCompound(const TopoDS_Shape& aC,
+ TopTools_ListOfShape& aLSX);
//=======================================================================
//function :
GEOMAlgo_Builder()
{
myLimit=TopAbs_SHAPE;
+ myLimitMode=0;
}
//=======================================================================
//function : ~
return myLimit;
}
//=======================================================================
+//function : SetLimitMode
+//purpose :
+//=======================================================================
+ void GEOMAlgo_Splitter::SetLimitMode(const Standard_Integer aMode)
+{
+ myLimitMode=aMode;
+}
+//=======================================================================
+//function : LimitMode
+//purpose :
+//=======================================================================
+ Standard_Integer GEOMAlgo_Splitter::LimitMode()const
+{
+ return myLimitMode;
+}
+//=======================================================================
//function : Clear
//purpose :
//=======================================================================
Standard_Integer i, aNbS;
BRep_Builder aBB;
TopoDS_Compound aC;
- TopTools_IndexedMapOfShape aM;
+ TopTools_IndexedMapOfShape aMx;
//
aBB.MakeCompound(aC);
//
- TopExp::MapShapes(myShape, myLimit, aM);
- aNbS=aM.Extent();
+ TopExp::MapShapes(myShape, myLimit, aMx);
+ aNbS=aMx.Extent();
for (i=1; i<=aNbS; ++i) {
- const TopoDS_Shape& aS=aM(i);
+ const TopoDS_Shape& aS=aMx(i);
aBB.Add(aC, aS);
}
+ //modified by NIZNHY-PKV Thu Feb 15 17:09:32 2007f
+ if (myLimitMode) {
+ Standard_Integer iType, iLimit, iTypeX;
+ TopAbs_ShapeEnum aType, aTypeX;
+ TopTools_ListOfShape aLSP, aLSX;
+ TopTools_ListIteratorOfListOfShape aIt, aItX, aItIm;
+ TopTools_MapOfShape aM;
+ //
+ iLimit=(Standard_Integer)myLimit;
+ //
+ // 1. Collect the shapes to process aLSP
+ aIt.Initialize(myShapes);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Shape& aS=aIt.Value();
+ if (myMapTools.Contains(aS)) {
+ continue;
+ }
+ //
+ aType=aS.ShapeType();
+ iType=(Standard_Integer)aType;
+ //
+ if (iType>iLimit) {
+ aLSP.Append(aS);
+ }
+ //
+ else if (aType==TopAbs_COMPOUND) {
+ aLSX.Clear();
+ //
+ TreatCompound(aS, aLSX);
+ //
+ aItX.Initialize(aLSX);
+ for (; aItX.More(); aItX.Next()) {
+ const TopoDS_Shape& aSX=aItX.Value();
+ aTypeX=aSX.ShapeType();
+ iTypeX=(Standard_Integer)aTypeX;
+ //
+ if (iTypeX>iLimit) {
+ aLSP.Append(aSX);
+ }
+ }
+ }
+ }// for (; aIt.More(); aIt.Next()) {
+ //
+ // 2. Add them to aC
+ aIt.Initialize(aLSP);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Shape& aS=aIt.Value();
+ if (myImages.HasImage(aS)) {
+ const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
+ aItIm.Initialize(aLSIm);
+ for (; aItIm.More(); aItIm.Next()) {
+ const TopoDS_Shape& aSIm=aItIm.Value();
+ if (aM.Add(aSIm)) {
+ aBB.Add(aC, aSIm);
+ }
+ }
+ }
+ else {
+ if (aM.Add(aS)) {
+ aBB.Add(aC, aS);
+ }
+ }
+ }
+ }// if (myLimitMode) {
+ //modified by NIZNHY-PKV Thu Feb 15 17:09:34 2007t
myShape=aC;
- }
+ }//if (myLimit!=TopAbs_SHAPE) {
//
GEOMAlgo_Builder::PostTreat();
+}
+//=======================================================================
+//function : TreatCompound
+//purpose :
+//=======================================================================
+void TreatCompound(const TopoDS_Shape& aC1,
+ TopTools_ListOfShape& aLSX)
+{
+ Standard_Integer aNbC1;
+ TopAbs_ShapeEnum aType;
+ TopTools_ListOfShape aLC, aLC1;
+ TopTools_ListIteratorOfListOfShape aIt, aIt1;
+ TopoDS_Iterator aItC;
//
+ aLC.Append (aC1);
+ while(1) {
+ aLC1.Clear();
+ aIt.Initialize(aLC);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Shape& aC=aIt.Value(); //C is compound
+ //
+ aItC.Initialize(aC);
+ for (; aItC.More(); aItC.Next()) {
+ const TopoDS_Shape& aS=aItC.Value();
+ aType=aS.ShapeType();
+ if (aType==TopAbs_COMPOUND) {
+ aLC1.Append(aS);
+ }
+ else {
+ aLSX.Append(aS);
+ }
+ }
+ }
+ //
+ aNbC1=aLC1.Extent();
+ if (!aNbC1) {
+ break;
+ }
+ //
+ aLC.Clear();
+ aIt.Initialize(aLC1);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Shape& aSC=aIt.Value();
+ aLC.Append(aSC);
+ }
+ }// while(1)
}
//
// myErrorStatus
//
// 0 - Ok
// 1 - The object is just initialized
-// 2 - DSFiller is failed
+// 2 - PaveFiller is failed
// 10 - No shapes to process
// 30 - SolidBuilder failed
#ifndef _TopAbs_ShapeEnum_HeaderFile
#include <TopAbs_ShapeEnum.hxx>
#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
#ifndef _GEOMAlgo_Builder_HeaderFile
#include <GEOMAlgo_Builder.hxx>
#endif
Standard_EXPORT TopAbs_ShapeEnum Limit() const;
+
+Standard_EXPORT void SetLimitMode(const Standard_Integer aLimitMode) ;
+
+
+Standard_EXPORT Standard_Integer LimitMode() const;
+
//! Adds Tool arguments of the operation as <br>
//! shapes of upper level of container shape theShape <br>
//! ===================================================== <br>
TopTools_ListOfShape myTools;
TopTools_MapOfShape myMapTools;
TopAbs_ShapeEnum myLimit;
+Standard_Integer myLimitMode;
private:
GEOMAlgo_FinderShapeOnQuad.cxx \
GEOMAlgo_GlueAnalyser.cxx \
GEOMAlgo_Gluer.cxx \
+ GEOMAlgo_Gluer1.cxx \
GEOMAlgo_HAlgo.cxx \
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape_0.cxx \
GEOMAlgo_FinderShapeOnQuad.hxx \
GEOMAlgo_GlueAnalyser.hxx \
GEOMAlgo_Gluer.hxx \
+ GEOMAlgo_Gluer.ixx \
+ GEOMAlgo_Gluer.jxx \
+ GEOMAlgo_Gluer1.hxx \
+ GEOMAlgo_Gluer1.ixx \
+ GEOMAlgo_Gluer1.jxx \
GEOMAlgo_HAlgo.hxx \
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfPassKeyListOfShape.hxx \
GEOMAlgo_DataMapIteratorOfDataMapOfPassKeyShapeShape.hxx \
GEOMAlgo_DataMapNodeOfDataMapOfPassKeyShapeShape.hxx \
GEOMAlgo_DataMapOfPassKeyShapeShape.hxx \
- GEOMAlgo_Gluer1.cxx \
- GEOMAlgo_Gluer1.hxx \
- GEOMAlgo_Gluer1.ixx \
- GEOMAlgo_Gluer1.jxx \
GEOMAlgo_IndexedDataMapNodeOfIndexedDataMapOfShapeShapeInfo.hxx \
GEOMAlgo_IndexedDataMapOfShapeShapeInfo.hxx \
GEOMAlgo_KindOfBounds.hxx \
../NMTTools/libNMTTools.la \
$(STDLIB) \
$(CAS_LDPATH) -lTKBO -lTKShHealing -lTKBool -lTKMesh
-
-
-
#include <TopAbs.hxx>
#include <TopExp.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopoDS.hxx>
#include <Precision.hxx>
#include <set>
-using namespace std;
-
-
//=====================================================================================
// function : GetShapeFromIOR()
// purpose : exist also as static method !
#include <TColStd_MapOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
-using namespace std;
-
//================================================================
// Function : getActiveView
// Purpose : Get active view window, returns 0 if no open study frame
showError();
}
else {
+ addSubshapesToStudy(); // add Subshapes if local selection
const int nbObjs = objects.size();
int aNumber = 1;
for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it ) {
return true;
}
+
+//================================================================
+// Function : findObjectInFather
+// Purpose : It should return an object if its founded in study or
+// return Null object if the object is not founded
+//================================================================
+GEOM::GEOM_Object_ptr GEOMBase_Helper::findObjectInFather( GEOM::GEOM_Object_ptr theFather, const QString& theName)
+{
+ SalomeApp_Application* app =
+ dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ _PTR(Study) aDStudy = appStudy->studyDS();
+ string IOR = GEOMBase::GetIORFromObject( theFather );
+ _PTR(SObject) SObj ( aDStudy->FindObjectIOR( IOR ) );
+
+ bool inStudy = false;
+ GEOM::GEOM_Object_var aReturnObject;
+ for (_PTR(ChildIterator) iit (aDStudy->NewChildIterator( SObj )); iit->More() && !inStudy; iit->Next()) {
+ _PTR(SObject) child (iit->Value());
+ QString aChildName = child->GetName().c_str();
+ if (aChildName == theName) {
+ inStudy = true;
+ CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(iit->Value());
+ aReturnObject = GEOM::GEOM_Object::_narrow( corbaObj );
+ }
+ }
+ if (inStudy)
+ return aReturnObject._retn();
+
+ return GEOM::GEOM_Object::_nil();
+}
+
+//================================================================
+// Function : addSubshapesToStudy
+// Purpose : Virtual method to add subshapes if needs
+//================================================================
+void GEOMBase_Helper::addSubshapesToStudy()
+{
+ //Impemented in Dialogs, called from Accept method
+}
+
+//================================================================
+// Function : addSubshapesToFather
+// Purpose : Method to add Father Subshapes to Study if it`s not exist
+//================================================================
+void GEOMBase_Helper::addSubshapesToFather( QMap<QString, GEOM::GEOM_Object_var>& theMap )
+{
+ //GetStudyDS
+ SalomeApp_Application* app =
+ dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ _PTR(Study) aDStudy = appStudy->studyDS();
+
+ GEOM::GEOM_IGroupOperations_var anOp = getGeomEngine()->GetIGroupOperations( getStudyId() );
+
+ for( QMap<QString, GEOM::GEOM_Object_var>::Iterator it = theMap.begin(); it != theMap.end(); it++ )
+ {
+ if ( !anOp->_is_nil() ) {
+ GEOM::GEOM_Object_var aFatherObj = anOp->GetMainShape( it.value() );
+ if ( !aFatherObj->_is_nil() ) {
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather(aFatherObj, it.key().toLatin1().data() );
+
+ //Add Object to study if its not exist
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() )
+ GeometryGUI::GetGeomGen()->AddInStudy(GeometryGUI::ClientStudyToStudy(aDStudy),
+ it.value(), it.key().toLatin1().data(), aFatherObj );
+ }
+ }
+ else {
+ //cout << " anOperations is NULL! " << endl;
+ }
+ }
+}
+
#include CORBA_CLIENT_HEADER(GEOM_Gen)
#include <QString>
+#include <QMap>
#include <list>
// as a top-level object.
virtual const char* getNewObjectName() const;
+ virtual void addSubshapesToStudy();
+
+ GEOM::GEOM_Object_ptr findObjectInFather( GEOM::GEOM_Object_ptr theFather, const QString& theName );
+ //This Metod to find SubObject in theFather Object by Name (theName)
+
+ void addSubshapesToFather( QMap<QString, GEOM::GEOM_Object_var>& theMap );
void SetIsPreview(const bool thePreview) {isPreview = thePreview;}
bool IsPreview() {return isPreview;}
#include <QSpinBox>
#include <QDoubleSpinBox>
-using namespace std;
-
//=================================================================================
// class : GEOMBase_Skeleton()
// purpose : Constructs a GEOMBase_Skeleton which is a child of 'parent', with the
topLayout->setMargin( 0 ); topLayout->setSpacing( 0 );
topLayout->addWidget( myMainFrame );
+ myMainFrame->GroupBoxName->setTitle( tr( "GEOM_RESULT_NAME_GRP" ) );
+ myMainFrame->NameLabel->setText( tr( "GEOM_RESULT_NAME_LBL" ) );
buttonCancel()->setText( tr( "GEOM_BUT_CLOSE" ) );
buttonOk()->setText( tr( "GEOM_BUT_OK" )) ;
buttonApply()->setText( tr( "GEOM_BUT_APPLY" ) );
TopExp::MapShapes(aMainShape, anIndices);
/* Case of only one subshape */
- if (list->length() == 1) {
+ if (list->length() == 1 && list[0] > 0) {
S = anIndices.FindKey(list[0]);
}
else {
#include <OCCViewer_ViewModel.h>
-#include <AIS_ListOfInteractive.hxx>
-#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <SUIT_Session.h>
+#include <SalomeApp_Study.h>
+#include <SALOME_InteractiveObject.hxx>
+
+#include <StdSelect_BRepOwner.hxx>
+#include <SelectMgr_Selection.hxx>
#include <SelectMgr_EntityOwner.hxx>
+#include <SelectMgr_IndexedMapOfOwner.hxx>
+#include <SelectBasics_SensitiveEntity.hxx>
+
#include <AIS_Shape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
+#include <AIS_ListOfInteractive.hxx>
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <TopExp.hxx>
-#include <SelectMgr_IndexedMapOfOwner.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <SelectMgr_Selection.hxx>
-#include <SelectBasics_SensitiveEntity.hxx>
-#include <StdSelect_BRepOwner.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
#include <NCollection_DataMap.hxx>
-#include <SUIT_Session.h>
-#include <SalomeApp_Study.h>
-
//================================================================
// Function : GEOMGUI_OCCSelector
void GEOMGUI_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
{
OCCViewer_Viewer* vw = viewer();
- if ( !vw )
+ if (!vw)
return;
Handle(AIS_InteractiveContext) ic = vw->getAISContext();
-
- if ( ic->HasOpenedContext() )
+
+ if (ic->HasOpenedContext())
+ {
+ TopoDS_Shape curBigShape;
+ TopTools_IndexedMapOfShape subShapes;
+
+ for (ic->InitSelected(); ic->MoreSelected(); ic->NextSelected())
{
- for ( ic->InitSelected(); ic->MoreSelected(); ic->NextSelected() )
- {
- Handle(StdSelect_BRepOwner) anOwner = Handle(StdSelect_BRepOwner)::DownCast(ic->SelectedOwner());
- if ( anOwner.IsNull() )
- continue;
-
- Handle(AIS_InteractiveObject) io = Handle(AIS_InteractiveObject)::DownCast( anOwner->Selectable() );
-
- QString entryStr = entry( io );
- int index = -1;
-
- if ( anOwner->ComesFromDecomposition() ) // == Local Selection
- {
- TopoDS_Shape subShape = anOwner->Shape();
- Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast( io );
- if ( !aisShape.IsNull() )
- {
- TopoDS_Shape bigShape = aisShape->Shape();
-
- TopTools_IndexedMapOfShape subShapes;
- TopExp::MapShapes( bigShape, subShapes );
- index = subShapes.FindIndex( subShape );
- }
- }
-
- if ( !entryStr.isEmpty() )
- {
- LightApp_DataOwner* owner;
- if ( index > -1 ) // Local Selection
- owner = new LightApp_DataSubOwner( entryStr, index );
- else // Global Selection
- owner = new LightApp_DataOwner( entryStr );
-
- aList.append( SUIT_DataOwnerPtr( owner ) );
- }
- }
+ Handle(StdSelect_BRepOwner) anOwner = Handle(StdSelect_BRepOwner)::DownCast(ic->SelectedOwner());
+ if (anOwner.IsNull())
+ continue;
+
+ Handle(AIS_InteractiveObject) io = Handle(AIS_InteractiveObject)::DownCast(anOwner->Selectable());
+
+ QString entryStr = entry(io);
+ int index = -1;
+
+ if (anOwner->ComesFromDecomposition()) // == Local Selection
+ {
+ TopoDS_Shape subShape = anOwner->Shape();
+ Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast(io);
+ if (!aisShape.IsNull())
+ {
+ TopoDS_Shape bigShape = aisShape->Shape();
+
+ if (!bigShape.IsEqual(curBigShape))
+ {
+ curBigShape = bigShape;
+ TopExp::MapShapes(bigShape, subShapes);
+ }
+ index = subShapes.FindIndex(subShape);
+ }
+ }
+
+ if (!entryStr.isEmpty())
+ {
+ LightApp_DataOwner* owner;
+ if (index > -1) // Local Selection
+ owner = new LightApp_DataSubOwner (entryStr, index);
+ else // Global Selection
+ owner = new LightApp_DataOwner (entryStr);
+
+ aList.append(SUIT_DataOwnerPtr(owner));
+ }
}
+ }
else
+ {
+ for (ic->InitCurrent(); ic->MoreCurrent(); ic->NextCurrent())
{
- for ( ic->InitCurrent(); ic->MoreCurrent(); ic->NextCurrent() )
- {
- Handle(AIS_InteractiveObject) io = ic->Current();
-
- QString entryStr = entry( io );
-
- if ( !entryStr.isEmpty() )
- {
- LightApp_DataOwner* owner = new LightApp_DataOwner( entryStr );
- aList.append( SUIT_DataOwnerPtr( owner ) );
- }
- }
+ Handle(AIS_InteractiveObject) io = ic->Current();
+
+ QString entryStr = entry( io );
+
+ if ( !entryStr.isEmpty() )
+ {
+ LightApp_DataOwner* owner = new LightApp_DataOwner( entryStr );
+ aList.append( SUIT_DataOwnerPtr( owner ) );
+ }
}
+ }
+
// add externally selected objects
SUIT_DataOwnerPtrList::const_iterator anExtIter;
- for(anExtIter = mySelectedExternals.begin(); anExtIter != mySelectedExternals.end(); anExtIter++) {
+ for (anExtIter = mySelectedExternals.begin(); anExtIter != mySelectedExternals.end(); anExtIter++)
+ {
aList.append(*anExtIter);
}
-
}
//================================================================
Handle(AIS_InteractiveContext) ic = vw->getAISContext();
- NCollection_DataMap<TCollection_AsciiString, TColStd_IndexedMapOfInteger> indexesMap; // "entry - list_of_int" map for LOCAL selection
+ // "entry - list_of_int" map for LOCAL selection
+#ifndef WNT
+ NCollection_DataMap<TCollection_AsciiString, TColStd_IndexedMapOfInteger> indexesMap;
+#else
+ NCollection_DataMap<Standard_CString, TColStd_IndexedMapOfInteger> indexesMap;
+#endif
+
QMap<QString,int> globalSelMap; // only Key=entry from this map is used. value(int) is NOT used at all.
SelectMgr_IndexedMapOfOwner ownersmap; // map of owners to be selected
-
+
AIS_ListOfInteractive aDispList;
ic->DisplayedObjects( aDispList );
subIndexes.Add( subOwner->index() );
indexesMap.Bind(entry.toLatin1().data(), subIndexes);
}
- }
+ }
else // the owner is NOT a sub owner, maybe it is a DataOwner == GLOBAL selection
{
const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
if ( owner )
{
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
+ SalomeApp_Study* appStudy =
+ dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
QString anEntry = appStudy->referencedToEntry( owner->entry() );
-
+
globalSelMap[anEntry] = 1;
}
}
SelectMgr_IndexedMapOfOwner owners;
getEntityOwners( io, ic, owners ); // get all owners
- for ( int i = 1, n = owners.Extent(); i <= n; i++ )
+ int i, n = owners.Extent();
+
+ // 1. Prepare map of shapes for local selection
+ TopTools_IndexedMapOfShape aMapOfShapes;
+ bool isLocal = false;
+
+ Handle(StdSelect_BRepOwner) anOwner;
+ for (i = 1; i <= n && !isLocal; i++)
{
+ anOwner = Handle(StdSelect_BRepOwner)::DownCast(owners( i ));
+ if (!anOwner.IsNull() && anOwner->HasShape())
+ {
+ if (anOwner->ComesFromDecomposition() || !globalSelMap.contains(entryStr))
+ {
+ // has a local selection
+ Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast( io );
+ if (!aisShape.IsNull() && indexesMap.IsBound(entryStr.toLatin1().data()))
+ {
+ isLocal = true;
+ TopoDS_Shape shape = aisShape->Shape();
+ TopExp::MapShapes(shape, aMapOfShapes);
+ }
+ }
+ }
+ }
- Handle(StdSelect_BRepOwner) anOwner = Handle(StdSelect_BRepOwner)::DownCast(owners( i ));
-
- if ( anOwner.IsNull() || !anOwner->HasShape() )
- continue;
-
- // GLOBAL selection
- if ( !anOwner->ComesFromDecomposition() && globalSelMap.contains( entryStr ) )
- {
- ownersmap.Add( anOwner );
- globalSelMap[entryStr]++;
- }
- // LOCAL selection
- else
- {
- Handle(AIS_Shape) aisShape = Handle(AIS_Shape)::DownCast( io );
-
- if ( !aisShape.IsNull() && indexesMap.IsBound( entryStr.toLatin1().data() ) )
- {
- TopoDS_Shape shape = aisShape->Shape();
- TopTools_IndexedMapOfShape aMapOfShapes;
- TopExp::MapShapes( shape, aMapOfShapes );
- const TColStd_IndexedMapOfInteger& subIndexes = indexesMap.ChangeFind(entryStr.toLatin1().data());
-
- const TopoDS_Shape& aSubShape = anOwner->Shape();
- int aSubShapeId = aMapOfShapes.FindIndex( aSubShape );
-
- // check if the "sub_shape_index" is found in the "map of indexes for this entry",
- // which was passes in the parameter
- if ( subIndexes.Contains( aSubShapeId ) )
- {
- ownersmap.Add( anOwner );
- }
- }
- } // end of local selection
+ // 2. Process all owners
+ for (i = 1; i <= n; i++)
+ {
+ anOwner = Handle(StdSelect_BRepOwner)::DownCast(owners( i ));
+
+ if ( anOwner.IsNull() || !anOwner->HasShape() )
+ continue;
+
+ // GLOBAL selection
+ if ( !anOwner->ComesFromDecomposition() && globalSelMap.contains( entryStr ) )
+ {
+ ownersmap.Add( anOwner );
+ globalSelMap[entryStr]++;
+ }
+ // LOCAL selection
+ else
+ {
+ if (isLocal)
+ {
+ const TColStd_IndexedMapOfInteger& subIndexes =
+ indexesMap.ChangeFind(entryStr.toLatin1().data());
+
+ const TopoDS_Shape& aSubShape = anOwner->Shape();
+ int aSubShapeId = aMapOfShapes.FindIndex( aSubShape );
+
+ // check if the "sub_shape_index" is found in the "map of indexes for this entry",
+ // which was passes in the parameter
+ if ( subIndexes.Contains( aSubShapeId ) )
+ {
+ ownersmap.Add( anOwner );
+ }
+ }
+ } // end of LOCAL selection
} // end of for(owners)
- }// end of if(entry)
- }// end of for(AIS_all_ios)
+ } // end of if(entry)
+ } // end of for(AIS_all_ios)
vw->unHighlightAll( false );
// DO the selection
- for ( int i = 1, n = ownersmap.Extent(); i <= n; i++ )
+ int i = 1, n = ownersmap.Extent();
+ bool isAutoHilight = ic->AutomaticHilight();
+ ic->SetAutomaticHilight(Standard_False); //Bug 17269: for better performance
+ for (; i <= n; i++)
{
Handle(SelectMgr_EntityOwner) owner = ownersmap( i );
if ( owner->State() )
else
ic->AddOrRemoveSelected( Handle(AIS_InteractiveObject)::DownCast(owner->Selectable()), false );
}
+ ic->SetAutomaticHilight(isAutoHilight); //Bug 17269: restore mode
+ if (n < 3000)
+ ic->HilightSelected(/*updateviewer*/Standard_True);
+ else
+ vw->update();
- vw->update();
-
// fill extra selected
mySelectedExternals.clear();
- for ( SUIT_DataOwnerPtrList::const_iterator itr2 = aList.begin(); itr2 != aList.end(); ++itr2 ) {
- const LightApp_DataSubOwner* subOwner = dynamic_cast<const LightApp_DataSubOwner*>( (*itr2).operator->() );
+ for ( SUIT_DataOwnerPtrList::const_iterator itr2 = aList.begin(); itr2 != aList.end(); ++itr2 )
+ {
+ const LightApp_DataSubOwner* subOwner =
+ dynamic_cast<const LightApp_DataSubOwner*>( (*itr2).operator->() );
if ( !subOwner )
{
const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr2).operator->() );
if ( owner )
{
- SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
+ SalomeApp_Study* appStudy =
+ dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
QString anEntry = appStudy->referencedToEntry( owner->entry() );
if (globalSelMap[anEntry] == 1) mySelectedExternals.append(*itr2);
}
return QVariant( typeName( ind ) );
else if ( p == "displaymode" )
return QVariant( displayMode( ind ) );
+ else if ( p == "isAutoColor" )
+ return QVariant( isAutoColor( ind ) );
else
return LightApp_Selection::parameter( ind, p );
}
return false;
}
+bool GEOMGUI_Selection::isAutoColor( const int index ) const
+{
+ GEOM::GEOM_Object_var obj = getObject( index );
+ if ( !CORBA::is_nil( obj ) )
+ return obj->GetAutoColor();
+ return false;
+}
+
QString GEOMGUI_Selection::displayMode( const int index ) const
{
SALOME_View* view = GEOM_Displayer::GetActiveView();
return GEOM::GEOM_Object::_nil();
}
-QString GEOMGUI_Selection:: selectionMode() const
-{
+QString GEOMGUI_Selection::selectionMode() const
+{
SalomeApp_Application* app = (SalomeApp_Application*)(SUIT_Session::session()->activeApplication());
if (app) {
GeometryGUI* aGeomGUI = dynamic_cast<GeometryGUI*>( app->module( "Geometry" ) );
- if(aGeomGUI)
- switch(aGeomGUI->getLocalSelectionMode())
- {
+ if (aGeomGUI) {
+ switch (aGeomGUI->getLocalSelectionMode())
+ {
case GEOM_POINT : return "VERTEX";
case GEOM_EDGE : return "EDGE";
case GEOM_WIRE : return "WIRE";
case GEOM_COMPOUND : return "COMPOUND";
case GEOM_ALLOBJECTS : return "ALL";
default: return "";
- }
+ }
+ }
}
return "";
}
private:
bool isVisible( const int ) const;
+ bool isAutoColor( const int ) const;
QString typeName( const int ) const;
QString displayMode( const int ) const;
QString selectionMode() const;
#include <gp_Pln.hxx>
#include <TColStd_MapOfInteger.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
+#include <TopoDS_Iterator.hxx>
// VTK Includes
#include <vtkActorCollection.h>
Handle(GEOM_AISShape) AISShape;
if (myType == GEOM_VECTOR)
AISShape = new GEOM_AISVector (myShape, "");
- else
+ else {
+ if (myShape.ShapeType() != TopAbs_VERTEX && // fix pb with not displayed points
+ !TopoDS_Iterator(myShape).More())
+ return;// NPAL15983 (Bug when displaying empty groups)
AISShape = new GEOM_AISShape (myShape, "");
+ }
// Temporary staff: vertex must be infinite for correct visualization
AISShape->SetInfiniteState( myShape.Infinite() || myShape.ShapeType() == TopAbs_VERTEX );
AISShape->setIO( anObj );
AISShape->SetOwner( anObj );
}
+
+ // Get color from GEOM_Object
+ SUIT_Session* session = SUIT_Session::session();
+ SUIT_Application* app = session->activeApplication();
+ if ( app )
+ {
+ SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if ( study )
+ {
+ Handle( SALOME_InteractiveObject ) anIO = AISShape->getIO();
+ if ( !anIO.IsNull() )
+ {
+ _PTR(SObject) SO ( study->studyDS()->FindObjectID( anIO->getEntry() ) );
+ if ( SO )
+ {
+ // get CORBA reference to data object
+ CORBA::Object_var object = GeometryGUI::ClientSObjectToObject(SO);
+ if ( !CORBA::is_nil( object ) )
+ {
+ // downcast to GEOM object
+ GEOM::GEOM_Object_var aGeomObject = GEOM::GEOM_Object::_narrow( object );
+ if ( !aGeomObject->_is_nil() )
+ {
+ SALOMEDS::Color aSColor = aGeomObject->GetColor();
+ bool hasColor = aSColor.R > 0 || aSColor.G > 0 || aSColor.B > 0;
+ if( !hasColor && aGeomObject->GetType() == GEOM_GROUP ) // auto color for group
+ {
+ GEOM::GEOM_Gen_var aGeomGen = GeometryGUI::GetGeomGen();
+ GEOM::GEOM_IGroupOperations_var anOperations = aGeomGen->GetIGroupOperations( study->id() );
+ GEOM::GEOM_Object_var aMainObject = anOperations->GetMainShape( aGeomObject );
+ if ( !aMainObject->_is_nil() && aMainObject->GetAutoColor() )
+ {
+ QList<SALOMEDS::Color> aReservedColors;
+
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( app );
+ CORBA::String_var IOR = app->orb()->object_to_string( aMainObject );
+ if ( strcmp(IOR.in(), "") != 0 )
+ {
+ _PTR(Study) aStudy = study->studyDS();
+ _PTR(SObject) aMainSObject( aStudy->FindObjectIOR( string(IOR) ) );
+ _PTR(ChildIterator) it( aStudy->NewChildIterator( aMainSObject ) );
+ for( ; it->More(); it->Next() )
+ {
+ _PTR(SObject) aChildSObject( it->Value() );
+ GEOM::GEOM_Object_var aChildObject =
+ GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aChildSObject));
+ if( CORBA::is_nil( aChildObject ) )
+ continue;
+
+ if( aChildObject->GetType() != GEOM_GROUP )
+ continue;
+
+ SALOMEDS::Color aReservedColor = aChildObject->GetColor();
+ aReservedColors.append( aReservedColor );
+ }
+ }
+
+ aSColor = getUniqueColor( aReservedColors );
+ hasColor = true;
+ }
+ }
+
+ if( hasColor )
+ {
+ Quantity_Color aQuanColor( aSColor.R, aSColor.G, aSColor.B, Quantity_TOC_RGB );
+ AISShape->SetColor( aQuanColor );
+ AISShape->SetShadingColor( aQuanColor );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
// AISShape->SetName(???); ??? necessary to set name ???
occPrs->AddObject( AISShape );
myDisplayMode = resMgr->integerValue( "Geometry", "display_mode", 0 );
return aPrevMode;
}
+
+SALOMEDS::Color GEOM_Displayer::getUniqueColor( const QList<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;
+ QList<SALOMEDS::Color>::const_iterator it = theReservedColors.constBegin();
+ QList<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;
+}
#include <LightApp_Displayer.h>
#include <Aspect_TypeOfMarker.hxx>
+#include <QList>
+
#include <list>
#include <SALOMEconfig.h>
SalomeApp_Study* getStudy() const;
+ static SALOMEDS::Color getUniqueColor( const QList<SALOMEDS::Color>& );
+
protected:
/* internal methods */
/* Builds presentation accordint to the current viewer type */
msgid "ICON_DLG_LINE_2P"
msgstr "line2points.png"
+#LineDlg
+msgid "ICON_DLG_LINE_2F"
+msgstr "line2faces.png"
+
#LineDlg
msgid "ICON_DLG_LINE_EDGE"
msgstr "lineedge.png"
msgid "ICON_DLG_CIRCLE_PV"
msgstr "circlepointvector.png"
+#CircleDlg
+msgid "ICON_DLG_CIRCLE_C2P"
+msgstr "circlecenter2pnts.png"
+
#VectorDlg
msgid "ICON_DLG_VECTOR_2P"
msgstr "vector2points.png"
msgid "ICON_DLG_POINT_EDGE"
msgstr "pointonedge.png"
+#PoinDlg
+msgid "ICON_DLG_POINT_LINES"
+msgstr "point_line_intersection.png"
+
#ArcDlg
msgid "ICON_DLG_ARC"
msgstr "arc.png"
msgid "ICON_DLG_CENTERMASS"
msgstr "centergravity.png"
+#NormaleDlg
+msgid "ICON_DLG_NORMALE"
+msgstr "normale.png"
+
#BoundingBoxDlg
msgid "ICON_DLG_BOUNDING_BOX"
msgstr "bounding.png"
msgid "ICON_DLG_MINDIST"
msgstr "mindist.png"
+#AngleDlg
+msgid "ICON_DLG_ANGLE"
+msgstr "angle.png"
+
#MirrorDlg (MZN: add icons for point and axe)
msgid "ICON_DLG_MIRROR_POINT"
msgstr "mirrorPoint.png"
msgid "ICON_DLG_CHANGE_ORIENTATION"
msgstr "change_orientation.png"
+#ChangeOrientationDlg
+msgid "ICON_DLG_REMOVE_EXTRA_EDGES"
+msgstr "remove_extra_edges.png"
+
#PipeDlg
msgid "ICON_DLG_PIPE"
msgstr "pipe.png"
msgid "ICON_DLG_CHAMFER_EDGE"
msgstr "chamferedge.png"
+#ChamferDlg
+msgid "ICON_DLG_CHAMFER_EDGE_FROM_FACE"
+msgstr "chamferedgefromface.png"
+
+
#FilletDlg
msgid "ICON_DLG_FILLET_FACE"
msgstr "filletface.png"
msgid "ICO_CHANGE_ORIENTATION"
msgstr "change_orientation.png"
+msgid "ICO_REMOVE_EXTRA_EDGES"
+msgstr "remove_extra_edges.png"
+
msgid "ICO_POINT_COORDS"
msgstr "point_coord.png"
msgid "ICO_BASIC_PROPS"
msgstr "basicproperties.png"
-msgid "ICO_MASS_CENTER"
-msgstr "centergravity.png"
+msgid "ICO_NORMALE"
+msgstr "normale.png"
msgid "ICO_INERTIA"
msgstr "axisinertia.png"
msgid "ICO_MIN_DIST"
msgstr "mindist.png"
+msgid "ICO_MEASURE_ANGLE"
+msgstr "angle.png"
+
msgid "ICO_TOLERANCE"
msgstr "tolerance.png"
msgstr "build_solid.png"
msgid "ICO_COMPOUND_SEL_ONLY"
-msgstr "build_compound.png"
\ No newline at end of file
+msgstr "build_compound.png"
<source>ICON_DLG_CHAMFER_EDGE</source>
<translation>chamferedge.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_CHAMFER_EDGE_FROM_FACE</source>
+ <translation>chamferedgefromface.png</translation>
+ </message>
<message>
<source>ICON_DLG_CHAMFER_FACE</source>
<translation>chamferface.png</translation>
<source>ICON_DLG_CHANGE_ORIENTATION</source>
<translation>change_orientation.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_REMOVE_EXTRA_EDGES</source>
+ <translation>remove_extra_edges.png</translation>
+ </message>
<message>
<source>ICON_DLG_CHECKSHAPE</source>
<translation>check.png</translation>
<source>ICON_DLG_CIRCLE_PV</source>
<translation>circlepointvector.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_CIRCLE_C2P</source>
+ <translation>circlecenter2pnts.png</translation>
+ </message>
<message>
<source>ICON_DLG_CLOSECONTOUR</source>
<translation>closecontour.png</translation>
<source>ICON_DLG_LINE_2P</source>
<translation>line2points.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_LINE_2F</source>
+ <translation>line2faces.png</translation>
+ </message>
<message>
<source>ICON_DLG_LINE_EDGE</source>
<translation>lineedge.png</translation>
<source>ICON_DLG_POINT_REF</source>
<translation>point3.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_POINT_LINES</source>
+ <translation>point_line_intersection.png</translation>
+ </message>
<message>
<source>ICON_DLG_POLYLINE</source>
<translation>polyline.png</translation>
<source>ICON_DLG_POSITION</source>
<translation>position.png</translation>
</message>
+ <message>
+ <source>ICON_DLG_NORMALE</source>
+ <translation>normale.png</translation>
+ </message>
+ <message>
+ <source>ICON_DLG_ANGLE</source>
+ <translation>angle.png</translation>
+ </message>
<message>
<source>ICON_DLG_POSITION2</source>
<translation>position2.png</translation>
<source>ICO_PLANE</source>
<translation>plane.png</translation>
</message>
+ <message>
+ <source>ICO_REMOVE_EXTRA_EDGES</source>
+ <translation>remove_extra_edges.png</translation>
+ </message>
+ <message>
+ <source>ICO_NORMALE</source>
+ <translation>normale.png</translation>
+ </message>
+ <message>
+ <source>ICO_MEASURE_ANGLE</source>
+ <translation>angle.png</translation>
+ </message>
<message>
<source>ICO_POINT</source>
<translation>point2.png</translation>
msgid "GEOM_BUT_EXPLODE"
msgstr "&Explode"
+#NOT_FOUND_ANY error from some operations
+msgid "NOT_FOUND_ANY"
+msgstr "Not a single entity has been found"
+
#
#==============================================================================
#
#: GeometryGUI.cxx:3854
msgid "GEOM_REALLY_DELETE"
-msgstr "Do you really want to delete object(s) ?"
+msgstr "Do you really want to delete this %1 object(s):"
#
#==============================================================================
msgid "GEOM_POINT_I"
msgstr "Point %1"
+#Face i
+msgid "GEOM_FACE_I"
+msgstr "Face %1"
+
#Arguments
msgid "GEOM_ARGUMENTS"
msgstr "Arguments"
msgid "GEOM_RADIUS"
msgstr "Radius :"
+#Radius
+msgid "GEOM_CONSTANT_RADIUS"
+msgstr "Radius :"
+
+#Radius
+msgid "GEOM_R1"
+msgstr "R1 :"
+
+#Radius
+msgid "GEOM_R2"
+msgstr "R2 :"
+
#Radius i
msgid "GEOM_RADIUS_I"
msgstr "Radius %1 :"
#Length
msgid "GEOM_LENGTH"
-msgstr "Length is :"
+msgstr "Length :"
#Weight
msgid "GEOM_WEIGHT"
msgid "GEOM_REVERSE"
msgstr "Reverse"
+#Bothway
+msgid "GEOM_BOTHWAY"
+msgstr "Both Directions"
+
#Reverse U
msgid "GEOM_REVERSE_U"
msgstr "Reverse U"
msgid "GEOM_CMASS"
msgstr "Center Of Mass"
+#Normal
+msgid "GEOM_NORMALE"
+msgstr "Normal To A Face"
+
+msgid "GEOM_VECTOR_NORMALE"
+msgstr "Vector_Normal"
+
#Basic Properties
msgid "GEOM_PROPERTIES"
msgstr "Basic Properties"
msgid "GEOM_LINE"
msgstr "Line"
+#Line 1
+msgid "GEOM_LINE1"
+msgstr "Line 1"
+
+#Line 2
+msgid "GEOM_LINE2"
+msgstr "Line 2"
+
#Plane
msgid "GEOM_PLANE"
msgstr "Plane"
msgid "GEOM_D2"
msgstr "D2 :"
+#D
+msgid "GEOM_D"
+msgstr "D :"
+
#
#==============================================================================
#
msgid "GEOM_CHAMFER_EDGES"
msgstr "Chamfer On Edges From Shape"
+#: GeometryGUI_ChamferDlg.cxx:58
+msgid "GEOM_CHAMFER_EDGE"
+msgstr "Chamfer On Selected Edges"
+
+#: GeometryGUI_ChamferDlg.cxx:58
+msgid "SELECTED_EDGE"
+msgstr "Selected Edges"
+
#: GeometryGUI_ChamferDlg.cxx:58
msgid "GEOM_CHAMFER_FACES"
msgstr "Chamfer On Faces From Shape"
msgid "GEOM_CMASS_TITLE"
msgstr "Center Of Mass Construction"
+#: GeometryGUI_NormaleDlg.cxx:57
+msgid "GEOM_NORMALE_TITLE"
+msgstr "Create Normal To A Face"
+
msgid "GEOM_PLANE_SIZE"
msgstr "Size of plane :"
msgid "GEOM_MINDIST_OBJ"
msgstr "Objects And Results"
+#: GeometryGUI_AngleDlg.cxx:82
+msgid "GEOM_MEASURE_ANGLE_TITLE"
+msgstr "Angle Between Two Straight Edges/Lines/Vectors"
+
+#: GeometryGUI_AngleDlg.cxx:86
+msgid "GEOM_MEASURE_ANGLE_ANGLE"
+msgstr "Angle"
+
+#: GeometryGUI_AngleDlg.cxx:90
+msgid "GEOM_MEASURE_ANGLE_OBJ"
+msgstr "Objects And Results"
+
+#: GeometryGUI_AngleDlg.cxx:93
+msgid "GEOM_MEASURE_ANGLE_IS"
+msgstr "Angle in degrees :"
+
#: GeometryGUI_EdgeDlg.cxx:47
msgid "GEOM_EDGE_TITLE"
msgstr "Create An Edge"
#: GeometryGUI_FaceDlg.cxx:78
msgid "GEOM_FACE_FFW"
-msgstr "Face from a closed wire and edge"
+msgstr "Face creation from wires and/or edges"
#: GeometryGUI_FaceDlg.cxx:103
msgid "GEOM_FACE_OPT"
msgid "GEOM_REF_POINT"
msgstr "Point with reference"
+msgid "GEOM_LINE_INTERSECTION"
+msgstr "Point On Lines Intersection"
+
#
#==============================================================================
#
msgid "GEOM_RECONSTRUCTION_LIMIT"
msgstr "Reconstruction Limit"
+msgid "GEOM_KEEP_NONLIMIT_SHAPES"
+msgstr "Keep nonlimit shapes"
+
msgid "GEOM_SUPPRESS_RESULT"
msgstr "Suppress Result"
msgid "GEOM_3_POINTS"
msgstr "3 points"
+msgid "GEOM_CENTER_2POINTS"
+msgstr "Center and two points"
+
msgid "GEOM_POINT1"
msgstr "Point 1"
msgid "GEOM_CHANGE_ORIENTATION"
msgstr "Objects to change orientation"
+msgid "GEOM_REMOVE_EXTRA_EDGES_TITLE"
+msgstr "Remove extra edges"
+
+msgid "GEOM_REMOVE_EXTRA_EDGES"
+msgstr "Object to remove extra edges"
+
msgid "GEOM_BY_PARAMETER"
msgstr "By parameter"
msgid "CHANGE_ORIENTATION_NEW_OBJ_NAME"
msgstr "Invert"
+msgid "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME"
+msgstr "NoExtraEdges"
+
msgid "NON_GEOM_OBJECTS_SELECTED"
msgstr "There are objects selected which do not belong to %1 component."
msgstr "Face"
msgid "STB_FACE"
-msgstr "Build a face"
+msgstr "Build a face from wires and/or edges"
msgid "TOP_SHELL"
msgstr "Build a shell"
msgid "STB_CHANGE_ORIENTATION"
msgstr "Change orientation"
+msgid "TOP_REMOVE_EXTRA_EDGES"
+msgstr "Remove extra edges"
+
+msgid "MEN_REMOVE_EXTRA_EDGES"
+msgstr "Remove extra edges"
+
+msgid "STB_REMOVE_EXTRA_EDGES"
+msgstr "Remove extra edges"
+
msgid "MEN_MEASURES"
msgstr "Measures"
msgid "STB_MASS_CENTER"
msgstr "Compute center of mass"
+msgid "TOP_NORMALE"
+msgstr "Compute normal to a face"
+
+msgid "MEN_NORMALE"
+msgstr "Normal to a face"
+
+msgid "STB_NORMALE"
+msgstr "Compute normal to a face in a point (optional)"
+
msgid "TOP_INERTIA"
msgstr "Compute intertia"
msgid "STB_MIN_DIST"
msgstr "Compute minimum distance"
+msgid "TOP_MEASURE_ANGLE"
+msgstr "Compute angle"
+
+msgid "MEN_MEASURE_ANGLE"
+msgstr "Angle"
+
+msgid "STB_MEASURE_ANGLE"
+msgstr "Compute angle between two lines or linear edges"
+
msgid "TOP_TOLERANCE"
msgstr "Compute tolerance"
msgstr "Shading"
msgid "TOP_DISPLAY_ALL"
-msgstr "Display all"
+msgstr "Show all"
msgid "MEN_DISPLAY_ALL"
-msgstr "Display all"
+msgstr "Show all"
msgid "STB_DISPLAY_ALL"
-msgstr "Display all"
+msgstr "Show all"
msgid "TOP_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
msgid "MEN_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
msgid "STB_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
msgid "TOP_DISPLAY"
-msgstr "Display"
+msgstr "Show"
msgid "MEN_DISPLAY"
-msgstr "Display"
+msgstr "Show"
msgid "STB_DISPLAY"
-msgstr "Display"
+msgstr "Show object(s)"
msgid "TOP_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
msgid "MEN_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
msgid "STB_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
msgid "TOP_ERASE"
-msgstr "Erase"
+msgstr "Hide"
msgid "MEN_ERASE"
-msgstr "Erase"
+msgstr "Hide"
msgid "STB_ERASE"
-msgstr "Erase"
+msgstr "Hide object(s)"
msgid "TOP_POP_RENAME"
msgstr "Rename"
msgid "STB_POP_SHADING"
msgstr "Shading"
+msgid "TOP_POP_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "MEN_POP_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "STB_POP_AUTO_COLOR"
+msgstr "Auto color"
+
+msgid "TOP_POP_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
+msgid "MEN_POP_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
+msgid "STB_POP_DISABLE_AUTO_COLOR"
+msgstr "Disable auto color"
+
msgid "TOP_POP_COLOR"
msgstr "Color"
msgid "NAME_LBL"
msgstr "Name: "
+msgid "GEOM_RESULT_NAME_GRP"
+msgstr "Result name"
+
+msgid "GEOM_RESULT_NAME_LBL"
+msgstr "Name"
+
msgid "GEOM_ERR_GET_ENGINE"
msgstr "Failed to obtain GEOM Engine component. Reload Geometry module and try again."
</message>
<message>
<source>GEOM_FACE_FFW</source>
- <translation>Face from a closed wire and edge</translation>
+ <translation>Face creation from wires and/or edges</translation>
</message>
<message>
<source>GEOM_FACE_OPT</source>
</message>
<message>
<source>GEOM_LENGTH</source>
- <translation>Length is :</translation>
+ <translation>Length :</translation>
</message>
<message>
<source>GEOM_LINE</source>
</message>
<message>
<source>GEOM_REALLY_DELETE</source>
- <translation>Do you really want to delete object(s) ?</translation>
+ <translation>Do you really want to delete this %1 object(s):</translation>
</message>
<message>
<source>GEOM_RECONSTRUCTION_LIMIT</source>
</message>
<message>
<source>MEN_DISPLAY</source>
- <translation>Display</translation>
+ <translation>Show</translation>
</message>
<message>
<source>MEN_DISPLAY_ALL</source>
- <translation>Display all</translation>
+ <translation>Show all</translation>
</message>
<message>
<source>MEN_DISPLAY_MODE</source>
</message>
<message>
<source>MEN_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
<source>MEN_EDGE</source>
</message>
<message>
<source>MEN_ERASE</source>
- <translation>Erase</translation>
+ <translation>Hide</translation>
</message>
<message>
<source>MEN_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
<message>
<source>MEN_EXPLODE</source>
</message>
<message>
<source>STB_DISPLAY</source>
- <translation>Display</translation>
+ <translation>Show object(s)</translation>
</message>
<message>
<source>STB_DISPLAY_ALL</source>
- <translation>Display all</translation>
+ <translation>Show all</translation>
</message>
<message>
<source>STB_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
<source>STB_EDGE</source>
</message>
<message>
<source>STB_ERASE</source>
- <translation>Erase</translation>
+ <translation>Hide object(s)</translation>
</message>
<message>
<source>STB_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
<message>
<source>STB_EXPLODE</source>
</message>
<message>
<source>STB_FACE</source>
- <translation>Build a face</translation>
+ <translation>Build a face from wires and/or edges</translation>
</message>
<message>
<source>STB_FACE_SEL_ONLY</source>
</message>
<message>
<source>TOP_DISPLAY</source>
- <translation>Display</translation>
+ <translation>Show</translation>
</message>
<message>
<source>TOP_DISPLAY_ALL</source>
- <translation>Display all</translation>
+ <translation>Show all</translation>
</message>
<message>
<source>TOP_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
<source>TOP_EDGE</source>
</message>
<message>
<source>TOP_ERASE</source>
- <translation>Erase</translation>
+ <translation>Hide</translation>
</message>
<message>
<source>TOP_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
<message>
<source>TOP_EXPLODE</source>
<source>_S_</source>
<translation>(s)</translation>
</message>
+ <message>
+ <source>NOT_FOUND_ANY</source>
+ <translation>Not a single entity has been found</translation>
+ </message>
+ <message>
+ <source>GEOM_FACE_I</source>
+ <translation>Face %1</translation>
+ </message>
+ <message>
+ <source>GEOM_CONSTANT_RADIUS</source>
+ <translation>Radius :</translation>
+ </message>
+ <message>
+ <source>GEOM_R1</source>
+ <translation>R1 :</translation>
+ </message>
+ <message>
+ <source>GEOM_R2</source>
+ <translation>R2 :</translation>
+ </message>
+ <message>
+ <source>GEOM_BOTHWAY</source>
+ <translation>Both Directions</translation>
+ </message>
+ <message>
+ <source>GEOM_NORMALE</source>
+ <translation>Normal To A Face</translation>
+ </message>
+ <message>
+ <source>GEOM_VECTOR_NORMALE</source>
+ <translation>Vector_Normal</translation>
+ </message>
+ <message>
+ <source>GEOM_LINE1</source>
+ <translation>Line 1</translation>
+ </message>
+ <message>
+ <source>GEOM_LINE2</source>
+ <translation>Line 2</translation>
+ </message>
+ <message>
+ <source>GEOM_D</source>
+ <translation>D :</translation>
+ </message>
+ <message>
+ <source>GEOM_CHAMFER_EDGE</source>
+ <translation>Chamfer On Selected Edges</translation>
+ </message>
+ <message>
+ <source>SELECTED_EDGE</source>
+ <translation>Selected Edges</translation>
+ </message>
+ <message>
+ <source>GEOM_NORMALE_TITLE</source>
+ <translation>Create Normal To A Face</translation>
+ </message>
+ <message>
+ <source>GEOM_MEASURE_ANGLE_TITLE</source>
+ <translation>Angle Between Two Straight Edges/Lines/Vectors</translation>
+ </message>
+ <message>
+ <source>GEOM_MEASURE_ANGLE_ANGLE</source>
+ <translation>Angle</translation>
+ </message>
+ <message>
+ <source>GEOM_MEASURE_ANGLE_OBJ</source>
+ <translation>Objects And Results</translation>
+ </message>
+ <message>
+ <source>GEOM_MEASURE_ANGLE_IS</source>
+ <translation>Angle in degrees :</translation>
+ </message>
+ <message>
+ <source>GEOM_LINE_INTERSECTION</source>
+ <translation>Point On Lines Intersection</translation>
+ </message>
+ <message>
+ <source>GEOM_KEEP_NONLIMIT_SHAPES</source>
+ <translation>Keep nonlimit shapes</translation>
+ </message>
+ <message>
+ <source>GEOM_CENTER_2POINTS</source>
+ <translation>Center and two points</translation>
+ </message>
+ <message>
+ <source>GEOM_REMOVE_EXTRA_EDGES_TITLE</source>
+ <translation>Remove extra edges</translation>
+ </message>
+ <message>
+ <source>GEOM_REMOVE_EXTRA_EDGES</source>
+ <translation>Object to remove extra edges</translation>
+ </message>
+ <message>
+ <source>REMOVE_EXTRA_EDGES_NEW_OBJ_NAME</source>
+ <translation>NoExtraEdges</translation>
+ </message>
+ <message>
+ <source>TOP_REMOVE_EXTRA_EDGES</source>
+ <translation>Remove extra edges</translation>
+ </message>
+ <message>
+ <source>MEN_REMOVE_EXTRA_EDGES</source>
+ <translation>Remove extra edges</translation>
+ </message>
+ <message>
+ <source>STB_REMOVE_EXTRA_EDGES</source>
+ <translation>Remove extra edges</translation>
+ </message>
+ <message>
+ <source>TOP_NORMALE</source>
+ <translation>Compute normal to a face</translation>
+ </message>
+ <message>
+ <source>MEN_NORMALE</source>
+ <translation>Normal to a face</translation>
+ </message>
+ <message>
+ <source>STB_NORMALE</source>
+ <translation>Compute normal to a face in a point (optional)</translation>
+ </message>
+ <message>
+ <source>TOP_MEASURE_ANGLE</source>
+ <translation>Compute angle</translation>
+ </message>
+ <message>
+ <source>MEN_MEASURE_ANGLE</source>
+ <translation>Angle</translation>
+ </message>
+ <message>
+ <source>STB_MEASURE_ANGLE</source>
+ <translation>Compute angle between two lines or linear edges</translation>
+ </message>
+ <message>
+ <source>TOP_POP_AUTO_COLOR</source>
+ <translation>Auto color</translation>
+ </message>
+ <message>
+ <source>MEN_POP_AUTO_COLOR</source>
+ <translation>Auto color</translation>
+ </message>
+ <message>
+ <source>STB_POP_AUTO_COLOR</source>
+ <translation>Auto color</translation>
+ </message>
+ <message>
+ <source>TOP_POP_DISABLE_AUTO_COLOR</source>
+ <translation>Disable auto color</translation>
+ </message>
+ <message>
+ <source>MEN_POP_DISABLE_AUTO_COLOR</source>
+ <translation>Disable auto color</translation>
+ </message>
+ <message>
+ <source>STB_POP_DISABLE_AUTO_COLOR</source>
+ <translation>Disable auto color</translation>
+ </message>
+ <message>
+ <source>GEOM_RESULT_NAME_GRP</source>
+ <translation>Result name</translation>
+ </message>
+ <message>
+ <source>GEOM_RESULT_NAME_LBL</source>
+ <translation>Name</translation>
+ </message>
</context>
<context>
<name>BasicGUI_MarkerDlg</name>
msgid "GEOM_RECONSTRUCTION_LIMIT"
msgstr "Limite de Reconstruction"
+msgid "GEOM_KEEP_NONLIMIT_SHAPES"
+msgstr "Keep nonlimit shapes"
+
msgid "GEOM_SUPPRESS_RESULT"
msgstr "Supprimer le Resultat"
id == 2175 || // POPUP VIEWER - SELECT ONLY - SHELL
id == 2176 || // POPUP VIEWER - SELECT ONLY - SOLID
id == 2177 || // POPUP VIEWER - SELECT ONLY - COMPOUND
- id == 2178 || // POPUP VIEWER - SELECT ONLY - SELECT ALL
+ id == 2178 || // POPUP VIEWER - SELECT ONLY - SELECT ALL
id == 31 || // MENU EDIT - COPY
id == 33 || // MENU EDIT - DELETE
id == 411 || // MENU SETTINGS - ADD IN STUDY
id == 8032 || // POPUP VIEWER - COLOR
id == 8033 || // POPUP VIEWER - TRANSPARENCY
id == 8034 || // POPUP VIEWER - ISOS
+ id == 8035 || // POPUP VIEWER - AUTO COLOR
+ id == 8036 || // POPUP VIEWER - DISABLE AUTO COLOR
id == 804 || // POPUP VIEWER - ADD IN STUDY
id == 901 || // OBJECT BROWSER - RENAME
id == 9024 ) { // OBJECT BROWSER - OPEN
id == 606 || // MENU REPAIR - CLOSE CONTOUR
id == 607 || // MENU REPAIR - REMOVE INTERNAL WIRES
id == 608 || // MENU REPAIR - ADD POINT ON EDGE
- id == 609 || // MENU REPAIR - FREE BOUNDARIES
- id == 610 || // MENU REPAIR - FREE FACES
+ id == 609 || // MENU MEASURE - FREE BOUNDARIES
+ id == 610 || // MENU MEASURE - FREE FACES
id == 611 || // MENU REPAIR - CHANGE ORIENTATION
- id == 602 ) { // MENU REPAIR - GLUE FACES
+ id == 602 || // MENU REPAIR - GLUE FACES
+ id == 612 ) { // MENU REPAIR - REMOVE EXTRA EDGES
#ifndef WNT
library = getLibrary( "libRepairGUI.so" );
#else
else if( id == 701 || // MENU MEASURE - PROPERTIES
id == 702 || // MENU MEASURE - CDG
id == 703 || // MENU MEASURE - INERTIA
+ id == 704 || // MENU MEASURE - NORMALE
id == 7041 || // MENU MEASURE - BOUNDING BOX
id == 7042 || // MENU MEASURE - MIN DISTANCE
+ id == 7043 || // MENU MEASURE - ANGLE
id == 705 || // MENU MEASURE - TOLERANCE
id == 706 || // MENU MEASURE - WHATIS
id == 707 || // MENU MEASURE - CHECK
createGeomAction( 111, "IMPORT", "", (CTRL + Key_I) );
createGeomAction( 121, "EXPORT", "", (CTRL + Key_E) );
- createGeomAction( 33, "DELETE" );
+ createGeomAction( 33, "DELETE", "", Qt::Key_Delete );
createGeomAction( 4011, "POINT" );
createGeomAction( 4012, "LINE" );
createGeomAction( 609, "CHECK_FREE_BNDS" );
createGeomAction( 610, "CHECK_FREE_FACES" );
createGeomAction( 611, "CHANGE_ORIENTATION" );
+ createGeomAction( 612, "REMOVE_EXTRA_EDGES" );
createGeomAction( 708, "POINT_COORDS" );
createGeomAction( 701, "BASIC_PROPS" );
createGeomAction( 702, "MASS_CENTER" );
createGeomAction( 703, "INERTIA" );
+ createGeomAction( 704, "NORMALE" );
createGeomAction( 7041, "BND_BOX" );
createGeomAction( 7042, "MIN_DIST" );
+ createGeomAction( 7043, "MEASURE_ANGLE" );
createGeomAction( 705, "TOLERANCE" );
createGeomAction( 706, "WHAT_IS" );
createGeomAction( 707, "CHECK" );
createGeomAction( 7072, "CHECK_COMPOUND" );
+#ifdef _DEBUG_ // PAL16821
createGeomAction( 5103, "CHECK_GEOMETRY" );
-
+#endif
createGeomAction( 412, "SHADING_COLOR" );
createGeomAction( 211, "SHADING" );
createGeomAction( 213, "DISPLAY_ONLY" );
createGeomAction( 215, "ERASE" );
- createGeomAction( 901, "POP_RENAME" );
+ createGeomAction( 901, "POP_RENAME", "", Qt::Key_F2 );
createGeomAction( 80311, "POP_WIREFRAME", "", 0, true );
createGeomAction( 80312, "POP_SHADING", "", 0, true );
createGeomAction( 8032, "POP_COLOR" );
createGeomAction( 8033, "POP_TRANSPARENCY" );
createGeomAction( 8034, "POP_ISOS" );
+ createGeomAction( 8035, "POP_AUTO_COLOR" );
+ createGeomAction( 8036, "POP_DISABLE_AUTO_COLOR" );
createGeomAction( 8001, "POP_CREATE_GROUP" );
// make wireframe-shading items to be exclusive (only one at a time is selected)
createMenu( 601, repairId, -1 );
createMenu( 602, repairId, -1 );
createMenu( 608, repairId, -1 );
- createMenu( 609, repairId, -1 );
- createMenu( 610, repairId, -1 );
+ //createMenu( 609, repairId, -1 );
+ //createMenu( 610, repairId, -1 );
createMenu( 611, repairId, -1 );
+ createMenu( 612, repairId, -1 );
int measurId = createMenu( tr( "MEN_MEASURES" ), -1, -1, 10 );
createMenu( 708, measurId, -1 );
createMenu( separator(), measurId, -1 );
createMenu( 702, measurId, -1 );
createMenu( 703, measurId, -1 );
+ createMenu( 704, measurId, -1 );
+ // NPAL16572: move "Check free boundaries" and "Check free faces" from "Repair" to "Measure"
+ createMenu( separator(), measurId, -1 );
+ createMenu( 609, measurId, -1 );
+ createMenu( 610, measurId, -1 );
+ // NPAL16572 END
createMenu( separator(), measurId, -1 );
int dimId = createMenu( tr( "MEN_DIMENSIONS" ), measurId, -1 );
createMenu( 7041, dimId, -1 );
createMenu( 7042, dimId, -1 );
+ createMenu( 7043, dimId, -1 );
createMenu( separator(), measurId, -1 );
createMenu( 705, measurId, -1 );
createMenu( 707, measurId, -1 );
createMenu( 7072, measurId, -1 );
+#ifdef _DEBUG_ // PAL16821
int toolsId = createMenu( tr( "MEN_TOOLS" ), -1, -1, 50 );
createMenu( separator(), toolsId, -1 );
createMenu( 5103, toolsId, -1 );
-
+#endif
//int prefId = createMenu( tr( "MEN_PREFERENCES" ), -1, -1, 50 );
//createMenu( separator(), prefId, -1 );
//int geomId = createMenu( tr( "MEN_PREFERENCES_GEOM" ), prefId, -1 );
QString clientOCCorVTK = "(client='OCCViewer' or client='VTKViewer')";
QString clientOCCorVTK_AndSomeVisible = clientOCCorVTK + " and selcount>0 and isVisible";
+ QString clientOCCorVTKorOB = "(client='ObjectBrowser' or client='OCCViewer' or client='VTKViewer')";
+ QString clientOCCorVTKorOB_AndSomeVisible = clientOCCorVTKorOB + " and selcount>0 and isVisible";
+
+ QString autoColorPrefix =
+ "(client='ObjectBrowser' or client='OCCViewer') and type='Shape' and selcount=1 and isOCC=true";
+
QtxPopupMgr* mgr = popupMgr();
mgr->insert( action( 901 ), -1, -1 ); // rename
mgr->setRule( action( 901 ), QString("$type in {'Shape' 'Group'} and selcount=1"), QtxPopupMgr::VisibleRule );
+ mgr->insert( action( 33 ), -1, -1 ); // delete
+ mgr->setRule( action( 33 ), QString("$type in {'Shape' 'Group'} and selcount>0"), QtxPopupMgr::VisibleRule );
mgr->insert( action( 8001 ), -1, -1 ); // create group
mgr->setRule( action( 8001 ), QString("client='ObjectBrowser' and type='Shape' and selcount=1 and isOCC=true"), QtxPopupMgr::VisibleRule );
mgr->insert( action( 801 ), -1, -1 ); // edit group
mgr->setRule( action( 80312 ), clientOCCorVTK + " and displaymode='Shading'", QtxPopupMgr::ToggleRule );
mgr->insert( separator(), -1, -1 ); // -----------
mgr->insert( action( 8032 ), -1, -1 ); // color
- mgr->setRule( action( 8032 ), clientOCCorVTK_AndSomeVisible + " and ($component={'GEOM'})", QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( 8032 ), clientOCCorVTKorOB_AndSomeVisible + " and ($component={'GEOM'})", QtxPopupMgr::VisibleRule );
mgr->insert( action( 8033 ), -1, -1 ); // transparency
mgr->setRule( action( 8033 ), clientOCCorVTK_AndSomeVisible, QtxPopupMgr::VisibleRule );
mgr->insert( action( 8034 ), -1, -1 ); // isos
- mgr->setRule( action( 8034 ), QString("client='OCCViewer' and selcount>0 and isVisible"), QtxPopupMgr::VisibleRule );
+ mgr->setRule( action( 8034 ), clientOCCorVTK_AndSomeVisible + " and selcount>0 and isVisible", QtxPopupMgr::VisibleRule );
+ mgr->insert( separator(), -1, -1 ); // -----------
+ mgr->insert( action( 8035 ), -1, -1 ); // auto color
+ mgr->setRule( action( 8035 ), autoColorPrefix + " and isAutoColor=false", QtxPopupMgr::VisibleRule );
+ mgr->insert( action( 8036 ), -1, -1 ); // disable auto color
+ mgr->setRule( action( 8036 ), autoColorPrefix + " and isAutoColor=true", QtxPopupMgr::VisibleRule );
mgr->insert( separator(), -1, -1 ); // -----------
mgr->setRule( action( 214 ), clientOCCorVTK, QtxPopupMgr::VisibleRule );
QString selectOnly = "(client='OCCViewer' or client='VTKViewer') and (selcount=0)";
-
+
int selectolnyId = mgr->insert( tr("MEN_SELECT_ONLY"), -1, -1); //select only menu
mgr->insert( action(2171), selectolnyId, -1); //Vertex
mgr->setRule(action(2171), selectOnly, QtxPopupMgr::VisibleRule);
mgr->insert( action(2178), selectolnyId, -1); //Clear selection filter
mgr->setRule(action(2178), selectOnly, QtxPopupMgr::VisibleRule);
mgr->setRule(action(2178), selectOnly + " and selectionmode='ALL'", QtxPopupMgr::ToggleRule);
-
mgr->insert( action( 213 ), -1, -1 ); // display only
mgr->setRule( action( 213 ), rule.arg( types ).arg( "true" ), QtxPopupMgr::VisibleRule );
mgr->insert( separator(), -1, -1 );
myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast<SVTK_Viewer*>( vm->getViewModel() ), sm ) );
// disable OCC selectors
- getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() );
+ //getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() );
QListIterator<GEOMGUI_OCCSelector*> itOCCSel( myOCCSelectors );
while ( itOCCSel.hasNext() )
if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() )
sr->setEnabled(true);
-
+
// disable VTK selectors
- getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() );
+ //getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() );
QListIterator<LightApp_VTKSelector*> itVTKSel( myVTKSelectors );
while ( itVTKSel.hasNext() )
if ( LightApp_VTKSelector* sr = itVTKSel.next() )
return;
const bool ViewOCC = ( win->getViewManager()->getType() == OCCViewer_Viewer::Type() );
-// const bool ViewVTK = ( win->getViewManager()->getType() == SVTK_Viewer::Type() );
+ const bool ViewVTK = ( win->getViewManager()->getType() == SVTK_Viewer::Type() );
// disable non-OCC viewframe menu commands
// action( 404 )->setEnabled( ViewOCC ); // SKETCHER
action( 607 )->setEnabled( ViewOCC ); // RemoveInternalWires
action( 608 )->setEnabled( ViewOCC ); // AddPointOnEdge
// action( 609 )->setEnabled( ViewOCC ); // Free boundaries
+// action( 413 )->setEnabled( ViewOCC || ViewVTK ); // Isos Settings
action( 800 )->setEnabled( ViewOCC ); // Create Group
action( 801 )->setEnabled( ViewOCC ); // Edit Group
QString GeometryGUI::engineIOR() const
{
- QString anIOR = QString::null;
if ( !CORBA::is_nil( GetGeomGen() ) )
- {
- CORBA::String_var objStr = getApp()->orb()->object_to_string( GetGeomGen() );
- anIOR = QString( objStr.in() );
-// free( objStr ); ASV : 26.07.06 : commented out because it raises exception and blocks application
- }
- return anIOR;
+ return QString( getApp()->orb()->object_to_string( GetGeomGen() ) );
+ return "";
}
LightApp_Selection* GeometryGUI::createSelection( const QString& client, LightApp_SelectionMgr* mgr ) const
#include <TopExp.hxx>
#include <GC_MakeArcOfCircle.hxx>
+#include <GC_MakeCircle.hxx>
#include <Standard_ConstructionError.hxx>
#include <Precision.hxx>
#include <gp_Pnt.hxx>
#include <gp_Vec.hxx>
-#include <gce_MakeCirc.hxx>
-#include <gce_MakePln.hxx>
-#include <ElCLib.hxx>
+#include <gp_Circ.hxx>
#include <Geom_Circle.hxx>
-#include <Geom_TrimmedCurve.hxx>
-
#include "utilities.h"
+
//=======================================================================
//function : GetID
//purpose :
Standard_Integer aType = aFunction->GetType();
TopoDS_Shape aShape;
- if ((aType == CIRC_ARC_THREE_PNT)||(aType == CIRC_ARC_CENTER)) {
+ if ((aType == CIRC_ARC_THREE_PNT) || (aType == CIRC_ARC_CENTER))
+ {
Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1();
Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2();
Handle(GEOM_Function) aRefPoint3 = aCI.GetPoint3();
+
TopoDS_Shape aShapePnt1 = aRefPoint1->GetValue();
TopoDS_Shape aShapePnt2 = aRefPoint2->GetValue();
TopoDS_Shape aShapePnt3 = aRefPoint3->GetValue();
+
if (aShapePnt1.ShapeType() == TopAbs_VERTEX &&
aShapePnt2.ShapeType() == TopAbs_VERTEX &&
- aShapePnt3.ShapeType() == TopAbs_VERTEX) {
+ aShapePnt3.ShapeType() == TopAbs_VERTEX)
+ {
gp_Pnt aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt1));
gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt2));
gp_Pnt aP3 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt3));
+
if (aP1.Distance(aP2) < gp::Resolution() ||
aP1.Distance(aP3) < gp::Resolution() ||
aP2.Distance(aP3) < gp::Resolution())
Standard_ConstructionError::Raise("Arc creation aborted: coincident points given");
+
if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular()))
Standard_ConstructionError::Raise("Arc creation aborted: points lay on one line");
- if (aType == CIRC_ARC_THREE_PNT){
- GC_MakeArcOfCircle arc(aP1, aP2, aP3);
- aShape = BRepBuilderAPI_MakeEdge(arc).Edge();
+ if (aType == CIRC_ARC_THREE_PNT)
+ {
+ GC_MakeArcOfCircle arc (aP1, aP2, aP3);
+ aShape = BRepBuilderAPI_MakeEdge(arc).Edge();
}
- if (aType == CIRC_ARC_CENTER){
- Standard_Real Rad = aP1.Distance(aP2);
- gce_MakeCirc MC(aP1,gce_MakePln(aP1, aP2, aP3).Value(),Rad);
+ else // CIRC_ARC_CENTER
+ {
Standard_Boolean sense = aCI.GetSense();
- if (MC.IsDone()) {
- const gp_Circ& Circ = MC.Value();
- Standard_Real Alpha1 = ElCLib::Parameter(Circ,aP2);
- Standard_Real Alpha2 = ElCLib::Parameter(Circ,aP3);
- Handle(Geom_Circle) C = new Geom_Circle(Circ);
- Handle(Geom_TrimmedCurve) TheArc;
- if (!sense)
- TheArc= new Geom_TrimmedCurve(C,Alpha1,Alpha2,false);
- if (sense)
- TheArc= new Geom_TrimmedCurve(C,Alpha2,Alpha1,false);
- aShape = BRepBuilderAPI_MakeEdge(TheArc).Edge();
- }
+
+ Standard_Real aRad = aP1.Distance(aP2);
+ gp_Vec aV1 (aP1, aP2);
+ gp_Vec aV2 (aP1, aP3);
+ gp_Vec aN = aV1 ^ aV2;
+
+ if (sense)
+ aN = -aN;
+
+ GC_MakeCircle circ (aP1, aN, aRad);
+ Handle(Geom_Circle) aGeomCirc = circ.Value();
+
+ GC_MakeArcOfCircle arc (aGeomCirc->Circ(), aP2, aP3, Standard_True);
+ aShape = BRepBuilderAPI_MakeEdge(arc).Edge();
}
}
} else {
aFunction->SetValue(aShape);
log.SetTouched(Label());
- MESSAGE("Out of building step ...");
- return 1;
+ return 1;
}
#include <GEOM_Function.hxx>
#include <ShHealOper_Sewing.hxx>
-#include <NMTAlgo_Splitter1.hxx>
+//#include <NMTAlgo_Splitter1.hxx>
+#include <GEOMAlgo_Gluer.hxx>
#include <BlockFix_BlockFixAPI.hxx>
#include "utilities.h"
TopoDS_Shape aCompound = anArgs(1);
// Glue coincident faces and edges (with Partition algorithm).
- NMTAlgo_Splitter1 PS;
- PS.AddShape(aCompound);
- PS.Compute();
- PS.SetRemoveWebs(Standard_False);
-// PS.Build(aCompound.ShapeType());
- PS.Build(TopAbs_SOLID);
-
- aShape = PS.Shape();
+ //NMTAlgo_Splitter1 PS;
+ //PS.AddShape(aCompound);
+ //PS.Compute();
+ //PS.SetRemoveWebs(Standard_False);
+ // PS.Build(aCompound.ShapeType());
+ //PS.Build(TopAbs_SOLID);
+ //aShape = PS.Shape();
+
+ GEOMAlgo_Gluer aGluer;
+ aGluer.SetShape(aCompound);
+ aGluer.SetCheckGeometry(Standard_True);
+ aGluer.Perform();
+ aShape = aGluer.Result();
+
+
} else {
}
}
// 5. Glue Faces
- aShape = GEOMImpl_GlueDriver::GlueFaces(aComp, Precision::Confusion());
+ aShape = GEOMImpl_GlueDriver::GlueFaces(aComp, Precision::Confusion(), Standard_False);
}
} else if (aType == BLOCK_MULTI_TRANSFORM_1D ||
}
// Glue faces of the multi-block
- aShape = GEOMImpl_GlueDriver::GlueFaces(aMulti, aTol);
+ aShape = GEOMImpl_GlueDriver::GlueFaces(aMulti, aTol, Standard_False);
} else { // unknown function type
return 0;
}
if (isCompound) {
+ /*
TopTools_ListOfShape listShapeC;
AddSimpleShapes(C, listShapeC);
TopTools_ListIteratorOfListOfShape itSubC (listShapeC);
aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion());
else
aShape = C;
+ */
+
+ // As GlueFaces has been improved to keep all kind of shapes
+ TopExp_Explorer anExp (C, TopAbs_VERTEX);
+ if (anExp.More())
+ aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True);
+ else
+ aShape = C;
}
}
}
if (isCompound) {
+ /*
TopTools_ListOfShape listShapeC;
AddSimpleShapes(C, listShapeC);
TopTools_ListIteratorOfListOfShape itSubC (listShapeC);
aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion());
else
aShape = C;
+ */
+
+ // As GlueFaces has been improved to keep all kind of shapes
+ TopExp_Explorer anExp (C, TopAbs_VERTEX);
+ if (anExp.More())
+ aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True);
+ else
+ aShape = C;
}
}
// perform FUSE operation
else if (aType == BOOLEAN_FUSE) {
+ /* Fix for NPAL15379: refused
// Check arguments
TopTools_ListOfShape listShape1, listShape2;
AddSimpleShapes(aShape1, listShape1);
}
}
}
+ */
// Perform
BRepAlgoAPI_Fuse BO (aShape1, aShape2);
}
}
- if (isCompound)
- aShape = C;
+ if (isCompound) {
+ //aShape = C;
+
+ // As GlueFaces has been improved to keep all kind of shapes
+ TopExp_Explorer anExp (C, TopAbs_VERTEX);
+ if (anExp.More())
+ aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True);
+ else
+ aShape = C;
+ }
}
// UNKNOWN operation
M.FindFromIndex(i).Extent() == 2)
fill.Add(aD, E, F);
}
- } else if (aType == CHAMFER_SHAPE_EDGE) {
+ }else if (aType == CHAMFER_SHAPE_EDGE || aType == CHAMFER_SHAPE_EDGE_AD) {
// chamfer on edges, common to two faces, with D1 on the first face
- double aD1 = aCI.GetD1();
- double aD2 = aCI.GetD2();
+
TopoDS_Shape aFace1, aFace2;
if (GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace1(), aFace1) &&
- GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace2(), aFace2)) {
- TopoDS_Face F = TopoDS::Face(aFace1);
-
- // fill map of edges of the second face
- TopTools_MapOfShape aMap;
- TopExp_Explorer Exp2 (aFace2, TopAbs_EDGE);
- for (; Exp2.More(); Exp2.Next()) {
- aMap.Add(Exp2.Current());
+ GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace2(), aFace2))
+ {
+ TopoDS_Face F = TopoDS::Face(aFace1);
+
+ // fill map of edges of the second face
+ TopTools_MapOfShape aMap;
+ TopExp_Explorer Exp2 (aFace2, TopAbs_EDGE);
+ for (; Exp2.More(); Exp2.Next()) {
+ aMap.Add(Exp2.Current());
+ }
+
+ // find edges of the first face, common with the second face
+ TopExp_Explorer Exp (aFace1, TopAbs_EDGE);
+ for (; Exp.More(); Exp.Next()) {
+ if (aMap.Contains(Exp.Current())) {
+ TopoDS_Edge E = TopoDS::Edge(Exp.Current());
+ if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E))
+ {
+ if ( aType == CHAMFER_SHAPE_EDGE )
+ {
+ double aD1 = aCI.GetD1();
+ double aD2 = aCI.GetD2();
+ fill.Add(aD1, aD2, E, F);
+ }
+ else
+ {
+ double aD = aCI.GetD();
+ double anAngle = aCI.GetAngle();
+ if ( (anAngle > 0) && (anAngle < (Standard_PI/2)) )
+ fill.AddDA(aD, anAngle, E, F);
+ }
+ }
+ }
+ }
}
-
- // find edges of the first face, common with the second face
- TopExp_Explorer Exp (aFace1, TopAbs_EDGE);
- for (; Exp.More(); Exp.Next()) {
- if (aMap.Contains(Exp.Current())) {
- TopoDS_Edge E = TopoDS::Edge(Exp.Current());
- if (!BRepTools::IsReallyClosed(E, F) && !BRep_Tool::Degenerated(E))
- fill.Add(aD1, aD2, E, F);
- }
- }
- }
- } else if (aType == CHAMFER_SHAPE_FACES) {
+ }
+ else if (aType == CHAMFER_SHAPE_FACES || aType == CHAMFER_SHAPE_FACES_AD) {
// chamfer on all edges of the selected faces, with D1 on the selected face
// (on first selected face, if the edge belongs to two selected faces)
- double aD1 = aCI.GetD1();
- double aD2 = aCI.GetD2();
+
int aLen = aCI.GetLength();
int ind = 1;
TopTools_MapOfShape aMap;
for (; ind <= aLen; ind++)
{
TopoDS_Shape aShapeFace;
- if (GEOMImpl_ILocalOperations::GetSubShape
- (aShapeBase, aCI.GetFace(ind), aShapeFace)) {
- TopoDS_Face F = TopoDS::Face(aShapeFace);
- TopExp_Explorer Exp (F, TopAbs_EDGE);
- for (; Exp.More(); Exp.Next()) {
- if (!aMap.Contains(Exp.Current())) {
- TopoDS_Edge E = TopoDS::Edge(Exp.Current());
- if (!BRepTools::IsReallyClosed(E, F) &&
- !BRep_Tool::Degenerated(E) &&
- M.FindFromKey(E).Extent() == 2)
- fill.Add(aD1, aD2, E, F);
- }
- }
- }
+ if (GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetFace(ind), aShapeFace))
+ {
+ TopoDS_Face F = TopoDS::Face(aShapeFace);
+ TopExp_Explorer Exp (F, TopAbs_EDGE);
+ for (; Exp.More(); Exp.Next()) {
+ if (!aMap.Contains(Exp.Current()))
+ {
+ TopoDS_Edge E = TopoDS::Edge(Exp.Current());
+ if (!BRepTools::IsReallyClosed(E, F) &&
+ !BRep_Tool::Degenerated(E) &&
+ M.FindFromKey(E).Extent() == 2)
+ if (aType == CHAMFER_SHAPE_FACES)
+ {
+ double aD1 = aCI.GetD1();
+ double aD2 = aCI.GetD2();
+ fill.Add(aD1, aD2, E, F);
+ }
+ else
+ {
+ double aD = aCI.GetD();
+ double anAngle = aCI.GetAngle();
+ if ( (anAngle > 0) && (anAngle < (Standard_PI/2)) )
+ fill.AddDA(aD, anAngle, E, F);
+ }
+ }
+ }
+ }
}
- } else {
+ }
+else if (aType == CHAMFER_SHAPE_EDGES || aType == CHAMFER_SHAPE_EDGES_AD)
+ {
+ // chamfer on selected edges with lenght param D1 & D2.
+
+ int aLen = aCI.GetLength();
+ int ind = 1;
+ TopTools_MapOfShape aMap;
+ TopTools_IndexedDataMapOfShapeListOfShape M;
+ GEOMImpl_Block6Explorer::MapShapesAndAncestors(aShapeBase, TopAbs_EDGE, TopAbs_FACE, M);
+ for (; ind <= aLen; ind++)
+ {
+ TopoDS_Shape aShapeEdge;
+ if (GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetEdge(ind), aShapeEdge))
+ {
+ TopoDS_Edge E = TopoDS::Edge(aShapeEdge);
+ const TopTools_ListOfShape& aFacesList = M.FindFromKey(E);
+ TopoDS_Face F = TopoDS::Face( aFacesList.First() );
+ if (aType == CHAMFER_SHAPE_EDGES)
+ {
+ double aD1 = aCI.GetD1();
+ double aD2 = aCI.GetD2();
+ fill.Add(aD1, aD2, E, F);
+ }
+ else
+ {
+ double aD = aCI.GetD();
+ double anAngle = aCI.GetAngle();
+ if ( (anAngle > 0) && (anAngle < (Standard_PI/2)) )
+ fill.AddDA(aD, anAngle, E, F);
+ }
+ }
+ }
+ }
+ else {
}
fill.Build();
}
}
}
+ else if (aType == CIRCLE_CENTER_TWO_PNT) {
+ Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1();
+ Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2();
+ Handle(GEOM_Function) aRefPoint3 = aCI.GetPoint3();
+ TopoDS_Shape aShapePnt1 = aRefPoint1->GetValue();
+ TopoDS_Shape aShapePnt2 = aRefPoint2->GetValue();
+ TopoDS_Shape aShapePnt3 = aRefPoint3->GetValue();
+ if (aShapePnt1.ShapeType() == TopAbs_VERTEX && aShapePnt2.ShapeType() == TopAbs_VERTEX &&
+ aShapePnt3.ShapeType() == TopAbs_VERTEX)
+ {
+ gp_Pnt aP1 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt1));
+ gp_Pnt aP2 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt2));
+ gp_Pnt aP3 = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt3));
+
+ if (aP1.Distance(aP2) < gp::Resolution() ||
+ aP1.Distance(aP3) < gp::Resolution() ||
+ aP2.Distance(aP3) < gp::Resolution())
+ Standard_ConstructionError::Raise("Circle creation aborted: coincident points given");
+ if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular()))
+ Standard_ConstructionError::Raise("Circle creation aborted: points lay on one line");
+ double x, y, z, x1, y1, z1, x2, y2, z2, dx, dy, dz, dx2, dy2, dz2, dx3, dy3, dz3, aRadius;
+ //Calculations for Radius
+ x = aP1.X(); y = aP1.Y(); z = aP1.Z();
+ x1 = aP2.X(); y1 = aP2.Y(); z1 = aP2.Z();
+ dx = x1 - x;
+ dy = y1 - y;
+ dz = z1 - z;
+ aRadius = sqrt(dx*dx + dy*dy + dz*dz);
+ //Calculations for Plane Vector
+ x2 = aP3.X(); y2 = aP3.Y(); z2 = aP3.Z();
+ dx2 = x2 - x; dy2 = y2 - y; dz2 = z2 - z;
+ dx3 = ((dy*dz2) - (dy2*dz))/100;
+ dy3 = ((dx2*dz) - (dx*dz2))/100;
+ dz3 = ((dx*dy2) - (dx2*dy))/100;
+ //Make Plane Vector
+ gp_Dir aDir ( dx3, dy3, dz3 );
+ //Make Circle
+ gp_Ax2 anAxes (aP1, aDir);
+ gp_Circ aCirc (anAxes, aRadius);
+ aShape = BRepBuilderAPI_MakeEdge(aCirc).Edge();
+ }
+ }
else if (aType == CIRCLE_THREE_PNT) {
Handle(GEOM_Function) aRefPoint1 = aCI.GetPoint1();
Handle(GEOM_Function) aRefPoint2 = aCI.GetPoint2();
Standard_ConstructionError::Raise("Circle creation aborted: points lay on one line");
Handle(Geom_Circle) aCirc = GC_MakeCircle(aP1, aP2, aP3).Value();
aShape = BRepBuilderAPI_MakeEdge(aCirc).Edge();
- }
+ }
}
- else {
+ else {
}
if (aShape.IsNull()) return 0;
#include <TopoDS_Shape.hxx>
#include <TCollection_AsciiString.hxx>
-#include <Standard_ConstructionError.hxx>
-
-#include <NCollection_DataMap.hxx>
+#include <Standard_Failure.hxx>
#ifdef WNT
#include <windows.h>
if ( anExportLib )
fp = (funcPoint)GetProc( anExportLib, "Export" );
- if ( !fp )
- return 0;
+ if ( !fp ) {
+ TCollection_AsciiString aMsg = aFormatName;
+ aMsg += " plugin was not installed";
+ Standard_Failure::Raise(aMsg.ToCString());
+ }
// perform the export
int res = fp( aShape, aFileName, aFormatName );
// unload plugin library
- //UnLoadLib( anExportLib );
+ // commented by enk:
+ // the bug was occured: using ACIS Import/Export plugin
+ // UnLoadLib( anExportLib );
+
if ( res )
log.SetTouched(Label());
TopoDS_Edge E = TopoDS::Edge(Exp.Current());
fill.Add(E);
}
- } else if (aType == FILLET_SHAPE_EDGES) {
+ } else if (aType == FILLET_SHAPE_EDGES || aType == FILLET_SHAPE_EDGES_2R) {
int aLen = aCI.GetLength();
int ind = 1;
for (; ind <= aLen; ind++) {
TopoDS_Shape aShapeEdge;
if (GEOMImpl_ILocalOperations::GetSubShape
(aShapeBase, aCI.GetEdge(ind), aShapeEdge)) {
- fill.Add(TopoDS::Edge(aShapeEdge));
+ fill.Add(TopoDS::Edge(aShapeEdge));
}
}
- } else if (aType == FILLET_SHAPE_FACES) {
+ } else if (aType == FILLET_SHAPE_FACES || aType == FILLET_SHAPE_FACES_2R) {
int aLen = aCI.GetLength();
int ind = 1;
for (; ind <= aLen; ind++) {
}
} else {
}
+ if (aType == FILLET_SHAPE_FACES || aType == FILLET_SHAPE_EDGES || aType == FILLET_SHAPE_ALL)
+ for (int i = 1; i <= fill.NbContours(); i++)
+ fill.SetRadius(aCI.GetR(), i, 1);
+ else if (aType == FILLET_SHAPE_FACES_2R || aType == FILLET_SHAPE_EDGES_2R)
+ for (int i = 1; i <= fill.NbContours(); i++)
+ {
+ fill.SetRadius(aCI.GetR1(), aCI.GetR2(), i, 1);
+ }
- for (int i = 1; i <= fill.NbContours(); i++) {
- fill.SetRadius(aCI.GetR(), i, 1);
- }
fill.Build();
if (!fill.IsDone()) {
StdFail_NotDone::Raise("Fillet can't be computed on the given shape with the given radius");
//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFacesWithWarnings (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
TCollection_AsciiString& theWarning) const
{
Standard_Integer iErr, iWrn;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
aGluer.SetCheckGeometry(Standard_True);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
//purpose :
//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFaces (const TopoDS_Shape& theShape,
- const Standard_Real theTolerance)
+ const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids)
{
Standard_Integer iErr, iWrn;
TopoDS_Shape aRes;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
aGluer.SetCheckGeometry(Standard_True);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
//=======================================================================
TopoDS_Shape GEOMImpl_GlueDriver::GlueFacesByList (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
const TopTools_MapOfShape& aFaces)
{
TopoDS_Shape aRes;
aGluer.SetShape(theShape);
aGluer.SetTolerance(theTolerance);
+ aGluer.SetKeepNonSolids(doKeepNonSolids);
aGluer.Perform();
Standard_Integer iErr = aGluer.ErrorStatus();
if (iErr) return aRes;
Standard_Real tol3d = aCI.GetTolerance();
+ Standard_Boolean aKeepNonSolids = aCI.GetKeepNonSolids();
+
if (aType == GLUE_FACES) {
- aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aWrn);
+ aShape = GlueFacesWithWarnings(aShapeBase, tol3d, aKeepNonSolids, aWrn);
}
else { // aType == GLUE_FACES_BY_LIST
Handle(TColStd_HSequenceOfTransient) SF = aCI.GetFaces();
if(!aFaces.Contains(aFace))
aFaces.Add(aFace);
}
- aShape = GlueFacesByList(aShapeBase, tol3d, aFaces);
+ aShape = GlueFacesByList(aShapeBase, tol3d, aKeepNonSolids, aFaces);
}
if (aShape.IsNull()) return 0;
Standard_EXPORT ~GEOMImpl_GlueDriver() {};
Standard_EXPORT static TopoDS_Shape GlueFaces (const TopoDS_Shape& theShape,
- const Standard_Real theTolerance);
+ const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids = Standard_True);
Standard_EXPORT TopoDS_Shape GlueFacesWithWarnings (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
TCollection_AsciiString& theWarning) const;
Standard_EXPORT static TopoDS_Shape GlueFacesByList (const TopoDS_Shape& theShape,
const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids,
const TopTools_MapOfShape& aFaces);
return aPrism;
}
+//=============================================================================
+/*!
+ * MakePrismVecH2Ways
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismVecH2Ways (Handle(GEOM_Object) theBase,
+ Handle(GEOM_Object) theVec,
+ double theH)
+{
+ SetErrorCode(KO);
+
+ if (theBase.IsNull() || theVec.IsNull()) return NULL;
+
+ //Add a new Prism object
+ Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM);
+
+ //Add a new Prism function for creation a Prism relatively to vector
+ Handle(GEOM_Function) aFunction =
+ aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_VEC_H_2WAYS);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL;
+
+ GEOMImpl_IPrism aCI (aFunction);
+
+ Handle(GEOM_Function) aRefBase = theBase->GetLastFunction();
+ Handle(GEOM_Function) aRefVec = theVec->GetLastFunction();
+
+ if (aRefBase.IsNull() || aRefVec.IsNull()) return NULL;
+
+ aCI.SetBase(aRefBase);
+ aCI.SetVector(aRefVec);
+ aCI.SetH(theH);
+
+ //Compute the Prism value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ //SetErrorCode("Prism driver failed");
+ SetErrorCode("Extrusion can not be created, check input data");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrismVecH2Ways("
+ << theBase << ", " << theVec << ", " << theH << ")";
+
+ SetErrorCode(OK);
+ return aPrism;
+}
+
//=============================================================================
/*!
* MakePrismTwoPnt
return aPrism;
}
+//=============================================================================
+/*!
+ * MakePrismTwoPnt2Ways
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismTwoPnt2Ways
+ (Handle(GEOM_Object) theBase,
+ Handle(GEOM_Object) thePoint1, Handle(GEOM_Object) thePoint2)
+{
+ SetErrorCode(KO);
+
+ if (theBase.IsNull() || thePoint1.IsNull() || thePoint2.IsNull()) return NULL;
+
+ //Add a new Prism object
+ Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM);
+
+ //Add a new Prism function for creation a Prism relatively to two points
+ Handle(GEOM_Function) aFunction =
+ aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_TWO_PNT_2WAYS);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL;
+
+ GEOMImpl_IPrism aCI (aFunction);
+
+ Handle(GEOM_Function) aRefBase = theBase->GetLastFunction();
+ Handle(GEOM_Function) aRefPnt1 = thePoint1->GetLastFunction();
+ Handle(GEOM_Function) aRefPnt2 = thePoint2->GetLastFunction();
+
+ if (aRefBase.IsNull() || aRefPnt1.IsNull() || aRefPnt2.IsNull()) return NULL;
+
+ aCI.SetBase(aRefBase);
+ aCI.SetFirstPoint(aRefPnt1);
+ aCI.SetLastPoint(aRefPnt2);
+
+ //Compute the Prism value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ //SetErrorCode("Prism driver failed");
+ SetErrorCode("Extrusion can not be created, check input data");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrism2Ways("
+ << theBase << ", " << thePoint1 << ", " << thePoint2 << ")";
+
+ SetErrorCode(OK);
+ return aPrism;
+}
+
//=============================================================================
/*!
return aRevolution;
}
+//=============================================================================
+/*!
+ * MakeRevolutionAxisAngle2Ways
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeRevolutionAxisAngle2Ways
+ (Handle(GEOM_Object) theBase, Handle(GEOM_Object) theAxis, double theAngle)
+{
+ SetErrorCode(KO);
+
+ if (theBase.IsNull() || theAxis.IsNull()) return NULL;
+
+ //Add a new Revolution object
+ Handle(GEOM_Object) aRevolution = GetEngine()->AddObject(GetDocID(), GEOM_REVOLUTION);
+
+ //Add a new Revolution function for creation a revolution relatively to axis
+ Handle(GEOM_Function) aFunction =
+ aRevolution->AddFunction(GEOMImpl_RevolutionDriver::GetID(), REVOLUTION_BASE_AXIS_ANGLE_2WAYS);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_RevolutionDriver::GetID()) return NULL;
+
+ GEOMImpl_IRevolution aCI (aFunction);
+
+ Handle(GEOM_Function) aRefBase = theBase->GetLastFunction();
+ Handle(GEOM_Function) aRefAxis = theAxis->GetLastFunction();
+
+ if (aRefBase.IsNull() || aRefAxis.IsNull()) return NULL;
+
+ aCI.SetBase(aRefBase);
+ aCI.SetAxis(aRefAxis);
+ aCI.SetAngle(theAngle);
+
+ //Compute the Revolution value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Revolution driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aRevolution << " = geompy.MakeRevolution2Ways("
+ << theBase << ", " << theAxis << ", " << theAngle * 180.0 / PI << "*math.pi/180.0)";
+
+ SetErrorCode(OK);
+ return aRevolution;
+}
//=============================================================================
/*!
pyDump<< "], [";
+ for(i =1 ; i <= nbSubBases; i++) {
+
+ Handle(Standard_Transient) anItem = theSubBases->Value(i);
+ if(anItem.IsNull())
+ continue;
+
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(anItem);
+ if(!anObj.IsNull()) {
+ pyDump<< anObj;
+ if(i < nbBases)
+ pyDump<<", ";
+ }
+
+ }
+
+ pyDump<< "], [";
+
for(i =1 ; i <= nbLocs; i++) {
Handle(Standard_Transient) anItem = theLocations->Value(i);
}
+
+//=============================================================================
+/*!
+ * MakePipeShellsWithoutPath
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePipeShellsWithoutPath(
+ const Handle(TColStd_HSequenceOfTransient)& theBases,
+ const Handle(TColStd_HSequenceOfTransient)& theLocations)
+{
+ Handle(GEOM_Object) anObj;
+ SetErrorCode(KO);
+ if(theBases.IsNull())
+ return anObj;
+
+ Standard_Integer nbBases = theBases->Length();
+
+ if (!nbBases)
+ return anObj;
+
+ Standard_Integer nbLocs = (theLocations.IsNull() ? 0 :theLocations->Length());
+
+ //Add a new Pipe object
+ Handle(GEOM_Object) aPipeDS = GetEngine()->AddObject(GetDocID(), GEOM_PIPE);
+
+ //Add a new Pipe function
+
+ Handle(GEOM_Function) aFunction =
+ aPipeDS->AddFunction(GEOMImpl_PipeDriver::GetID(), PIPE_SHELLS_WITHOUT_PATH);
+ if (aFunction.IsNull()) return anObj;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_PipeDriver::GetID()) return anObj;
+
+ GEOMImpl_IPipeShellSect aCI (aFunction);
+
+ Handle(TColStd_HSequenceOfTransient) aSeqBases = new TColStd_HSequenceOfTransient;
+ Handle(TColStd_HSequenceOfTransient) aSeqLocs = new TColStd_HSequenceOfTransient;
+
+ Standard_Integer i =1;
+ for( ; i <= nbBases; i++) {
+
+ Handle(Standard_Transient) anItem = theBases->Value(i);
+ if(anItem.IsNull())
+ continue;
+ Handle(GEOM_Object) aBase = Handle(GEOM_Object)::DownCast(anItem);
+ if(aBase.IsNull())
+ continue;
+ Handle(GEOM_Function) aRefBase = aBase->GetLastFunction();
+ if(aRefBase.IsNull())
+ continue;
+
+ if(nbLocs) {
+ Handle(Standard_Transient) anItemLoc = theLocations->Value(i);
+ if(anItemLoc.IsNull())
+ continue;
+ Handle(GEOM_Object) aLoc = Handle(GEOM_Object)::DownCast(anItemLoc);
+ if(aLoc.IsNull())
+ continue;
+ Handle(GEOM_Function) aRefLoc = aLoc->GetLastFunction();
+ if(aRefLoc.IsNull())
+ continue;
+ aSeqLocs->Append(aRefLoc);
+ }
+
+ aSeqBases->Append(aRefBase);
+ }
+
+ if(!aSeqBases->Length())
+ return anObj;
+
+ aCI.SetBases(aSeqBases);
+ aCI.SetLocations(aSeqLocs);
+
+ //Compute the Pipe value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Pipe with shell sections without path driver failed");
+ return anObj;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return anObj;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pyDump(aFunction);
+ pyDump << aPipeDS << " = geompy.MakePipeShellsWithoutPath([";
+
+ for(i =1 ; i <= nbBases; i++) {
+
+ Handle(Standard_Transient) anItem = theBases->Value(i);
+ if(anItem.IsNull())
+ continue;
+
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(anItem);
+ if(!anObj.IsNull()) {
+ pyDump<< anObj;
+ if(i < nbBases)
+ pyDump<<", ";
+ }
+
+ }
+
+ pyDump<< "], [";
+
+ for(i =1 ; i <= nbLocs; i++) {
+
+ Handle(Standard_Transient) anItem = theLocations->Value(i);
+ if(anItem.IsNull())
+ continue;
+
+ Handle(GEOM_Object) anObj = Handle(GEOM_Object)::DownCast(anItem);
+ if(!anObj.IsNull()) {
+ pyDump<< anObj;
+ if(i < nbLocs)
+ pyDump<<", ";
+ }
+ }
+
+ pyDump<< "])";
+
+ SetErrorCode(OK);
+ return aPipeDS;
+
+}
+
Standard_EXPORT Handle(GEOM_Object) MakePrismVecH (Handle(GEOM_Object) theBase,
Handle(GEOM_Object) theVec, double theH);
+ Standard_EXPORT Handle(GEOM_Object) MakePrismVecH2Ways (Handle(GEOM_Object) theBase,
+ Handle(GEOM_Object) theVec, double theH);
+
Standard_EXPORT Handle(GEOM_Object) MakePrismTwoPnt (Handle(GEOM_Object) theBase,
Handle(GEOM_Object) thePoint1,
Handle(GEOM_Object) thePoint2);
+ Standard_EXPORT Handle(GEOM_Object) MakePrismTwoPnt2Ways (Handle(GEOM_Object) theBase,
+ Handle(GEOM_Object) thePoint1,
+ Handle(GEOM_Object) thePoint2);
+
Standard_EXPORT Handle(GEOM_Object) MakePipe (Handle(GEOM_Object) theBase,
Handle(GEOM_Object) thePath);
Handle(GEOM_Object) theAxis,
double theAngle);
+ Standard_EXPORT Handle(GEOM_Object) MakeRevolutionAxisAngle2Ways (Handle(GEOM_Object) theBase,
+ Handle(GEOM_Object) theAxis,
+ double theAngle);
+
Standard_EXPORT Handle(GEOM_Object) MakeSolidShell (Handle(GEOM_Object) theShell);
Standard_EXPORT Handle(GEOM_Object) MakeFilling (Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg, double theTol2D, double theTol3D, int theNbIter);
bool theWithContact,
bool theWithCorrections);
+ Standard_EXPORT Handle(GEOM_Object) MakePipeShellsWithoutPath(
+ const Handle(TColStd_HSequenceOfTransient)& theBases,
+ const Handle(TColStd_HSequenceOfTransient)& theLocations);
+
};
#endif
return aPoint;
}
+//=============================================================================
+/*!
+ * MakePointOnLinesIntersection
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnLinesIntersection
+ (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2)
+{
+ SetErrorCode(KO);
+
+ if (theLine1.IsNull() || theLine2.IsNull()) return NULL;
+
+ //Add a new Point object
+ Handle(GEOM_Object) aPoint = GetEngine()->AddObject(GetDocID(), GEOM_POINT);
+
+ //Add a new Point function for creation a point relativley another point
+ Handle(GEOM_Function) aFunction = aPoint->AddFunction(GEOMImpl_PointDriver::GetID(), POINT_LINES_INTERSECTION);
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_PointDriver::GetID()) return NULL;
+
+ GEOMImpl_IPoint aPI (aFunction);
+
+ Handle(GEOM_Function) aRef1 = theLine1->GetLastFunction();
+ Handle(GEOM_Function) aRef2 = theLine2->GetLastFunction();
+ if (aRef1.IsNull() || aRef2.IsNull()) return NULL;
+
+ aPI.SetLine1(aRef1);
+ aPI.SetLine2(aRef2);
+
+ //Compute the point value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Point driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnLinesIntersection("
+ << theLine1 << ", " << theLine2 << ")";
+
+ SetErrorCode(OK);
+ return aPoint;
+}
+
//=============================================================================
/*!
* MakeTangentOnCurve
return aLine;
}
+//=============================================================================
+/*!
+ * MakeLineTwoFaces
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakeLineTwoFaces
+ (Handle(GEOM_Object) theFace1, Handle(GEOM_Object) theFace2)
+{
+ SetErrorCode(KO);
+
+ if (theFace1.IsNull() || theFace2.IsNull()) return NULL;
+
+ //Add a new Line object
+ Handle(GEOM_Object) aLine = GetEngine()->AddObject(GetDocID(), GEOM_LINE);
+
+ //Add a new Line function
+ Handle(GEOM_Function) aFunction =
+ aLine->AddFunction(GEOMImpl_LineDriver::GetID(), LINE_TWO_FACES);
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_LineDriver::GetID()) return NULL;
+
+ GEOMImpl_ILine aPI (aFunction);
+
+ Handle(GEOM_Function) aRef1 = theFace1->GetLastFunction();
+ Handle(GEOM_Function) aRef2 = theFace2->GetLastFunction();
+ if (aRef1.IsNull() || aRef2.IsNull()) return NULL;
+
+ aPI.SetFace1(aRef1);
+ aPI.SetFace2(aRef2);
+
+ //Compute the Line value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Line driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aLine << " = geompy.MakeLineTwoFaces("
+ << theFace1 << ", " << theFace2 << ")";
+
+ SetErrorCode(OK);
+ return aLine;
+}
//=============================================================================
/*!
Standard_EXPORT Handle(GEOM_Object) MakePointOnCurve (Handle(GEOM_Object) theCurve,
double theParameter);
+ Standard_EXPORT Handle(GEOM_Object) MakePointOnLinesIntersection
+ (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
+
// Vector
Standard_EXPORT Handle(GEOM_Object) MakeVectorDXDYDZ (double theDX, double theDY, double theDZ);
Standard_EXPORT Handle(GEOM_Object) MakeLineTwoPnt (Handle(GEOM_Object) thePnt1,
Handle(GEOM_Object) thePnt2);
+ Standard_EXPORT Handle(GEOM_Object) MakeLineTwoFaces (Handle(GEOM_Object) theFace1,
+ Handle(GEOM_Object) theFace2);
+
Standard_EXPORT Handle(GEOM_Object) MakeLine (Handle(GEOM_Object) thePnt,
Handle(GEOM_Object) theDir);
const Standard_Integer theLimit,
const Standard_Boolean theRemoveWebs,
const Handle(TColStd_HArray1OfInteger)& theMaterials,
- const Standard_Boolean thePerformSelfIntersections)
+ const Standard_Integer theKeepNonlimitShapes,
+ const Standard_Boolean thePerformSelfIntersections)
{
SetErrorCode(KO);
// Limit
aCI.SetLimit(theLimit);
+ aCI.SetKeepNonlimitShapes(theKeepNonlimitShapes);
// Materials
if (theRemoveWebs) {
pd << ", " << theMaterials->Value(i);
}
}
- pd << "])";
+ pd << "], " << theKeepNonlimitShapes <<")";
SetErrorCode(OK);
return aPartition;
const Standard_Integer theLimit,
const Standard_Boolean theRemoveWebs,
const Handle(TColStd_HArray1OfInteger)& theMaterials,
- const Standard_Boolean thePerformSelfIntersections);
+ const Standard_Integer theKeepNonlimitShapes,
+ const Standard_Boolean thePerformSelfIntersections);
Standard_EXPORT Handle(GEOM_Object) MakeHalfPartition (Handle(GEOM_Object) theShape,
Handle(GEOM_Object) thePlane);
#include "GEOM_Function.hxx"
-#define CHAM_ARG_SH 1
-#define CHAM_ARG_D1 2
-#define CHAM_ARG_D2 3
-#define CHAM_ARG_LENG 4
-#define CHAM_ARG_LAST 4
+#define CHAM_ARG_SH 1
+#define CHAM_ARG_D1 2
+#define CHAM_ARG_D2 3
+#define CHAM_ARG_ANGLE 3
+#define CHAM_ARG_LENG 4
+#define CHAM_ARG_LAST 4
class GEOMImpl_IChamfer
{
void SetD (double theD) { _func->SetReal(CHAM_ARG_D1, theD); }
void SetD1(double theD) { _func->SetReal(CHAM_ARG_D1, theD); }
void SetD2(double theD) { _func->SetReal(CHAM_ARG_D2, theD); }
+ void SetAngle(double theAngle) { _func->SetReal(CHAM_ARG_ANGLE, theAngle); }
double GetD () { return _func->GetReal(CHAM_ARG_D1); }
double GetD1() { return _func->GetReal(CHAM_ARG_D1); }
double GetD2() { return _func->GetReal(CHAM_ARG_D2); }
+ double GetAngle() { return _func->GetReal(CHAM_ARG_ANGLE); }
void SetLength(int theLen) { _func->SetInteger(CHAM_ARG_LENG, theLen); }
{ _func->SetInteger(CHAM_ARG_LAST + 1, theFace); }
void SetFace2(int theFace)
{ _func->SetInteger(CHAM_ARG_LAST + 2, theFace); }
+ void SetEdge(int theInd, int theEdge)
+ { _func->SetInteger(CHAM_ARG_LAST + theInd, theEdge); }
int GetFace(int theInd) { return _func->GetInteger(CHAM_ARG_LAST + theInd); }
int GetFace1() { return _func->GetInteger(CHAM_ARG_LAST + 1); }
int GetFace2() { return _func->GetInteger(CHAM_ARG_LAST + 2); }
+ int GetEdge(int theInd) { return _func->GetInteger(CHAM_ARG_LAST + theInd); }
private:
return aCircle;
}
+//=============================================================================
+/*!
+ * MakeCircleCenter2Pnt
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ICurvesOperations::MakeCircleCenter2Pnt (Handle(GEOM_Object) thePnt1,
+ Handle(GEOM_Object) thePnt2,
+ Handle(GEOM_Object) thePnt3)
+{
+ SetErrorCode(KO);
+
+ if (thePnt1.IsNull() || thePnt2.IsNull() || thePnt3.IsNull()) return NULL;
+
+ //Add a new Circle object
+ Handle(GEOM_Object) aCircle = GetEngine()->AddObject(GetDocID(), GEOM_CIRCLE);
+
+ //Add a new Circle function for creation a circle relatively to center and 2 points
+ Handle(GEOM_Function) aFunction =
+ aCircle->AddFunction(GEOMImpl_CircleDriver::GetID(), CIRCLE_CENTER_TWO_PNT);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_CircleDriver::GetID()) return NULL;
+
+ GEOMImpl_ICircle aCI (aFunction);
+
+ Handle(GEOM_Function) aRefPnt1 = thePnt1->GetLastFunction();
+ Handle(GEOM_Function) aRefPnt2 = thePnt2->GetLastFunction();
+ Handle(GEOM_Function) aRefPnt3 = thePnt3->GetLastFunction();
+
+ if (aRefPnt1.IsNull() || aRefPnt2.IsNull() || aRefPnt3.IsNull()) return NULL;
+
+ aCI.SetPoint1(aRefPnt1);
+ aCI.SetPoint2(aRefPnt2);
+ aCI.SetPoint3(aRefPnt3);
+
+ //Compute the Circle value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Circle driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aCircle << " = geompy.MakeCircleCenter2Pnt("
+ << thePnt1 << ", " << thePnt2 << ", " << thePnt3 << ")";
+
+ SetErrorCode(OK);
+ return aCircle;
+}
+
//=============================================================================
/*!
* MakeCirclePntVecR
Standard_EXPORT Handle(GEOM_Object) MakeCircleThreePnt (Handle(GEOM_Object) thePnt1,
Handle(GEOM_Object) thePnt2,
Handle(GEOM_Object) thePnt3);
+ Standard_EXPORT Handle(GEOM_Object) MakeCircleCenter2Pnt (Handle(GEOM_Object) thePnt1,
+ Handle(GEOM_Object) thePnt2,
+ Handle(GEOM_Object) thePnt3);
Standard_EXPORT Handle(GEOM_Object) MakeCirclePntVecR (Handle(GEOM_Object) thePnt,
Handle(GEOM_Object) theVec, double theR);
#define FILLET_ARG_SH 1
#define FILLET_ARG_R 2
+#define FILLET_ARG_R1 4
+#define FILLET_ARG_R2 5
#define FILLET_ARG_LENG 3
#define FILLET_ARG_LAST 3
Handle(GEOM_Function) GetShape() { return _func->GetReference(FILLET_ARG_SH); }
void SetR(double theR) { _func->SetReal(FILLET_ARG_R, theR); }
+ void SetR1(double theR1) { _func->SetReal(FILLET_ARG_R1, theR1); }
+ void SetR2(double theR2) { _func->SetReal(FILLET_ARG_R2, theR2); }
double GetR() { return _func->GetReal(FILLET_ARG_R); }
+ double GetR1() { return _func->GetReal(FILLET_ARG_R1); }
+ double GetR2() { return _func->GetReal(FILLET_ARG_R2); }
void SetLength(int theLen) { _func->SetInteger(FILLET_ARG_LENG, theLen); }
#define GLUE_ARG_BASE 1
#define GLUE_ARG_TOLER 2
#define GLUE_ARG_FACES 3
+#define GLUE_ARG_KEEPALL 4
class GEOMImpl_IGlue
{
Handle(TColStd_HSequenceOfTransient) GetFaces()
{ return _func->GetReferenceList(GLUE_ARG_FACES); }
+ void SetKeepNonSolids (Standard_Boolean theFlag) { _func->SetInteger(GLUE_ARG_KEEPALL, theFlag ? 1 : 0); }
+ Standard_Boolean GetKeepNonSolids() { return (_func->GetInteger(GLUE_ARG_KEEPALL) != 0); }
+
private:
Handle(GEOM_Function) _func;
#include "GEOM_Function.hxx"
-#define LINE_ARG_PNT1 1
-#define LINE_ARG_PNT2 2
+#define LINE_ARG_PNT1 1
+#define LINE_ARG_PNT2 2
+#define LINE_ARG_FACE1 3
+#define LINE_ARG_FACE2 4
class GEOMImpl_ILine
{
void SetPoint1(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_PNT1, theRef); }
void SetPoint2(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_PNT2, theRef); }
+ void SetFace1(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_FACE1, theRef); }
+ void SetFace2(Handle(GEOM_Function) theRef) { _func->SetReference(LINE_ARG_FACE2, theRef); }
Handle(GEOM_Function) GetPoint1() { return _func->GetReference(LINE_ARG_PNT1); }
Handle(GEOM_Function) GetPoint2() { return _func->GetReference(LINE_ARG_PNT2); }
+ Handle(GEOM_Function) GetFace1() { return _func->GetReference(LINE_ARG_FACE1); }
+ Handle(GEOM_Function) GetFace2() { return _func->GetReference(LINE_ARG_FACE2); }
private:
return aFillet;
}
+//=============================================================================
+/*!
+ * MakeFilletEdges R1 R2
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletEdgesR1R2
+ (Handle(GEOM_Object) theShape, double theR1, double theR2, list<int> theEdges)
+{
+ SetErrorCode(KO);
+
+ //Add a new Fillet object
+ Handle(GEOM_Object) aFillet = GetEngine()->AddObject(GetDocID(), GEOM_FILLET);
+
+ //Add a new Fillet function
+ Handle(GEOM_Function) aFunction =
+ aFillet->AddFunction(GEOMImpl_FilletDriver::GetID(), FILLET_SHAPE_EDGES_2R);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_FilletDriver::GetID()) return NULL;
+
+ GEOMImpl_IFillet aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) return NULL;
+
+ aCI.SetShape(aRefShape);
+ aCI.SetR1(theR1);
+ aCI.SetR2(theR2);
+ int aLen = theEdges.size();
+ aCI.SetLength(aLen);
+
+ int ind = 1;
+ list<int>::iterator it = theEdges.begin();
+ for (; it != theEdges.end(); it++, ind++) {
+ aCI.SetEdge(ind, (*it));
+ }
+
+ //Compute the Fillet value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Fillet driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aFillet << " = geompy.MakeFilletR1R2(" << theShape
+ << ", " << theR1 << ", " <<theR2 << ", geompy.ShapeType[\"EDGE\"], [";
+
+ it = theEdges.begin();
+ pd << (*it++);
+ while (it != theEdges.end()) {
+ pd << ", " << (*it++);
+ }
+ pd << "])";
+
+ SetErrorCode(OK);
+ return aFillet;
+}
+
+
//=============================================================================
/*!
* MakeFilletFaces
return aFillet;
}
+//=============================================================================
+/*!
+ * MakeFilletFaces R1 R2
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeFilletFacesR1R2
+ (Handle(GEOM_Object) theShape, double theR1, double theR2, list<int> theFaces)
+{
+ SetErrorCode(KO);
+
+ //Add a new Fillet object
+ Handle(GEOM_Object) aFillet = GetEngine()->AddObject(GetDocID(), GEOM_FILLET);
+
+ //Add a new Fillet function
+ Handle(GEOM_Function) aFunction =
+ aFillet->AddFunction(GEOMImpl_FilletDriver::GetID(), FILLET_SHAPE_FACES_2R);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_FilletDriver::GetID()) return NULL;
+
+ GEOMImpl_IFillet aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) return NULL;
+
+ aCI.SetShape(aRefShape);
+ aCI.SetR1(theR1);
+ aCI.SetR2(theR2);
+ int aLen = theFaces.size();
+ aCI.SetLength(aLen);
+
+ int ind = 1;
+ list<int>::iterator it = theFaces.begin();
+ for (; it != theFaces.end(); it++, ind++) {
+ aCI.SetFace(ind, (*it));
+ }
+
+ //Compute the Fillet value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Fillet driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aFillet << " = geompy.MakeFilletR1R2(" << theShape
+ << ", " << theR1 << ", " << theR2 << ", geompy.ShapeType[\"FACE\"], [";
+
+ it = theFaces.begin();
+ pd << (*it++);
+ while (it != theFaces.end()) {
+ pd << ", " << (*it++);
+ }
+ pd << "])";
+
+ SetErrorCode(OK);
+ return aFillet;
+}
+
//=============================================================================
/*!
* MakeChamferAll
return aChamfer;
}
+//=============================================================================
+/*!
+ * MakeChamferEdgeAD
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferEdgeAD
+ (Handle(GEOM_Object) theShape, double theD, double theAngle,
+ int theFace1, int theFace2)
+{
+ SetErrorCode(KO);
+
+ //Add a new Chamfer object
+ Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER);
+
+ //Add a new Chamfer function
+ Handle(GEOM_Function) aFunction =
+ aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_EDGE_AD);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID()) return NULL;
+
+ GEOMImpl_IChamfer aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) return NULL;
+
+ aCI.SetShape(aRefShape);
+ aCI.SetD(theD);
+ aCI.SetAngle(theAngle);
+ aCI.SetFace1(theFace1);
+ aCI.SetFace2(theFace2);
+
+ //Compute the Chamfer value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Chamfer driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump(aFunction) << aChamfer
+ << " = geompy.MakeChamferEdgeAD(" << theShape << ", " << theD
+ << ", " << theAngle << ", " << theFace1 << ", " << theFace2 << ")";
+ SetErrorCode(OK);
+ return aChamfer;
+}
+
//=============================================================================
/*!
* MakeChamferFaces
return aChamfer;
}
+//=============================================================================
+/*!
+ * MakeChamferFacesAD
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferFacesAD
+ (Handle(GEOM_Object) theShape, double theD, double theAngle,
+ list<int> theFaces)
+{
+ SetErrorCode(KO);
+
+ //Add a new Chamfer object
+ Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER);
+
+ //Add a new Chamfer function
+ Handle(GEOM_Function) aFunction =
+ aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_FACES_AD);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID()) return NULL;
+
+ GEOMImpl_IChamfer aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) return NULL;
+
+ aCI.SetShape(aRefShape);
+ aCI.SetD(theD);
+ aCI.SetAngle(theAngle);
+ int aLen = theFaces.size();
+ aCI.SetLength(aLen);
+
+ int ind = 1;
+ list<int>::iterator it = theFaces.begin();
+ for (; it != theFaces.end(); it++, ind++) {
+ aCI.SetFace(ind, (*it));
+ }
+
+ //Compute the Chamfer value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Chamfer driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aChamfer << " = geompy.MakeChamferFacesAD(" << theShape
+ << ", " << theD << ", " << theAngle << ", [";
+
+ it = theFaces.begin();
+ pd << (*it++);
+ while (it != theFaces.end()) {
+ pd << ", " << (*it++);
+ }
+ pd << "])";
+
+ SetErrorCode(OK);
+ return aChamfer;
+}
+
+//=============================================================================
+/*!
+ * MakeChamferEdges
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferEdges
+ (Handle(GEOM_Object) theShape, double theD1, double theD2,
+ list<int> theEdges)
+{
+ SetErrorCode(KO);
+
+ //Add a new Chamfer object
+ Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER);
+
+ //Add a new Chamfer function
+ Handle(GEOM_Function) aFunction =
+ aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_EDGES);
+ if (aFunction.IsNull()) { return NULL; cout << "Edges Function is NULL!!!" << endl; }
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID())
+ { return NULL; cout << "Chamfer Driver is NULL!!!" << endl; }
+
+ GEOMImpl_IChamfer aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) { return NULL; cout << "Shape is NULL!!!" << endl; }
+
+ aCI.SetShape(aRefShape);
+ aCI.SetD1(theD1);
+ aCI.SetD2(theD2);
+ int aLen = theEdges.size();
+ aCI.SetLength(aLen);
+
+ int ind = 1;
+ list<int>::iterator it = theEdges.begin();
+ for (; it != theEdges.end(); it++, ind++) {
+ aCI.SetEdge(ind, (*it));
+ }
+
+ //Compute the Chamfer value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Chamfer driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aChamfer << " = geompy.MakeChamferEdges(" << theShape
+ << ", " << theD1 << ", " << theD2 << ", [";
+
+ it = theEdges.begin();
+ pd << (*it++);
+ while (it != theEdges.end()) {
+ pd << ", " << (*it++);
+ }
+ pd << "])";
+
+ SetErrorCode(OK);
+ return aChamfer;
+}
+
+//=============================================================================
+/*!
+ * MakeChamferEdgesAD
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_ILocalOperations::MakeChamferEdgesAD
+ (Handle(GEOM_Object) theShape, double theD, double theAngle,
+ list<int> theEdges)
+{
+ SetErrorCode(KO);
+
+ //Add a new Chamfer object
+ Handle(GEOM_Object) aChamfer = GetEngine()->AddObject(GetDocID(), GEOM_CHAMFER);
+
+ //Add a new Chamfer function
+ Handle(GEOM_Function) aFunction =
+ aChamfer->AddFunction(GEOMImpl_ChamferDriver::GetID(), CHAMFER_SHAPE_EDGES_AD);
+ if (aFunction.IsNull()) { return NULL; cout << "Edges Function is NULL!!!" << endl; }
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_ChamferDriver::GetID())
+ { return NULL; cout << "Chamfer Driver is NULL!!!" << endl; }
+
+ GEOMImpl_IChamfer aCI (aFunction);
+
+ Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
+ if (aRefShape.IsNull()) { return NULL; cout << "Shape is NULL!!!" << endl; }
+
+ aCI.SetShape(aRefShape);
+ aCI.SetD(theD);
+ aCI.SetAngle(theAngle);
+ int aLen = theEdges.size();
+ aCI.SetLength(aLen);
+
+ int ind = 1;
+ list<int>::iterator it = theEdges.begin();
+ for (; it != theEdges.end(); it++, ind++) {
+ aCI.SetEdge(ind, (*it));
+ }
+
+ //Compute the Chamfer value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Chamfer driver failed");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aChamfer << " = geompy.MakeChamferEdgesAD(" << theShape
+ << ", " << theD << ", " << theAngle << ", [";
+
+ it = theEdges.begin();
+ pd << (*it++);
+ while (it != theEdges.end()) {
+ pd << ", " << (*it++);
+ }
+ pd << "])";
+
+ SetErrorCode(OK);
+ return aChamfer;
+}
+
//=============================================================================
/*!
* Archimede
Standard_EXPORT Handle(GEOM_Object) MakeFilletAll (Handle(GEOM_Object) theShape, double theR);
Standard_EXPORT Handle(GEOM_Object) MakeFilletEdges (Handle(GEOM_Object) theShape, double theR,
list<int> theEdges);
+ Standard_EXPORT Handle(GEOM_Object) MakeFilletEdgesR1R2 (Handle(GEOM_Object) theShape,
+ double theR1, double theR2,
+ list<int> theEdges);
Standard_EXPORT Handle(GEOM_Object) MakeFilletFaces (Handle(GEOM_Object) theShape, double theR,
list<int> theFaces);
+ Standard_EXPORT Handle(GEOM_Object) MakeFilletFacesR1R2 (Handle(GEOM_Object) theShape,
+ double theR1, double theR2,
+ list<int> theFaces);
Standard_EXPORT Handle(GEOM_Object) MakeChamferAll (Handle(GEOM_Object) theShape, double theD);
Standard_EXPORT Handle(GEOM_Object) MakeChamferEdge (Handle(GEOM_Object) theShape,
double theD1, double theD2,
int theFace1, int theFace2);
+ Standard_EXPORT Handle(GEOM_Object) MakeChamferEdgeAD (Handle(GEOM_Object) theShape,
+ double theD, double theAngle,
+ int theFace1, int theFace2);
Standard_EXPORT Handle(GEOM_Object) MakeChamferFaces (Handle(GEOM_Object) theShape,
double theD1, double theD2,
list<int> theFaces);
-
+ Standard_EXPORT Handle(GEOM_Object) MakeChamferFacesAD (Handle(GEOM_Object) theShape,
+ double theD, double theAngle,
+ list<int> theFaces);
+ Standard_EXPORT Handle(GEOM_Object) MakeChamferEdges (Handle(GEOM_Object) theShape,
+ double theD1, double theD2,
+ list<int> theEdges);
+ Standard_EXPORT Handle(GEOM_Object) MakeChamferEdgesAD (Handle(GEOM_Object) theShape,
+ double theD, double theAngle,
+ list<int> theEdges);
Standard_EXPORT Handle(GEOM_Object) MakeArchimede (Handle(GEOM_Object) theShape,
double theWeight, double theWaterDensity,
double theMeshingDeflection);
#include "GEOM_Function.hxx"
-#define MEASURE_ARG_BASE 1
+//#define MEASURE_ARG_BASE 1
+//#define MEASURE_ARG_POINT 2
class GEOMImpl_IMeasure
{
+ enum {
+ MEASURE_ARG_BASE = 1,
+ MEASURE_ARG_POINT = 2
+ };
public:
GEOMImpl_IMeasure(Handle(GEOM_Function) theFunction): _func(theFunction) {}
Handle(GEOM_Function) GetBase() { return _func->GetReference(MEASURE_ARG_BASE); }
+ void SetPoint(Handle(GEOM_Function) thePnt)
+ { _func->SetReference(MEASURE_ARG_POINT, thePnt); }
+
+ Handle(GEOM_Function) GetPoint() { return _func->GetReference(MEASURE_ARG_POINT); }
+
private:
Handle(GEOM_Function) _func;
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#include <Standard_Stream.hxx>
#include <GEOMImpl_IMeasureOperations.hxx>
#include <Geom_BSplineSurface.hxx>
#include <Geom_RectangularTrimmedSurface.hxx>
#include <Geom_OffsetSurface.hxx>
+#include <Geom_Line.hxx>
#include <gp_Pln.hxx>
+#include <gp_Lin.hxx>
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
//=============================================================================
/*!
- * constructor:
+ * Constructor
*/
//=============================================================================
GEOMImpl_IMeasureOperations::GEOMImpl_IMeasureOperations (GEOM_Engine* theEngine, int theDocID)
//=============================================================================
/*!
- * destructor
+ * Destructor
*/
//=============================================================================
GEOMImpl_IMeasureOperations::~GEOMImpl_IMeasureOperations()
return aCDG;
}
+//=============================================================================
+/*!
+ * GetNormal
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IMeasureOperations::GetNormal
+ (Handle(GEOM_Object) theFace,
+ Handle(GEOM_Object) theOptionalPoint)
+{
+ SetErrorCode(KO);
+
+ if (theFace.IsNull()) return NULL;
+
+ //Add a new Normale object
+ Handle(GEOM_Object) aNorm = GetEngine()->AddObject(GetDocID(), GEOM_VECTOR);
+
+ //Add a new Normale function
+ Handle(GEOM_Function) aFunction =
+ aNorm->AddFunction(GEOMImpl_MeasureDriver::GetID(), VECTOR_FACE_NORMALE);
+ if (aFunction.IsNull()) return NULL;
+
+ //Check if the function is set correctly
+ if (aFunction->GetDriverGUID() != GEOMImpl_MeasureDriver::GetID()) return NULL;
+
+ GEOMImpl_IMeasure aCI (aFunction);
+
+ Handle(GEOM_Function) aFace = theFace->GetLastFunction();
+ if (aFace.IsNull()) return NULL;
+
+ aCI.SetBase(aFace);
+
+ if (!theOptionalPoint.IsNull()) {
+ Handle(GEOM_Function) anOptPnt = theOptionalPoint->GetLastFunction();
+ aCI.SetPoint(anOptPnt);
+ }
+
+ //Compute the Normale value
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ if (!GetSolver()->ComputeFunction(aFunction)) {
+ SetErrorCode("Measure driver failed to compute normake of face");
+ return NULL;
+ }
+ }
+ catch (Standard_Failure) {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ return NULL;
+ }
+
+ //Make a Python command
+ GEOM::TPythonDump pd (aFunction);
+ pd << aNorm << " = geompy.GetNormal(" << theFace;
+ if (!theOptionalPoint.IsNull()) {
+ pd << ", " << theOptionalPoint;
+ }
+ pd << ")";
+
+ SetErrorCode(OK);
+ return aNorm;
+}
+
//=============================================================================
/*!
* GetBasicProperties
}
//=======================================================================
-//function : PointCoordinates
-//purpose : Get coordinates of point
+/*!
+ * Get coordinates of point
+ */
//=======================================================================
-void GEOMImpl_IMeasureOperations::PointCoordinates( Handle(GEOM_Object) theShape,
- Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ )
+void GEOMImpl_IMeasureOperations::PointCoordinates (Handle(GEOM_Object) theShape,
+ Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ)
{
- SetErrorCode( KO );
+ SetErrorCode(KO);
- if ( theShape.IsNull() )
+ if (theShape.IsNull())
return;
Handle(GEOM_Function) aRefShape = theShape->GetLastFunction();
- if ( aRefShape.IsNull() )
+ if (aRefShape.IsNull())
return;
TopoDS_Shape aShape = aRefShape->GetValue();
- if ( aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX )
+ if (aShape.IsNull() || aShape.ShapeType() != TopAbs_VERTEX)
{
SetErrorCode( "Shape must be a vertex" );
return;
theX = aPnt.X();
theY = aPnt.Y();
theZ = aPnt.Z();
- SetErrorCode( OK );
+
+ SetErrorCode(OK);
}
- catch ( Standard_Failure )
+ catch (Standard_Failure)
{
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
SetErrorCode( aFail->GetMessageString() );
}
}
+//=======================================================================
+/*!
+ * Compute angle (in degrees) between two lines
+ */
+//=======================================================================
+Standard_Real GEOMImpl_IMeasureOperations::GetAngle (Handle(GEOM_Object) theLine1,
+ Handle(GEOM_Object) theLine2)
+{
+ SetErrorCode(KO);
+
+ Standard_Real anAngle = -1.0;
+
+ if (theLine1.IsNull() || theLine2.IsNull())
+ return anAngle;
+
+ Handle(GEOM_Function) aRefLine1 = theLine1->GetLastFunction();
+ Handle(GEOM_Function) aRefLine2 = theLine2->GetLastFunction();
+ if (aRefLine1.IsNull() || aRefLine2.IsNull())
+ return anAngle;
+
+ TopoDS_Shape aLine1 = aRefLine1->GetValue();
+ TopoDS_Shape aLine2 = aRefLine2->GetValue();
+ if (aLine1.IsNull() || aLine2.IsNull() ||
+ aLine1.ShapeType() != TopAbs_EDGE ||
+ aLine2.ShapeType() != TopAbs_EDGE)
+ {
+ SetErrorCode("Two edges must be given");
+ return anAngle;
+ }
+
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ TopoDS_Edge E1 = TopoDS::Edge(aLine1);
+ TopoDS_Edge E2 = TopoDS::Edge(aLine2);
+
+ double fp,lp;
+ Handle(Geom_Curve) C1 = BRep_Tool::Curve(E1,fp,lp);
+ Handle(Geom_Curve) C2 = BRep_Tool::Curve(E2,fp,lp);
+
+ if (!C1->IsKind(STANDARD_TYPE(Geom_Line)) ||
+ !C2->IsKind(STANDARD_TYPE(Geom_Line)))
+ {
+ SetErrorCode("The edges must be linear");
+ return anAngle;
+ }
+
+ Handle(Geom_Line) L1 = Handle(Geom_Line)::DownCast(C1);
+ Handle(Geom_Line) L2 = Handle(Geom_Line)::DownCast(C2);
+
+ gp_Lin aLin1 = L1->Lin();
+ gp_Lin aLin2 = L2->Lin();
+
+ anAngle = aLin1.Angle(aLin2);
+ anAngle /= PI180; // convert radians into degrees
+
+ SetErrorCode(OK);
+ }
+ catch (Standard_Failure)
+ {
+ Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+ SetErrorCode(aFail->GetMessageString());
+ }
+
+ return anAngle;
+}
+
//=======================================================================
//function : StructuralDump
//purpose : Structural (data exchange) style of output.
Standard_EXPORT Handle(GEOM_Object) GetCentreOfMass (Handle(GEOM_Object) theShape);
+ Standard_EXPORT Handle(GEOM_Object) GetNormal (Handle(GEOM_Object) theFace,
+ Handle(GEOM_Object) theOptionalPoint);
+
Standard_EXPORT void GetBasicProperties (Handle(GEOM_Object) theShape,
Standard_Real& theLength,
Standard_Real& theSurfArea,
Standard_Real& X1, Standard_Real& Y1, Standard_Real& Z1,
Standard_Real& X2, Standard_Real& Y2, Standard_Real& Z2);
- Standard_EXPORT void PointCoordinates(Handle(GEOM_Object) theShape,
- Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ );
+ Standard_EXPORT void PointCoordinates (Handle(GEOM_Object) theShape,
+ Standard_Real& theX, Standard_Real& theY, Standard_Real& theZ);
+
+ Standard_EXPORT Standard_Real GetAngle (Handle(GEOM_Object) theLine1, Handle(GEOM_Object) theLine2);
public:
Standard_EXPORT static gp_Ax3 GetPosition (const TopoDS_Shape& theShape);
#define PART_ARG_SHAPE 7
#define PART_ARG_PLANE 8
+#define PART_ARG_KEEP_NONLIMIT_SHAPES 9
+
class GEOMImpl_IPartition
{
public:
void SetLimit(int theLimit) { _func->SetInteger(PART_ARG_LIMIT, theLimit); }
+ void SetKeepNonlimitShapes(int theKeepNonlimitShapes)
+ { _func->SetInteger(PART_ARG_KEEP_NONLIMIT_SHAPES,theKeepNonlimitShapes ); }
+
void SetShapes(const Handle(TColStd_HSequenceOfTransient)& theShapes)
{ _func->SetReferenceList(PART_ARG_SHAPES, theShapes); }
int GetLimit() { return _func->GetInteger(PART_ARG_LIMIT); }
+ int GetKeepNonlimitShapes() { return _func->GetInteger(PART_ARG_KEEP_NONLIMIT_SHAPES); }
+
Handle(TColStd_HSequenceOfTransient) GetShapes() { return _func->GetReferenceList(PART_ARG_SHAPES); }
Handle(TColStd_HSequenceOfTransient) GetTools() { return _func->GetReferenceList(PART_ARG_TOOLS); }
Handle(TColStd_HSequenceOfTransient) GetKeepIns() { return _func->GetReferenceList(PART_ARG_KEEP_IN); }
#define ARG_PARAM 5
#define ARG_CURVE 6
+#define ARG_LINE1 7
+#define ARG_LINE2 8
class GEOMImpl_IPoint
{
Handle(GEOM_Function) GetRef() { return _func->GetReference(ARG_REF); }
void SetCurve(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_CURVE, theRef); }
+ void SetLine1(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE1, theRef); }
+ void SetLine2(Handle(GEOM_Function) theRef) { _func->SetReference(ARG_LINE2, theRef); }
Handle(GEOM_Function) GetCurve() { return _func->GetReference(ARG_CURVE); }
+ Handle(GEOM_Function) GetLine1() { return _func->GetReference(ARG_LINE1); }
+ Handle(GEOM_Function) GetLine2() { return _func->GetReference(ARG_LINE2); }
void SetParameter(double theParam) { _func->SetReal(ARG_PARAM, theParam); }
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// File : GEOMImpl_IShapesOperations.cxx
+// Created :
+// Author : modified by Lioka RAZAFINDRAZAKA (CEA) 22/06/2007
+// Project : SALOME
+// $Header$
#include <Standard_Stream.hxx>
#include "GEOMImpl_Block6Explorer.hxx"
#include "GEOM_Function.hxx"
+#include "GEOM_ISubShape.hxx"
#include "GEOM_PythonDump.hxx"
#include "GEOMAlgo_FinderShapeOn1.hxx"
#include "GEOMAlgo_FinderShapeOnQuad.hxx"
#include "GEOMAlgo_FinderShapeOn2.hxx"
#include "GEOMAlgo_ClsfBox.hxx"
-//#include "GEOMAlgo_ClsfSurf.hxx"
#include "GEOMAlgo_Gluer1.hxx"
#include "GEOMAlgo_ListIteratorOfListOfCoupleOfShapes.hxx"
#include "GEOMAlgo_CoupleOfShapes.hxx"
#include <BRepExtrema_ExtCF.hxx>
#include <BRep_Tool.hxx>
+#include <BRep_Builder.hxx>
#include <BRepTools.hxx>
#include <BRepGProp.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Vertex.hxx>
+#include <TopoDS_Compound.hxx>
#include <TopoDS_Iterator.hxx>
#include <TopExp_Explorer.hxx>
#include <TopLoc_Location.hxx>
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+// Includes added for GetInPlace algorithm improvement
+
+#include <GEOMImpl_MeasureDriver.hxx>
+#include <GEOMImpl_IMeasure.hxx>
+#include <BRepBuilderAPI_MakeVertex.hxx>
+
+#include <BRepClass_FaceClassifier.hxx>
+#include <BRepClass3d_SolidClassifier.hxx>
+#include <Precision.hxx>
+
//=============================================================================
/*!
* constructor:
//=============================================================================
Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFaces
(Handle(GEOM_Object) theShape,
- const Standard_Real theTolerance)
+ const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids)
{
SetErrorCode(KO);
aCI.SetBase(aRefShape);
aCI.SetTolerance(theTolerance);
+ aCI.SetKeepNonSolids(doKeepNonSolids);
//Compute the sub-shape value
Standard_Boolean isWarning = Standard_False;
Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeGlueFacesByList
(Handle(GEOM_Object) theShape,
const Standard_Real theTolerance,
- list<Handle(GEOM_Object)> theFaces)
+ list<Handle(GEOM_Object)> theFaces,
+ const Standard_Boolean doKeepNonSolids)
{
SetErrorCode(KO);
aCI.SetBase(aRefShape);
aCI.SetTolerance(theTolerance);
+ aCI.SetKeepNonSolids(doKeepNonSolids);
+
Handle(TColStd_HSequenceOfTransient) aFaces = new TColStd_HSequenceOfTransient;
list<Handle(GEOM_Object)>::iterator it = theFaces.begin();
for (; it != theFaces.end(); it++) {
TopoDS_Shape aShape = theShape->GetValue();
if (aShape.IsNull()) return NULL;
+ Handle(GEOM_Function) aMainShape = theShape->GetLastFunction();
+
Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient;
Handle(GEOM_Object) anObj;
- Handle(GEOM_Function) aFunction;
TopTools_MapOfShape mapShape;
TopTools_ListOfShape listShape;
}
if (listShape.IsEmpty()) {
- SetErrorCode("The given shape has no sub-shapes of the requested type");
+ //SetErrorCode("The given shape has no sub-shapes of the requested type");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
return aSeq;
}
TopExp::MapShapes(aShape, anIndices);
Handle(TColStd_HArray1OfInteger) anArray;
+ Standard_Integer nbAllSubShape = anIndices.Extent();
+
TopTools_ListIteratorOfListOfShape itSub (listShape);
TCollection_AsciiString anAsciiList, anEntry;
- for (int index = 1; itSub.More(); itSub.Next(), ++index) {
+ for (int index = 1; itSub.More(); itSub.Next(), ++index)
+ {
TopoDS_Shape aValue = itSub.Value();
anArray = new TColStd_HArray1OfInteger(1,1);
anArray->SetValue(1, anIndices.FindIndex(aValue));
- anObj = GetEngine()->AddSubShape(theShape, anArray);
+
+ //anObj = GetEngine()->AddSubShape(theShape, anArray);
+ {
+ anObj = GetEngine()->AddObject(GetDocID(), GEOM_SUBSHAPE);
+ Handle(GEOM_Function) aFunction = anObj->AddFunction(GEOM_Object::GetSubShapeID(), 1);
+ if (aFunction.IsNull()) return aSeq;
+
+ GEOM_ISubShape aSSI (aFunction);
+ aSSI.SetMainShape(aMainShape);
+ aSSI.SetIndices(anArray);
+
+ // Set function value directly, as we know it.
+ // Usage of Solver here would lead to significant loss of time,
+ // because GEOM_SubShapeDriver will build TopTools_IndexedMapOfShape
+ // on the main shape for each being calculated sub-shape separately.
+ aFunction->SetValue(aValue);
+ }
+
if (!anObj.IsNull()) {
aSeq->Append(anObj);
//Make a Python command
anAsciiList.Trunc(anAsciiList.Length() - 1);
- aFunction = theShape->GetLastFunction();
-
- GEOM::TPythonDump pd (aFunction, /*append=*/true);
+ GEOM::TPythonDump pd (aMainShape, /*append=*/true);
pd << "[" << anAsciiList.ToCString();
pd << "] = geompy.SubShapeAll" << (isSorted ? "Sorted(" : "(");
pd << theShape << ", " << TopAbs_ShapeEnum(theShapeType) << ")";
//=============================================================================
/*!
- * GetSubShapeAllIDs
+ * SubShapeAllIDs
*/
//=============================================================================
Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::SubShapeAllIDs
}
if (listShape.IsEmpty()) {
- SetErrorCode("The given shape has no sub-shapes of the requested type");
+ //SetErrorCode("The given shape has no sub-shapes of the requested type");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
return aSeq;
}
TopoDS_Shape aBox = theBox->GetValue();
TopoDS_Shape aShape = theShape->GetValue();
+ // Check presence of triangulation, build if need
+ if (!CheckTriangulation(aShape)) {
+ SetErrorCode("Cannot build triangulation on the shape");
+ return aSeqOfIDs;
+ }
+
// Call algo
GEOMAlgo_FinderShapeOn2 aFinder;
Standard_Real aTol = 0.0001; // default value
const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
if (listSS.Extent() < 1) {
- SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ //SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
return aSeqOfIDs;
}
Handle(TColStd_HSequenceOfInteger) aSeqOfIDs;
// Check presence of triangulation, build if need
- if (!CheckTriangulation(theShape))
+ if (!CheckTriangulation(theShape)) {
+ SetErrorCode("Cannot build triangulation on the shape");
return aSeqOfIDs;
+ }
// Call algo
GEOMAlgo_FinderShapeOn1 aFinder;
const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
if (listSS.Extent() < 1) {
- SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ //SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
return aSeqOfIDs;
}
Handle(TColStd_HSequenceOfInteger) aSeqOfIDs;
// Check presence of triangulation, build if need
- if (!CheckTriangulation(aShape))
+ if (!CheckTriangulation(aShape)) {
+ SetErrorCode("Cannot build triangulation on the shape");
return aSeqOfIDs;
+ }
// Call algo
gp_Pnt aPntTL = BRep_Tool::Pnt(TopoDS::Vertex(aTL));
const TopTools_ListOfShape& listSS = aFinder.Shapes(); // the result
if (listSS.Extent() < 1) {
- SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ //SetErrorCode("Not a single sub-shape of the requested type found on the given surface");
+ SetErrorCode(NOT_FOUND_ANY); // NPAL18017
return aSeqOfIDs;
}
//=============================================================================
/*!
- * GetInPlace
+ * GetInPlaceOfShape
*/
//=============================================================================
static bool GetInPlaceOfShape (const Handle(GEOM_Function)& theWhereFunction,
return isFound;
}
-Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlace
+//=============================================================================
+/*!
+ * GetShapeProperties
+ */
+//=============================================================================
+
+void GEOMImpl_IShapesOperations::GetShapeProperties( const TopoDS_Shape aShape, Standard_Real tab[],
+ gp_Pnt & aVertex )
+{
+ GProp_GProps SProps, VProps;
+ gp_Pnt aCenterMass;
+ TopoDS_Shape aPntShape;
+ Standard_Real aShapeSize;
+
+ BRepGProp::VolumeProperties(aShape, VProps);
+ aCenterMass = VProps.CentreOfMass();
+ aShapeSize = VProps.Mass();
+ if (aShape.ShapeType() == TopAbs_FACE) {
+ BRepGProp::SurfaceProperties(aShape, SProps);
+ aCenterMass = SProps.CentreOfMass();
+ aShapeSize = SProps.Mass();
+ }
+
+ aPntShape = BRepBuilderAPI_MakeVertex(aCenterMass).Shape();
+ aVertex = BRep_Tool::Pnt( TopoDS::Vertex( aPntShape ) );
+ tab[0] = aVertex.X();
+ tab[1] = aVertex.Y();
+ tab[2] = aVertex.Z();
+ tab[3] = aShapeSize;
+ return;
+}
+
+//=============================================================================
+/*!
+ * GetInPlace
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlace (Handle(GEOM_Object) theShapeWhere,
+ Handle(GEOM_Object) theShapeWhat)
+{
+ SetErrorCode(KO);
+
+ if (theShapeWhere.IsNull() || theShapeWhat.IsNull()) return NULL;
+
+ TopoDS_Shape aWhere = theShapeWhere->GetValue();
+ TopoDS_Shape aWhat = theShapeWhat->GetValue();
+
+ if (aWhere.IsNull() || aWhat.IsNull()) {
+ SetErrorCode("Error: aWhere and aWhat TopoDS_Shape are Null.");
+ return NULL;
+ }
+
+ Handle(GEOM_Function) aWhereFunction = theShapeWhere->GetLastFunction();
+ if (aWhereFunction.IsNull()) {
+ SetErrorCode("Error: aWhereFunction is Null.");
+ return NULL;
+ }
+
+ TopTools_IndexedMapOfShape aWhereIndices;
+ TopExp::MapShapes(aWhere, aWhereIndices);
+
+ TColStd_ListOfInteger aModifiedList;
+ Standard_Integer aWhereIndex;
+ Handle(TColStd_HArray1OfInteger) aModifiedArray;
+ Handle(GEOM_Object) aResult;
+
+ bool isFound = false;
+ Standard_Integer iType = TopAbs_SOLID;
+ Standard_Real aWhat_Mass = 0., aWhere_Mass = 0.;
+ Standard_Real tab_aWhat[4], tab_aWhere[4];
+ Standard_Real dl_l = 1e-3;
+ Standard_Real min_l, Tol_1D, Tol_2D, Tol_3D, Tol_Mass;
+ gp_Pnt aPnt, aPnt_aWhat;
+ GProp_GProps aProps;
+
+ // 2D or 3D shapes
+ if ( aWhat.ShapeType() == TopAbs_COMPOUND ||
+ aWhat.ShapeType() == TopAbs_SHELL ||
+ aWhat.ShapeType() == TopAbs_COMPSOLID ) {
+ TopExp_Explorer Exp( aWhat, TopAbs_ShapeEnum( iType ) );
+ if ( ! Exp.More() ) iType = TopAbs_FACE;
+ }
+ else if ( aWhat.ShapeType() == TopAbs_FACE )
+ iType = TopAbs_FACE;
+
+ TopExp_Explorer Exp_aWhat( aWhat, TopAbs_ShapeEnum( iType ) );
+ TopExp_Explorer Exp_aWhere( aWhere, TopAbs_ShapeEnum( iType ) );
+ TopExp_Explorer Exp_Edge( aWhere, TopAbs_EDGE );
+
+ // Find the shortest edge in theShapeWhere shape
+ for ( Standard_Integer nbEdge = 0; Exp_Edge.More(); Exp_Edge.Next(), nbEdge++ ) {
+ BRepGProp::LinearProperties(Exp_Edge.Current(), aProps);
+ if ( ! nbEdge ) min_l = aProps.Mass();
+ if ( aProps.Mass() < min_l ) min_l = aProps.Mass();
+ }
+
+ // Compute tolerances
+ Tol_1D = dl_l * min_l;
+ Tol_2D = dl_l * ( min_l * min_l) * ( 2. + dl_l);
+ Tol_3D = dl_l * ( min_l * min_l * min_l ) * ( 3. + (3 * dl_l) + (dl_l * dl_l) );
+
+ Tol_Mass = Tol_3D;
+ if ( iType == TopAbs_FACE ) Tol_Mass = Tol_2D;
+
+ // Compute the ShapeWhat Mass
+ for ( ; Exp_aWhat.More(); Exp_aWhat.Next() ) {
+ if ( iType == TopAbs_SOLID ) BRepGProp::VolumeProperties(Exp_aWhat.Current(), aProps);
+ else if ( iType == TopAbs_FACE ) BRepGProp::SurfaceProperties(Exp_aWhat.Current(), aProps);
+ aWhat_Mass += aProps.Mass();
+ }
+
+ // Finding the Sub-ShapeWhere
+ for ( Exp_aWhere.ReInit(); Exp_aWhere.More(); Exp_aWhere.Next() ) {
+ GetShapeProperties( Exp_aWhere.Current(), tab_aWhere, aPnt );
+ for ( Exp_aWhat.ReInit(); Exp_aWhat.More(); Exp_aWhat.Next() ) {
+ GetShapeProperties( Exp_aWhat.Current(), tab_aWhat, aPnt_aWhat );
+ if ( fabs(tab_aWhat[3] - tab_aWhere[3]) <= Tol_Mass && aPnt_aWhat.Distance(aPnt) <= Tol_1D )
+ isFound = true;
+ else if ( tab_aWhat[3] - ( tab_aWhere[3] > Tol_Mass) ) {
+ BRepClass3d_SolidClassifier SC_aWhere (Exp_aWhere.Current(), aPnt, Precision::Confusion());
+ BRepClass3d_SolidClassifier SC_aWhat (Exp_aWhat.Current(), aPnt, Precision::Confusion());
+ // Block construction 3D
+ if ( SC_aWhere.State() == TopAbs_IN && SC_aWhat.State() == TopAbs_IN ) isFound = true;
+ // Block construction 2D
+ else if ( SC_aWhere.State() == TopAbs_ON && SC_aWhat.State() == TopAbs_ON ) isFound = true;
+ }
+ if ( isFound ) {
+ aWhereIndex = aWhereIndices.FindIndex(Exp_aWhere.Current());
+ aModifiedList.Append(aWhereIndex);
+ aWhere_Mass += tab_aWhere[3];
+ isFound = false;
+ break;
+ }
+ }
+ if ( fabs( aWhat_Mass - aWhere_Mass ) <= Tol_Mass ) break;
+ }
+
+ aModifiedArray = new TColStd_HArray1OfInteger (1, aModifiedList.Extent());
+ TColStd_ListIteratorOfListOfInteger anIterModif (aModifiedList);
+ for (Standard_Integer imod = 1; anIterModif.More(); anIterModif.Next(), imod++)
+ aModifiedArray->SetValue(imod, anIterModif.Value());
+
+ //Add a new object
+ aResult = GetEngine()->AddSubShape(theShapeWhere, aModifiedArray);
+ if (aResult.IsNull()) {
+ SetErrorCode("Error in algorithm: result found, but cannot be returned.");
+ return NULL;
+ }
+
+ if (aModifiedArray->Length() > 1) {
+ //Set a GROUP type
+ aResult->SetType(GEOM_GROUP);
+
+ //Set a sub shape type
+ TopoDS_Shape aFirstFound = aWhereIndices.FindKey(aModifiedArray->Value(1));
+ TopAbs_ShapeEnum aShapeType = aFirstFound.ShapeType();
+
+ TDF_Label aFreeLabel = aResult->GetFreeLabel();
+ TDataStd_Integer::Set(aFreeLabel, (Standard_Integer)aShapeType);
+ }
+
+ //Make a Python command
+ Handle(GEOM_Function) aFunction = aResult->GetFunction(1);
+
+ GEOM::TPythonDump(aFunction) << aResult << " = geompy.GetInPlace("
+ << theShapeWhere << ", " << theShapeWhat << ")";
+
+ SetErrorCode(OK);
+ return aResult;
+}
+
+//=======================================================================
+//function : GetInPlaceByHistory
+//purpose :
+//=======================================================================
+Handle(GEOM_Object) GEOMImpl_IShapesOperations::GetInPlaceByHistory
(Handle(GEOM_Object) theShapeWhere,
Handle(GEOM_Object) theShapeWhat)
{
}
MidXYZ.SetValue(Index,
GPoint.X()*999 + GPoint.Y()*99 + GPoint.Z()*0.9);
+ //cout << Index << " L: " << Length(Index) << "CG: " << MidXYZ(Index) << endl;
}
// Sorting
Standard_Integer aTemp;
Standard_Boolean exchange, Sort = Standard_True;
+ Standard_Real tol = Precision::Confusion();
while (Sort)
{
Sort = Standard_False;
for (Index=1; Index < MaxShapes; Index++)
{
- if (MidXYZ(OrderInd(Index)) > MidXYZ(OrderInd(Index+1)))
+ Standard_Real dMidXYZ = MidXYZ(OrderInd(Index)) - MidXYZ(OrderInd(Index+1));
+ Standard_Real dLength = Length(OrderInd(Index)) - Length(OrderInd(Index+1));
+ if ( dMidXYZ >= tol ) {
+// cout << "MidXYZ: " << MidXYZ(OrderInd(Index))<< " > " <<MidXYZ(OrderInd(Index+1))
+// << " d: " << dMidXYZ << endl;
exchange = Standard_True;
- else if (MidXYZ(OrderInd(Index)) == MidXYZ(OrderInd(Index+1)) &&
- Length(OrderInd(Index)) > Length(OrderInd(Index+1)) )
+ }
+ else if ( Abs(dMidXYZ) < tol && dLength >= tol ) {
+// cout << "Length: " << Length(OrderInd(Index))<< " > " <<Length(OrderInd(Index+1))
+// << " d: " << dLength << endl;
exchange = Standard_True;
- else
+ }
+ else if ( Abs(dMidXYZ) < tol && Abs(dLength) < tol &&
+ aShapes(OrderInd(Index)).ShapeType() <= TopAbs_FACE) {
+ // PAL17233
+ // equal values possible on shapes such as two halves of a sphere and
+ // a membrane inside the sphere
+ Bnd_Box box1,box2;
+ BRepBndLib::Add( aShapes( OrderInd(Index) ), box1 );
+ if ( box1.IsVoid() ) continue;
+ BRepBndLib::Add( aShapes( OrderInd(Index+1) ), box2 );
+ Standard_Real dSquareExtent = box1.SquareExtent() - box2.SquareExtent();
+ if ( dSquareExtent >= tol ) {
+// cout << "SquareExtent: " << box1.SquareExtent()<<" > "<<box2.SquareExtent() << endl;
+ exchange = Standard_True;
+ }
+ else if ( Abs(dSquareExtent) < tol ) {
+ Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax, val1, val2;
+ box1.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
+ val1 = (aXmin+aXmax)*999 + (aYmin+aYmax)*99 + (aZmin+aZmax)*0.9;
+ box2.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
+ val2 = (aXmin+aXmax)*999 + (aYmin+aYmax)*99 + (aZmin+aZmax)*0.9;
+ exchange = val1 > val2;
+// cout << "box: " << val1<<" > "<<val2 << endl;
+ }
+ }
+ else {
exchange = Standard_False;
+ }
if (exchange)
{
+// cout << "exchange " << Index << " & " << Index+1 << endl;
aTemp = OrderInd(Index);
OrderInd(Index) = OrderInd(Index+1);
OrderInd(Index+1) = aTemp;
}
}
}
+
for (Index=1; Index <= MaxShapes; Index++)
SL.Append( aShapes( OrderInd(Index) ));
}
+//=======================================================================
+//function : CompsolidToCompound
+//purpose :
+//=======================================================================
+TopoDS_Shape GEOMImpl_IShapesOperations::CompsolidToCompound (const TopoDS_Shape& theCompsolid)
+{
+ if (theCompsolid.ShapeType() != TopAbs_COMPSOLID) {
+ return theCompsolid;
+ }
+
+ TopoDS_Compound aCompound;
+ BRep_Builder B;
+ B.MakeCompound(aCompound);
+
+ TopTools_MapOfShape mapShape;
+ TopoDS_Iterator It (theCompsolid, Standard_True, Standard_True);
+
+ for (; It.More(); It.Next()) {
+ TopoDS_Shape aShape_i = It.Value();
+ if (mapShape.Add(aShape_i)) {
+ B.Add(aCompound, aShape_i);
+ }
+ }
+
+ return aCompound;
+}
+
//=======================================================================
//function : CheckTriangulation
//purpose :
//=======================================================================
bool GEOMImpl_IShapesOperations::CheckTriangulation (const TopoDS_Shape& aShape)
{
+ bool isTriangulation = true;
+
TopExp_Explorer exp (aShape, TopAbs_FACE);
- if (!exp.More()) {
- SetErrorCode("Shape without faces given");
- return false;
+ if (exp.More())
+ {
+ TopLoc_Location aTopLoc;
+ Handle(Poly_Triangulation) aTRF;
+ aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
+ if (aTRF.IsNull()) {
+ isTriangulation = false;
+ }
+ }
+ else // no faces, try edges
+ {
+ TopExp_Explorer expe (aShape, TopAbs_EDGE);
+ if (!expe.More()) {
+ return false;
+ }
+ TopLoc_Location aLoc;
+ Handle(Poly_Polygon3D) aPE = BRep_Tool::Polygon3D(TopoDS::Edge(expe.Current()), aLoc);
+ if (aPE.IsNull()) {
+ isTriangulation = false;
+ }
}
- TopLoc_Location aTopLoc;
- Handle(Poly_Triangulation) aTRF;
- aTRF = BRep_Tool::Triangulation(TopoDS::Face(exp.Current()), aTopLoc);
- if (aTRF.IsNull()) {
+ if (!isTriangulation) {
// calculate deflection
Standard_Real aDeviationCoefficient = 0.001;
if(P.Z() > zmaxB2) zmaxB2 = P.Z();
}
+
//Compare the bounding boxes of both faces
if(gp_Pnt(xminB1, yminB1, zminB1).Distance(gp_Pnt(xminB2, yminB2, zminB2)) > MAX_TOLERANCE)
return false;
if(gp_Pnt(xmaxB1, ymaxB1, zmaxB1).Distance(gp_Pnt(xmaxB2, ymaxB2, zmaxB2)) > MAX_TOLERANCE)
return false;
+ Handle(Geom_Surface) S1 = BRep_Tool::Surface(theFace1);
+ Handle(Geom_Surface) S2 = BRep_Tool::Surface(theFace2);
+
+ //Check if there a coincidence of two surfaces at least in two points
+ double U11, U12, V11, V12, U21, U22, V21, V22;
+ BRepTools::UVBounds(theFace1, U11, U12, V11, V12);
+ BRepTools::UVBounds(theFace2, U21, U22, V21, V22);
+
+ double rangeU = U12-U11;
+ double rangeV = V12-V11;
+ double U = U11 + rangeU/3.0;
+ double V = V11 + rangeV/3.0;
+ gp_Pnt P1 = S1->Value(U, V);
+ U = U11+rangeU*2.0/3.0;
+ V = V11+rangeV*2.0/3.0;
+ gp_Pnt P2 = S1->Value(U, V);
+
+ if(!GeomLib_Tool::Parameters(S2, P1, MAX_TOLERANCE, U, V) || U < U21 || U > U22 || V < V21 || V > V22)
+ return false;
+
+ if(P1.Distance(S2->Value(U,V)) > MAX_TOLERANCE) return false;
+
+ if(!GeomLib_Tool::Parameters(S2, P2, MAX_TOLERANCE, U, V) || U < U21 || U > U22 || V < V21 || V > V22)
+ return false;
+
+ if(P2.Distance(S2->Value(U, V)) > MAX_TOLERANCE) return false;
+
//Check that each edge of the Face1 has a counterpart in the Face2
TopTools_MapOfOrientedShape aMap;
TopTools_ListIteratorOfListOfShape LSI1(LS1);
if(!isFound) return false;
}
- Handle(Geom_Surface) S1 = BRep_Tool::Surface(theFace1);
- Handle(Geom_Surface) S2 = BRep_Tool::Surface(theFace2);
- if(S1->DynamicType() == S2->DynamicType()) {
- return true;
- }
- else { //Check if there a coincidence of two surfaces at least in two points
- double U11, U12, V11, V12, U21, U22, V21, V22;
- BRepTools::UVBounds(theFace1, U11, U12, V11, V12);
- BRepTools::UVBounds(theFace2, U21, U22, V21, V22);
-
- double rangeU = U12-U11;
- double rangeV = V12-V11;
- double U = U11 + rangeU/3.0;
- double V = V11 + rangeV/3.0;
- gp_Pnt P1 = S1->Value(U, V);
- U = U11+rangeU*2.0/3.0;
- V = V11+rangeV*2.0/3.0;
- gp_Pnt P2 = S1->Value(U, V);
-
- if(!GeomLib_Tool::Parameters(S2, P1, MAX_TOLERANCE, U, V) || U < U21 || U > U22 || V < V21 || V > V22)
- return false;
-
- if(P1.Distance(S2->Value(U,V)) > MAX_TOLERANCE) return false;
-
- if(!GeomLib_Tool::Parameters(S2, P2, MAX_TOLERANCE, U, V) || U < U21 || U > U22 || V < V21 || V > V22)
- return false;
-
- if(P2.Distance(S2->Value(U, V)) > MAX_TOLERANCE) return false;
- }
-
return true;
}
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-
+//=============================================================================
+// File : GEOMImpl_IShapesOperations.hxx
+// Created :
+// Author : modified by Lioka RAZAFINDRAZAKA (CEA) 22/06/2007
+// Project : SALOME
+// Copyright : CEA 2003
+// $Header$
+//=============================================================================
#ifndef _GEOMImpl_IShapesOperations_HXX_
#define _GEOMImpl_IShapesOperations_HXX_
#include <list>
#include <Handle_Geom_Surface.hxx>
+#include <gp_Pnt.hxx>
+
class GEOM_Engine;
class Handle(GEOM_Object);
class Handle(TColStd_HArray1OfInteger);
-class GEOMImpl_IShapesOperations : public GEOM_IOperations {
+class GEOMImpl_IShapesOperations : public GEOM_IOperations
+{
public:
Standard_EXPORT GEOMImpl_IShapesOperations(GEOM_Engine* theEngine, int theDocID);
Standard_EXPORT ~GEOMImpl_IShapesOperations();
Standard_EXPORT Handle(GEOM_Object) MakeCompound (list<Handle(GEOM_Object)> theShapes);
Standard_EXPORT Handle(GEOM_Object) MakeGlueFaces (Handle(GEOM_Object) theShape,
- const Standard_Real theTolerance);
+ const Standard_Real theTolerance,
+ const Standard_Boolean doKeepNonSolids);
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetGlueFaces (Handle(GEOM_Object) theShape,
const Standard_Real theTolerance);
Standard_EXPORT Handle(GEOM_Object) MakeGlueFacesByList (Handle(GEOM_Object) theShape,
const Standard_Real theTolerance,
- list<Handle(GEOM_Object)> theFaces);
+ list<Handle(GEOM_Object)> theFaces,
+ const Standard_Boolean doKeepNonSolids);
Standard_EXPORT Handle(TColStd_HSequenceOfTransient) MakeExplode (Handle(GEOM_Object) theShape,
- const Standard_Integer theShapeType,
- const Standard_Boolean isSorted);
+ const Standard_Integer theShapeType,
+ const Standard_Boolean isSorted);
Standard_EXPORT Handle(TColStd_HSequenceOfInteger) SubShapeAllIDs (Handle(GEOM_Object) theShape,
- const Standard_Integer theShapeType,
- const Standard_Boolean isSorted);
+ const Standard_Integer theShapeType,
+ const Standard_Boolean isSorted);
Standard_EXPORT Handle(GEOM_Object) GetSubShape (Handle(GEOM_Object) theMainShape,
const Standard_Integer theID);
const GEOMAlgo_State theState);
- Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnCylinder (const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- const Handle(GEOM_Object)& theAxis,
- const Standard_Real theRadius,
- const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
+ GetShapesOnCylinder (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAxis,
+ const Standard_Real theRadius,
+ const GEOMAlgo_State theState);
- Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetShapesOnSphere (const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- const Handle(GEOM_Object)& theCenter,
- const Standard_Real theRadius,
- const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfTransient)
+ GetShapesOnSphere (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theCenter,
+ const Standard_Real theRadius,
+ const GEOMAlgo_State theState);
- Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnPlaneIDs (const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- const Handle(GEOM_Object)& theAx1,
- const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfInteger)
+ GetShapesOnPlaneIDs (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAx1,
+ const GEOMAlgo_State theState);
Standard_EXPORT Handle(TColStd_HSequenceOfInteger)
GetShapesOnPlaneWithLocationIDs (const Handle(GEOM_Object)& theShape,
const Handle(GEOM_Object)& thePnt,
const GEOMAlgo_State theState);
- Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnCylinderIDs (const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- const Handle(GEOM_Object)& theAxis,
- const Standard_Real theRadius,
- const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfInteger)
+ GetShapesOnCylinderIDs (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theAxis,
+ const Standard_Real theRadius,
+ const GEOMAlgo_State theState);
- Standard_EXPORT Handle(TColStd_HSequenceOfInteger) GetShapesOnSphereIDs (const Handle(GEOM_Object)& theShape,
- const Standard_Integer theShapeType,
- const Handle(GEOM_Object)& theCenter,
- const Standard_Real theRadius,
- const GEOMAlgo_State theState);
+ Standard_EXPORT Handle(TColStd_HSequenceOfInteger)
+ GetShapesOnSphereIDs (const Handle(GEOM_Object)& theShape,
+ const Standard_Integer theShapeType,
+ const Handle(GEOM_Object)& theCenter,
+ const Standard_Real theRadius,
+ const GEOMAlgo_State theState);
/*!
* \brief Find subshapes complying with given status about quadrangle
Handle(GEOM_Object) theCenter,
const Standard_Real theRadius);
+ void GetShapeProperties(const TopoDS_Shape aShape, Standard_Real propertiesArray[], gp_Pnt & aPnt);
+
Standard_EXPORT Handle(GEOM_Object) GetInPlace (Handle(GEOM_Object) theShapeWhere,
Handle(GEOM_Object) theShapeWhat);
- Standard_EXPORT static void SortShapes (TopTools_ListOfShape& SL);
+ Standard_EXPORT Handle(GEOM_Object) GetInPlaceByHistory (Handle(GEOM_Object) theShapeWhere,
+ Handle(GEOM_Object) theShapeWhat);
/*!
* \brief Searches a shape equal to theWhat in the context of theWhere
const Standard_Integer theShapeType,
GEOMAlgo_State theState);
+ public:
+ /*!
+ * \brief Sort shapes in the list by their coordinates.
+ * \param SL The list of shapes to sort.
+ */
+ Standard_EXPORT static void SortShapes (TopTools_ListOfShape& SL);
+
+ /*!
+ * \brief Convert TopoDS_COMPSOLID to TopoDS_COMPOUND.
+ *
+ * If the argument shape is not of type TopoDS_COMPSOLID, this method returns it as is.
+ *
+ * \param theCompsolid The compsolid to be converted.
+ * \retval TopoDS_Shape Returns the resulting compound.
+ */
+ Standard_EXPORT static TopoDS_Shape CompsolidToCompound (const TopoDS_Shape& theCompsolid);
+
+ /*!
+ * \brief Build a triangulation on \a theShape if it is absent.
+ * \param theShape The shape to check/build triangulation on.
+ * \retval bool Returns false if the shape has no faces, i.e. impossible to build triangulation.
+ */
+ Standard_EXPORT static bool CheckTriangulation (const TopoDS_Shape& theShape);
+
private:
Handle(GEOM_Object) MakeShape (list<Handle(GEOM_Object)> theShapes,
const Standard_Integer theObjectType,
const TCollection_AsciiString& theMethodName);
// ----------------------------------------------------
- // methods common for all GetShapesOnXXX() functions
+// methods common for all GetShapesOnXXX() functions
// ----------------------------------------------------
- bool CheckTriangulation (const TopoDS_Shape& aShape);
-
/*!
* \brief Checks if theShapeType parameter of GetShapesOnXXX() is OK
* \param theShapeType - the shape type to check
#include <TopoDS_Shape.hxx>
-#include <Standard_ConstructionError.hxx>
+#include <Standard_Failure.hxx>
#include <StdFail_NotDone.hxx>
-#include <NCollection_DataMap.hxx>
-
#ifdef WNT
#include <windows.h>
#else
if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty())
return 0;
- // load plugin library
+ // load plugin library
LibHandle anImportLib = LoadLib( aLibName.ToCString() ); //This is workaround of BUG OCC13051
funcPoint fp = 0;
if ( anImportLib )
fp = (funcPoint)GetProc( anImportLib, "Import" );
- if ( !fp )
- return 0;
+ if ( !fp ) {
+ TCollection_AsciiString aMsg = aFormatName;
+ aMsg += " plugin was not installed";
+ Standard_Failure::Raise(aMsg.ToCString());
+ }
// perform the import
TCollection_AsciiString anError;
TopoDS_Shape aShape = fp( aFileName, aFormatName, anError );
- // unload plugin library
+ // unload plugin library
+ // commented by enk:
+ // the bug was occured: using ACIS Import/Export plugin
//UnLoadLib( anImportLib ); //This is workaround of BUG OCC13051
if ( aShape.IsNull() ) {
#include <BRep_Tool.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
-
+#include <BRepAlgoAPI_Section.hxx>
#include <TopAbs.hxx>
#include <TopExp.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Vertex.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopTools_MapOfShape.hxx>
#include <gp_Pnt.hxx>
#include <Precision.hxx>
}
aShape = BRepBuilderAPI_MakeEdge(P1, P2).Shape();
+ } else if (aType == LINE_TWO_FACES) {
+ Handle(GEOM_Function) aRefFace1 = aPI.GetFace1();
+ Handle(GEOM_Function) aRefFace2 = aPI.GetFace2();
+ TopoDS_Shape aShape1 = aRefFace1->GetValue();
+ TopoDS_Shape aShape2 = aRefFace2->GetValue();
+ if (aShape1.ShapeType() != TopAbs_FACE ||
+ aShape2.ShapeType() != TopAbs_FACE) {
+ Standard_ConstructionError::Raise("Wrong arguments: two faces must be given");
+ }
+ if (aShape1.IsSame(aShape2)) {
+ Standard_ConstructionError::Raise("The end faces must be different");
+ }
+ BRepAlgoAPI_Section E (aShape1, aShape2, Standard_False);
+ E.Approximation(Standard_True);
+ E.Build();
+ if (!E.IsDone()) {
+ Standard_ConstructionError::Raise("Line can not be performed on the given faces");
+ }
+ else
+ {
+ TopExp_Explorer Exp (E, TopAbs_EDGE);
+ if ( Exp.More() ){
+ aShape = Exp.Current();
+ Exp.Next();
+ }
+ else
+ {
+ Standard_ConstructionError::Raise("Faces not have intersection line");
+ aShape = E.Shape();
+ }
+ if ( Exp.More() )
+ aShape = E.Shape();
+ }
+
} else if (aType == LINE_PNT_DIR) {
Handle(GEOM_Function) aRefPnt = aPI.GetPoint1();
Handle(GEOM_Function) aRefDir = aPI.GetPoint2();
#include <BRep_Tool.hxx>
#include <BRepGProp.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
+#include <BRepBuilderAPI_MakeEdge.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <GProp_GProps.hxx>
+#include <GeomLProp_SLProps.hxx>
+#include <Geom_Surface.hxx>
+
+#include <Bnd_Box.hxx>
+#include <BRepBndLib.hxx>
+#include <BRepAdaptor_Surface.hxx>
+#include <ShapeAnalysis_Surface.hxx>
#include <gp_Pnt.hxx>
#include <Precision.hxx>
TopoDS_Shape aShape;
- if (aType == CDG_MEASURE) {
+ if (aType == CDG_MEASURE)
+ {
Handle(GEOM_Function) aRefBase = aCI.GetBase();
TopoDS_Shape aShapeBase = aRefBase->GetValue();
if (aShapeBase.IsNull()) {
}
aShape = BRepBuilderAPI_MakeVertex(aCenterMass).Shape();
+ }
+ else if (aType == VECTOR_FACE_NORMALE)
+ {
+ // Face
+ Handle(GEOM_Function) aRefBase = aCI.GetBase();
+ TopoDS_Shape aShapeBase = aRefBase->GetValue();
+ if (aShapeBase.IsNull()) {
+ Standard_NullObject::Raise("Face for normale calculation is null");
+ }
+ if (aShapeBase.ShapeType() != TopAbs_FACE) {
+ Standard_NullObject::Raise("Shape for normale calculation is not a face");
+ }
+ TopoDS_Face aFace = TopoDS::Face(aShapeBase);
+
+ // Point
+ gp_Pnt p1 (0,0,0);
+
+ Handle(GEOM_Function) aPntFunc = aCI.GetPoint();
+ if (!aPntFunc.IsNull())
+ {
+ TopoDS_Shape anOptPnt = aPntFunc->GetValue();
+ if (anOptPnt.IsNull())
+ Standard_NullObject::Raise("Invalid shape given for point argument");
+ p1 = BRep_Tool::Pnt(TopoDS::Vertex(anOptPnt));
+ }
+ else
+ {
+ gp_Ax3 aPos = GEOMImpl_IMeasureOperations::GetPosition(aFace);
+ p1 = aPos.Location();
+ }
- } else {
+ // Point parameters on surface
+ Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
+ Handle(ShapeAnalysis_Surface) aSurfAna = new ShapeAnalysis_Surface (aSurf);
+ gp_Pnt2d pUV = aSurfAna->ValueOfUV(p1, Precision::Confusion());
+
+ // Normal direction
+ gp_Vec Vec1,Vec2;
+ BRepAdaptor_Surface SF (aFace);
+ SF.D1(pUV.X(), pUV.Y(), p1, Vec1, Vec2);
+ gp_Vec V = Vec1.Crossed(Vec2);
+ Standard_Real mod = V.Magnitude();
+ if (mod < Precision::Confusion())
+ Standard_NullObject::Raise("Normal vector of a face has null magnitude");
+
+ // Set length of normal vector to average radius of curvature
+ Standard_Real radius = 0.0;
+ GeomLProp_SLProps aProperties (aSurf, pUV.X(), pUV.Y(), 2, Precision::Confusion());
+ if (aProperties.IsCurvatureDefined()) {
+ Standard_Real radius1 = Abs(aProperties.MinCurvature());
+ Standard_Real radius2 = Abs(aProperties.MaxCurvature());
+ if (Abs(radius1) > Precision::Confusion()) {
+ radius = 1.0 / radius1;
+ if (Abs(radius2) > Precision::Confusion()) {
+ radius = (radius + 1.0 / radius2) / 2.0;
+ }
+ }
+ else {
+ if (Abs(radius2) > Precision::Confusion()) {
+ radius = 1.0 / radius2;
+ }
+ }
+ }
+
+ // Set length of normal vector to average dimension of the face
+ // (only if average radius of curvature is not appropriate)
+ if (radius < Precision::Confusion()) {
+ Bnd_Box B;
+ Standard_Real Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
+ BRepBndLib::Add(aFace, B);
+ B.Get(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
+ radius = ((Xmax - Xmin) + (Ymax - Ymin) + (Zmax - Zmin)) / 3.0;
+ }
+
+ if (radius < Precision::Confusion())
+ radius = 1.0;
+
+ V *= radius / mod;
+
+ // consider the face orientation
+ if (aFace.Orientation() == TopAbs_REVERSED ||
+ aFace.Orientation() == TopAbs_INTERNAL) {
+ V = - V;
+ }
+
+ // Edge
+ gp_Pnt p2 = p1.Translated(V);
+ BRepBuilderAPI_MakeEdge aBuilder (p1, p2);
+ if (!aBuilder.IsDone())
+ Standard_NullObject::Raise("Vector construction failed");
+ aShape = aBuilder.Shape();
+ }
+ else {
}
if (aShape.IsNull()) return 0;
log.SetTouched(Label());
- return 1;
+ return 1;
}
}
}
+ PS.SetLimitMode(aCI.GetKeepNonlimitShapes());
PS.SetLimit( (TopAbs_ShapeEnum)aCI.GetLimit() );
PS.Perform();
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#include <Standard_Stream.hxx>
#include <GEOMImpl_PipeDriver.hxx>
+
+#include <GEOMImpl_IShapesOperations.hxx>
+#include <GEOMImpl_IPipeDiffSect.hxx>
+#include <GEOMImpl_IPipeShellSect.hxx>
#include <GEOMImpl_IPipe.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
+#include <GEOMAlgo_GlueAnalyser.hxx>
+
+#include <ShapeAnalysis_FreeBounds.hxx>
+#include <ShapeAnalysis_Edge.hxx>
+#include <ShapeFix_Face.hxx>
+#include <ShapeFix_Shell.hxx>
+#include <ShapeFix_Shape.hxx>
+#include <ShapeFix_ShapeTolerance.hxx>
+
#include <BRep_Tool.hxx>
+#include <BRep_Builder.hxx>
+#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepBuilderAPI_Sewing.hxx>
#include <BRepCheck_Analyzer.hxx>
#include <BRepOffsetAPI_MakePipe.hxx>
-#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepOffsetAPI_MakePipeShell.hxx>
+#include <GProp_GProps.hxx>
+#include <BRepGProp.hxx>
+#include <BRepBuilderAPI_MakeFace.hxx>
#include <TopAbs.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Wire.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Solid.hxx>
#include <TopoDS_Shell.hxx>
#include <TopoDS_Face.hxx>
-#include <BRepOffsetAPI_MakePipeShell.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-#include <GEOMImpl_IPipeDiffSect.hxx>
-#include <GEOMImpl_IPipeShellSect.hxx>
-
-#include <Standard_NullObject.hxx>
-#include <Standard_TypeMismatch.hxx>
-#include <Standard_ConstructionError.hxx>
-#include "utilities.h"
-#include <TopExp_Explorer.hxx>
-#include <TopTools_SequenceOfShape.hxx>
-#include <BRep_Builder.hxx>
#include <TopoDS_Compound.hxx>
-#include <ShapeAnalysis_FreeBounds.hxx>
-#include <TColgp_SequenceOfPnt.hxx>
-#include <ShapeAnalysis_Edge.hxx>
+#include <TopTools_SequenceOfShape.hxx>
#include <TopTools_IndexedDataMapOfShapeShape.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopExp.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
+
#include <GeomAPI_ProjectPointOnCurve.hxx>
-#include <Precision.hxx>
+#include <GeomAPI_Interpolate.hxx>
#include <Geom_TrimmedCurve.hxx>
-#include <BRepBuilderAPI_Sewing.hxx>
+#include <Geom_Plane.hxx>
+#include <Geom_RectangularTrimmedSurface.hxx>
+#include <Geom_BezierSurface.hxx>
+#include <Geom_Line.hxx>
+#include <Geom_Conic.hxx>
+#include <Geom_BSplineCurve.hxx>
+#include <Geom_BSplineSurface.hxx>
+#include <GeomFill_BSplineCurves.hxx>
+#include <GeomConvert_ApproxCurve.hxx>
+#include <GeomConvert.hxx>
-//#include <BRepTools.hxx>
+#include <TColgp_SequenceOfPnt.hxx>
+#include <TColgp_HArray1OfPnt.hxx>
+#include <TColgp_Array2OfPnt.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+
+#include <Precision.hxx>
+#include <Standard_NullObject.hxx>
+#include <Standard_TypeMismatch.hxx>
+#include <Standard_ConstructionError.hxx>
+
+#include "utilities.h"
//=======================================================================
// creating map of vertex edges for both faces
TopTools_IndexedDataMapOfShapeListOfShape aMapVertEdge1;
TopExp::MapShapesAndAncestors(F1, TopAbs_VERTEX, TopAbs_EDGE, aMapVertEdge1);
+ if (!FF.Contains(F1))
+ MESSAGE(" FillForOtherEdges: map FF not contains key F1");
+ if (!FF.Contains(E1))
+ MESSAGE(" FillForOtherEdges: map FF not contains key E1");
+ if (!FF.Contains(V1))
+ MESSAGE(" FillForOtherEdges: map FF not contains key V1");
const TopoDS_Shape& F2 = FF.FindFromKey(F1);
const TopoDS_Shape& E2 = FF.FindFromKey(E1);
const TopoDS_Shape& V2 = FF.FindFromKey(V1);
ShapeAnalysis_Edge sae;
while(1) {
+ if(!aMapVertEdge1.Contains(VS1))
+ cout<<" FillForOtherEdges: map aMapVertEdge1 not contains key VS1"<<endl;
const TopTools_ListOfShape& aList1 = aMapVertEdge1.FindFromKey(VS1);
//TopoDS_Shape E1next;
TopTools_ListIteratorOfListOfShape anIter1(aList1);
anIter1.Next();
}
//E1next = anIter1.Value();
+ if(!aMapVertEdge2.Contains(VS2))
+ cout<<" FillForOtherEdges: map aMapVertEdge2 not contains key VS2"<<endl;
const TopTools_ListOfShape& aList2 = aMapVertEdge2.FindFromKey(VS2);
//TopoDS_Shape E2next;
TopTools_ListIteratorOfListOfShape anIter2(aList2);
}
+//=======================================================================
+//function : FillCorrespondingEdges
+//purpose : auxilary for CreatePipeShellsWithoutPath()
+//=======================================================================
+static bool FillCorrespondingEdges(const TopoDS_Shape& FS1,
+ const TopoDS_Shape& FS2,
+ const TopoDS_Vertex& aLoc1,
+ const TopoDS_Vertex& aLoc2,
+ TopTools_IndexedDataMapOfShapeShape& FF)
+{
+ //cout<<"FillCorrespondingEdges"<<endl;
+
+ gp_Pnt P1 = BRep_Tool::Pnt(aLoc1);
+ gp_Pnt P2 = BRep_Tool::Pnt(aLoc2);
+ gp_Vec aDir(P1,P2);
+
+ ShapeAnalysis_Edge sae;
+ double tol = Max( BRep_Tool::Tolerance(TopoDS::Face(FS1)),
+ BRep_Tool::Tolerance(TopoDS::Face(FS2)) );
+ TopTools_MapOfShape Vs1,Vs2;
+
+ TopoDS_Vertex V11=aLoc1, V12=aLoc2, V21, V22;
+ TopoDS_Edge E1,E2;
+
+ TopExp_Explorer exp1;
+ for( exp1.Init(FS1,TopAbs_EDGE); exp1.More(); exp1.Next() ) {
+ E1 = TopoDS::Edge(exp1.Current());
+ TopoDS_Vertex V1 = sae.FirstVertex(E1);
+ TopoDS_Vertex V2 = sae.LastVertex(E1);
+ gp_Pnt Ptmp1 = BRep_Tool::Pnt(V1);
+ gp_Pnt Ptmp2 = BRep_Tool::Pnt(V2);
+ //cout<<"P11("<<P11.X()<<","<<P11.Y()<<","<<P11.Z()<<")"<<endl;
+ //cout<<"P21("<<P21.X()<<","<<P21.Y()<<","<<P21.Z()<<")"<<endl;
+ if(P1.Distance(Ptmp1)<tol) {
+ V21 = V2;
+ break;
+ }
+ if(P1.Distance(Ptmp2)<tol) {
+ V21 = V1;
+ break;
+ }
+ }
+
+ TopoDS_Edge E21,E22;
+ TopoDS_Vertex VE21,VE22;
+ int nbe=0;
+ for( exp1.Init(FS2,TopAbs_EDGE); exp1.More() && nbe<2; exp1.Next() ) {
+ TopoDS_Edge E = TopoDS::Edge(exp1.Current());
+ TopoDS_Vertex V1 = sae.FirstVertex(E);
+ TopoDS_Vertex V2 = sae.LastVertex(E);
+ gp_Pnt Ptmp1 = BRep_Tool::Pnt(V1);
+ gp_Pnt Ptmp2 = BRep_Tool::Pnt(V2);
+ if(P2.Distance(Ptmp1)<tol) {
+ if(nbe==0) {
+ E21 = E;
+ VE21 = V2;
+ nbe++;
+ }
+ else if(nbe==1) {
+ E22 = E;
+ VE22 = V2;
+ nbe++;
+ }
+ }
+ if(P2.Distance(Ptmp2)<tol) {
+ if(nbe==0) {
+ E21 = E;
+ VE21 = V1;
+ nbe++;
+ }
+ else if(nbe==1) {
+ E22 = E;
+ VE22 = V1;
+ nbe++;
+ }
+ }
+ }
+
+ gp_Pnt PV21 = BRep_Tool::Pnt(V21);
+ gp_Pnt PE21 = BRep_Tool::Pnt(VE21);
+ gp_Pnt PE22 = BRep_Tool::Pnt(VE22);
+ gp_Vec aDir1(PV21,PE21);
+ gp_Vec aDir2(PV21,PE22);
+ double ang1 = aDir.Angle(aDir1);
+ double ang2 = aDir.Angle(aDir2);
+ if(fabs(ang1)<fabs(ang2)) {
+ E2 = E21;
+ V22 = VE21;
+ }
+ else {
+ E2 = E22;
+ V22 = VE22;
+ }
+
+ FF.Add(V11,V12);
+ FF.Add(V21,V22);
+ FF.Add(E1,E2);
+
+ // find other pairs for vertexes and edges
+ return FillForOtherEdges(FS1,E1,V21,FF);
+}
+
+
//=======================================================================
//function : FindNextPairOfFaces
//purpose : auxilary for CreatePipeForShellSections()
if(aCI) delete aCI;
Standard_ConstructionError::Raise("FindNextPairOfFaces: Can not find edge in map");
}
+ if(!FF.Contains(E1))
+ cout<<" FindNextPairOfFaces: map FF not contains key E1"<<endl;
const TopoDS_Shape& E2 = FF.FindFromKey(E1);
TopExp_Explorer anExpV;
anExpV.Init( E1, TopAbs_VERTEX );
Standard_ConstructionError::Raise("FindNextPairOfFaces: Can not find vertex in map");
}
+ if(!aMapEdgeFaces1.Contains(E1))
+ cout<<" FindNextPairOfFaces: map aMapEdgeFaces1 not contains key E1"<<endl;
const TopTools_ListOfShape& aList1 = aMapEdgeFaces1.FindFromKey(E1);
if(aList1.Extent()<2)
continue;
if(FF.Contains(F1other))
continue;
+ if(!FF.Contains(aCurFace))
+ cout<<" FindNextPairOfFaces: map FF not contains key aCurFace"<<endl;
const TopoDS_Shape& F2 = FF.FindFromKey(aCurFace);
+ if(!aMapEdgeFaces2.Contains(E2))
+ cout<<" FindNextPairOfFaces: map aMapEdgeFaces2 not contains key E2"<<endl;
const TopTools_ListOfShape& aList2 = aMapEdgeFaces2.FindFromKey(E2);
if(aList2.Extent()<2) {
if(aCI) delete aCI;
}
FindNextPairOfFaces(F1other, aMapEdgeFaces1, aMapEdgeFaces2, FF, aCI);
-
}
}
+//=======================================================================
+//function : FindFirstPairFaces
+//purpose : auxilary for Execute()
+//=======================================================================
+static void FindFirstPairFaces(const TopoDS_Shape& S1, const TopoDS_Shape& S2,
+ TopoDS_Vertex& V1, TopoDS_Vertex& V2,
+ TopoDS_Shape& FS1, TopoDS_Shape& FS2)
+{
+ //cout<<"FindFirstPairFaces"<<endl;
+
+ // check if vertexes are subshapes of sections
+ gp_Pnt P1 = BRep_Tool::Pnt(V1);
+ gp_Pnt P2 = BRep_Tool::Pnt(V2);
+ TopoDS_Vertex V1new,V2new;
+ TopExp_Explorer exp;
+ double mindist = 1.e10;
+ for( exp.Init( S1, TopAbs_VERTEX ); exp.More(); exp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(exp.Current());
+ gp_Pnt P = BRep_Tool::Pnt(V);
+ double dist = P1.Distance(P);
+ if(dist<mindist) {
+ mindist = dist;
+ V1new = V;
+ }
+ }
+ mindist = 1.e10;
+ for( exp.Init( S2, TopAbs_VERTEX ); exp.More(); exp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(exp.Current());
+ gp_Pnt P = BRep_Tool::Pnt(V);
+ double dist = P2.Distance(P);
+ if(dist<mindist) {
+ mindist = dist;
+ V2new = V;
+ }
+ }
+
+ //gp_Pnt P1new = BRep_Tool::Pnt(V1new);
+ //gp_Pnt P2new = BRep_Tool::Pnt(V2new);
+ //cout<<" P1("<<P1.X()<<","<<P1.Y()<<","<<P1.Z()<<")"<<endl;
+ //cout<<" P2("<<P2.X()<<","<<P2.Y()<<","<<P2.Z()<<")"<<endl;
+ //cout<<" P1new("<<P1new.X()<<","<<P1new.Y()<<","<<P1new.Z()<<")"<<endl;
+ //cout<<" P2new("<<P2new.X()<<","<<P2new.Y()<<","<<P2new.Z()<<")"<<endl;
+
+ // replace vertexes if it is needed
+ if(!V1.IsSame(V1new)) {
+ V1 = V1new;
+ P1 = BRep_Tool::Pnt(V1);
+ cout<<" replace V1"<<endl;
+ }
+ else
+ cout<<" not replace V1"<<endl;
+ if(!V2.IsSame(V2new)) {
+ V2 = V2new;
+ P2 = BRep_Tool::Pnt(V2);
+ cout<<" replace V2"<<endl;
+ }
+ else
+ cout<<" not replace V2"<<endl;
+
+ TopTools_IndexedDataMapOfShapeListOfShape aMapVertFaces1;
+ TopExp::MapShapesAndAncestors(S1, TopAbs_VERTEX, TopAbs_FACE, aMapVertFaces1);
+ TopTools_IndexedDataMapOfShapeListOfShape aMapVertFaces2;
+ TopExp::MapShapesAndAncestors(S2, TopAbs_VERTEX, TopAbs_FACE, aMapVertFaces2);
+
+ if(!aMapVertFaces1.Contains(V1))
+ cout<<" FindFirstPairFaces: map aMapVertFaces1 not contains key V1"<<endl;
+ const TopTools_ListOfShape& aList1 = aMapVertFaces1.FindFromKey(V1);
+ TopTools_ListIteratorOfListOfShape anIter1(aList1);
+ FS1 = anIter1.Value();
+ // find middle point
+ double x1=0., y1=0., z1=0.;
+ int nbv1=0;
+ for( exp.Init( FS1, TopAbs_VERTEX ); exp.More(); exp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(exp.Current());
+ gp_Pnt P = BRep_Tool::Pnt(V);
+ x1 += P.X();
+ y1 += P.Y();
+ z1 += P.Z();
+ nbv1++;
+ }
+ gp_Pnt PM1(x1/nbv1, y1/nbv1, z1/nbv1);
+
+ TColgp_SequenceOfPnt Ps;
+ TopTools_SequenceOfShape Fs;
+ if(!aMapVertFaces2.Contains(V2))
+ cout<<" FindFirstPairFaces: map aMapVertFaces2 not contains key V2"<<endl;
+ const TopTools_ListOfShape& aList2 = aMapVertFaces2.FindFromKey(V2);
+ TopTools_ListIteratorOfListOfShape anIter2(aList2);
+ for(; anIter2.More(); anIter2.Next()) {
+ TopoDS_Shape F = anIter2.Value();
+ double x2=0., y2=0., z2=0.;
+ int nbv2=0;
+ for( exp.Init( F, TopAbs_VERTEX ); exp.More(); exp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(exp.Current());
+ gp_Pnt P = BRep_Tool::Pnt(V);
+ x2 += P.X();
+ y2 += P.Y();
+ z2 += P.Z();
+ nbv2++;
+ }
+ gp_Pnt PM(x2/nbv1, y2/nbv1, z2/nbv1);
+ Fs.Append(F);
+ Ps.Append(PM);
+ }
+
+ gp_Vec aDir(P1,P2);
+ int i=1;
+ double MinAng = PI;
+ int numface = 0;
+ for(; i<=Fs.Length(); i++) {
+ gp_Vec tmpDir(PM1,Ps(i));
+ double ang = fabs(aDir.Angle(tmpDir));
+ if(ang<MinAng) {
+ MinAng = ang;
+ numface = i;
+ }
+ }
+ FS2 = Fs(numface);
+}
+
+
//=======================================================================
//function : CreatePipeForShellSections
//purpose : auxilary for Execute()
Standard_Boolean aWithContact = (aCIDS->GetWithContactMode());
Standard_Boolean aWithCorrect = (aCIDS->GetWithCorrectionMode());
- Standard_Integer nbBases = aBasesObjs->Length(),
+ Standard_Integer nbBases = aBasesObjs->Length(),
nbSubBases = (aSubBasesObjs.IsNull() ? 0 :aSubBasesObjs->Length()),
nbLocs = (aLocObjs.IsNull() ? 0 :aLocObjs->Length());
-
+
if( nbLocs != nbBases) {
if(aCI) delete aCI;
Standard_ConstructionError::Raise("Number of sections is not equal to number of locations ");
TopoDS_Vertex V = TopoDS::Vertex(VLocs.Value(i));
PLocs.Append(BRep_Tool::Pnt(V));
}
+
TopTools_SequenceOfShape Edges;
TopTools_SequenceOfShape Wires;
- TopExp_Explorer anExp;
- for ( anExp.Init( aWirePath, TopAbs_EDGE ); anExp.More(); anExp.Next() ) {
- Edges.Append(anExp.Current());
- }
ShapeAnalysis_Edge sae;
- TopoDS_Edge edge = TopoDS::Edge(Edges.First());
- double tol = BRep_Tool::Tolerance(edge);
- TopoDS_Vertex VF = sae.FirstVertex(edge);
- gp_Pnt PF = BRep_Tool::Pnt(VF);
- //cout<<"PF("<<PF.X()<<","<<PF.Y()<<","<<PF.Z()<<")"<<endl;
- if( PF.Distance(PLocs.First()) > tol ) {
- if(aCI) delete aCI;
- Standard_ConstructionError::Raise
- ("First location shapes is not coincided with first vertex of aWirePath");
- }
- edge = TopoDS::Edge(Edges.Last());
- tol = BRep_Tool::Tolerance(edge);
- TopoDS_Vertex VL = sae.LastVertex(edge);
- gp_Pnt PL = BRep_Tool::Pnt(VL);
- if( PL.Distance(PLocs.Last()) > tol ) {
- if(aCI) delete aCI;
- Standard_ConstructionError::Raise
- ("Last location shapes is not coincided with last vertex of aWirePath");
- }
- int jcurr = 2;
- TopTools_SequenceOfShape tmpEdges;
- for(i=1; i<=Edges.Length() && jcurr<nbLocs; i++) {
- TopoDS_Edge E = TopoDS::Edge(Edges.Value(i));
- tol = BRep_Tool::Tolerance(edge);
- TopoDS_Vertex V1 = sae.FirstVertex(E);
- TopoDS_Vertex V2 = sae.LastVertex(E);
- gp_Pnt P1 = BRep_Tool::Pnt(V1);
- gp_Pnt P2 = BRep_Tool::Pnt(V2);
- if( P2.Distance(PLocs.Value(jcurr)) < tol ) {
- // make wire from current edge and add created
- // wire to Wires
+
+ if(nbLocs==2) {
+ TopExp_Explorer anExp;
+ for ( anExp.Init( aWirePath, TopAbs_EDGE ); anExp.More(); anExp.Next() ) {
+ Edges.Append(anExp.Current());
+ }
+ Standard_Integer Num1 = 0;
+ Standard_Integer Num2 = 0;
+ for(i=1; i<=Edges.Length(); i++) {
+ TopoDS_Edge E = TopoDS::Edge(Edges.Value(i));
+ double tol = BRep_Tool::Tolerance(E);
+ TopoDS_Vertex V1 = sae.FirstVertex(E);
+ TopoDS_Vertex V2 = sae.LastVertex(E);
+ gp_Pnt P1 = BRep_Tool::Pnt(V1);
+ gp_Pnt P2 = BRep_Tool::Pnt(V2);
+ if( P1.Distance(PLocs.First()) < tol ) {
+ Num1 = i;
+ }
+ if( P2.Distance(PLocs.Last()) < tol ) {
+ Num2 = i;
+ }
+ }
+ if( Num1>0 && Num2>0 ) {
TopoDS_Wire W;
B.MakeWire(W);
- for(j=1; j<=tmpEdges.Length(); j++)
- B.Add(W,tmpEdges.Value(j));
- B.Add(W,E);
+ for(i=Num1; i<=Num2; i++) {
+ B.Add(W,Edges.Value(i));
+ }
Wires.Append(W);
- jcurr++;
- tmpEdges.Clear();
}
else {
- // find distance between E and aLocs(icurr)
- double fp,lp;
- Handle(Geom_Curve) C = BRep_Tool::Curve(E,fp,lp);
- GeomAPI_ProjectPointOnCurve PPC (PLocs.Value(jcurr),C);
- if( PPC.NbPoints()>0 &&
- PLocs.Value(jcurr).Distance(PPC.Point(1)) < tol ) {
- double param = PPC.Parameter(1);
- gp_Pnt PC1;
- C->D0(param,PC1);
- // split current edge
- Handle(Geom_TrimmedCurve) tc1 = new Geom_TrimmedCurve(C,fp,param);
- Handle(Geom_TrimmedCurve) tc2 = new Geom_TrimmedCurve(C,param,lp);
- TopoDS_Edge E1,E2;
- if(PC1.Distance(P1)<tol) {
- B.MakeEdge(E1,tc1,tol);
- B.Add(E1,V1);
- TopoDS_Shape tmpV = VLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
- B.Add(E1,TopoDS::Vertex(tmpV));
- tmpEdges.Append(E1);
- B.MakeEdge(E2,tc2,tol);
- tmpV = VLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
- B.Add(E2,TopoDS::Vertex(tmpV));
- B.Add(E2,V2);
- }
- else {
- B.MakeEdge(E1,tc2,tol);
- TopoDS_Shape tmpV = VLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
- B.Add(E1,TopoDS::Vertex(tmpV));
- B.Add(E1,V1);
- E1.Reverse();
- tmpEdges.Append(E1);
- B.MakeEdge(E2,tc1,tol);
- B.Add(E2,V2);
- tmpV = VLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
- B.Add(E2,TopoDS::Vertex(tmpV));
- E2.Reverse();
- }
- // create wire from tmpEdges
+ Wires.Append(aWirePath);
+ }
+ }
+ else {
+ TopExp_Explorer anExp;
+ for ( anExp.Init( aWirePath, TopAbs_EDGE ); anExp.More(); anExp.Next() ) {
+ Edges.Append(anExp.Current());
+ }
+ TopoDS_Edge edge = TopoDS::Edge(Edges.First());
+ double tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VF = sae.FirstVertex(edge);
+ gp_Pnt PF = BRep_Tool::Pnt(VF);
+ //cout<<"PF("<<PF.X()<<","<<PF.Y()<<","<<PF.Z()<<")"<<endl;
+ if( PF.Distance(PLocs.First()) > tol ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise
+ ("First location shapes is not coincided with first vertex of aWirePath");
+ }
+ VLocs.ChangeValue(1) = VF;
+ edge = TopoDS::Edge(Edges.Last());
+ tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VL = sae.LastVertex(edge);
+ gp_Pnt PL = BRep_Tool::Pnt(VL);
+ if( PL.Distance(PLocs.Last()) > tol ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise
+ ("Last location shapes is not coincided with last vertex of aWirePath");
+ }
+ VLocs.ChangeValue(nbLocs) = VL;
+ int jcurr = 2;
+ TopTools_SequenceOfShape tmpEdges;
+ for(i=1; i<=Edges.Length() && jcurr<nbLocs; i++) {
+ TopoDS_Edge E = TopoDS::Edge(Edges.Value(i));
+ tol = BRep_Tool::Tolerance(E);
+ TopoDS_Vertex V1 = sae.FirstVertex(E);
+ TopoDS_Vertex V2 = sae.LastVertex(E);
+ gp_Pnt P1 = BRep_Tool::Pnt(V1);
+ gp_Pnt P2 = BRep_Tool::Pnt(V2);
+ if( P2.Distance(PLocs.Value(jcurr)) < tol ) {
+ // make wire from current edge and add created
+ // wire to Wires
TopoDS_Wire W;
B.MakeWire(W);
for(j=1; j<=tmpEdges.Length(); j++)
B.Add(W,tmpEdges.Value(j));
+ B.Add(W,E);
Wires.Append(W);
+ VLocs.ChangeValue(jcurr) = V2;
jcurr++;
tmpEdges.Clear();
- Edges.Remove(i);
- Edges.InsertAfter(i-1,E1);
- Edges.InsertAfter(i,E2);
}
else {
- tmpEdges.Append(edge);
+ // find distance between E and aLocs(jcurr)
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(E,fp,lp);
+ GeomAPI_ProjectPointOnCurve PPC (PLocs.Value(jcurr),C);
+ if( PPC.NbPoints()>0 &&
+ PLocs.Value(jcurr).Distance(PPC.Point(1)) < tol ) {
+ double param = PPC.Parameter(1);
+ gp_Pnt PC1;
+ C->D0(param,PC1);
+ // split current edge
+ Handle(Geom_TrimmedCurve) tc1 = new Geom_TrimmedCurve(C,fp,param);
+ Handle(Geom_TrimmedCurve) tc2 = new Geom_TrimmedCurve(C,param,lp);
+ TopoDS_Edge E1,E2;
+ gp_Pnt Pfp;
+ C->D0(fp,Pfp);
+ if(Pfp.Distance(P1)<tol) {
+ B.MakeEdge(E1,tc1,tol);
+ B.Add(E1,V1);
+ TopoDS_Shape tmpV = VLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
+ B.Add(E1,TopoDS::Vertex(tmpV));
+ tmpEdges.Append(E1);
+ B.MakeEdge(E2,tc2,tol);
+ tmpV = VLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
+ B.Add(E2,TopoDS::Vertex(tmpV));
+ B.Add(E2,V2);
+ }
+ else {
+ B.MakeEdge(E1,tc2,tol);
+ TopoDS_Shape tmpV = VLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
+ B.Add(E1,TopoDS::Vertex(tmpV));
+ B.Add(E1,V1);
+ E1.Reverse();
+ tmpEdges.Append(E1);
+ B.MakeEdge(E2,tc1,tol);
+ B.Add(E2,V2);
+ tmpV = VLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
+ B.Add(E2,TopoDS::Vertex(tmpV));
+ E2.Reverse();
+ }
+ // create wire from tmpEdges
+ TopoDS_Wire W;
+ B.MakeWire(W);
+ for(j=1; j<=tmpEdges.Length(); j++)
+ B.Add(W,tmpEdges.Value(j));
+ Wires.Append(W);
+ jcurr++;
+ tmpEdges.Clear();
+ Edges.Remove(i);
+ Edges.InsertAfter(i-1,E1);
+ Edges.InsertAfter(i,E2);
+ }
+ else {
+ tmpEdges.Append(E);
+ }
}
}
+ // create wire from other edges
+ TopoDS_Wire W;
+ B.MakeWire(W);
+ for(; i<=Edges.Length(); i++)
+ B.Add(W,Edges.Value(i));
+ Wires.Append(W);
+ //cout<<"Wires.Length()="<<Wires.Length()<<endl;
}
- // create wire from other edges
- TopoDS_Wire W;
- B.MakeWire(W);
- for(; i<=Edges.Length(); i++)
- B.Add(W,Edges.Value(i));
- Wires.Append(W);
- //cout<<"Wires.Length()="<<Wires.Length()<<endl;
if( Wires.Length() != nbLocs-1 ) {
if(aCI) delete aCI;
if(aShBase2.IsNull())
continue;
TopAbs_ShapeEnum aType2 = aShBase2.ShapeType();
-
+
//BRepTools::Write(aShBase1,"/dn02/users_Linux/skl/work/Bugs/14857/base1.brep");
bool OkSec = ( aType1==TopAbs_SHELL || aType1==TopAbs_FACE ) &&
CreateFewSolids = true;
}
+ /*
+ // check orientation of sections
+ bool NeedReverse = false;
+ {
+ // first section
+ anExp.Init( aShBase1, TopAbs_FACE );
+ TopoDS_Shape aFace = anExp.Current();
+ TColgp_SequenceOfPnt aPnts;
+ double xc=0, yc=0, zc=0;
+ for ( anExp.Init( aFace, TopAbs_VERTEX ); anExp.More(); anExp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(anExp.Current());
+ aPnts.Append(BRep_Tool::Pnt(V));
+ xc += aPnts.Last().X();
+ yc += aPnts.Last().Y();
+ zc += aPnts.Last().Z();
+ }
+ gp_Pnt PC( xc/aPnts.Length(), yc/aPnts.Length(), zc/aPnts.Length() );
+ gp_Vec V1(PC,aPnts.Value(1));
+ gp_Vec V2(PC,aPnts.Value(2));
+ gp_Vec VN = V1.Crossed(V2);
+ for(int ip=2; ip<aPnts.Length(); ip++) {
+ V1 = gp_Vec(PC,aPnts.Value(ip));
+ V2 = gp_Vec(PC,aPnts.Value(ip+1));
+ VN.Add(V1.Crossed(V2));
+ }
+ gp_Vec PathNorm;
+ gp_Pnt PLoc = BRep_Tool::Pnt(TopoDS::Vertex(VLocs(i)));
+ TopExp_Explorer WE;
+ for ( WE.Init( WPath, TopAbs_EDGE ); WE.More(); WE.Next() ) {
+ TopoDS_Edge edge = TopoDS::Edge(WE.Current());
+ double tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VF = sae.FirstVertex(edge);
+ gp_Pnt PF = BRep_Tool::Pnt(VF);
+ if( PF.Distance(PLoc) < tol ) {
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(edge,fp,lp);
+ gp_Pnt P1,P2;
+ C->D0(fp,P1);
+ if( P1.Distance(PLoc) < tol ) {
+ C->D0(fp+(lp-fp)/100,P2);
+ }
+ else {
+ C->D0(lp,P1);
+ C->D0(lp+(fp-lp)/100,P2);
+ }
+ PathNorm = gp_Vec(P1,P2);
+ break;
+ }
+ else {
+ TopoDS_Vertex VL = sae.LastVertex(edge);
+ gp_Pnt PL = BRep_Tool::Pnt(VL);
+ if( PL.Distance(PLoc) < tol ) {
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(edge,fp,lp);
+ gp_Pnt P1,P2;
+ C->D0(fp,P1);
+ if( P1.Distance(PLoc) < tol ) {
+ C->D0(fp+(lp-fp)/100,P2);
+ }
+ else {
+ C->D0(lp,P1);
+ C->D0(lp+(fp-lp)/100,P2);
+ }
+ PathNorm = gp_Vec(P2,P1);
+ break;
+ }
+ }
+ }
+ cout<<"VN("<<VN.X()<<","<<VN.Y()<<","<<VN.Z()<<")"<<endl;
+ cout<<"PathNorm("<<PathNorm.X()<<","<<PathNorm.Y()<<","<<PathNorm.Z()<<")"<<endl;
+ if(fabs(VN.Angle(PathNorm))>PI/2.) {
+ NeedReverse = true;
+ aShBase1.Reverse();
+ }
+ }
+ {
+ // second section
+ anExp.Init( aShBase2, TopAbs_FACE );
+ TopoDS_Shape aFace = anExp.Current();
+ TColgp_SequenceOfPnt aPnts;
+ double xc=0, yc=0, zc=0;
+ for ( anExp.Init( aFace, TopAbs_VERTEX ); anExp.More(); anExp.Next() ) {
+ TopoDS_Vertex V = TopoDS::Vertex(anExp.Current());
+ aPnts.Append(BRep_Tool::Pnt(V));
+ xc += aPnts.Last().X();
+ yc += aPnts.Last().Y();
+ zc += aPnts.Last().Z();
+ }
+ gp_Pnt PC( xc/aPnts.Length(), yc/aPnts.Length(), zc/aPnts.Length() );
+ gp_Vec V1(PC,aPnts.Value(1));
+ gp_Vec V2(PC,aPnts.Value(2));
+ gp_Vec VN = V1.Crossed(V2);
+ for(int ip=2; ip<aPnts.Length(); ip++) {
+ V1 = gp_Vec(PC,aPnts.Value(ip));
+ V2 = gp_Vec(PC,aPnts.Value(ip+1));
+ VN.Add(V1.Crossed(V2));
+ }
+ gp_Vec PathNorm;
+ gp_Pnt PLoc = BRep_Tool::Pnt(TopoDS::Vertex(VLocs(i+1)));
+ TopExp_Explorer WE;
+ for ( WE.Init( WPath, TopAbs_EDGE ); WE.More(); WE.Next() ) {
+ TopoDS_Edge edge = TopoDS::Edge(WE.Current());
+ double tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VF = sae.FirstVertex(edge);
+ gp_Pnt PF = BRep_Tool::Pnt(VF);
+ if( PF.Distance(PLoc) < tol ) {
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(edge,fp,lp);
+ gp_Pnt P1,P2;
+ C->D0(fp,P1);
+ if( P1.Distance(PLoc) < tol ) {
+ C->D0(fp+(lp-fp)/100,P2);
+ }
+ else {
+ C->D0(lp,P1);
+ C->D0(lp+(fp-lp)/100,P2);
+ }
+ PathNorm = gp_Vec(P2,P1);
+ break;
+ }
+ else {
+ TopoDS_Vertex VL = sae.LastVertex(edge);
+ gp_Pnt PL = BRep_Tool::Pnt(VL);
+ if( PL.Distance(PLoc) < tol ) {
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(edge,fp,lp);
+ gp_Pnt P1,P2;
+ C->D0(fp,P1);
+ if( P1.Distance(PLoc) < tol ) {
+ C->D0(fp+(lp-fp)/100,P2);
+ }
+ else {
+ C->D0(lp,P1);
+ C->D0(lp+(fp-lp)/100,P2);
+ }
+ PathNorm = gp_Vec(P2,P1);
+ break;
+ }
+ }
+ }
+ //cout<<"VN("<<VN.X()<<","<<VN.Y()<<","<<VN.Z()<<")"<<endl;
+ //cout<<"PathNorm("<<PathNorm.X()<<","<<PathNorm.Y()<<","<<PathNorm.Z()<<")"<<endl;
+ if(fabs(VN.Angle(PathNorm))>PI/2.)
+ aShBase2.Reverse();
+ }
+ */
+
if(!CreateFewSolids) {
// we can create only one solid
TopoDS_Shape aWire1, aWire2;
const TopoDS_Shape aSewShape = aSewing->SewedShape();
if( aSewShape.ShapeType() == TopAbs_SHELL ) {
aShell = TopoDS::Shell(aSewShape);
+ GProp_GProps aSystem;
+ BRepGProp::VolumeProperties(aShell, aSystem);
+ if(aSystem.Mass()<0) {
+ aShell.Reverse();
+ }
if(BRep_Tool::IsClosed(aShell)) {
TopoDS_Solid aSolid;
B.MakeSolid(aSolid);
else {
// main block - creation few solids (for each pair of faces)
TopTools_MapOfShape aFaces1,aFaces2;
- for ( anExp.Init( aShBase1, TopAbs_FACE ); anExp.More(); anExp.Next() )
+ for ( anExp.Init( aShBase1, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
aFaces1.Add(anExp.Current());
- for ( anExp.Init( aShBase2, TopAbs_FACE ); anExp.More(); anExp.Next() )
+ }
+ for ( anExp.Init( aShBase2, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
aFaces2.Add(anExp.Current());
+ }
// creating map of edge faces
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces1;
TopExp::MapShapesAndAncestors(aShBase1, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces1);
TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces2;
TopExp::MapShapesAndAncestors(aShBase2, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces2);
-
+
// constuct map face->face
TopTools_IndexedDataMapOfShapeShape FF;
TopoDS_Shape FS1,FS2;
Standard_ConstructionError::Raise("Invalid subbase shape");
}
FS1 = aSh;
- }
+ }
{ // 2 section
Handle(Standard_Transient) anItem = aSubBasesObjs->Value(i+1);
if(anItem.IsNull()) {
if(aCI) delete aCI;
Standard_ConstructionError::Raise("Invalid subbase shape");
}
-
+
FF.Add(FS1,FS2);
// add pairs of edges to FF
// make pipe for each pair of faces
- //BRepTools::Write(WPath,"/dn02/users_Linux/skl/work/Bugs/14857/wpath.brep");
for(j=1; j<=FF.Extent(); j++) {
TopoDS_Shape F1 = FF.FindKey(j);
if( F1.ShapeType() != TopAbs_FACE )
TopoDS_Shape aShape = aBuilder.Shape();
TopoDS_Shell aShell;
B.MakeShell(aShell);
- //int nbf=0;
for ( anExp.Init( aShape, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
- //nbf++;
- //cout<<"nbf="<<nbf<<endl;
B.Add(aShell,anExp.Current());
}
+
B.Add(aShell,F1);
B.Add(aShell,F2);
// make sewing for this shell
const TopoDS_Shape aSewShape = aSewing->SewedShape();
if( aSewShape.ShapeType() == TopAbs_SHELL ) {
aShell = TopoDS::Shell(aSewShape);
+ GProp_GProps aSystem;
+ BRepGProp::VolumeProperties(aShell, aSystem);
+ if(aSystem.Mass()<0) {
+ //cout<<"aSewShape is reversed"<<endl;
+ aShell.Reverse();
+ }
if(BRep_Tool::IsClosed(aShell)) {
TopoDS_Solid aSolid;
B.MakeSolid(aSolid);
}
}
+ //BRepTools::Write(aComp,"/dn02/users_Linux/skl/work/Bugs/14857/comp.brep");
+ return aComp;
+}
+
+
+//=======================================================================
+//function : CreatePipeShellsWithoutPath
+//purpose : auxilary for Execute()
+//=======================================================================
+static TopoDS_Shape CreatePipeShellsWithoutPath(GEOMImpl_IPipe* aCI)
+{
+ //cout<<"CreatePipeShellsWithoutPath"<<endl;
+ int i,j;
+ BRep_Builder B;
+
+ GEOMImpl_IPipeShellSect* aCIDS = (GEOMImpl_IPipeShellSect*)aCI;
+ // shell sections
+ Handle(TColStd_HSequenceOfTransient) aBasesObjs = aCIDS->GetBases();
+ // vertex for recognition
+ Handle(TColStd_HSequenceOfTransient) VObjs = aCIDS->GetLocations();
+
+ Standard_Integer nbBases = aBasesObjs->Length(),
+ nbv = (VObjs.IsNull() ? 0 :VObjs->Length());
+
+ if( nbv != nbBases ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Number of shapes for recognition is invalid");
+ }
+
+
+ TopTools_SequenceOfShape SecVs,Bases;
+ for(i=1; i<=nbBases; i++) {
+ // vertex
+ Handle(Standard_Transient) anItem = VObjs->Value(i);
+ if(anItem.IsNull())
+ continue;
+ Handle(GEOM_Function) aRef = Handle(GEOM_Function)::DownCast(anItem);
+ TopoDS_Shape V = aRef->GetValue();
+ if(V.IsNull() || V.ShapeType() != TopAbs_VERTEX)
+ continue;
+ SecVs.Append(V);
+ // section
+ anItem = aBasesObjs->Value(i);
+ if(anItem.IsNull())
+ continue;
+ aRef = Handle(GEOM_Function)::DownCast(anItem);
+ TopoDS_Shape aSh = aRef->GetValue();
+ if(aSh.IsNull())
+ continue;
+ Bases.Append(aSh);
+ }
+ nbv = SecVs.Length();
+ nbBases = Bases.Length();
+ if( nbv != nbBases ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("One of shapes for recognition is not a vertex");
+ }
+
+ TopoDS_Compound aComp;
+ B.MakeCompound(aComp);
+
+ for(i=1 ; i<nbBases; i++) {
+ cout<<"Make pipe between sections "<<i<<" and "<<i+1<<endl;
+ TopoDS_Shape aShBase1 = Bases.Value(i);
+ TopoDS_Shape aShBase2 = Bases.Value(i+1);
+ TopExp_Explorer anExp;
+ Standard_Integer nbf1 = 0;
+ for ( anExp.Init( aShBase1, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ nbf1++;
+ }
+ Standard_Integer nbf2 = 0;
+ for ( anExp.Init( aShBase2, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ nbf2++;
+ }
+ //cout<<"nbf1="<<nbf1<<" nbf2="<<nbf2<<endl;
+ if(nbf1!=nbf2) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Different number of faces in the sections");
+ }
+
+ TopTools_MapOfShape aFaces1,aFaces2;
+ for ( anExp.Init( aShBase1, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ aFaces1.Add(anExp.Current());
+ }
+ for ( anExp.Init( aShBase2, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ aFaces2.Add(anExp.Current());
+ }
+
+ // creating map of edge faces
+ TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces1;
+ TopExp::MapShapesAndAncestors(aShBase1, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces1);
+ TopTools_IndexedDataMapOfShapeListOfShape aMapEdgeFaces2;
+ TopExp::MapShapesAndAncestors(aShBase2, TopAbs_EDGE, TopAbs_FACE, aMapEdgeFaces2);
+
+ // constuct map face->face (and subshapes)
+ TopTools_IndexedDataMapOfShapeShape FF;
+ //TopoDS_Shape FS1 = SecFs.Value(i), FS2 = SecFs.Value(i+1);
+ TopoDS_Shape FS1, FS2;
+ TopoDS_Vertex V1 = TopoDS::Vertex(SecVs(i));
+ TopoDS_Vertex V2 = TopoDS::Vertex(SecVs(i+1));
+ FindFirstPairFaces(aShBase1, aShBase2, V1, V2, FS1, FS2);
+
+ FF.Add(FS1,FS2);
+ cout<<" first pair of corresponding faces is found"<<endl;
+
+ // add pairs of edges and vertexes to FF
+ bool stat = FillCorrespondingEdges(FS1, FS2, V1, V2, FF);
+ if( !stat ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Can not create correct pipe");
+ }
+ cout<<" correspondences for subshapes of first pair of faces is found"<<endl;
+
+ FindNextPairOfFaces(FS1, aMapEdgeFaces1, aMapEdgeFaces2, FF, aCI);
+ cout<<" other correspondences is found, make pipe for all pairs of faces"<<endl;
+
+ // make pipe for each pair of faces
+ // auxilary map vertex->edge for created pipe edges
+ TopTools_IndexedDataMapOfShapeShape VPE;
+ ShapeAnalysis_Edge sae;
+ //cout<<"FF.Extent()="<<FF.Extent()<<endl;
+ int nbff = 0;
+ for(j=1; j<=FF.Extent(); j++) {
+ TopoDS_Shape F1 = FF.FindKey(j);
+ if( F1.ShapeType() != TopAbs_FACE )
+ continue;
+ TopoDS_Shape F2 = FF.FindFromIndex(j);
+ nbff++;
+
+ //if(nbff!=3) continue;
+
+ cout<<" make pipe for "<<nbff<<" face"<<endl;
+
+ Handle(Geom_Surface) S1 = BRep_Tool::Surface(TopoDS::Face(F1));
+ if(S1->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+ Handle(Geom_RectangularTrimmedSurface) RTS =
+ Handle(Geom_RectangularTrimmedSurface)::DownCast(S1);
+ S1 = RTS->BasisSurface();
+ }
+ Handle(Geom_Plane) Pln1 = Handle(Geom_Plane)::DownCast(S1);
+ if( Pln1.IsNull() ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Surface from face is not plane");
+ }
+ gp_Vec aDir1(Pln1->Axis().Direction());
+
+ Handle(Geom_Surface) S2 = BRep_Tool::Surface(TopoDS::Face(F2));
+ if(S2->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+ Handle(Geom_RectangularTrimmedSurface) RTS =
+ Handle(Geom_RectangularTrimmedSurface)::DownCast(S2);
+ S2 = RTS->BasisSurface();
+ }
+ Handle(Geom_Plane) Pln2 =
+ Handle(Geom_Plane)::DownCast(S2);
+ if( Pln2.IsNull() ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Surface from face is not plane");
+ }
+ gp_Vec aDir2(Pln2->Axis().Direction());
+
+ gp_Pnt P1 = BRep_Tool::Pnt(TopoDS::Vertex(SecVs(i)));
+ gp_Pnt P2 = BRep_Tool::Pnt(TopoDS::Vertex(SecVs(i+1)));
+ gp_Vec aDir(P1,P2);
+ if(fabs(aDir.Angle(aDir1))>PI/2.)
+ aDir1.Reverse();
+ if(fabs(aDir.Angle(aDir2))>PI/2.)
+ aDir2.Reverse();
+
+ TopExp_Explorer anExpE(F1,TopAbs_EDGE);
+ TopTools_SequenceOfShape aNewFs;
+ //int nbee=0;
+ for(; anExpE.More(); anExpE.Next()) {
+ TopoDS_Edge E1 = TopoDS::Edge(anExpE.Current());
+ //nbee++;
+ if(!FF.Contains(E1))
+ cout<<"map FF not contains key E1"<<endl;
+
+ if(VPE.Contains(E1)) {
+ aNewFs.Append(VPE.FindFromKey(E1));
+#ifdef _DEBUG_
+ cout<<" using existed face"<<endl;
+#endif
+ continue;
+ }
+
+ TopoDS_Edge E3 = TopoDS::Edge(FF.FindFromKey(E1));
+ TopoDS_Vertex V1 = sae.FirstVertex(E1);
+ TopoDS_Vertex V2 = sae.LastVertex(E1);
+ if(!FF.Contains(V1))
+ cout<<"map FF not contains key V1"<<endl;
+ if(!FF.Contains(V2))
+ cout<<"map FF not contains key V2"<<endl;
+ TopoDS_Vertex V3 = TopoDS::Vertex(FF.FindFromKey(V2));
+ TopoDS_Vertex V4 = TopoDS::Vertex(FF.FindFromKey(V1));
+ TopoDS_Vertex Vtmp = sae.FirstVertex(E3);
+ if(Vtmp.IsSame(V4))
+ E3.Reverse();
+ gp_Pnt P1 = BRep_Tool::Pnt(V1);
+ gp_Pnt P2 = BRep_Tool::Pnt(V2);
+ gp_Pnt P3 = BRep_Tool::Pnt(V3);
+ gp_Pnt P4 = BRep_Tool::Pnt(V4);
+ // make E2
+ TopoDS_Edge E2;
+ Handle(Geom_BSplineCurve) C2;
+ if(VPE.Contains(V2)) {
+ E2 = TopoDS::Edge(VPE.FindFromKey(V2));
+ double fp,lp;
+ C2 = Handle(Geom_BSplineCurve)::DownCast(BRep_Tool::Curve(E2,fp,lp));
+ }
+ else {
+ Handle(TColgp_HArray1OfPnt) HAP = new TColgp_HArray1OfPnt(1,2);
+ HAP->SetValue(1,P2);
+ HAP->SetValue(2,P3);
+ GeomAPI_Interpolate anInt(HAP,Standard_False,1.e-7);
+ anInt.Load(aDir1,aDir2);
+ anInt.Perform();
+ C2 = anInt.Curve();
+ B.MakeEdge(E2,C2,1.e-7);
+ B.Add(E2,TopoDS::Vertex(V2.Oriented(TopAbs_FORWARD)));
+ B.Add(E2,TopoDS::Vertex(V3.Oriented(TopAbs_REVERSED)));
+ VPE.Add(V2,E2);
+ }
+ // make E4
+ TopoDS_Edge E4;
+ Handle(Geom_BSplineCurve) C4;
+ if(VPE.Contains(V1)) {
+ E4 = TopoDS::Edge(VPE.FindFromKey(V1));
+ double fp,lp;
+ C4 = Handle(Geom_BSplineCurve)::DownCast(BRep_Tool::Curve(E4,fp,lp));
+ }
+ else {
+ Handle(TColgp_HArray1OfPnt) HAP = new TColgp_HArray1OfPnt(1,2);
+ HAP->SetValue(1,P1);
+ HAP->SetValue(2,P4);
+ GeomAPI_Interpolate anInt(HAP,Standard_False,1.e-7);
+ anInt.Load(aDir1,aDir2);
+ anInt.Perform();
+ C4 = anInt.Curve();
+ B.MakeEdge(E4,anInt.Curve(),1.e-7);
+ B.Add(E4,TopoDS::Vertex(V1.Oriented(TopAbs_FORWARD)));
+ B.Add(E4,TopoDS::Vertex(V4.Oriented(TopAbs_REVERSED)));
+ VPE.Add(V1,E4);
+ }
+
+ TopoDS_Wire W;
+ B.MakeWire(W);
+ B.Add(W,E1);
+ B.Add(W,E2);
+ B.Add(W,E3);
+ B.Add(W,E4.Reversed());
+ //cout<<" wire for edge "<<nbee<<" is created"<<endl;
+ //BRepTools::Write(W,"/dn02/users_Linux/skl/work/Bugs/14857/w.brep");
+
+ // make surface
+
+ double fp,lp;
+ Handle(Geom_Curve) C1 = BRep_Tool::Curve(E1,fp,lp);
+ //bool IsConicC1 = false;
+ //if( C1->IsKind(STANDARD_TYPE(Geom_Conic)) ) {
+ // IsConicC1 = true;
+ // cout<<"C1 - Geom_Conic"<<endl;
+ //}
+ if( C1->IsKind(STANDARD_TYPE(Geom_Line)) || C1->IsKind(STANDARD_TYPE(Geom_Conic)) ) {
+ C1 = new Geom_TrimmedCurve(C1,fp,lp);
+ }
+ //if(IsConicC1) {
+ // double tol = BRep_Tool::Tolerance(E1);
+ // GeomConvert_ApproxCurve ApxC1(C1,tol,GeomAbs_C1,10,5);
+ // C1 = ApxC1.Curve();
+ //}
+ Handle(Geom_Curve) C3 = BRep_Tool::Curve(E3,fp,lp);
+ if( C3->IsKind(STANDARD_TYPE(Geom_Line)) || C3->IsKind(STANDARD_TYPE(Geom_Conic)) ) {
+ C3 = new Geom_TrimmedCurve(C3,fp,lp);
+ }
+ //filebuf fic;
+ //ostream os(&fic);
+ //os.precision(15);
+ Handle(Geom_BSplineCurve) CE1 =
+ GeomConvert::CurveToBSplineCurve(C1,Convert_RationalC1);
+ if(CE1->Degree()<3)
+ CE1->IncreaseDegree(3);
+ Handle(Geom_BSplineCurve) CE2 =
+ GeomConvert::CurveToBSplineCurve(C2,Convert_RationalC1);
+ if(CE2->Degree()<3)
+ CE2->IncreaseDegree(3);
+ Handle(Geom_BSplineCurve) CE3 =
+ GeomConvert::CurveToBSplineCurve(C3,Convert_RationalC1);
+ if(CE3->Degree()<3)
+ CE3->IncreaseDegree(3);
+ Handle(Geom_BSplineCurve) CE4 =
+ GeomConvert::CurveToBSplineCurve(C4,Convert_RationalC1);
+ if(CE4->Degree()<3)
+ CE4->IncreaseDegree(3);
+ //cout<<"CE1->Degree()="<<CE1->Degree()<<" CE2->Degree()="<<CE2->Degree()
+ // <<" CE3->Degree()="<<CE3->Degree()<<" CE4->Degree()="<<CE4->Degree()<<endl;
+ //if(fic.open("/dn02/users_Linux/skl/work/Bugs/14857/ce1.brep",ios::out)) {
+ // os<<"DrawTrSurf_BSplineCurve"<<endl;
+ // GeomTools::Write(CE1,os);
+ // fic.close();
+ //}
+
+ Handle(Geom_Surface) BS;
+ try {
+ GeomFill_BSplineCurves GF(CE1,CE2,CE3,CE4,GeomFill_CoonsStyle);
+ //GeomFill_BSplineCurves GF(CE1,CE2,CE3,CE4,GeomFill_StretchStyle);
+ BS = GF.Surface();
+ }
+ catch(...) {
+ cout<<" can not create BSplineSurface - create Bezier"<<endl;
+ int NbP=26;
+ TColgp_Array2OfPnt Points(1,NbP,1,NbP);
+ double fp1,lp1,fp2,lp2;
+ Handle(Geom_Curve) C1 = BRep_Tool::Curve(E1,fp1,lp1);
+ Handle(Geom_Curve) C3 = BRep_Tool::Curve(E3,fp2,lp2);
+ gp_Pnt P1C1,P2C1;
+ C1->D0(fp1,P1C1);
+ C1->D0(lp1,P2C1);
+ gp_Pnt P1C3,P2C3;
+ C3->D0(fp2,P1C3);
+ C3->D0(lp2,P2C3);
+ int n1,n2;
+ double fp,lp;
+ // get points from C1
+ if(P1.Distance(P1C1)<1.e-6) {
+ fp = fp1;
+ lp = lp1;
+ }
+ else {
+ fp = lp1;
+ lp = fp1;
+ }
+ double step = (lp-fp)/(NbP-1);
+ Points.SetValue(1,1,P1);
+ double par = fp;
+ for(n1=2; n1<NbP; n1++) {
+ gp_Pnt P;
+ par += step;
+ C1->D0(par,P);
+ Points.SetValue(1,n1,P);
+ }
+ Points.SetValue(1,NbP,P2);
+ // get points from C3
+ if(P4.Distance(P1C3)<1.e-6) {
+ fp = fp2;
+ lp = lp2;
+ }
+ else {
+ fp = lp2;
+ lp = fp2;
+ }
+ step = (lp-fp)/(NbP-1);
+ Points.SetValue(NbP,1,P4);
+ par = fp;
+ for(n1=2; n1<NbP; n1++) {
+ gp_Pnt P;
+ par += step;
+ C3->D0(par,P);
+ Points.SetValue(NbP,n1,P);
+ }
+ Points.SetValue(NbP,NbP,P3);
+ // create isolines and get points from them
+ for(n1=1; n1<=NbP; n1++) {
+ gp_Pnt PI1 = Points.Value(1,n1);
+ gp_Pnt PI2 = Points.Value(NbP,n1);
+ Handle(TColgp_HArray1OfPnt) HAP = new TColgp_HArray1OfPnt(1,2);
+ HAP->SetValue(1,PI1);
+ HAP->SetValue(2,PI2);
+ GeomAPI_Interpolate anInt(HAP,Standard_False,1.e-7);
+ anInt.Load(aDir1,aDir2);
+ anInt.Perform();
+ Handle(Geom_Curve) iso = anInt.Curve();
+ fp = iso->FirstParameter();
+ lp = iso->LastParameter();
+ step = (lp-fp)/(NbP-1);
+ par = fp;
+ TopoDS_Compound VComp;
+ B.MakeCompound(VComp);
+ for(n2=2; n2<NbP; n2++) {
+ gp_Pnt P;
+ par += step;
+ iso->D0(par,P);
+ Points.SetValue(n2,n1,P);
+ }
+ }
+ // create surface and face
+ //Handle(Geom_BezierSurface) BS = new Geom_BezierSurface(Points);
+ BS = new Geom_BezierSurface(Points);
+ }
+
+ BRepBuilderAPI_MakeFace BB(BS,W);
+ TopoDS_Face NewF = BB.Face();
+ Handle(ShapeFix_Face) sff = new ShapeFix_Face(NewF);
+ sff->Perform();
+ sff->FixOrientation();
+ TopoDS_Face FixedFace = sff->Face();
+ aNewFs.Append(FixedFace);
+ VPE.Add(E1,FixedFace);
+ //cout<<" face for edge "<<nbee<<" is created"<<endl;
+ //BRepTools::Write(FixedFace,"/dn02/users_Linux/skl/work/Bugs/14857/f.brep");
+ }
+ // make shell
+ TopoDS_Shell aShell;
+ B.MakeShell(aShell);
+ for(int nf=1; nf<=aNewFs.Length(); nf++) {
+ B.Add(aShell,aNewFs(nf));
+ }
+ B.Add(aShell,F1);
+ B.Add(aShell,F2);
+
+ // make sewing for this shell
+ Handle(BRepBuilderAPI_Sewing) aSewing = new BRepBuilderAPI_Sewing;
+ aSewing->SetTolerance(Precision::Confusion());
+ aSewing->SetFaceMode(Standard_True);
+ aSewing->SetFloatingEdgesMode(Standard_False);
+ aSewing->SetNonManifoldMode(Standard_False);
+ for ( anExp.Init( aShell, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ aSewing->Add(anExp.Current());
+ }
+ aSewing->Perform();
+ cout<<" shell for face "<<nbff<<" is created"<<endl;
+ const TopoDS_Shape aSewShape = aSewing->SewedShape();
+ //BRepTools::Write(aSewShape,"/dn02/users_Linux/skl/work/Bugs/14857/sew.brep");
+ if( aSewShape.ShapeType() == TopAbs_SHELL ) {
+ aShell = TopoDS::Shell(aSewShape);
+ GProp_GProps aSystem;
+ BRepGProp::VolumeProperties(aShell, aSystem);
+ if(aSystem.Mass()<0) {
+ //cout<<"aSewShape is reversed"<<endl;
+ aShell.Reverse();
+ }
+ if(BRep_Tool::IsClosed(aShell)) {
+ TopoDS_Solid aSolid;
+ B.MakeSolid(aSolid);
+ B.Add(aSolid,aShell);
+ B.Add(aComp,aSolid);
+ cout<<" solid for face "<<nbff<<" is created"<<endl;
+ }
+ else {
+ B.Add(aComp,aShell);
+ cout<<" solid for face "<<nbff<<" is not created"<<endl;
+ }
+ }
+ else {
+ B.Add(aComp,aShell);
+ cout<<" solid for face "<<nbff<<" is not created"<<endl;
+ }
+ //cout<<" solid for face "<<nbff<<" is created"<<endl;
+
+ //Handle(ShapeFix_Shell) sfs = new ShapeFix_Shell(aShell);
+ //sfs->Perform();
+ //TopoDS_Shell FixedShell = sfs->Shell();
+ /*
+ GProp_GProps aSystem;
+ BRepGProp::VolumeProperties(FixedShell, aSystem);
+ if(aSystem.Mass()<0) {
+ //cout<<"aSewShape is reversed"<<endl;
+ FixedShell.Reverse();
+ }
+ if(BRep_Tool::IsClosed(FixedShell)) {
+ TopoDS_Solid aSolid;
+ B.MakeSolid(aSolid);
+ B.Add(aSolid,aShell);
+ B.Add(aComp,aSolid);
+ }
+ else {
+ B.Add(aComp,FixedShell);
+ }
+ */
+ }
+ }
+
+ //BRepTools::Write(aComp,"/dn02/users_Linux/skl/work/Bugs/14857/comp.brep");
return aComp;
}
//=======================================================================
Standard_Integer GEOMImpl_PipeDriver::Execute(TFunction_Logbook& log) const
{
+ //cout<<"PipeDriver::Execute"<<endl;
if (Label().IsNull()) return 0;
Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label());
GEOMImpl_IPipe* aCI= 0;
aCI = new GEOMImpl_IPipeDiffSect(aFunction);
else if(aType == PIPE_SHELL_SECTIONS)
aCI = new GEOMImpl_IPipeShellSect(aFunction);
+ else if(aType == PIPE_SHELLS_WITHOUT_PATH)
+ aCI = new GEOMImpl_IPipeShellSect(aFunction);
else
return 0;
- Handle(GEOM_Function) aRefPath = aCI->GetPath();
- TopoDS_Shape aShapePath = aRefPath->GetValue();
+ TopoDS_Wire aWirePath;
+ if(aType != PIPE_SHELLS_WITHOUT_PATH) {
+ // working with path
+ Handle(GEOM_Function) aRefPath = aCI->GetPath();
+ TopoDS_Shape aShapePath = aRefPath->GetValue();
+ if (aShapePath.IsNull()) {
+ cout<<"Driver : path is null"<<endl;
+ if(aCI) delete aCI;
+ Standard_NullObject::Raise("MakePipe aborted : null path argument");
+ }
- if (aShapePath.IsNull()) {
- cout<<"Driver : path is null"<<endl;
- if(aCI) delete aCI;
- Standard_NullObject::Raise("MakePipe aborted : null path argument");
- }
-
- // Get path contour
- TopoDS_Wire aWirePath;
- if (aShapePath.ShapeType() == TopAbs_WIRE) {
- aWirePath = TopoDS::Wire(aShapePath);
- }
- else {
- if (aShapePath.ShapeType() == TopAbs_EDGE) {
- TopoDS_Edge anEdge = TopoDS::Edge(aShapePath);
- aWirePath = BRepBuilderAPI_MakeWire(anEdge);
- }
+ // Get path contour
+ if (aShapePath.ShapeType() == TopAbs_WIRE) {
+ aWirePath = TopoDS::Wire(aShapePath);
+ }
else {
- if(aCI) delete aCI;
- Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge");
- }
+ if (aShapePath.ShapeType() == TopAbs_EDGE) {
+ TopoDS_Edge anEdge = TopoDS::Edge(aShapePath);
+ aWirePath = BRepBuilderAPI_MakeWire(anEdge);
+ }
+ else {
+ if(aCI) delete aCI;
+ Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge");
+ }
+ }
}
-
+
TopoDS_Shape aShape;
- if (aType == PIPE_BASE_PATH) {
-
+ if (aType == PIPE_BASE_PATH)
+ {
Handle(GEOM_Function) aRefBase = aCI->GetBase();
-
TopoDS_Shape aShapeBase = aRefBase->GetValue();
-
+
if (aShapeBase.IsNull()) {
if(aCI) delete aCI;
Standard_NullObject::Raise("MakePipe aborted : null base argument");
}
//building pipe with different sections
- else if (aType == PIPE_DIFFERENT_SECTIONS)
- {
+ else if (aType == PIPE_DIFFERENT_SECTIONS) {
GEOMImpl_IPipeDiffSect* aCIDS = (GEOMImpl_IPipeDiffSect*)aCI;
//GEOMImpl_IPipeDiffSect* aCIDS = static_cast<GEOMImpl_IPipeDiffSect*>(aCI);
- BRepOffsetAPI_MakePipeShell aBuilder(aWirePath);
+ //BRepOffsetAPI_MakePipeShell aBuilder(aWirePath);
Handle(TColStd_HSequenceOfTransient) aBasesObjs = aCIDS->GetBases ();
Handle(TColStd_HSequenceOfTransient) aLocObjs = aCIDS->GetLocations ();
Standard_Boolean aWithContact = (aCIDS->GetWithContactMode());
Standard_Boolean aWithCorrect = (aCIDS->GetWithCorrectionMode());
- Standard_Integer i =1, nbBases = aBasesObjs->Length(),
+ Standard_Integer i =1, nbBases = aBasesObjs->Length(),
nbLocs = (aLocObjs.IsNull() ? 0 :aLocObjs->Length());
-
- if(nbLocs && nbLocs != nbBases)
- {
+
+ if(nbLocs && nbLocs != nbBases) {
if(aCI) delete aCI;
Standard_ConstructionError::Raise("Number of sections is not equal to number of locations ");
}
TopTools_SequenceOfShape aSeqBases;
TopTools_SequenceOfShape aSeqLocs;
TopTools_SequenceOfShape aSeqFaces;
- for( ; i <= nbBases; i++)
- {
+ for( ; i <= nbBases; i++) {
Handle(Standard_Transient) anItem = aBasesObjs->Value(i);
if(anItem.IsNull())
continue;
TopAbs_ShapeEnum aTypeBase = aShapeBase.ShapeType();
//if for section was specified face with a few wires then a few
- // pipes were build and make solid
+ // pipes were build and make solid
Standard_Boolean NeedCreateSolid = Standard_False;
if(aTypeBase == TopAbs_SHELL) {
// create wire as boundary contour if shell is no closed
aSeqFaces.Append(aShapeBase);
aSeqBases.Append(aWire);
}
- else if(aTypeBase == TopAbs_FACE)
- {
+ else if(aTypeBase == TopAbs_FACE) {
NeedCreateSolid = Standard_True;
//for case one path should be used other type function
aSeqFaces.Append(aShapeBase);
else if(aTypeBase == TopAbs_WIRE || aTypeBase == TopAbs_VERTEX) {
aSeqBases.Append(aShapeBase);
}
- else if(aTypeBase == TopAbs_EDGE)
- {
+ else if(aTypeBase == TopAbs_EDGE) {
TopoDS_Edge anEdge = TopoDS::Edge(aShapeBase);
TopoDS_Shape aWireProf = BRepBuilderAPI_MakeWire(anEdge);
aSeqBases.Append(aWireProf);
}
- if(nbLocs)
- {
+ if(nbLocs) {
Handle(Standard_Transient) anItemLoc = aLocObjs->Value(i);
if(anItemLoc.IsNull())
continue;
aSeqLocs.Append(aShapeLoc);
}
}
-
+
nbLocs = aSeqLocs.Length();
- Standard_Integer nbShapes = aSeqBases.Length();
- Standard_Integer step = nbShapes/nbBases;
-
- if(nbShapes < nbBases || fmod((double)nbShapes, (double)nbBases))
- {
- if(aCI) delete aCI;
- Standard_ConstructionError::Raise("Invalid sections were specified for building pipe");
+
+ // skl 02.05.2007
+ TopTools_SequenceOfShape Edges;
+ if(nbLocs>0) {
+ // we have to check that each location shape is a vertex from
+ // path and update aSeqLocs if it is needed (and possible)
+ TColgp_SequenceOfPnt PLocs;
+ for(i=1; i<=nbLocs; i++) {
+ TopoDS_Vertex V = TopoDS::Vertex(aSeqLocs.Value(i));
+ PLocs.Append(BRep_Tool::Pnt(V));
+ }
+ //TopTools_SequenceOfShape Edges;
+ TopExp_Explorer anExp;
+ for ( anExp.Init( aWirePath, TopAbs_EDGE ); anExp.More(); anExp.Next() ) {
+ Edges.Append(anExp.Current());
+ }
+ int nbEdges = Edges.Length();
+ ShapeAnalysis_Edge sae;
+ TopoDS_Edge edge = TopoDS::Edge(Edges.First());
+ double tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VF = sae.FirstVertex(edge);
+ gp_Pnt PF = BRep_Tool::Pnt(VF);
+ //cout<<"PF("<<PF.X()<<","<<PF.Y()<<","<<PF.Z()<<")"<<endl;
+ if( PF.Distance(PLocs.First()) > tol ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise
+ ("First location shapes is not coincided with first vertex of aWirePath");
+ }
+ aSeqLocs.ChangeValue(1) = VF;
+ edge = TopoDS::Edge(Edges.Last());
+ tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex VL = sae.LastVertex(edge);
+ gp_Pnt PL = BRep_Tool::Pnt(VL);
+ if( PL.Distance(PLocs.Last()) > tol ) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise
+ ("Last location shapes is not coincided with last vertex of aWirePath");
+ }
+ aSeqLocs.ChangeValue(nbLocs) = VL;
+ int jcurr = 2;
+ for(i=1; i<=Edges.Length() && jcurr<nbLocs; i++) {
+ TopoDS_Edge E = TopoDS::Edge(Edges.Value(i));
+ tol = BRep_Tool::Tolerance(edge);
+ TopoDS_Vertex V1 = sae.FirstVertex(E);
+ TopoDS_Vertex V2 = sae.LastVertex(E);
+ gp_Pnt P1 = BRep_Tool::Pnt(V1);
+ gp_Pnt P2 = BRep_Tool::Pnt(V2);
+ if( P2.Distance(PLocs.Value(jcurr)) < tol ) {
+ aSeqLocs.ChangeValue(jcurr) = V2;
+ jcurr++;
+ }
+ else {
+ // find distance between E and aLocs(jcurr)
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(E,fp,lp);
+ GeomAPI_ProjectPointOnCurve PPC (PLocs.Value(jcurr),C);
+ if( PPC.NbPoints()>0 &&
+ PLocs.Value(jcurr).Distance(PPC.Point(1)) < tol ) {
+ double param = PPC.Parameter(1);
+ gp_Pnt PC1;
+ C->D0(param,PC1);
+ // split current edge
+ Handle(Geom_TrimmedCurve) tc1 = new Geom_TrimmedCurve(C,fp,param);
+ Handle(Geom_TrimmedCurve) tc2 = new Geom_TrimmedCurve(C,param,lp);
+ TopoDS_Edge E1,E2;
+ BRep_Builder B;
+ gp_Pnt Pfp;
+ C->D0(fp,Pfp);
+ if(Pfp.Distance(P1)<tol) {
+ B.MakeEdge(E1,tc1,tol);
+ B.Add(E1,V1);
+ TopoDS_Shape tmpV = aSeqLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
+ B.Add(E1,TopoDS::Vertex(tmpV));
+ B.MakeEdge(E2,tc2,tol);
+ tmpV = aSeqLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
+ B.Add(E2,TopoDS::Vertex(tmpV));
+ B.Add(E2,V2);
+ }
+ else {
+ B.MakeEdge(E1,tc2,tol);
+ TopoDS_Shape tmpV = aSeqLocs.Value(jcurr).Oriented(TopAbs_FORWARD);
+ B.Add(E1,TopoDS::Vertex(tmpV));
+ B.Add(E1,V1);
+ E1.Reverse();
+ B.MakeEdge(E2,tc1,tol);
+ B.Add(E2,V2);
+ tmpV = aSeqLocs.Value(jcurr).Oriented(TopAbs_REVERSED);
+ B.Add(E2,TopoDS::Vertex(tmpV));
+ E2.Reverse();
+ }
+ jcurr++;
+ Edges.Remove(i);
+ Edges.InsertAfter(i-1,E1);
+ Edges.InsertAfter(i,E2);
+ }
+ }
+ }
+ if(nbEdges<Edges.Length()) {
+ // one of edges was splitted => we have to update WirePath
+ BRep_Builder B;
+ TopoDS_Wire W;
+ B.MakeWire(W);
+ for(i=1; i<=Edges.Length(); i++) {
+ B.Add(W,TopoDS::Edge(Edges.Value(i)));
+ }
+ aWirePath = W;
+ }
}
-
- Standard_Integer ind =0;
- for( i=1; i <= nbShapes && ind < nbShapes; i++) //i+nbBases <= nbShapes
- {
- TopTools_SequenceOfShape usedBases;
- Standard_Integer j = 1;
- for( ; j <= nbBases ; j++)
- {
- ind = i + (j-1)*step;
-
- TopoDS_Shape aWireProf = aSeqBases.Value(ind);
- usedBases.Append(aWireProf);
- if(nbLocs)
- {
- TopoDS_Shape aShapeLoc = aSeqLocs.Value(j);
- TopoDS_Vertex aVert = TopoDS::Vertex(aShapeLoc);
- aBuilder.Add(aWireProf,aVert,aWithContact,aWithCorrect);
- }
- else
- aBuilder.Add(aWireProf,aWithContact,aWithCorrect);
- }
- if(!aBuilder.IsReady())
- {
+
+ // check curvature of wire for condition that
+ // max summary angle between directions along
+ // wire path must be < 4*PI. If not - split wire
+ // and seguences of shapes, perform pipe for each
+ // and make sewing after that
+ double fp,lp;
+ Handle(Geom_Curve) C = BRep_Tool::Curve(TopoDS::Edge(Edges.Value(1)),fp,lp);
+ gp_Pnt P1,P2;
+ gp_Vec Vec1,Vec2;
+ C->D1(fp,P1,Vec1);
+ C->D1(lp,P2,Vec2);
+ double SumAng = fabs(Vec1.Angle(Vec2));
+ Vec1 = Vec2;
+ P1 = P2;
+ TColStd_SequenceOfInteger SplitEdgeNums,SplitLocNums;
+ int LastLoc = 1;
+ //cout<<"Edges.Length()="<<Edges.Length()<<endl;
+ for(i=2; i<=Edges.Length(); i++) {
+ TopoDS_Edge edge = TopoDS::Edge(Edges.Value(i));
+ double tol = BRep_Tool::Tolerance(edge);
+ Handle(Geom_Curve) C = BRep_Tool::Curve(edge,fp,lp);
+ C->D1(lp,P2,Vec2);
+ double ang = fabs(Vec1.Angle(Vec2));
+ SumAng += ang;
+ if(SumAng>4*PI) {
+ SumAng = ang;
+ SplitEdgeNums.Append(i-1);
+ int j;
+ for(j=LastLoc+1; j<=aSeqLocs.Length(); j++) {
+ TopoDS_Vertex aVert = TopoDS::Vertex(aSeqLocs.Value(j));
+ gp_Pnt P = BRep_Tool::Pnt(aVert);
+ if( P1.Distance(P) < tol ) {
+ SplitLocNums.Append(j);
+ LastLoc = j;
+ break;
+ }
+ }
+ }
+ Vec1 = Vec2;
+ P1 = P2;
+ }
+
+ //cout<<"SplitEdgeNums.Length()="<<SplitEdgeNums.Length()<<endl;
+ //cout<<"SplitLocNums.Length()="<<SplitLocNums.Length()<<endl;
+ if( SplitLocNums.Length()==SplitEdgeNums.Length() && SplitEdgeNums.Length()>0 ) {
+ TopTools_SequenceOfShape aSeqRes;
+ int nn, num1 = 1, num2 = 1;
+ for(nn=1; nn<=SplitEdgeNums.Length(); nn++) {
+ // create wirepath and sequences of shapes
+ BRep_Builder B;
+ TopoDS_Wire tmpW;
+ B.MakeWire(tmpW);
+ for(i=num1; i<=SplitEdgeNums.Value(nn); i++) {
+ B.Add(tmpW,TopoDS::Edge(Edges.Value(i)));
+ }
+ num1 = SplitEdgeNums.Value(nn) + 1;
+ TopTools_SequenceOfShape aTmpSeqBases;
+ TopTools_SequenceOfShape aTmpSeqLocs;
+ for(i=num2; i<=SplitLocNums.Value(nn); i++) {
+ aTmpSeqBases.Append(aSeqBases.Value(i));
+ aTmpSeqLocs.Append(aSeqLocs.Value(i));
+ }
+ num2 = SplitLocNums.Value(nn);
+ // make pipe
+ BRepOffsetAPI_MakePipeShell aBuilder(tmpW);
+ Standard_Integer nbShapes = aTmpSeqBases.Length();
+ for(i=1; i<=nbShapes; i++) {
+ TopoDS_Shape aShapeLoc = aTmpSeqLocs.Value(i);
+ TopoDS_Vertex aVert = TopoDS::Vertex(aShapeLoc);
+ aBuilder.Add(aTmpSeqBases.Value(i), aVert, aWithContact, aWithCorrect);
+ }
+ if(!aBuilder.IsReady()) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Invalid input data for building PIPE: bases are invalid");
+ }
+ aBuilder.Build();
+ TopoDS_Shape resShape = aBuilder.Shape();
+ aSeqRes.Append(resShape);
+ }
+ // create wirepath and sequences of shapes for last part
+ BRep_Builder B;
+ TopoDS_Wire tmpW;
+ B.MakeWire(tmpW);
+ for(i=num1; i<=Edges.Length(); i++) {
+ B.Add(tmpW,TopoDS::Edge(Edges.Value(i)));
+ }
+ TopTools_SequenceOfShape aTmpSeqBases;
+ TopTools_SequenceOfShape aTmpSeqLocs;
+ for(i=num2; i<=aSeqLocs.Length(); i++) {
+ aTmpSeqBases.Append(aSeqBases.Value(i));
+ aTmpSeqLocs.Append(aSeqLocs.Value(i));
+ }
+ // make pipe for last part
+ BRepOffsetAPI_MakePipeShell aBuilder(tmpW);
+ Standard_Integer nbShapes = aTmpSeqBases.Length();
+ for(i=1; i<=nbShapes; i++) {
+ TopoDS_Shape aShapeLoc = aTmpSeqLocs.Value(i);
+ TopoDS_Vertex aVert = TopoDS::Vertex(aShapeLoc);
+ aBuilder.Add(aTmpSeqBases.Value(i), aVert, aWithContact, aWithCorrect);
+ }
+ if(!aBuilder.IsReady()) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Invalid input data for building PIPE: bases are invalid");
+ }
+ aBuilder.Build();
+ TopoDS_Shape resShape = aBuilder.Shape();
+ aSeqRes.Append(resShape);
+ // make sewing for result
+ Handle(BRepBuilderAPI_Sewing) aSewing = new BRepBuilderAPI_Sewing;
+ aSewing->SetTolerance(Precision::Confusion());
+ aSewing->SetFaceMode(Standard_True);
+ aSewing->SetFloatingEdgesMode(Standard_False);
+ aSewing->SetNonManifoldMode(Standard_False);
+ for(i=1; i<=aSeqRes.Length(); i++) {
+ aSewing->Add(aSeqRes.Value(i));
+ }
+ aSewing->Perform();
+ aShape = aSewing->SewedShape();
+ }
+ else {
+ // old implementation without splitting
+ BRepOffsetAPI_MakePipeShell aBuilder(aWirePath);
+
+ Standard_Integer nbShapes = aSeqBases.Length();
+ Standard_Integer step = nbShapes/nbBases;
+
+ if(nbShapes < nbBases || fmod((double)nbShapes, (double)nbBases)) {
+ if(aCI) delete aCI;
+ Standard_ConstructionError::Raise("Invalid sections were specified for building pipe");
+ }
+ Standard_Integer ind =0;
+ for( i=1; i <= nbShapes && ind < nbShapes; i++) { //i+nbBases <= nbShapes
+ TopTools_SequenceOfShape usedBases;
+ Standard_Integer j = 1;
+ for( ; j <= nbBases ; j++) {
+ ind = i + (j-1)*step;
+ TopoDS_Shape aWireProf = aSeqBases.Value(ind);
+ usedBases.Append(aWireProf);
+ if(nbLocs) {
+ TopoDS_Shape aShapeLoc = aSeqLocs.Value(j);
+ TopoDS_Vertex aVert = TopoDS::Vertex(aShapeLoc);
+ aBuilder.Add(aWireProf,aVert,aWithContact,aWithCorrect);
+ }
+ else
+ aBuilder.Add(aWireProf,aWithContact,aWithCorrect);
+ }
+ if(!aBuilder.IsReady()) {
if(aCI) delete aCI;
Standard_ConstructionError::Raise("Invalid input data for building PIPE: bases are invalid");
}
aBuilder.Build();
aShape = aBuilder.Shape();
- aSeqFaces.Append(aShape);
+ aSeqFaces.Append(aShape);
for( j = 1; j <=usedBases.Length(); j++)
aBuilder.Delete(usedBases.Value(j));
- }
-
- //for case if section is face
- if(aSeqFaces.Length() >1)
- {
- BRep_Builder aB;
- TopoDS_Compound aComp;
- aB.MakeCompound(aComp);
- for( i = 1; i <= aSeqFaces.Length(); i++)
- aB.Add(aComp,aSeqFaces.Value(i));
- aShape = aComp;
+ }
+
+ //for case if section is face
+ if(aSeqFaces.Length() >1) {
+ BRep_Builder aB;
+ TopoDS_Compound aComp;
+ aB.MakeCompound(aComp);
+ for( i = 1; i <= aSeqFaces.Length(); i++)
+ aB.Add(aComp,aSeqFaces.Value(i));
+ aShape = aComp;
+ }
}
}
aShape = CreatePipeForShellSections(aWirePath,aCI);
}
+ //building pipe shell sections without path
+ else if (aType == PIPE_SHELLS_WITHOUT_PATH) {
+ aShape = CreatePipeShellsWithoutPath(aCI);
+ }
+
+ if (aCI) {
+ delete aCI;
+ aCI = 0;
+ }
+
if (aShape.IsNull()) return 0;
BRepCheck_Analyzer ana (aShape, Standard_False);
if (!ana.IsValid()) {
- if(aCI) delete aCI;
- Standard_ConstructionError::Raise("Algorithm have produced an invalid shape result");
+ ShapeFix_ShapeTolerance aSFT;
+ aSFT.LimitTolerance(aShape,Precision::Confusion(),Precision::Confusion());
+ Handle(ShapeFix_Shape) aSfs = new ShapeFix_Shape(aShape);
+ aSfs->SetPrecision(Precision::Confusion());
+ aSfs->Perform();
+ aShape = aSfs->Shape();
+
+ ana.Init(aShape, Standard_False);
+ if (!ana.IsValid())
+ Standard_ConstructionError::Raise("Algorithm have produced an invalid shape result");
}
- aFunction->SetValue(aShape);
+ TopoDS_Shape aRes = GEOMImpl_IShapesOperations::CompsolidToCompound(aShape);
+ aFunction->SetValue(aRes);
log.SetTouched(Label());
- if(aCI) delete aCI;
return 1;
}
#include <BRep_Tool.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
-
+#include <BRepExtrema_DistShapeShape.hxx>
+#include <Precision.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
aP = aFP + (aLP - aFP) * aPI.GetParameter();
aPnt = aCurve->Value(aP);
- } else {
+ } else if (aType == POINT_LINES_INTERSECTION) {
+ Handle(GEOM_Function) aRef1 = aPI.GetLine1();
+ Handle(GEOM_Function) aRef2 = aPI.GetLine2();
+
+ TopoDS_Shape aRefShape1 = aRef1->GetValue();
+ TopoDS_Shape aRefShape2 = aRef2->GetValue();
+
+ if (aRefShape1.ShapeType() != TopAbs_EDGE || aRefShape2.ShapeType() != TopAbs_EDGE ) {
+ Standard_TypeMismatch::Raise
+ ("Creation Point On Lines Intersection Aborted : Line shape is not an edge");
+ }
+ //Calculate Lines Intersection Point
+ BRepExtrema_DistShapeShape dst (aRefShape1, aRefShape2);
+ if (dst.IsDone())
+ {
+ gp_Pnt P1, P2;
+ for (int i = 1; i <= dst.NbSolution(); i++) {
+ P1 = dst.PointOnShape1(i);
+ P2 = dst.PointOnShape2(i);
+ Standard_Real Dist = P1.Distance(P2);
+ if ( Dist <= Precision::Confusion() )
+ aPnt = P1;
+ else
+ Standard_TypeMismatch::Raise ("Lines not have an Intersection Point");
+ }
+ }
+ }
+ else {
return 0;
}
#include <Standard_Stream.hxx>
#include <GEOMImpl_PrismDriver.hxx>
+
+#include <GEOMImpl_IShapesOperations.hxx>
#include <GEOMImpl_IPrism.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
+#include <BRepBuilderAPI_Transform.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <Precision.hxx>
#include <gp_Pnt.hxx>
+#include <gp_Trsf.hxx>
+#include <gp_Vec.hxx>
#include <Standard_ConstructionError.hxx>
//=======================================================================
TopoDS_Shape aShape;
- if (aType == PRISM_BASE_VEC_H) {
+ if (aType == PRISM_BASE_VEC_H || aType == PRISM_BASE_VEC_H_2WAYS) {
Handle(GEOM_Function) aRefBase = aCI.GetBase();
Handle(GEOM_Function) aRefVector = aCI.GetVector();
TopoDS_Shape aShapeBase = aRefBase->GetValue();
}
if (aV.Magnitude() > Precision::Confusion()) {
aV.Normalize();
+ if (aType == PRISM_BASE_VEC_H_2WAYS) {
+ gp_Trsf aTrsf;
+ aTrsf.SetTranslation( (-aV) * aCI.GetH() );
+ BRepBuilderAPI_Transform aTransformation(aShapeBase, aTrsf, Standard_False);
+ aShapeBase = aTransformation.Shape();
+ aCI.SetH( aCI.GetH()*2 );
+ }
aShape = BRepPrimAPI_MakePrism(aShapeBase, aV * aCI.GetH(), Standard_False).Shape();
}
}
}
- } else if (aType == PRISM_BASE_TWO_PNT) {
+ } else if (aType == PRISM_BASE_TWO_PNT || aType == PRISM_BASE_TWO_PNT_2WAYS) {
Handle(GEOM_Function) aRefBase = aCI.GetBase();
Handle(GEOM_Function) aRefPnt1 = aCI.GetFirstPoint();
Handle(GEOM_Function) aRefPnt2 = aCI.GetLastPoint();
if (!V1.IsNull() && !V2.IsNull()) {
gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
if (aV.Magnitude() > gp::Resolution()) {
+ if (aType == PRISM_BASE_TWO_PNT_2WAYS)
+ {
+ gp_Trsf aTrsf;
+ aTrsf.SetTranslation(-aV);
+ BRepBuilderAPI_Transform aTransformation(aShapeBase, aTrsf, Standard_False);
+ aShapeBase = aTransformation.Shape();
+ aV = aV * 2;
+ }
aShape = BRepPrimAPI_MakePrism(aShapeBase, aV, Standard_False).Shape();
}
}
if (aShape.IsNull()) return 0;
- aFunction->SetValue(aShape);
+ TopoDS_Shape aRes = GEOMImpl_IShapesOperations::CompsolidToCompound(aShape);
+ aFunction->SetValue(aRes);
log.SetTouched(Label());
#include <Standard_Stream.hxx>
#include <GEOMImpl_RevolutionDriver.hxx>
+
+#include <GEOMImpl_IShapesOperations.hxx>
#include <GEOMImpl_IRevolution.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_Function.hxx>
#include <BRepPrimAPI_MakeRevol.hxx>
+#include <BRepBuilderAPI_Transform.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopAbs.hxx>
#include <TopExp.hxx>
-
+#include <gp_Trsf.hxx>
#include <gp_Pnt.hxx>
#include <gp_Lin.hxx>
#include <gp_Dir.hxx>
TopoDS_Shape aShape;
- if (aType == REVOLUTION_BASE_AXIS_ANGLE) {
+ if (aType == REVOLUTION_BASE_AXIS_ANGLE || aType == REVOLUTION_BASE_AXIS_ANGLE_2WAYS) {
Handle(GEOM_Function) aRefBase = aCI.GetBase();
Handle(GEOM_Function) aRefAxis = aCI.GetAxis();
TopoDS_Shape aShapeBase = aRefBase->GetValue();
Standard_ConstructionError::Raise("Vertex to be rotated is too close to Revolution Axis");
}
}
-
+ double anAngle = aCI.GetAngle();
gp_Ax1 anAxis (BRep_Tool::Pnt(V1), aV);
- BRepPrimAPI_MakeRevol MR (aShapeBase, anAxis, aCI.GetAngle(), Standard_False);
+ if (aType == REVOLUTION_BASE_AXIS_ANGLE_2WAYS)
+ {
+ gp_Trsf aTrsf;
+ aTrsf.SetRotation(anAxis, ( -anAngle ));
+ BRepBuilderAPI_Transform aTransformation(aShapeBase, aTrsf, Standard_False);
+ aShapeBase = aTransformation.Shape();
+ anAngle = anAngle * 2;
+ }
+ BRepPrimAPI_MakeRevol MR (aShapeBase, anAxis, anAngle, Standard_False);
if (!MR.IsDone()) MR.Build();
if (!MR.IsDone()) StdFail_NotDone::Raise("Revolution algorithm has failed");
aShape = MR.Shape();
}
if (aShape.IsNull()) return 0;
- aFunction->SetValue(aShape);
- log.SetTouched(Label());
+ TopoDS_Shape aRes = GEOMImpl_IShapesOperations::CompsolidToCompound(aShape);
+ aFunction->SetValue(aRes);
+
+ log.SetTouched(Label());
- return 1;
+ return 1;
}
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-#include <Standard_Stream.hxx>
-
#include <GEOMImpl_ShapeDriver.hxx>
+
#include <GEOMImpl_IShapes.hxx>
-#include <GEOMImpl_IShapesOperations.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOMImpl_Block6Explorer.hxx>
#include <BRepAlgo_FaceRestrictor.hxx>
#include <BRepBuilderAPI_Sewing.hxx>
#include <BRepBuilderAPI_Copy.hxx>
-#include <BRepTools_Quilt.hxx>
#include <BRepCheck.hxx>
#include <BRepCheck_Analyzer.hxx>
#include <BRepCheck_Shell.hxx>
#include <BRepClass3d_SolidClassifier.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepBuilderAPI_Sewing.hxx>
+
+#include <ShapeAnalysis_FreeBounds.hxx>
#include <TopAbs.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Compound.hxx>
#include <TopoDS_Iterator.hxx>
#include <TopExp_Explorer.hxx>
+
#include <TopTools_MapOfShape.hxx>
-#include <TopTools_SequenceOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_HSequenceOfShape.hxx>
+
+#include <TColStd_HSequenceOfTransient.hxx>
#include <Precision.hxx>
#include <Standard_NullObject.hxx>
}
}
else if (aType == FACE_WIRES) {
+ // Try to build a face from a set of wires and edges
+ int ind;
+
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
int nbshapes = aShapes->Length();
if (nbshapes < 1) {
- Standard_ConstructionError::Raise("No wires given");
+ Standard_ConstructionError::Raise("No wires or edges given");
}
- // first wire or edge
- Handle(GEOM_Function) aRefWire = Handle(GEOM_Function)::DownCast(aShapes->Value(1));
- TopoDS_Shape aWire = aRefWire->GetValue();
- if (aWire.IsNull()) Standard_NullObject::Raise("Argument Shape is null");
- TopoDS_Wire W1;
- if(aWire.ShapeType() == TopAbs_WIRE) {
- W1 = TopoDS::Wire(aWire);
- }
- else if(aWire.ShapeType() == TopAbs_EDGE && aWire.Closed()) {
- BRepBuilderAPI_MakeWire MW;
- MW.Add(TopoDS::Edge(aWire));
- if (!MW.IsDone()) {
- Standard_ConstructionError::Raise("Wire construction failed");
+ // 1. Extract all edges from the given arguments
+ TopTools_MapOfShape aMapEdges;
+ Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape;
+
+ BRep_Builder B;
+ for (ind = 1; ind <= nbshapes; ind++) {
+ Handle(GEOM_Function) aRefSh_i = Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
+ TopoDS_Shape aSh_i = aRefSh_i->GetValue();
+
+ TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE);
+ for (; anExpE_i.More(); anExpE_i.Next()) {
+ if (aMapEdges.Add(anExpE_i.Current())) {
+ aSeqEdgesIn->Append(anExpE_i.Current());
+ }
}
- W1 = MW;
}
- else {
- Standard_NullObject::Raise
- ("Shape for face construction is neither a wire nor closed edge");
+
+ // 2. Connect edges to wires of maximum length
+ Handle(TopTools_HSequenceOfShape) aSeqWiresOut;
+ ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdgesIn, Precision::Confusion(),
+ /*shared*/Standard_False, aSeqWiresOut);
+
+ // 3. Separate closed wires
+ Handle(TopTools_HSequenceOfShape) aSeqClosedWires = new TopTools_HSequenceOfShape;
+ Handle(TopTools_HSequenceOfShape) aSeqOpenWires = new TopTools_HSequenceOfShape;
+ for (ind = 1; ind <= aSeqWiresOut->Length(); ind++) {
+ if (aSeqWiresOut->Value(ind).Closed())
+ aSeqClosedWires->Append(aSeqWiresOut->Value(ind));
+ else
+ aSeqOpenWires->Append(aSeqWiresOut->Value(ind));
}
- // basic face
- TopoDS_Shape FFace;
- GEOMImpl_Block6Explorer::MakeFace(W1, aCI.GetIsPlanar(), FFace);
- if (FFace.IsNull()) {
- Standard_ConstructionError::Raise("Face construction failed");
+ if (aSeqClosedWires->Length() < 1) {
+ Standard_ConstructionError::Raise
+ ("There is no closed contour can be built from the given arguments");
}
- if (nbshapes == 1) {
- aShape = FFace;
+ // 4. Build a face / list of faces from all the obtained closed wires
- } else {
+ // 4.a. Basic face
+ TopoDS_Shape aFFace;
+ TopoDS_Wire aW1 = TopoDS::Wire(aSeqClosedWires->Value(1));
+ GEOMImpl_Block6Explorer::MakeFace(aW1, aCI.GetIsPlanar(), aFFace);
+ if (aFFace.IsNull()) {
+ Standard_ConstructionError::Raise("Face construction failed");
+ }
+
+ // 4.b. Add other wires
+ if (aSeqClosedWires->Length() == 1) {
+ aShape = aFFace;
+ }
+ else {
TopoDS_Compound C;
BRep_Builder aBuilder;
aBuilder.MakeCompound(C);
BRepAlgo_FaceRestrictor FR;
- TopAbs_Orientation OriF = FFace.Orientation();
- TopoDS_Shape aLocalS = FFace.Oriented(TopAbs_FORWARD);
+ TopAbs_Orientation OriF = aFFace.Orientation();
+ TopoDS_Shape aLocalS = aFFace.Oriented(TopAbs_FORWARD);
FR.Init(TopoDS::Face(aLocalS), Standard_False, Standard_True);
- for (int ind = 1; ind <= nbshapes; ind++) {
- Handle(GEOM_Function) aRefWire_i =
- Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
- TopoDS_Shape aWire_i = aRefWire_i->GetValue();
- if (aWire_i.IsNull()) Standard_NullObject::Raise("Argument Shape is null");
- TopoDS_Wire W_i;
- if(aWire_i.ShapeType() == TopAbs_WIRE) {
- W_i = TopoDS::Wire(aWire_i);
- }
- else if(aWire_i.ShapeType() == TopAbs_EDGE && aWire_i.Closed()) {
- BRepBuilderAPI_MakeWire MW1;
- MW1.Add(TopoDS::Edge(aWire_i));
- if (!MW1.IsDone()) {
- Standard_ConstructionError::Raise("Wire construction failed");
- }
- W_i = MW1;
- }
- else {
- Standard_NullObject::Raise
- ("Shape for face construction is neither a wire nor closed edges");
- }
- FR.Add(W_i);
+ for (ind = 1; ind <= aSeqClosedWires->Length(); ind++) {
+ TopoDS_Wire aW = TopoDS::Wire(aSeqClosedWires->Value(ind));
+ FR.Add(aW);
}
FR.Perform();
}
}
}
+
+ // 5. Add all open wires to the result
+ if (aSeqOpenWires->Length() > 0) {
+ //Standard_ConstructionError::Raise("There are some open wires");
+ TopoDS_Compound C;
+ BRep_Builder aBuilder;
+ if (aSeqClosedWires->Length() == 1) {
+ aBuilder.MakeCompound(C);
+ aBuilder.Add(C, aShape);
+ }
+ else {
+ C = TopoDS::Compound(aShape);
+ }
+
+ for (ind = 1; ind <= aSeqOpenWires->Length(); ind++) {
+ aBuilder.Add(C, aSeqOpenWires->Value(ind));
+ }
+
+ aShape = C;
+ }
}
else if (aType == SHELL_FACES) {
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
if( Copy.IsDone() ) {
TopoDS_Shape tds = Copy.Shape();
if( tds.IsNull() ) {
- Standard_ConstructionError::Raise("Orientation aborted : Can not reverse the shape");
+ Standard_ConstructionError::Raise("Orientation aborted : Can not reverse the shape");
}
if( tds.Orientation() == TopAbs_FORWARD)
- tds.Orientation(TopAbs_REVERSED) ;
+ tds.Orientation(TopAbs_REVERSED);
else
- tds.Orientation(TopAbs_FORWARD) ;
+ tds.Orientation(TopAbs_FORWARD);
aShape = tds;
}
}
}
- return _anOtherObject ;
+ return _anOtherObject;
}
#define EXPORT_SHAPE 1
#define IMPORT_SHAPE 1
-#define POINT_XYZ 1
-#define POINT_XYZ_REF 2
-#define POINT_CURVE_PAR 3
-//#define POINT_FACE_PAR 4
+#define POINT_XYZ 1
+#define POINT_XYZ_REF 2
+#define POINT_CURVE_PAR 3
+#define POINT_LINES_INTERSECTION 4
+//#define POINT_FACE_PAR 5
#define VECTOR_TWO_PNT 1
#define VECTOR_DX_DY_DZ 2
#define VECTOR_TANGENT_CURVE_PAR 3
+#define VECTOR_FACE_NORMALE 4
#define PLANE_PNT_VEC 1
#define PLANE_FACE 2
#define PLANE_THREE_PNT 3
#define PLANE_TANGENT_FACE 4
-#define LINE_TWO_PNT 1
-#define LINE_PNT_DIR 2
+#define LINE_TWO_PNT 1
+#define LINE_PNT_DIR 2
+#define LINE_TWO_FACES 3
#define TRANSLATE_TWO_POINTS 1
#define TRANSLATE_VECTOR 2
#define SPHERE_R 1
#define SPHERE_PNT_R 2
-#define PRISM_BASE_VEC_H 1
-#define PRISM_BASE_TWO_PNT 2
+#define PRISM_BASE_VEC_H 1
+#define PRISM_BASE_TWO_PNT 2
+#define PRISM_BASE_VEC_H_2WAYS 3
+#define PRISM_BASE_TWO_PNT_2WAYS 4
-#define REVOLUTION_BASE_AXIS_ANGLE 1
+#define REVOLUTION_BASE_AXIS_ANGLE 1
+#define REVOLUTION_BASE_AXIS_ANGLE_2WAYS 2
#define PIPE_BASE_PATH 1
#define PIPE_DIFFERENT_SECTIONS 2
#define PIPE_SHELL_SECTIONS 3
+#define PIPE_SHELLS_WITHOUT_PATH 4
#define THRUSECTIONS_RULED 1
#define THRUSECTIONS_SMOOTHED 2
#define CIRCLE_THREE_PNT 1
#define CIRCLE_PNT_VEC_R 2
+#define CIRCLE_CENTER_TWO_PNT 3
#define SPLINE_BEZIER 1
#define SPLINE_INTERPOLATION 2
#define CIRC_ARC_THREE_PNT 1
#define CIRC_ARC_CENTER 2
-#define FILLET_SHAPE_ALL 1
-#define FILLET_SHAPE_EDGES 2
-#define FILLET_SHAPE_FACES 3
-
-#define CHAMFER_SHAPE_ALL 1
-#define CHAMFER_SHAPE_EDGE 2
-#define CHAMFER_SHAPE_FACES 3
+#define FILLET_SHAPE_ALL 1
+#define FILLET_SHAPE_EDGES 2
+#define FILLET_SHAPE_FACES 3
+#define FILLET_SHAPE_EDGES_2R 4
+#define FILLET_SHAPE_FACES_2R 5
+
+#define CHAMFER_SHAPE_ALL 1
+#define CHAMFER_SHAPE_EDGE 2
+#define CHAMFER_SHAPE_FACES 3
+#define CHAMFER_SHAPE_EDGES 4
+#define CHAMFER_SHAPE_EDGE_AD 5
+#define CHAMFER_SHAPE_FACES_AD 6
+#define CHAMFER_SHAPE_EDGES_AD 7
#define WIRE_EDGES 1
#define FACE_WIRE 2
# additionnal information to compil and link file
libGEOMimpl_la_CPPFLAGS = \
+ $(CORBA_CXXFLAGS) \
+ $(CORBA_INCLUDES) \
$(CAS_CPPFLAGS) \
$(KERNEL_CXXFLAGS) \
$(BOOST_CPPFLAGS) \
-I$(srcdir)/../ShHealOper \
- -I$(srcdir)/../NMTAlgo \
-I$(srcdir)/../NMTTools \
-I$(srcdir)/../GEOM \
-I$(srcdir)/../GEOMAlgo \
-I$(srcdir)/../SKETCHER \
-I$(srcdir)/../ARCHIMEDE \
+ -I$(top_builddir)/idl \
-I$(top_builddir)/salome_adm/unix
libGEOMimpl_la_LDFLAGS = \
../GEOM/libGEOMbasic.la \
- ../NMTAlgo/libNMTAlgo.la \
../GEOMAlgo/libGEOMAlgo.la \
../ShHealOper/libShHealOper.la \
../ARCHIMEDE/libGEOMArchimede.la \
//
#include "GEOMToolsGUI.h"
+#include "GEOMToolsGUI_DeleteDlg.h"
#include <GeometryGUI.h>
#include <GEOMBase.h>
static QString getFileName( QWidget* parent,
const QString& initial,
const FilterMap& filterMap,
+ const QStringList& filters,
const QString& caption,
bool open,
QString& format )
{
static QString lastUsedFilter;
- QStringList filters;
- for ( FilterMap::const_iterator it = filterMap.begin(); it != filterMap.end(); ++it )
- filters.push_back( it.key() );
+ //QStringList filters;
+ QString aBrepFilter;
+ for ( FilterMap::const_iterator it = filterMap.begin(); it != filterMap.end(); ++it ) {
+ //filters.push_back( it.key() );
+ if ( it.key().contains( "BREP", Qt::CaseInsensitive ) )
+ aBrepFilter = it.key();
+ }
SUIT_FileDlg* fd = new SUIT_FileDlg( parent, open, true, true );
if ( !caption.isEmpty() )
if ( !initial.isEmpty() )
fd->selectFile( initial );
- if ( !lastUsedFilter.isEmpty() && filterMap.contains( lastUsedFilter ) )
+ fd->setFilters( filters );
+
+ if ( !lastUsedFilter.isEmpty() && filterMap.contains( lastUsedFilter ) ) {
fd->selectFilter( lastUsedFilter );
+ }
+ else if ( !aBrepFilter.isEmpty() ) {
+ fd->selectFilter( aBrepFilter );
+ }
fd->setFilters( filters );
OnNbIsos();
break;
}
+ case 8035: // AUTO COLOR - POPUP VIEWER
+ {
+ OnAutoColor();
+ break;
+ }
+ case 8036: // DISABLE AUTO COLOR - POPUP VIEWER
+ {
+ OnDisableAutoColor();
+ break;
+ }
case 9024 : // OPEN - OBJBROSER POPUP
{
OnOpen();
// VSR 17/11/04: check if all objects selected belong to GEOM component --> start
// modifications of ASV 01.06.05
QString parentComp = getParentComponent( aStudy, selected );
- CORBA::String_var geomIOR = app->orb()->object_to_string( GeometryGUI::GetGeomGen() );
+ CORBA::String_var geomIOR = app->orb()->object_to_string( GeometryGUI::GetGeomGen() );
QString geomComp = getParentComponent( aStudy->FindObjectIOR( geomIOR.in() ) );
if ( parentComp != geomComp ) {
}
// VSR 17/11/04: check if all objects selected belong to GEOM component <-- finish
- if ( SUIT_MessageBox::warning( app->desktop(),
- QObject::tr( "GEOM_WRN_WARNING" ),
- QObject::tr( "GEOM_REALLY_DELETE" ),
- QObject::tr( "GEOM_BUT_YES" ),
- QObject::tr( "GEOM_BUT_NO" ), 1 ) != 0 )
+ QStringList aNameList;
+ for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
+ Handle(SALOME_InteractiveObject) anIObject = It.Value();
+ QString aName = anIObject->getName();
+ if ( aName != "" && aName[ 0 ] != '*' ) {
+ aNameList.append( aName );
+
+ _PTR(SObject) obj ( aStudy->FindObjectID( anIObject->getEntry() ) );
+ _PTR(ChildIterator) it ( aStudy->NewChildIterator( obj ) );
+ for ( it->InitEx( true ); it->More(); it->Next() ) {
+ _PTR(SObject) child( it->Value() );
+ QString aName = child->GetName().c_str();
+ if ( aName != "" && aName[ 0 ] != '*' ) {
+ aNameList.append( aName );
+ }
+ }
+ }
+ }
+
+ GEOMToolsGUI_DeleteDlg dlg( app->desktop(), aNameList );
+ if ( !dlg.exec() )
return;
// QAD_Operation* op = new SALOMEGUI_ImportOperation(.....);
RemoveObjectWithChildren(obj, aStudy, views, disp);
// Remove objects from Study
- aStudyBuilder->RemoveObject( obj );
+ aStudyBuilder->RemoveObjectWithChildren( obj );
//deleted = true;
} // MAIN LOOP of selected
// Obtain a list of available import formats
FilterMap aMap;
+ QStringList filters;
GEOM::string_array_var aFormats, aPatterns;
aInsOp->ImportTranslators( aFormats, aPatterns );
- for ( int i = 0, n = aFormats->length(); i < n; i++ )
+ for ( int i = 0, n = aFormats->length(); i < n; i++ ) {
aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] );
+ filters.push_back( (char*)aPatterns[i] );
+ }
QString fileType;
- QString fileName = getFileName(app->desktop(), "", aMap,
+ QString fileName = getFileName(app->desktop(), "", aMap, filters,
tr("GEOM_MEN_IMPORT"), true, fileType);
if (fileType.isEmpty() )
// Obtain a list of available export formats
FilterMap aMap;
+ QStringList filters;
GEOM::string_array_var aFormats, aPatterns;
aInsOp->ExportTranslators( aFormats, aPatterns );
- for ( int i = 0, n = aFormats->length(); i < n; i++ )
+ for ( int i = 0, n = aFormats->length(); i < n; i++ ) {
aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] );
+ filters.push_back( (char*)aPatterns[i] );
+ }
// Get selected objects
LightApp_SelectionMgr* sm = app->selectionMgr();
continue;
QString fileType;
- QString file = getFileName(app->desktop(), QString( IObject->getName() ), aMap,
+ QString file = getFileName(app->desktop(), QString( IObject->getName() ), aMap, filters,
tr("GEOM_MEN_EXPORT"), false, fileType);
// User has pressed "Cancel" --> stop the operation
void OnCheckGeometry();
// Popup commands
+ void OnAutoColor();
+ void OnDisableAutoColor();
void OnColor();
void OnTransparency();
void OnNbIsos();
void OnOpen();
- void OnSelectOnly( int );
+ void OnSelectOnly(int mode);
// returns name of Module (Component) of given objects (usually selected objects)
// if objects belong to different Components, a NULL string is returned.
bool CheckSubObjectInUse( _PTR(SObject),
_PTR(SObject),
_PTR(Study) );
-
};
#endif // GEOMTOOLSGUI_H
#include <PyConsole_Console.h>
#include "GEOMToolsGUI.h"
+#include "GEOMToolsGUI_TransparencyDlg.h"
+#include "GEOMToolsGUI_NbIsosDlg.h"
#include <GeometryGUI.h>
#include <GEOM_Displayer.h>
-#include "GEOMToolsGUI_TransparencyDlg.h"
-#include "GEOMToolsGUI_NbIsosDlg.h" // Method ISOS adjustement
#include <GEOMBase.h>
+#include <GEOM_Actor.h>
#include <SALOME_ListIO.hxx>
#include <SALOME_ListIteratorOfListIO.hxx>
+#include <SOCC_Prs.h>
+
+#include <SVTK_Prs.h>
#include <SVTK_ViewModel.h>
#include <SVTK_ViewWindow.h>
#include <SVTK_View.h>
#include <LightApp_SelectionMgr.h>
#include <LightApp_NameDlg.h>
+#include <GEOMImpl_Types.hxx>
+
#include "utilities.h"
// OCCT Includes
// QT Includes
#include <QColorDialog>
+#include <QList>
-using namespace std;
-
+// VTK includes
+#include <vtkRenderer.h>
void GEOMToolsGUI::OnSettingsColor()
{
pyConsole->exec("from GEOM_usinggeom import *");
}
+void GEOMToolsGUI::OnAutoColor()
+{
+ QList<SALOME_Prs> aListOfGroups;
+
+ SALOME_ListIO selected;
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if( !app )
+ return;
+
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if( !aSelMgr || !appStudy )
+ return;
+
+ aSelMgr->selectedObjects( selected );
+ if( selected.IsEmpty() )
+ return;
+
+ Handle(SALOME_InteractiveObject) anIObject = selected.First();
+
+ _PTR(Study) aStudy = appStudy->studyDS();
+ _PTR(SObject) aMainSObject( aStudy->FindObjectID( anIObject->getEntry() ) );
+ GEOM::GEOM_Object_var aMainObject = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aMainSObject));
+ if( CORBA::is_nil( aMainObject ) )
+ return;
+
+ aMainObject->SetAutoColor( true );
+
+ QList<SALOMEDS::Color> aReservedColors;
+
+ GEOM_Displayer aDisp (appStudy);
+
+ SALOME_View* vf = aDisp.GetActiveView();
+
+ SUIT_ViewWindow* window = app->desktop()->activeWindow();
+ bool isOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
+ bool isVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
+
+ for( _PTR(ChildIterator) it( aStudy->NewChildIterator( aMainSObject ) ); it->More(); it->Next() )
+ {
+ _PTR(SObject) aChildSObject( it->Value() );
+ GEOM::GEOM_Object_var aChildObject = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aChildSObject));
+ if( CORBA::is_nil( aChildObject ) )
+ continue;
+
+ if( aChildObject->GetType() != GEOM_GROUP )
+ continue;
+
+ SALOMEDS::Color aColor = GEOM_Displayer::getUniqueColor( aReservedColors );
+ aChildObject->SetColor( aColor );
+ aReservedColors.append( aColor );
+
+ QColor c( (int)( aColor.R * 255.0 ), (int)( aColor.G * 255.0 ), (int)( aColor.B * 255.0 ) );
+
+ SALOME_Prs* aPrs = vf->CreatePrs( aChildSObject->GetID().c_str() );
+
+ if ( isVTK )
+ {
+ SVTK_ViewWindow* vtkVW = dynamic_cast<SVTK_ViewWindow*>( window );
+ if ( !vtkVW )
+ return;
+ SVTK_View* aView = vtkVW->getView();
+ SUIT_OverrideCursor();
+ for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() )
+ aView->SetColor( It.Value(), c );
+ }
+ else if ( isOCC )
+ {
+ OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*>( window->getViewManager()->getViewModel() );
+ Handle(AIS_InteractiveContext) ic = vm->getAISContext();
+
+ SOCC_Prs* anOCCPrs = dynamic_cast<SOCC_Prs*>( aPrs );
+ if( !anOCCPrs )
+ continue;
+
+ AIS_ListOfInteractive aList;
+ anOCCPrs->GetObjects( aList );
+ if( !aList.Extent() )
+ continue;
+
+ Handle(AIS_InteractiveObject) io = aList.First();
+ if( io.IsNull() )
+ continue;
+
+ Quantity_Color aQuanColor( c.red() / 255., c.green() / 255., c.blue() / 255., Quantity_TOC_RGB );
+
+ // Set color for a point
+ Handle(AIS_Drawer) aCurDrawer = io->Attributes();
+ Handle(Prs3d_PointAspect) aCurPointAspect = aCurDrawer->PointAspect();
+ Quantity_Color aCurColor;
+ Standard_Real aCurScale;
+ Aspect_TypeOfMarker aCurTypeOfMarker;
+ aCurPointAspect->Aspect()->Values( aCurColor, aCurTypeOfMarker, aCurScale );
+ aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aCurTypeOfMarker, aQuanColor, aCurScale) );
+ ic->SetLocalAttributes( io, aCurDrawer );
+
+ io->SetColor( aQuanColor );
+ if ( io->IsKind( STANDARD_TYPE(GEOM_AISShape) ) )
+ Handle(GEOM_AISShape)::DownCast( io )->SetShadingColor( aQuanColor );
+
+ io->Redisplay( Standard_True );
+ }
+ }
+
+ app->updateActions(); //SRN: To update a Save button in the toolbar
+}
+
+void GEOMToolsGUI::OnDisableAutoColor()
+{
+ SALOME_ListIO selected;
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if( !app )
+ return;
+
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if( !aSelMgr || !appStudy )
+ return;
+
+ aSelMgr->selectedObjects( selected );
+ if( selected.IsEmpty() )
+ return;
+
+ Handle(SALOME_InteractiveObject) anIObject = selected.First();
+
+ _PTR(Study) aStudy = appStudy->studyDS();
+ _PTR(SObject) aMainSObject( aStudy->FindObjectID( anIObject->getEntry() ) );
+ GEOM::GEOM_Object_var aMainObject = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aMainSObject));
+ if( CORBA::is_nil( aMainObject ) )
+ return;
+
+ aMainObject->SetAutoColor( false );
+
+}
+
void GEOMToolsGUI::OnColor()
{
SALOME_ListIO selected;
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
- if ( app ) {
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+ if ( app && appStudy ) {
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
if ( aSelMgr ) {
aSelMgr->selectedObjects( selected );
return;
SVTK_View* aView = vtkVW->getView();
QColor initcolor = aView->GetColor( selected.First() );
- QColor c = QColorDialog::getColor( QColor(), app->desktop() );
+ QColor c = QColorDialog::getColor( initcolor, app->desktop() );
if ( c.isValid() ) {
SUIT_OverrideCursor();
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
Handle(GEOM_AISShape)::DownCast( io )->SetShadingColor( aColor );
io->Redisplay( Standard_True );
+
+ // store color to GEOM_Object
+ _PTR(Study) aStudy = appStudy->studyDS();
+ _PTR(SObject) aSObject( aStudy->FindObjectID( It.Value()->getEntry() ) );
+ GEOM::GEOM_Object_var anObject =
+ GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObject));
+
+ SALOMEDS::Color aSColor;
+ aSColor.R = (double)c.red() / 255.0;
+ aSColor.G = (double)c.green() / 255.0;
+ aSColor.B = (double)c.blue() / 255.0;
+ anObject->SetColor( aSColor );
+ anObject->SetAutoColor( false );
}
}
} // if c.isValid()
void GEOMToolsGUI::OnNbIsos()
{
SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+
bool isOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
-
- if ( !isOCC )
- return;
-
- OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*>( window->getViewManager()->getViewModel() );
- Handle (AIS_InteractiveContext) ic = vm->getAISContext();
-
- ic->InitCurrent();
- if ( ic->MoreCurrent() ) {
- Handle(GEOM_AISShape) CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current());
- Handle(AIS_Drawer) CurDrawer = CurObject->Attributes();
-
- int UIso = CurDrawer->UIsoAspect()->Number();
- int VIso = CurDrawer->VIsoAspect()->Number();
-
+ bool isVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
+
+ if(isOCC){ // if is OCCViewer
+
+ OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*>( window->getViewManager()->getViewModel() );
+ Handle (AIS_InteractiveContext) ic = vm->getAISContext();
+
+ ic->InitCurrent();
+ if ( ic->MoreCurrent() ) {
+ Handle(GEOM_AISShape) CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current());
+ Handle(AIS_Drawer) CurDrawer = CurObject->Attributes();
+
+ int UIso = CurDrawer->UIsoAspect()->Number();
+ int VIso = CurDrawer->VIsoAspect()->Number();
+
+ GEOMToolsGUI_NbIsosDlg * NbIsosDlg =
+ new GEOMToolsGUI_NbIsosDlg( SUIT_Session::session()->activeApplication()->desktop() );
+
+ NbIsosDlg->setU( UIso );
+ NbIsosDlg->setV( VIso );
+
+ if ( NbIsosDlg->exec() ) {
+ SUIT_OverrideCursor();
+ for(; ic->MoreCurrent(); ic->NextCurrent()) {
+ CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current());
+ Handle(AIS_Drawer) CurDrawer = CurObject->Attributes();
+
+ int nbUIso = NbIsosDlg->getU();
+ int nbVIso = NbIsosDlg->getV();
+
+ CurDrawer->SetUIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbUIso) );
+ CurDrawer->SetVIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbVIso) );
+
+ ic->SetLocalAttributes(CurObject, CurDrawer);
+ ic->Redisplay(CurObject);
+ }
+ }
+ }
+ }
+ else if(isVTK){ // if is VTKViewer
+ //
+ // Warning. It's works incorrect. must be recheked.
+ //
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if ( !app )
+ return;
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ if ( !aSelMgr )
+ return;
+ SALOME_ListIO selected;
+ aSelMgr->selectedObjects( selected );
+ if ( selected.IsEmpty() )
+ return;
+
+ Handle(SALOME_InteractiveObject) FirstIOS = selected.First();
+ if ( FirstIOS.IsNull() )
+ return;
+
+ SVTK_ViewWindow* vtkVW = dynamic_cast<SVTK_ViewWindow*>( window );
+ if ( !vtkVW )
+ return;
+
+ SVTK_View* aView = vtkVW->getView();
+ vtkActorCollection* aCollection = aView->getRenderer()->GetActors();
+
+ int UIso = 0;
+ int VIso = 0;
+ if(aCollection){
+ aCollection->InitTraversal();
+ }
+
+ vtkActor *anAct = aCollection->GetNextActor();
+ if(GEOM_Actor *anActor = dynamic_cast<GEOM_Actor*>(anAct)){
+ anActor->GetNbIsos(UIso,VIso);
+ }
+
GEOMToolsGUI_NbIsosDlg * NbIsosDlg =
new GEOMToolsGUI_NbIsosDlg( SUIT_Session::session()->activeApplication()->desktop() );
if ( NbIsosDlg->exec() ) {
SUIT_OverrideCursor();
- for(; ic->MoreCurrent(); ic->NextCurrent()) {
- CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current());
- Handle(AIS_Drawer) CurDrawer = CurObject->Attributes();
-
- int nbUIso = NbIsosDlg->getU();
- int nbVIso = NbIsosDlg->getV();
-
- CurDrawer->SetUIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbUIso) );
- CurDrawer->SetVIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbVIso) );
-
- ic->SetLocalAttributes(CurObject, CurDrawer);
- ic->Redisplay(CurObject);
+
+ while(anAct = aCollection->GetNextActor()) {
+ if(GEOM_Actor *anActor = dynamic_cast<GEOM_Actor*>(anAct)){
+ // There are no casting to needed actor.
+ UIso = NbIsosDlg->getU();
+ VIso = NbIsosDlg->getV();
+ int aIsos[2]={UIso,VIso};
+ anActor->SetNbIsos(aIsos);
+ }
}
}
- }
+ } // end vtkviewer
}
void GEOMToolsGUI::OnOpen()
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : GEOMToolsGUI_DeleteDlg.cxx
+// Author : Dmitry Matveitchev, Open CASCADE S.A.S.
+//
+
+#include "GEOMToolsGUI_DeleteDlg.h"
+
+#include <QLabel>
+#include <QPushButton>
+#include <QTextBrowser>
+#include <QStringList>
+#include <QGridLayout>
+
+/*!
+ \brief Constructor.
+ \param parent parent widget
+*/
+GEOMToolsGUI_DeleteDlg::GEOMToolsGUI_DeleteDlg( QWidget* parent, const QStringList& objects )
+: QDialog( parent )
+{
+ setModal( true );
+ setObjectName( "GEOMToolsGUI_DeleteDlg" );
+
+ setWindowTitle( tr( "GEOM_DELETE_OBJECTS" ) );
+ setSizeGripEnabled( true );
+
+ QGridLayout* topLayout = new QGridLayout( this );
+
+ topLayout->setSpacing( 6 );
+ topLayout->setMargin( 11 );
+
+ QLabel* lab = new QLabel( tr( "GEOM_REALLY_DELETE" ).arg( objects.count() ), this );
+
+ QTextBrowser* viewer = new QTextBrowser( this );
+ viewer->setText( QString( "- " ).arg( objects.join( "<br> -" ) ) );
+
+ QPushButton* buttonYes = new QPushButton( tr( "GEOM_BUT_YES" ), this );
+ QPushButton* buttonNo = new QPushButton( tr( "GEOM_BUT_NO" ), this );
+
+ topLayout->addWidget( lab, 0, 0, 1, 3 );
+ topLayout->addWidget( viewer, 1, 0, 1, 3 );
+ topLayout->addWidget( buttonYes, 2, 0 );
+ topLayout->addWidget( buttonNo, 2, 2 );
+
+ /* signals and slots connections */
+ connect( buttonYes, SIGNAL( clicked() ), this, SLOT( accept() ) );
+ connect( buttonNo, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+GEOMToolsGUI_DeleteDlg::~GEOMToolsGUI_DeleteDlg()
+{
+}
+
+
+
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : GEOMToolsGUI_DeleteDlg.h
+// Author : Dmitry Matveitchev, Open CASCADE S.A.S.
+//
+
+#ifndef GEOMTOOLSGUI_DELETEDLG_H
+#define GEOMTOOLSGUI_DELETEDLG_H
+
+#include <QDialog>
+
+class QStringList;
+
+class GEOMToolsGUI_DeleteDlg : public QDialog
+{
+ Q_OBJECT
+
+public:
+ GEOMToolsGUI_DeleteDlg( QWidget*, const QStringList& );
+ ~GEOMToolsGUI_DeleteDlg();
+};
+
+#endif // GEOMTOOLSGUI_DELETEDLG_H
MyDialogLayout->addWidget(GroupC1, 0, 0);
MyDialogLayout->addWidget(GroupButtons, 1, 0);
- myHelpFileName = "isos.htm";
+ myHelpFileName = "isolines_page.html";
// signals and slots connections
connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
// mySlider->setValue( 5 ) ;
ValueHasChanged(mySlider->value());
- myHelpFileName = "transparency.htm";
+ myHelpFileName = "transparency_page.html";
// signals and slots connections : after ValueHasChanged()
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
GEOMToolsGUI.h \
GEOMToolsGUI_NbIsosDlg.h \
GEOMToolsGUI_TransparencyDlg.h \
+ GEOMToolsGUI_DeleteDlg.h \
\
GEOMToolsGUI.cxx \
GEOMToolsGUI_1.cxx \
GEOMToolsGUI_TransparencyDlg.cxx \
- GEOMToolsGUI_NbIsosDlg.cxx
+ GEOMToolsGUI_NbIsosDlg.cxx \
+ GEOMToolsGUI_DeleteDlg.cxx
MOC_FILES = \
GEOMToolsGUI_TransparencyDlg_moc.cxx \
- GEOMToolsGUI_NbIsosDlg_moc.cxx
+ GEOMToolsGUI_NbIsosDlg_moc.cxx \
+ GEOMToolsGUI_DeleteDlg_moc.cxx
nodist_libGEOMToolsGUI_la_SOURCES = \
$(MOC_FILES)
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakePrismVecH2Ways
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismVecH2Ways
+ (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theVec,
+ CORBA::Double theH)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theBase == NULL || theVec == NULL) return aGEOMObject._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
+ (theBase->GetStudyID(), theBase->GetEntry());
+ Handle(GEOM_Object) aVec = GetOperations()->GetEngine()->GetObject
+ (theVec->GetStudyID(), theVec->GetEntry());
+
+ if (aBase.IsNull() || aVec.IsNull()) return aGEOMObject._retn();
+
+ //Create the Prism
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakePrismVecH2Ways(aBase, aVec, theH);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakePrismTwoPnt
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakePrismTwoPnt2Ways
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt2Ways
+ (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr thePoint1,
+ GEOM::GEOM_Object_ptr thePoint2)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theBase == NULL || thePoint1 == NULL || thePoint2 == NULL)
+ return aGEOMObject._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
+ (theBase->GetStudyID(), theBase->GetEntry());
+ Handle(GEOM_Object) aPoint1 = GetOperations()->GetEngine()->GetObject
+ (thePoint1->GetStudyID(), thePoint1->GetEntry());
+ Handle(GEOM_Object) aPoint2 = GetOperations()->GetEngine()->GetObject
+ (thePoint2->GetStudyID(), thePoint2->GetEntry());
+
+ if (aBase.IsNull() || aPoint1.IsNull() || aPoint2.IsNull())
+ return aGEOMObject._retn();
+
+ //Create the Prism
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakePrismTwoPnt2Ways(aBase, aPoint1, aPoint2);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakePipe
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeRevolutionAxisAngle2Ways
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle2Ways
+ (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr theAxis,
+ CORBA::Double theAngle)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theBase == NULL || theAxis == NULL) return aGEOMObject._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject
+ (theBase->GetStudyID(), theBase->GetEntry());
+ Handle(GEOM_Object) anAxis = GetOperations()->GetEngine()->GetObject
+ (theAxis->GetStudyID(), theAxis->GetEntry());
+
+ if (aBase.IsNull() || anAxis.IsNull()) return aGEOMObject._retn();
+
+ //Create the Revolution
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeRevolutionAxisAngle2Ways(aBase, anAxis, theAngle);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakeFilling
CORBA::Boolean theWithContact,
CORBA::Boolean theWithCorrections)
{
- GEOM::GEOM_Object_var aGEOMObject;
+ GEOM::GEOM_Object_var aGEOMObject;
//Set a not done flag
GetOperations()->SetNotDone();
return GetObject(anObject);
}
+
+
+//=============================================================================
+/*!
+ * MakePipeShellsWithoutPath
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePipeShellsWithoutPath
+ (const GEOM::ListOfGO& theBases,
+ const GEOM::ListOfGO& theLocations)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+ Handle(TColStd_HSequenceOfTransient) aSeqBases = new TColStd_HSequenceOfTransient;
+ Handle(TColStd_HSequenceOfTransient) aSeqLocations = new TColStd_HSequenceOfTransient;
+ int ind=0, aNbBases=0, aNbLocs=0;
+
+ //Get the shapes
+ aNbBases = theBases.length();
+ aNbLocs = theLocations.length();
+
+ if( aNbLocs && aNbBases != aNbLocs)
+ return aGEOMObject._retn();
+
+ for (ind = 0; ind < aNbBases; ind++) {
+ if (theBases[ind] == NULL) continue;
+ Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->
+ GetObject(theBases[ind]->GetStudyID(), theBases[ind]->GetEntry());
+ if(aBase.IsNull())
+ continue;
+ if(aNbLocs) {
+ Handle(GEOM_Object) aLoc = GetOperations()->GetEngine()->GetObject
+ (theLocations[ind]->GetStudyID(), theLocations[ind]->GetEntry());
+ if(aLoc.IsNull())
+ continue;
+ aSeqLocations->Append(aLoc);
+ }
+ aSeqBases->Append(aBase);
+ }
+
+ if(!aSeqBases->Length())
+ return aGEOMObject._retn();
+
+ // Make pipe
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakePipeShellsWithoutPath(aSeqBases,aSeqLocations);
+
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
GEOM::GEOM_Object_ptr theVec,
CORBA::Double theH);
+ GEOM::GEOM_Object_ptr MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theVec,
+ CORBA::Double theH);
+
GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2);
+ GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr thePoint1,
+ GEOM::GEOM_Object_ptr thePoint2);
+
GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr thePath);
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle);
+ GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theAxis,
+ CORBA::Double theAngle);
+
GEOM::GEOM_Object_ptr MakeFilling(GEOM::GEOM_Object_ptr theShape, CORBA::Long theMinDeg, CORBA::Long theMaxDeg, CORBA::Double theTol2D, CORBA::Double theTol3D, CORBA::Long theNbIter);
GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections,
CORBA::Boolean theWithContact,
CORBA::Boolean theWithCorrections);
+ GEOM::GEOM_Object_ptr MakePipeShellsWithoutPath(const GEOM::ListOfGO& theBases,
+ const GEOM::ListOfGO& theLocations);
+
::GEOMImpl_I3DPrimOperations* GetOperations()
{ return (::GEOMImpl_I3DPrimOperations*)GetImpl(); }
};
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakePointOnLinesIntersection
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection
+ (GEOM::GEOM_Object_ptr theLine1, GEOM::GEOM_Object_ptr theLine2)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theLine1 == NULL || theLine2 == NULL) return aGEOMObject._retn();
+
+ //Get the reference Lines
+
+ Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
+ (theLine1->GetStudyID(), theLine1->GetEntry());
+ Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
+ (theLine2->GetStudyID(), theLine2->GetEntry());
+ if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
+
+ //Create the point
+
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakePointOnLinesIntersection(aRef1, aRef2);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakePointOnCurve
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeLineTwoFaces
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakeLineTwoFaces
+ (GEOM::GEOM_Object_ptr theFace1, GEOM::GEOM_Object_ptr theFace2)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theFace1 == NULL || theFace2 == NULL) return aGEOMObject._retn();
+
+ //Get the reference points
+
+ Handle(GEOM_Object) aRef1 = GetOperations()->GetEngine()->GetObject
+ (theFace1->GetStudyID(), theFace1->GetEntry());
+ Handle(GEOM_Object) aRef2 = GetOperations()->GetEngine()->GetObject
+ (theFace2->GetStudyID(), theFace2->GetEntry());
+ if (aRef1.IsNull() || aRef2.IsNull()) return aGEOMObject._retn();
+
+ //Create the Line
+
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeLineTwoFaces(aRef1, aRef2);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
//=============================================================================
/*!
GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theCurve,
CORBA::Double theParameter);
+ GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theLine1,
+ GEOM::GEOM_Object_ptr theLine2);
+
GEOM::GEOM_Object_ptr MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
CORBA::Double theParameter);
GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2);
+ GEOM::GEOM_Object_ptr MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
+ GEOM::GEOM_Object_ptr theFace2);
+
GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3,
const GEOM::ListOfGO& theRemoveIns,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- const GEOM::ListOfLong& theMaterials)
+ const GEOM::ListOfLong& theMaterials,
+ CORBA::Short theKeepNonlimitShapes)
{
GEOM::GEOM_Object_var aGEOMObject;
Handle(GEOM_Object) anObject =
GetOperations()->MakePartition(aShapes, aTools, aKeepIns, aRemIns,
theLimit, theRemoveWebs, aMaterials,
+ theKeepNonlimitShapes,
/*PerformSelfIntersections*/Standard_True);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
const GEOM::ListOfGO& theRemoveIns,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- const GEOM::ListOfLong& theMaterials)
+ const GEOM::ListOfLong& theMaterials,
+ CORBA::Short theKeepNonlimitShapes)
{
GEOM::GEOM_Object_var aGEOMObject;
Handle(GEOM_Object) anObject =
GetOperations()->MakePartition(aShapes, aTools, aKeepIns, aRemIns,
theLimit, theRemoveWebs, aMaterials,
+ theKeepNonlimitShapes,
/*PerformSelfIntersections*/Standard_False);
if (!GetOperations()->IsDone() || anObject.IsNull())
return aGEOMObject._retn();
const GEOM::ListOfGO& theRemoveInside,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- const GEOM::ListOfLong& theMaterials);
+ const GEOM::ListOfLong& theMaterials,
+ CORBA::Short theKeepNonlimitShapes);
GEOM::GEOM_Object_ptr MakePartitionNonSelfIntersectedShape (const GEOM::ListOfGO& theShapes,
const GEOM::ListOfGO& theTools,
const GEOM::ListOfGO& theRemoveInside,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- const GEOM::ListOfLong& theMaterials);
+ const GEOM::ListOfLong& theMaterials,
+ CORBA::Short theKeepNonlimitShapes);
GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeCircleCenter2Pnt
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleCenter2Pnt
+ (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2,
+ GEOM::GEOM_Object_ptr thePnt3)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (thePnt1 == NULL || thePnt2 == NULL || thePnt3 == NULL) return aGEOMObject._retn();
+
+ //Get the reference points
+ Handle(GEOM_Object) aPnt1 = GetOperations()->GetEngine()->GetObject
+ (thePnt1->GetStudyID(), thePnt1->GetEntry());
+ Handle(GEOM_Object) aPnt2 = GetOperations()->GetEngine()->GetObject
+ (thePnt2->GetStudyID(), thePnt2->GetEntry());
+ Handle(GEOM_Object) aPnt3 = GetOperations()->GetEngine()->GetObject
+ (thePnt3->GetStudyID(), thePnt3->GetEntry());
+
+ if (aPnt1.IsNull() || aPnt2.IsNull() || aPnt3.IsNull()) return aGEOMObject._retn();
+
+ // Make Circle
+ Handle(GEOM_Object) anObject = GetOperations()->MakeCircleCenter2Pnt(aPnt1, aPnt2, aPnt3);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakeEllipse
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3);
+ GEOM::GEOM_Object_ptr MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
+ GEOM::GEOM_Object_ptr thePnt2,
+ GEOM::GEOM_Object_ptr thePnt3);
+
GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
GEOM::GEOM_Object_ptr theVector,
double theRMajor, double theRMinor);
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeFilletEdges R1 R2
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletEdgesR1R2
+ (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+ CORBA::Double theR2, const GEOM::ListOfLong& theEdges)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Get the reference edges
+ int ind = 0;
+ int aLen = theEdges.length();
+ list<int> anEdges;
+ for (; ind < aLen; ind++) {
+ anEdges.push_back(theEdges[ind]);
+ }
+
+ //Create the Fillet
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeFilletEdgesR1R2(aShapeRef, theR1, theR2, anEdges);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakeFilletFaces
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeFilletFaces R1 R2
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeFilletFacesR1R2
+ (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+ CORBA::Double theR2, const GEOM::ListOfLong& theFaces)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Get the reference faces
+ int ind = 0;
+ int aLen = theFaces.length();
+ list<int> aFaces;
+ for (; ind < aLen; ind++) {
+ aFaces.push_back(theFaces[ind]);
+ }
+
+ //Create the Fillet
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeFilletFacesR1R2(aShapeRef, theR1, theR2, aFaces);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* MakeChamferAll
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeChamferEdgeAD
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgeAD
+ (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ CORBA::Long theFace1, CORBA::Long theFace2)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Create the Chamfer
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeChamferEdgeAD(aShapeRef, theD, theAngle, theFace1, theFace2);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
//=============================================================================
/*!
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * MakeChamferFacesAD
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferFacesAD
+ (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ const GEOM::ListOfLong& theFaces)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Get the reference faces
+ int ind = 0;
+ int aLen = theFaces.length();
+ list<int> aFaces;
+ for (; ind < aLen; ind++) {
+ aFaces.push_back(theFaces[ind]);
+ }
+
+ //Create the Chamfer
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeChamferFacesAD(aShapeRef, theD, theAngle, aFaces);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MakeChamferEdges
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdges
+ (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD1, CORBA::Double theD2,
+ const GEOM::ListOfLong& theEdges)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Get the reference edges
+ int ind = 0;
+ int aLen = theEdges.length();
+ list<int> aEdges;
+ for (; ind < aLen; ind++) {
+ aEdges.push_back(theEdges[ind]);
+ }
+
+ //Create the Chamfer
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeChamferEdges(aShapeRef, theD1, theD2, aEdges);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
+//=============================================================================
+/*!
+ * MakeChamferEdgesAD
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_ILocalOperations_i::MakeChamferEdgesAD
+ (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ const GEOM::ListOfLong& theEdges)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ if (theShape == NULL) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aShapeRef = GetOperations()->GetEngine()->GetObject
+ (theShape->GetStudyID(), theShape->GetEntry());
+ if (aShapeRef.IsNull()) return aGEOMObject._retn();
+
+ //Get the reference edges
+ int ind = 0;
+ int aLen = theEdges.length();
+ list<int> aEdges;
+ for (; ind < aLen; ind++) {
+ aEdges.push_back(theEdges[ind]);
+ }
+
+ //Create the Chamfer
+ Handle(GEOM_Object) anObject =
+ GetOperations()->MakeChamferEdgesAD(aShapeRef, theD, theAngle, aEdges);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
//=============================================================================
/*!
GEOM::GEOM_Object_ptr MakeFilletAll (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theR);
+
GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
const GEOM::ListOfLong& theEdges);
+
+ GEOM::GEOM_Object_ptr MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theR1,
+ CORBA::Double theR2,
+ const GEOM::ListOfLong& theEdges);
+
GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
const GEOM::ListOfLong& theFaces);
+ GEOM::GEOM_Object_ptr MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theR1,
+ CORBA::Double theR2,
+ const GEOM::ListOfLong& theFaces);
+
GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
+
GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theD1, CORBA::Double theD2,
CORBA::Long theFace1, CORBA::Long theFace2);
+
+ GEOM::GEOM_Object_ptr MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ CORBA::Long theFace1, CORBA::Long theFace2);
+
GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theD1, CORBA::Double theD2,
const GEOM::ListOfLong& theFaces);
+ GEOM::GEOM_Object_ptr MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ const GEOM::ListOfLong& theFaces);
+
+ GEOM::GEOM_Object_ptr MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD1, CORBA::Double theD2,
+ const GEOM::ListOfLong& theEdges);
+
+ GEOM::GEOM_Object_ptr MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ const GEOM::ListOfLong& theEdges);
+
GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theWeight,
CORBA::Double theWaterDensity,
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#include <Standard_Stream.hxx>
#include "GEOM_IMeasureOperations_i.hh"
//Set a not done flag
GetOperations()->SetNotDone();
- if (theShape == NULL) return aGEOMObject._retn();
+ if (CORBA::is_nil(theShape)) return aGEOMObject._retn();
//Get the reference shape
Handle(GEOM_Object) aShape = GetOperations()->GetEngine()->GetObject
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * GetNormal
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IMeasureOperations_i::GetNormal
+ (GEOM::GEOM_Object_ptr theFace,
+ GEOM::GEOM_Object_ptr theOptionalPoint)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (CORBA::is_nil(theFace)) return aGEOMObject._retn();
+
+ //Get the reference shape
+ Handle(GEOM_Object) aFace = GetOperations()->GetEngine()->GetObject
+ (theFace->GetStudyID(), theFace->GetEntry());
+
+ if (aFace.IsNull()) return aGEOMObject._retn();
+
+ // Make Vector - normal to theFace (in point theOptionalPoint if the face is not planar)
+ Handle(GEOM_Object) anOptionalPoint;
+ if (!CORBA::is_nil(theOptionalPoint)) {
+ anOptionalPoint = GetOperations()->GetEngine()->GetObject
+ (theOptionalPoint->GetStudyID(), theOptionalPoint->GetEntry());
+ }
+ Handle(GEOM_Object) anObject = GetOperations()->GetNormal(aFace, anOptionalPoint);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* GetBasicProperties
* PointCoordinates
*/
//=============================================================================
-void GEOM_IMeasureOperations_i::PointCoordinates(
- GEOM::GEOM_Object_ptr theShape, CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z )
+void GEOM_IMeasureOperations_i::PointCoordinates (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z)
{
//Set a not done flag
// Get shape parameters
GetOperations()->PointCoordinates( aShape, X, Y, Z );
}
+
+//=============================================================================
+/*!
+ * GetAngle
+ */
+//=============================================================================
+CORBA::Double GEOM_IMeasureOperations_i::GetAngle (GEOM::GEOM_Object_ptr theShape1,
+ GEOM::GEOM_Object_ptr theShape2)
+{
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theShape1 == NULL || theShape2 == NULL) return -1.0;
+
+ //Get the reference shapes
+ Handle(GEOM_Object) aShape1 = GetOperations()->GetEngine()->GetObject
+ (theShape1->GetStudyID(), theShape1->GetEntry());
+ Handle(GEOM_Object) aShape2 = GetOperations()->GetEngine()->GetObject
+ (theShape2->GetStudyID(), theShape2->GetEntry());
+
+ if (aShape1.IsNull() || aShape2.IsNull()) return -1.0;
+
+ // Get the angle
+ return GetOperations()->GetAngle(aShape1, aShape2);
+}
GEOM::GEOM_Object_ptr GetCentreOfMass (GEOM::GEOM_Object_ptr theShape);
+ GEOM::GEOM_Object_ptr GetNormal (GEOM::GEOM_Object_ptr theFace,
+ GEOM::GEOM_Object_ptr theOptionalPoint);
+
void GetInertia (GEOM::GEOM_Object_ptr theShape,
CORBA::Double& I11, CORBA::Double& I12, CORBA::Double& I13,
CORBA::Double& I21, CORBA::Double& I22, CORBA::Double& I23,
CORBA::Double& X1, CORBA::Double& Y1, CORBA::Double& Z1,
CORBA::Double& X2, CORBA::Double& Y2, CORBA::Double& Z2);
+ void PointCoordinates (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z);
- void PointCoordinates( GEOM::GEOM_Object_ptr theShape,
- CORBA::Double& X, CORBA::Double& Y, CORBA::Double& Z );
+ CORBA::Double GetAngle (GEOM::GEOM_Object_ptr theShape1,
+ GEOM::GEOM_Object_ptr theShape2);
::GEOMImpl_IMeasureOperations* GetOperations()
{ return (::GEOMImpl_IMeasureOperations*)GetImpl(); }
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFaces
(GEOM::GEOM_Object_ptr theShape,
- const CORBA::Double theTolerance)
+ CORBA::Double theTolerance,
+ CORBA::Boolean doKeepNonSolids)
{
GEOM::GEOM_Object_var aGEOMObject;
//Perform the gluing
Handle(GEOM_Object) anObject =
- GetOperations()->MakeGlueFaces(aShape, theTolerance);
+ GetOperations()->MakeGlueFaces(aShape, theTolerance, doKeepNonSolids);
//if (!GetOperations()->IsDone() || anObject.IsNull())
// to allow warning
if (anObject.IsNull())
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeGlueFacesByList
(GEOM::GEOM_Object_ptr theShape,
- const CORBA::Double theTolerance,
- const GEOM::ListOfGO& theFaces)
+ CORBA::Double theTolerance,
+ const GEOM::ListOfGO& theFaces,
+ CORBA::Boolean doKeepNonSolids)
{
GEOM::GEOM_Object_var aGEOMObject;
//Perform the gluing
Handle(GEOM_Object) anObject =
- GetOperations()->MakeGlueFacesByList(aShape, theTolerance, aFaces);
+ GetOperations()->MakeGlueFacesByList(aShape, theTolerance, aFaces, doKeepNonSolids);
//if (!GetOperations()->IsDone() || anObject.IsNull())
// to allow warning
if (anObject.IsNull())
return GetObject(anObject);
}
+//=============================================================================
+/*!
+ * GetInPlaceByHistory
+ */
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::GetInPlaceByHistory
+ (GEOM::GEOM_Object_ptr theShapeWhere,
+ GEOM::GEOM_Object_ptr theShapeWhat)
+{
+ GEOM::GEOM_Object_var aGEOMObject;
+
+ //Set a not done flag
+ GetOperations()->SetNotDone();
+
+ if (theShapeWhere == NULL ||
+ theShapeWhat == NULL) return aGEOMObject._retn();
+
+ //Get the reference objects
+ Handle(GEOM_Object) aShapeWhere = GetOperations()->GetEngine()->GetObject
+ (theShapeWhere->GetStudyID(), theShapeWhere->GetEntry());
+ Handle(GEOM_Object) aShapeWhat = GetOperations()->GetEngine()->GetObject
+ (theShapeWhat->GetStudyID(), theShapeWhat->GetEntry());
+
+ if (aShapeWhere.IsNull() ||
+ aShapeWhat.IsNull()) return aGEOMObject._retn();
+
+ //Get Shapes in place of aShapeWhat
+ Handle(GEOM_Object) anObject =
+ GetOperations()->GetInPlaceByHistory(aShapeWhere, aShapeWhat);
+ if (!GetOperations()->IsDone() || anObject.IsNull())
+ return aGEOMObject._retn();
+
+ return GetObject(anObject);
+}
+
//=============================================================================
/*!
* GetSame
GEOM::GEOM_Object_ptr MakeCompound (const GEOM::ListOfGO& theShapes);
GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
- CORBA::Double theTolerance);
+ CORBA::Double theTolerance,
+ CORBA::Boolean doKeepNonSolids);
GEOM::ListOfGO* GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance);
GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance,
- const GEOM::ListOfGO& theFaces);
+ const GEOM::ListOfGO& theFaces,
+ CORBA::Boolean doKeepNonSolids);
+
GEOM::ListOfGO* MakeExplode (GEOM::GEOM_Object_ptr theShape,
CORBA::Long theShapeType,
GEOM::GEOM_Object_ptr GetInPlace (GEOM::GEOM_Object_ptr theShapeWhere,
GEOM::GEOM_Object_ptr theShapeWhat);
+ GEOM::GEOM_Object_ptr GetInPlaceByHistory (GEOM::GEOM_Object_ptr theShapeWhere,
+ GEOM::GEOM_Object_ptr theShapeWhat);
+
GEOM::GEOM_Object_ptr GetSame (GEOM::GEOM_Object_ptr theShapeWhere,
GEOM::GEOM_Object_ptr theShapeWhat);
return strdup("");
}
+//=============================================================================
+/*!
+ * SetColor
+ */
+//=============================================================================
+void GEOM_Object_i::SetColor(const SALOMEDS::Color& theColor)
+{
+ _impl->SetColor(theColor);
+}
+
+
+//=============================================================================
+/*!
+ * GetColor
+ */
+//=============================================================================
+SALOMEDS::Color GEOM_Object_i::GetColor()
+{
+ return _impl->GetColor();
+}
+
+
+//=============================================================================
+/*!
+ * SetAutoColor
+ */
+//=============================================================================
+void GEOM_Object_i::SetAutoColor(CORBA::Boolean theAutoColor)
+{
+ _impl->SetAutoColor(theAutoColor);
+}
+
+
+//=============================================================================
+/*!
+ * GetAutoColor
+ */
+//=============================================================================
+CORBA::Boolean GEOM_Object_i::GetAutoColor()
+{
+ return _impl->GetAutoColor();
+}
+
+
//=============================================================================
/*!
* SetStudyEntry
virtual char* GetName();
+ virtual void SetColor(const SALOMEDS::Color& theColor);
+
+ virtual SALOMEDS::Color GetColor();
+
+ virtual void SetAutoColor(CORBA::Boolean theAutoColor);
+
+ virtual CORBA::Boolean GetAutoColor();
+
virtual void SetStudyEntry(const char* theEntry);
virtual char* GetStudyEntry();
return anObj;
}
+//=============================================================================
+// MakePointOnLinesIntersection:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
+ GEOM::GEOM_Object_ptr theRefLine2)
+{
+ beginService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
+ MESSAGE("GEOM_Superv_i::MakePointOnLinesIntersection");
+ getBasicOp();
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnLinesIntersection(theRefLine1, theRefLine2);
+ endService( " GEOM_Superv_i::MakePointOnLinesIntersection" );
+ return anObj;
+}
+
//=============================================================================
// MakeTangentOnCurve:
//=============================================================================
return anObj;
}
+//=============================================================================
+// MakeLineTwoFaces:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
+ GEOM::GEOM_Object_ptr theFace2)
+{
+ beginService( " GEOM_Superv_i::MakeLineTwoFaces");
+ MESSAGE("GEOM_Superv_i::MakeLineTwoFaces");
+ getBasicOp();
+ GEOM::GEOM_Object_ptr anObj = myBasicOp->MakeLineTwoFaces(theFace1, theFace2);
+ endService( " GEOM_Superv_i::MakeLineTwoFaces");
+ return anObj;
+}
+
//=============================================================================
// MakePlaneThreePnt:
//=============================================================================
return anObj;
}
+//=============================================================================
+// MakePrismVecH2Ways:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theVec,
+ CORBA::Double theH)
+{
+ beginService( " GEOM_Superv_i::MakePrismVecH2Ways" );
+ MESSAGE("GEOM_Superv_i::MakePrismVecH2Ways");
+ get3DPrimOp();
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismVecH2Ways(theBase, theVec, theH);
+ endService( " GEOM_Superv_i::MakePrismVecH2Ways" );
+ return anObj;
+}
//=============================================================================
// MakePrismTwoPnt:
return anObj;
}
+//=============================================================================
+// MakePrismTwoPnt2Ways:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr thePoint1,
+ GEOM::GEOM_Object_ptr thePoint2)
+{
+ beginService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
+ MESSAGE("GEOM_Superv_i::MakePrismTwoPnt2Ways");
+ get3DPrimOp();
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2);
+ endService( " GEOM_Superv_i::MakePrismTwoPnt2Ways" );
+ return anObj;
+}
+
//=============================================================================
// MakePipe:
//=============================================================================
return anObj;
}
+//=============================================================================
+// MakeRevolutionAxisAngle:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theAxis,
+ CORBA::Double theAngle)
+{
+ beginService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
+ MESSAGE("GEOM_Superv_i::MakeRevolutionAxisAngle2Ways");
+ get3DPrimOp();
+ GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle);
+ endService( " GEOM_Superv_i::MakeRevolutionAxisAngle2Ways" );
+ return anObj;
+}
+
//=============================================================================
// MakeFilling:
//=============================================================================
}
+//=============================================================================
+// MakePipe:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePipeShellsWithoutPath
+ (const GEOM::ListOfGO& theBases,
+ const GEOM::ListOfGO& theLocations)
+{
+ beginService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
+ MESSAGE("GEOM_Superv_i::MakePipeShellsWithoutPath");
+ get3DPrimOp();
+ GEOM::GEOM_Object_ptr anObj =
+ my3DPrimOp->MakePipeShellsWithoutPath(theBases,theLocations);
+ endService( " GEOM_Superv_i::MakePipeShellsWithoutPath" );
+ return anObj;
+}
+
+
//=============================================================================
// MakeFuse:
//=============================================================================
GEOM::GEOM_List_ptr theRemoveInside,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- GEOM::GEOM_List_ptr theMaterials)
+ GEOM::GEOM_List_ptr theMaterials,
+ CORBA::Short theKeepNonlimitShapes)
{
beginService( " GEOM_Superv_i::MakePartition" );
MESSAGE("GEOM_Superv_i::MakePartition");
dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theMaterials, myPOA).in());
if (aListImplS && aListImplT && aListImplKI && aListImplRI && aListImplM) {
getBoolOp();
- GEOM::GEOM_Object_ptr anObj = myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
- aListImplKI->GetList(), aListImplRI->GetList(),
- theLimit, theRemoveWebs, aListImplM->GetList());
+ GEOM::GEOM_Object_ptr anObj =
+ myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(),
+ aListImplKI->GetList(), aListImplRI->GetList(),
+ theLimit, theRemoveWebs, aListImplM->GetList(),
+ theKeepNonlimitShapes);
endService( " GEOM_Superv_i::MakePartition" );
return anObj;
}
// MakeGlueFaces:
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
- CORBA::Double theTolerance)
+ CORBA::Double theTolerance,
+ CORBA::Boolean doKeepNonSolids)
{
beginService( " GEOM_Superv_i::MakeGlueFaces" );
MESSAGE("GEOM_Superv_i::MakeGlueFaces");
getShapesOp();
- GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFaces(theShape, theTolerance);
+ GEOM::GEOM_Object_ptr anObj =
+ myShapesOp->MakeGlueFaces(theShape, theTolerance, doKeepNonSolids);
endService( " GEOM_Superv_i::MakeGlueFaces" );
return anObj;
}
//=============================================================================
GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance,
- const GEOM::ListOfGO& theFaces)
+ const GEOM::ListOfGO& theFaces,
+ CORBA::Boolean doKeepNonSolids)
{
beginService( " GEOM_Superv_i::MakeGlueFacesByList" );
MESSAGE("GEOM_Superv_i::MakeGlueFacesByList");
getShapesOp();
- GEOM::GEOM_Object_ptr anObj = myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces);
+ GEOM::GEOM_Object_ptr anObj =
+ myShapesOp->MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids);
endService( " GEOM_Superv_i::MakeGlueFacesByList" );
return anObj;
}
endService( " GEOM_Superv_i::MakeCircleThreePnt" );
return anObj;
}
+//=============================================================================
+// MakeCircleCenter2Pnt:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
+ GEOM::GEOM_Object_ptr thePnt2,
+ GEOM::GEOM_Object_ptr thePnt3)
+{
+ beginService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
+ MESSAGE("GEOM_Superv_i::MakeCircleCenter2Pnt");
+ getCurvesOp();
+ GEOM::GEOM_Object_ptr anObj = myCurvesOp->MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3);
+ endService( " GEOM_Superv_i::MakeCircleCenter2Pnt" );
+ return anObj;
+}
//=============================================================================
// MakeEllipse:
return NULL;
}
+//=============================================================================
+// MakeFilletEdges R1 R2:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theR1,
+ CORBA::Double theR2,
+ GEOM::GEOM_List_ptr theEdges)
+{
+ beginService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+ MESSAGE("GEOM_Superv_i::MakeFilletEdgesR1R2");
+ if (GEOM_List_i<GEOM::ListOfLong>* aListImplE =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletEdgesR1R2(theShape, theR1,
+ theR2, aListImplE->GetList());
+ endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeFilletEdgesR1R2" );
+ return NULL;
+}
+
//=============================================================================
// MakeFilletFaces:
//=============================================================================
return NULL;
}
+//=============================================================================
+// MakeFilletFaces R1 R2:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theR1,
+ CORBA::Double theR2,
+ GEOM::GEOM_List_ptr theFaces)
+{
+ beginService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+ MESSAGE("GEOM_Superv_i::MakeFilletFacesR1R2");
+ if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeFilletFacesR1R2(theShape, theR1, theR2,
+ aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeFilletFacesR1R2" );
+ return NULL;
+}
+
//=============================================================================
// MakeChamferAll:
//=============================================================================
return anObj;
}
+//=============================================================================
+// MakeChamferEdgeAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ CORBA::Long theFace1, CORBA::Long theFace2)
+{
+ beginService( " GEOM_Superv_i::MakeChamferEdgeAD" );
+ MESSAGE("GEOM_Superv_i::MakeChamferEdgeAD");
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2);
+ endService( " GEOM_Superv_i::MakeChamferEdgeAD" );
+ return anObj;
+}
+
//=============================================================================
// MakeChamferFaces:
//=============================================================================
return NULL;
}
+//=============================================================================
+// MakeChamferFacesAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ GEOM::GEOM_List_ptr theFaces)
+{
+ beginService( " GEOM_Superv_i::MakeChamferFacesAD" );
+ MESSAGE("GEOM_Superv_i::MakeChamferFacesAD");
+ if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theFaces, myPOA).in())) {
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferFacesAD(theShape, theD, theAngle, aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeChamferFacesAD" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeChamferFacesAD" );
+ return NULL;
+}
+
+//=============================================================================
+// MakeChamferEdges:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD1, CORBA::Double theD2,
+ GEOM::GEOM_List_ptr theEdges)
+{
+ beginService( " GEOM_Superv_i::MakeChamferEdges" );
+ MESSAGE("GEOM_Superv_i::MakeChamferEdges");
+ if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdges(theShape, theD1, theD2, aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeChamferEdges" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeChamferEdges" );
+ return NULL;
+}
+
+//=============================================================================
+// MakeChamferEdgesAD:
+//=============================================================================
+GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ GEOM::GEOM_List_ptr theEdges)
+{
+ beginService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+ MESSAGE("GEOM_Superv_i::MakeChamferEdgesAD");
+ if (GEOM_List_i<GEOM::ListOfLong>* aListImplF =
+ dynamic_cast<GEOM_List_i<GEOM::ListOfLong>*>(GetServant(theEdges, myPOA).in())) {
+ getLocalOp();
+ GEOM::GEOM_Object_ptr anObj = myLocalOp->MakeChamferEdgesAD(theShape, theD, theAngle, aListImplF->GetList());
+ endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+ return anObj;
+ }
+ endService( " GEOM_Superv_i::MakeChamferEdgesAD" );
+ return NULL;
+}
+
//=============================================================================
// MakeArchimede:
//=============================================================================
CORBA::Double theZ);
GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
CORBA::Double theParameter);
+ GEOM::GEOM_Object_ptr MakePointOnLinesIntersection (GEOM::GEOM_Object_ptr theRefLine1,
+ GEOM::GEOM_Object_ptr theRefLine2);
GEOM::GEOM_Object_ptr MakeTangentOnCurve (GEOM::GEOM_Object_ptr theRefCurve,
CORBA::Double theParameter);
GEOM::GEOM_Object_ptr MakeVectorDXDYDZ (CORBA::Double theDX,
GEOM::GEOM_Object_ptr thePnt2);
GEOM::GEOM_Object_ptr MakeLineTwoPnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2);
+ GEOM::GEOM_Object_ptr MakeLineTwoFaces (GEOM::GEOM_Object_ptr theFace1,
+ GEOM::GEOM_Object_ptr theFace2);
GEOM::GEOM_Object_ptr MakePlaneThreePnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3,
GEOM::GEOM_Object_ptr MakePrismVecH (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr theVec,
CORBA::Double theH);
+ GEOM::GEOM_Object_ptr MakePrismVecH2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theVec,
+ CORBA::Double theH);
GEOM::GEOM_Object_ptr MakePrismTwoPnt (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr thePoint1,
GEOM::GEOM_Object_ptr thePoint2);
+ GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr thePoint1,
+ GEOM::GEOM_Object_ptr thePoint2);
GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr thePath);
GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase,
GEOM::GEOM_Object_ptr theAxis,
CORBA::Double theAngle);
+ GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle2Ways (GEOM::GEOM_Object_ptr theBase,
+ GEOM::GEOM_Object_ptr theAxis,
+ CORBA::Double theAngle);
GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape,
CORBA::Long theMinDeg, CORBA::Long theMaxDeg,
CORBA::Double theTol2D, CORBA::Double theTol3D,
GEOM::GEOM_Object_ptr thePath,
CORBA::Boolean theWithContact,
CORBA::Boolean theWithCorrections);
+
+ GEOM::GEOM_Object_ptr MakePipeShellsWithoutPath(const GEOM::ListOfGO& theBases,
+ const GEOM::ListOfGO& theLocations);
//-----------------------------------------------------------//
// BooleanOperations //
GEOM::GEOM_List_ptr theRemoveInside,
CORBA::Short theLimit,
CORBA::Boolean theRemoveWebs,
- GEOM::GEOM_List_ptr theMaterials);
+ GEOM::GEOM_List_ptr theMaterials,
+ CORBA::Short theKeepNonlimitShapes);
GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape,
GEOM::GEOM_Object_ptr thePlane);
GEOM::GEOM_Object_ptr MakeSolidShells (GEOM::GEOM_List_ptr theShells);
GEOM::GEOM_Object_ptr MakeCompound (GEOM::GEOM_List_ptr theShapes);
GEOM::GEOM_Object_ptr MakeGlueFaces (GEOM::GEOM_Object_ptr theShape,
- CORBA::Double theTolerance);
+ CORBA::Double theTolerance,
+ CORBA::Boolean doKeepNonSolids);
GEOM::GEOM_List_ptr GetGlueFaces (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance);
GEOM::GEOM_Object_ptr MakeGlueFacesByList (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theTolerance,
- const GEOM::ListOfGO& theFaces);
+ const GEOM::ListOfGO& theFaces,
+ CORBA::Boolean doKeepNonSolids);
GEOM::GEOM_List_ptr MakeExplode (GEOM::GEOM_Object_ptr theShape,
CORBA::Long theShapeType,
CORBA::Boolean isSorted);
GEOM::GEOM_Object_ptr MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1,
GEOM::GEOM_Object_ptr thePnt2,
GEOM::GEOM_Object_ptr thePnt3);
+ GEOM::GEOM_Object_ptr MakeCircleCenter2Pnt (GEOM::GEOM_Object_ptr thePnt1,
+ GEOM::GEOM_Object_ptr thePnt2,
+ GEOM::GEOM_Object_ptr thePnt3);
GEOM::GEOM_Object_ptr MakeEllipse (GEOM::GEOM_Object_ptr theCenter,
GEOM::GEOM_Object_ptr theVector,
CORBA::Double theRMajor, CORBA::Double theRMinor);
CORBA::Double theR);
GEOM::GEOM_Object_ptr MakeFilletEdges (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
GEOM::GEOM_List_ptr theEdges);
+ GEOM::GEOM_Object_ptr MakeFilletEdgesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+ CORBA::Double theR2, GEOM::GEOM_List_ptr theEdges);
GEOM::GEOM_Object_ptr MakeFilletFaces (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR,
GEOM::GEOM_List_ptr theFaces);
+ GEOM::GEOM_Object_ptr MakeFilletFacesR1R2 (GEOM::GEOM_Object_ptr theShape, CORBA::Double theR1,
+ CORBA::Double theR2, GEOM::GEOM_List_ptr theFaces);
GEOM::GEOM_Object_ptr MakeChamferAll (GEOM::GEOM_Object_ptr theShape, CORBA::Double theD);
GEOM::GEOM_Object_ptr MakeChamferEdge (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theD1, CORBA::Double theD2,
CORBA::Long theFace1, CORBA::Long theFace2);
+ GEOM::GEOM_Object_ptr MakeChamferEdgeAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ CORBA::Long theFace1, CORBA::Long theFace2);
GEOM::GEOM_Object_ptr MakeChamferFaces (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theD1, CORBA::Double theD2,
GEOM::GEOM_List_ptr theFaces);
+ GEOM::GEOM_Object_ptr MakeChamferFacesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ GEOM::GEOM_List_ptr theFaces);
+ GEOM::GEOM_Object_ptr MakeChamferEdges (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD1, CORBA::Double theD2,
+ GEOM::GEOM_List_ptr theEdges);
+ GEOM::GEOM_Object_ptr MakeChamferEdgesAD (GEOM::GEOM_Object_ptr theShape,
+ CORBA::Double theD, CORBA::Double theAngle,
+ GEOM::GEOM_List_ptr theEdges);
GEOM::GEOM_Object_ptr MakeArchimede (GEOM::GEOM_Object_ptr theShape,
CORBA::Double theWeight,
CORBA::Double theWaterDensity,
Face_5_horiz = geompy.GetFaceByNormale(aBlock, vz)
f_5_horiz_ind = geompy.LocalOp.GetSubShapeIndex(aBlock, Face_5_horiz)
- MRot = geompy.MakeMultiTransformation2D(aBlock, f42_sp_ind, 0, 3, f_5_horiz_ind, 0, 5)
- if MRot is not None:
+ MRot = None
+ is2Dok = True
+ try:
+ MRot = geompy.MakeMultiTransformation2D(aBlock, f42_sp_ind, 0, 3, f_5_horiz_ind, 0, 5)
+ except:
+ is2Dok = False
+ if is2Dok and MRot is not None:
isMRot2D = 1
p_z100 = geompy.MakeVertex(0., 0., 100.)
MRot_tr = geompy.MakeTranslationTwoPoints(MRot, p0, p_z100)
# GEOM GEOM_SWIG : binding of C++ omplementaion with Python
#
# Copyright (C) 2003 CEA
+
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# Module : GEOM
# $Header$
+
def TestAll (geompy, math):
#Create base Variables
#Create base geometry 2D
Line = geompy.MakeLineTwoPnt(p0, pxyz) #(2 GEOM_Object_ptr)->GEOM_Object_ptr
Line1 = geompy.MakeLine(pz, vxy) #(2 GEOM_Object_ptr)->GEOM_Object_ptr
+ Line2 = geompy.MakeLineTwoPnt(pxyz, pz) #(2 GEOM_Object_ptr)->GEOM_Object_ptr
Plane = geompy.MakePlane(pz, vxyz, trimsize) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr
Plane1 = geompy.MakePlaneThreePnt(px, pz, p200, trimsize) #(4 Doubles)->GEOM_Object_ptr
Arc2 = geompy.MakeArcCenter(py, pz, px,0) #(3 GEOM_Object_ptr,Boolean)->GEOM_Object_ptr
Circle = geompy.MakeCircle(p0, vz, radius1) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr
Circle1 = geompy.MakeCircleThreePnt(p0, pxyz, px) #(3 GEOM_Object_ptr)->GEOM_Object_ptr
+ Circle2 = geompy.MakeCircleCenter2Pnt(p0, pxyz, py) #(3 GEOM_Object_ptr)->GEOM_Object_ptr
Ellipse = geompy.MakeEllipse(p0, vy, radius2, radius1) #(2 GEOM_Object_ptr, 2 Doubles)->GEOM_Object_ptr
Polyline = geompy.MakePolyline([p0, pz, py, p200]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr
Bezier = geompy.MakeBezier([p0, pz, p200, px]) #(List of GEOM_Object_ptr)->GEOM_Object_ptr
#Test point on curve creation
p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr
+ #Test point on lines intersection
+ pLine = geompy.MakeVertexOnLinesIntersection( Line1, Line2 )
+
#Create base geometry 3D
Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object_ptr)->GEOM_Object_ptr
Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object_ptr
#ShapeList for Sewing
S = geompy.MakeRotation(Face, vxy, angle1)
+
+ #Test Line on Faces Intersection
+ Line3 = geompy.MakeLineTwoFaces( prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object_ptr)->GEOM_Object_ptr
#Create advanced objects
Copy = geompy.MakeCopy(Box) #(GEOM_Object_ptr)->GEOM_Object_ptr
f_ind_2 = geompy.GetSubShapeID(Prism, prism_faces[1])
IDlist_f = [f_ind_1, f_ind_2]
-
+
#Local operations
Fillet = geompy.MakeFillet (Prism, radius, ShapeTypeEdge,
IDlist_e) #(GEOM_Object_ptr, Double, Short, ListOfLong)->GEOM_Object_ptr
+ Fillet2 = geompy.MakeFilletR1R2 (Prism, 7., 13., ShapeTypeEdge,
+ IDlist_e) #(GEOM_Object_ptr, Double, Double, Short, ListOfLong)->GEOM_Object_ptr
Chamfer = geompy.MakeChamferEdge(Prism, d1, d2,
f_ind_1, f_ind_2) #(GEOM_Object_ptr, 2 Doubles, 2 Long)->GEOM_Object_ptr
Chamfer2 = geompy.MakeChamferFaces(Prism, d1, d2,
IDlist_f) #(GEOM_Object_ptr, 2 Doubles, ListOfLong)->GEOM_Object_ptr
-
+ Chamfer3 = geompy.MakeChamferEdges(Prism, d1, d2,
+ IDlist_e) #(GEOM_Object_ptr, 2 Doubles, ListOfLong)->GEOM_Object_ptr
+ Chamfer4 = geompy.MakeChamferFacesAD(Prism, d1, 20. * math.pi / 180.,
+ IDlist_f) #(GEOM_Object_ptr, 2 Doubles, ListOfLong)->GEOM_Object_ptr
#Create Patterns
MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
id_pz = geompy.addToStudy(pz, "Vertex Z")
id_pxyz = geompy.addToStudy(pxyz, "Vertex XYZ")
id_p200 = geompy.addToStudy(p200, "Vertex 200")
+ id_pLine = geompy.addToStudy(pLine, "Vertex on Lines Intersection")
id_vx = geompy.addToStudy(vx, "Vector X")
id_vy = geompy.addToStudy(vy, "Vector Y")
id_Line = geompy.addToStudy(Line, "Line")
id_Line1 = geompy.addToStudy(Line1, "Line by point and vector")
+ id_Line3 = geompy.addToStudy(Line3, "Line on Two Faces Intersection")
id_Plane = geompy.addToStudy(Plane, "Plane")
id_Plane1 = geompy.addToStudy(Plane1, "Plane by 3 points")
id_Arc = geompy.addToStudy(Arc, "Arc")
id_Circle = geompy.addToStudy(Circle, "Circle")
id_Circle1 = geompy.addToStudy(Circle1, "Circle by 3 points")
+ id_Circle2 = geompy.addToStudy(Circle2, "Circle by center and 2 points")
id_Ellipse = geompy.addToStudy(Ellipse, "Ellipse")
id_Polyline = geompy.addToStudy(Polyline, "Polyline")
id_Bezier = geompy.addToStudy(Bezier, "Bezier")
id_Orientation = geompy.addToStudy(Orientation, "Orientation")
id_Fillet = geompy.addToStudy(Fillet, "Fillet")
+ id_Fillet2 = geompy.addToStudy(Fillet2, "Fillet2")
+
id_Chamfer = geompy.addToStudy(Chamfer, "Chamfer on Edge")
id_Chamfer2 = geompy.addToStudy(Chamfer2, "Chamfer on Faces")
+ id_Chamfer3 = geompy.addToStudy(Chamfer3, "Chamfer on Edges")
+ id_Chamfer4 = geompy.addToStudy(Chamfer4, "Chamfer on Faces with params D Angle")
id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D")
id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D")
if Coords[0] != 5 or Coords[1] != 15 or Coords[2] != 35:
print "But must be (5, 15, 35)"
+ ####### GetNormal #######
+
+ faces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])
+ face0 = faces[0]
+ vnorm = geompy.GetNormal(face0)
+ if vnorm is None:
+ raise RuntimeError, "GetNormal(face0) failed"
+ else:
+ geompy.addToStudy(face0, "Face0")
+ geompy.addToStudy(vnorm, "Normale to Face0")
+ print "\nNormale of face has been successfully obtained:"
+ #Coords = geompy.PointCoordinates(pcdg)
+ #print "(", Coords[0], ", ", Coords[1], ", ", Coords[2], ")"
+ #if Coords[0] != 5 or Coords[1] != 15 or Coords[2] != 35:
+ # print "But must be (5, 15, 35)"
+
####### MinDistance #######
MinDist = geompy.MinDistance(box, cube)
print "\nMinimal distance between Box and Cube = ", MinDist
+ MinDistComps = geompy.MinDistanceComponents(box, cube)
+ print "\nMinimal distance between Box and Cube = ", MinDistComps[0]
+ print "Its components are (", MinDistComps[1], ", ", MinDistComps[2], ", ", MinDistComps[3], ")"
+
+ ####### Angle #######
+
+ OX = geompy.MakeVectorDXDYDZ(10, 0,0)
+ OXY = geompy.MakeVectorDXDYDZ(10,10,0)
+
+ # in one plane
+ Angle = geompy.GetAngle(OX, OXY)
+
+ print "\nAngle between OX and OXY = ", Angle
+ if math.fabs(Angle - 45.0) > 1e-05:
+ print " Error: returned angle is", Angle, "while must be 45.0"
+
+ # not in one plane
+ OXY_shift = geompy.MakeTranslation(OXY,10,-10,20)
+ Angle = geompy.GetAngle(OX, OXY_shift)
+
+ print "Angle between OX and OXY_shift = ", Angle
+ if math.fabs(Angle - 45.0) > 1e-05:
+ print " Error: returned angle is", Angle, "while must be 45.0"
+
####### Position (LCS) #######
Pos = geompy.GetPosition(box)
geompy.UnionIDs(vertices_on_quad, vertices_on_quad_ids)
geompy.addToStudy(vertices_on_quad, "Group of vertices on Quadrangle F12")
- # GetInPlace(theShapeWhere, theShapeWhat)
+ # Prepare arguments for GetInPlace and GetInPlaceByHistory
box5 = geompy.MakeBoxDXDYDZ(100, 100, 100)
box6 = geompy.MakeTranslation(box5, 50, 50, 0)
+ geompy.addToStudy(box5, "Box 5")
+ geompy.addToStudy(box6, "Box 6")
+
+ part = geompy.MakePartition([box5], [box6])
+ geompy.addToStudy(part, "Partitioned")
+
+ box5_faces = geompy.SubShapeAll(box5, geompy.ShapeType["FACE"])
+ box6_faces = geompy.SubShapeAll(box6, geompy.ShapeType["FACE"])
+
+ ifa = 1
+ for aface in box5_faces:
+ geompy.addToStudyInFather(box5, aface, "Face" + `ifa`)
+ ifa = ifa + 1
+
+ ifa = 1
+ for aface in box6_faces:
+ geompy.addToStudyInFather(box6, aface, "Face" + `ifa`)
+ ifa = ifa + 1
+
+ # GetInPlace(theShapeWhere, theShapeWhat)
+ ibb = 5
+ faces_list = [box5_faces, box6_faces]
+ for afaces in faces_list:
+ ifa = 1
+ for aface in afaces:
+ if ibb == 6 and (ifa == 2 or ifa == 4):
+ # use IDL interface directly to avoid error message appearence in Python console
+ refl_box_face = geompy.ShapesOp.GetInPlace(part, aface)
+ if refl_box_face is not None:
+ geompy.addToStudyInFather(part, refl_box_face,
+ "Reflection of face " + `ifa` + " of box " + `ibb`)
+ error = "Result of GetInPlace must be NULL for face " + `ifa` + " of box " + `ibb`
+ raise RuntimeError, error
+ else:
+ # use geompy interface
+ refl_box_face = geompy.GetInPlace(part, aface)
+ geompy.addToStudyInFather(part, refl_box_face,
+ "Reflection of face " + `ifa` + " of box " + `ibb`)
+ ifa = ifa + 1
+ ibb = ibb + 1
+
+ # GetInPlaceByHistory(theShapeWhere, theShapeWhat)
part = geompy.MakePartition([box5], [box6])
geompy.addToStudy(part, "Partitioned")
ibb = 5
- box_list = [box5, box6]
- for abox in box_list:
- geompy.addToStudy(abox, "Box " + `ibb`)
- box_faces = geompy.SubShapeAll(abox, geompy.ShapeType["FACE"])
+ faces_list = [box5_faces, box6_faces]
+ for afaces in faces_list:
ifa = 1
- for aface in box_faces:
- geompy.addToStudyInFather(abox, aface, "Face" + `ifa`)
- refl_box_face = geompy.GetInPlace(part, aface)
- if refl_box_face is not None:
+ for aface in afaces:
+ if ibb == 6 and (ifa == 2 or ifa == 4):
+ # use IDL interface directly to avoid error message appearence in Python console
+ refl_box_face = geompy.ShapesOp.GetInPlaceByHistory(part, aface)
+ if refl_box_face is not None:
+ geompy.addToStudyInFather(part, refl_box_face,
+ "Reflection of face " + `ifa` + " of box " + `ibb` + " (by history)")
+ error = "Result of GetInPlaceByHistory must be NULL for face " + `ifa` + " of box " + `ibb`
+ raise RuntimeError, error
+ else:
+ # use geompy interface
+ refl_box_face = geompy.GetInPlaceByHistory(part, aface)
geompy.addToStudyInFather(part, refl_box_face,
- "Reflection of Face " + `ifa` + " of box " + `ibb`)
+ "Reflection of face " + `ifa` + " of box " + `ibb` + " (by history)")
ifa = ifa + 1
ibb = ibb + 1
addToStudy(t_boite, "t_boite")
-p_element = geompy.MakePartition([t_boite], p_tools, [], [], 4, 0, [])
+p_element = geompy.MakePartition([t_boite], p_tools, [], [], 4, 0, [], 0)
# Compound
# --------
--- /dev/null
+# GEOM GEOM_SWIG : binding of C++ omplementaion with Python\r
+#\r
+# Copyright (C) 2003 CEA\r
+#\r
+# This library is free software; you can redistribute it and/or\r
+# modify it under the terms of the GNU Lesser General Public\r
+# License as published by the Free Software Foundation; either\r
+# version 2.1 of the License.\r
+#\r
+# This library is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+# Lesser General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU Lesser General Public\r
+# License along with this library; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+#\r
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
+#\r
+#\r
+# File : GEOM_example6.py\r
+# Author : Dmitry MATVEITCHEV\r
+# Module : GEOM\r
+# $Header$\r
+\r
+\r
+import salome\r
+import geompy\r
+\r
+ind = 1\r
+circlelist = []\r
+while ind < 6:\r
+ x1 = 0. + (10. * ind)\r
+ y1 = 0.\r
+ z1 = 0.\r
+ x2 = 10. + (10. * ind)\r
+ y2 = 20. * (ind+1)\r
+ z2 = 30. * (ind+1)\r
+ x3 = 50. + (10. * ind)\r
+ y3 = 0. * (ind+1)\r
+ z3 = -10. * (ind+1)\r
+\r
+ print x1, y1, z1, x2, y2, z2, x3, y3, z3\r
+\r
+ point1 = geompy.MakeVertex(x1, y1, z1)\r
+ name1 = "point1_%d"%(ind)\r
+ id_pt1 = geompy.addToStudy(point1, name1)\r
+ point2 = geompy.MakeVertex(x2, y2, z2)\r
+ name2 = "point2_%d"%(ind)\r
+ id_pt2 = geompy.addToStudy(point2, name2)\r
+ point3 = geompy.MakeVertex(x3, y3, z3)\r
+ name3 = "point3_%d"%(ind)\r
+ id_pt3 = geompy.addToStudy(point3, name3)\r
+\r
+ name = "circle%d"%(ind)\r
+ circle = geompy.MakeCircleCenter2Pnt(point1, point2, point3)\r
+ id_circle = geompy.addToStudy(circle, name)\r
+ circlelist.append(circle)\r
+ ind = ind + 1\r
# 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 $(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)/../GEOMGUI
-
-SWIG_SOURCES = libGEOM_Swig.i
-
-# Libraries targets
-lib_LTLIBRARIES = libGEOM_Swigcmodule.la
-
-nodist_pkgpython_DATA = libGEOM_Swig.py
-libGEOM_Swig.py: swig_wrap.cpp
-
-libGEOM_Swigcmodule_la_SOURCES = \
- $(BUILT_SOURCES) \
- $(SWIG_SOURCES)
-
-nodist_libGEOM_Swigcmodule_la_SOURCES = swig_wrap.cpp
-
-#LIB_CLIENT_IDL = SALOMEDS.idl \
-# SALOMEDS_Attributes.idl \
-# SALOME_Exception.idl \
-# GEOM_Gen.idl \
-# SALOME_Component.idl \
-# SALOME_GenericObj.idl
EXPORT_SHAREDPYSCRIPTS=\
GEOM_shared_modules.py
-libGEOM_Swigcmodule_la_CPPFLAGS = \
- $(QT_INCLUDES) \
- $(PYTHON_INCLUDES) \
- $(CAS_CPPFLAGS) \
- $(VTK_INCLUDES) \
- $(OGL_INCLUDES) \
- $(KERNEL_CXXFLAGS) \
- $(GUI_CXXFLAGS) \
- $(CORBA_CXXFLAGS) \
- $(CORBA_INCLUDES) \
- -I$(srcdir)/../GEOMGUI \
- -I$(top_builddir)/idl \
- -I$(top_builddir)/salome_adm/unix
-
-libGEOM_Swigcmodule_la_LDFLAGS = \
- ../GEOMGUI/libGEOM.la
-
-
-libGEOM_Swigcmodule_la_LIBADD = \
- $(PYTHON_LIBS)
-
-swig_wrap.cpp : $(SWIG_SOURCES)
- $(SWIG) $(SWIG_FLAGS) -o $@ $<
-
-CLEANFILES = \
- swig_wrap.cpp
-
#
# ===============================================================
# Files to be installed
# Scripts to be installed.
dist_salomescript_DATA= \
- libGEOM_Swig.py \
geompy.py \
+ geompyDC.py \
batchmode_geompy.py \
GEOM_Spanner.py \
GEOM_blocks.py \
GEOM_example3.py \
GEOM_example4.py \
GEOM_example5.py \
+ GEOM_example6.py \
GEOM_moteur.py \
GEOM_TestAll.py \
GEOM_TestOthers.py \
sharedpkgpython_PYTHON = \
GEOM_shared_modules.py
-
-install-exec-hook:\
- $(libdir)/_libGEOM_Swig.so
-
-$(libdir)/_libGEOM_Swig.so:
- ( cd $(libdir); ln -sf libGEOM_Swigcmodule.so _libGEOM_Swig.so; )
print "MakePointOnCurve : ", BasicOp.GetErrorCode()
return anObj
+def MakeVertexOnLinesIntersection(line1,line2):
+ anObj = BasicOp.MakePointOnLinesIntersection(line1,line2)
+ if BasicOp.IsDone() == 0:
+ print "MakePointOnLinesIntersection : ", BasicOp.GetErrorCode()
+ return anObj
+
def MakeVectorDXDYDZ(dx,dy,dz):
anObj = BasicOp.MakeVectorDXDYDZ(dx,dy,dz)
if BasicOp.IsDone() == 0:
print "MakeLineTwoPnt : ", BasicOp.GetErrorCode()
return anObj
+def MakeLineTwoFaces(f1, f2):
+ anObj = BasicOp.MakeLineTwoFaces(f1,f2)
+ if BasicOp.IsDone() == 0:
+ print "MakeLineTwoFaces : ", BasicOp.GetErrorCode()
+ return anObj
+
def MakePlane(p1,v1,trimsize):
anObj = BasicOp.MakePlanePntVec(p1,v1,trimsize)
if BasicOp.IsDone() == 0:
print "MakeCircleThreePnt : ", CurvesOp.GetErrorCode()
return anObj
+def MakeCircleCenter2Pnt(p1,p2,p3):
+ anObj = CurvesOp.MakeCircleCenter2Pnt(p1,p2,p3)
+ if CurvesOp.IsDone() == 0:
+ print "MakeCircleCenter2Pnt : ", CurvesOp.GetErrorCode()
+ return anObj
+
def MakeEllipse(p1,v1,radiusMaj,radiusMin):
anObj = CurvesOp.MakeEllipse(p1,v1,radiusMaj, radiusMin)
if CurvesOp.IsDone() == 0:
print "MakePrismTwoPnt : ", PrimOp.GetErrorCode()
return anObj
+def MakePrism2Ways(baseShape,point1,point2):
+ anObj = PrimOp.MakePrismTwoPnt2Ways(baseShape,point1,point2)
+ if PrimOp.IsDone() == 0:
+ print "MakePrismTwoPnt2Ways : ", PrimOp.GetErrorCode()
+ return anObj
+
def MakePrismVecH(baseShape,vector,height):
anObj = PrimOp.MakePrismVecH(baseShape,vector,height)
if PrimOp.IsDone() == 0:
print "MakePrismVecH : ", PrimOp.GetErrorCode()
return anObj
+def MakePrismVecH2Ways(baseShape,vector,height):
+ anObj = PrimOp.MakePrismVecH2Ways(baseShape,vector,height)
+ if PrimOp.IsDone() == 0:
+ print "MakePrismVecH2Ways : ", PrimOp.GetErrorCode()
+ return anObj
+
def MakePipe(baseShape,pathShape):
anObj = PrimOp.MakePipe(baseShape,pathShape)
if PrimOp.IsDone() == 0:
print "MakeRevolutionAxisAngle : ", PrimOp.GetErrorCode()
return anObj
+def MakeRevolution2Ways(aShape,axis,angle):
+ anObj = PrimOp.MakeRevolutionAxisAngle2Ways(aShape,axis,angle)
+ if PrimOp.IsDone() == 0:
+ print "MakeRevolutionAxisAngle2Ways : ", PrimOp.GetErrorCode()
+ return anObj
+
# -----------------------------------------------------------------------------
# Create base shapes
# -----------------------------------------------------------------------------
return MakeBoolean(s1, s2, 4)
def MakePartition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
- Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]):
+ Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[],
+ KeepNonlimitShapes=0):
anObj = BoolOp.MakePartition(ListShapes, ListTools,
ListKeepInside, ListRemoveInside,
- Limit, RemoveWebs, ListMaterials);
+ Limit, RemoveWebs, ListMaterials,
+ KeepNonlimitShapes);
if BoolOp.IsDone() == 0:
print "MakePartition : ", BoolOp.GetErrorCode()
return anObj
def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
- Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]):
+ Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[],
+ KeepNonlimitShapes=0):
anObj = MakePartition(ListShapes, ListTools,
ListKeepInside, ListRemoveInside,
- Limit, RemoveWebs, ListMaterials);
+ Limit, RemoveWebs, ListMaterials,
+ KeepNonlimitShapes);
return anObj
def MakeHalfPartition(theShape, thePlane):
print "MakeFillet : ", LocalOp.GetErrorCode()
return anObj
+def MakeFilletR1R2(aShape,radius1,radius2,aShapeType,ListShape):
+ anObj = None
+ if aShapeType == ShapeType["EDGE"]:
+ anObj = LocalOp.MakeFilletEdgesR1R2(aShape,radius1,radius2,ListShape)
+ else:
+ anObj = LocalOp.MakeFilletFacesR1R2(aShape,radius1,radius2,ListShape)
+ if LocalOp.IsDone() == 0:
+ print "MakeFilletR1R2 : ", LocalOp.GetErrorCode()
+ return anObj
+
def MakeChamferAll(aShape,d):
anObj = LocalOp.MakeChamferAll(aShape,d)
if LocalOp.IsDone() == 0:
print "MakeChamferEdge : ", LocalOp.GetErrorCode()
return anObj
+def MakeChamferEdgeAD(aShape,d,angle,face1,face2):
+ anObj = LocalOp.MakeChamferEdgeAD(aShape,d,angle,face1,face2)
+ if LocalOp.IsDone() == 0:
+ print "MakeChamferEdgeAD : ", LocalOp.GetErrorCode()
+ return anObj
+
def MakeChamferFaces(aShape,d1,d2,ListShape):
anObj = LocalOp.MakeChamferFaces(aShape,d1,d2,ListShape)
if LocalOp.IsDone() == 0:
print "MakeChamferFaces : ", LocalOp.GetErrorCode()
return anObj
+def MakeChamferFacesAD(aShape,d,angle,ListShape):
+ anObj = LocalOp.MakeChamferFacesAD(aShape,d,angle,ListShape)
+ if LocalOp.IsDone() == 0:
+ print "MakeChamferFacesAD : ", LocalOp.GetErrorCode()
+ return anObj
+
+def MakeChamferEdges(aShape,d1,d2,ListShape):
+ anObj = LocalOp.MakeChamferEdges(aShape,d1,d2,ListShape)
+ if LocalOp.IsDone() == 0:
+ print "MakeChamferEdges : ", LocalOp.GetErrorCode()
+ return anObj
+
+def MakeChamferEdgesAD(aShape,d,angle,ListShape):
+ anObj = LocalOp.MakeChamferEdgesAD(aShape,d,angle,ListShape)
+ if LocalOp.IsDone() == 0:
+ print "MakeChamferEdgesAD : ", LocalOp.GetErrorCode()
+ return anObj
+
def MakeChamfer(aShape,d1,d2,aShapeType,ListShape):
anObj = None
if aShapeType == ShapeType["EDGE"]:
# $Header$
import salome
-salome.salome_init()
+import geompyDC
from salome import *
-import GEOM
+geom = lcc.FindOrLoadComponent("FactoryServer", "GEOM")
+geom.init_geom(salome.myStudy)
-"""
- \namespace geompy
- \brief Module geompy
-"""
+# Export the methods of geompyDC
+for k in dir(geom):
+ if k[0] == '_':continue
+ globals()[k]=getattr(geom,k)
+del k
+from geompyDC import ShapeType,GEOM,kind, info
-g = lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-geom = g._narrow( GEOM.GEOM_Gen )
-#gg = ImportComponentGUI("GEOM")
-#gg.initGeomGen()
-
-#SRN: modified on Mar 18, 2005
-
-myBuilder = None
-myStudyId = 0
-father = None
-
-BasicOp = None
-CurvesOp = None
-PrimOp = None
-ShapesOp = None
-HealOp = None
-InsertOp = None
-BoolOp = None
-TrsfOp = None
-LocalOp = None
-MeasuOp = None
-BlocksOp = None
-GroupOp = None
-
-def init_geom(theStudy):
-
- global myStudy, myBuilder, myStudyId, BasicOp, CurvesOp, PrimOp, ShapesOp, HealOp
- global InsertOp, BoolOp, TrsfOp, LocalOp, MeasuOp, BlocksOp, GroupOp, father
-
- myStudy = theStudy
- myStudyId = myStudy._get_StudyId()
- myBuilder = myStudy.NewBuilder()
- father = myStudy.FindComponent("GEOM")
- if father is None:
- father = myBuilder.NewComponent("GEOM")
- A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName")
- FName = A1._narrow(SALOMEDS.AttributeName)
- FName.SetValue("Geometry")
- A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap")
- aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
- aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
- myBuilder.DefineComponentInstance(father,geom)
- pass
-
- # -----------------------------------------------------------------------------
- # Assign Operations Interfaces
- # -----------------------------------------------------------------------------
-
- BasicOp = geom.GetIBasicOperations (myStudyId)
- CurvesOp = geom.GetICurvesOperations (myStudyId)
- PrimOp = geom.GetI3DPrimOperations (myStudyId)
- ShapesOp = geom.GetIShapesOperations (myStudyId)
- HealOp = geom.GetIHealingOperations (myStudyId)
- InsertOp = geom.GetIInsertOperations (myStudyId)
- BoolOp = geom.GetIBooleanOperations (myStudyId)
- TrsfOp = geom.GetITransformOperations(myStudyId)
- LocalOp = geom.GetILocalOperations (myStudyId)
- MeasuOp = geom.GetIMeasureOperations (myStudyId)
- BlocksOp = geom.GetIBlocksOperations (myStudyId)
- GroupOp = geom.GetIGroupOperations (myStudyId)
- pass
-
-init_geom(myStudy)
-
-#SRN: end of modifications
-
-## Get name for sub-shape aSubObj of shape aMainObj
-#
-# Example: see GEOM_TestAll.py
-def SubShapeName(aSubObj, aMainObj):
- #aSubId = orb.object_to_string(aSubObj)
- #aMainId = orb.object_to_string(aMainObj)
- #index = gg.getIndexTopology(aSubId, aMainId)
- #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
- index = ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
- name = ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
- return name
-
-## Publish in study aShape with name aName
-#
-# Example: see GEOM_TestAll.py
-def addToStudy(aShape, aName):
- try:
- aSObject = geom.AddInStudy(myStudy, aShape, aName, None)
- except:
- print "addToStudy() failed"
- return ""
- return aShape.GetStudyEntry()
-
-## Publish in study aShape with name aName as sub-object of previously published aFather
-#
-# Example: see GEOM_TestAll.py
-def addToStudyInFather(aFather, aShape, aName):
- try:
- aSObject = geom.AddInStudy(myStudy, aShape, aName, aFather)
- except:
- print "addToStudyInFather() failed"
- return ""
- return aShape.GetStudyEntry()
-
-# -----------------------------------------------------------------------------
-# enumeration ShapeType as a dictionary
-# -----------------------------------------------------------------------------
-
-ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}
-
-# -----------------------------------------------------------------------------
-# enumeration shape_kind
-# -----------------------------------------------------------------------------
-
-kind = GEOM.GEOM_IKindOfShape
-
-class info:
- UNKNOWN = 0
- CLOSED = 1
- UNCLOSED = 2
-
-# -----------------------------------------------------------------------------
-# Basic primitives
-# -----------------------------------------------------------------------------
-
-## Create point by three coordinates.
-# @param theX The X coordinate of the point.
-# @param theY The Y coordinate of the point.
-# @param theZ The Z coordinate of the point.
-# @return New GEOM_Object, containing the created point.
-#
-# Example: see GEOM_TestAll.py
-def MakeVertex(theX, theY, theZ):
- anObj = BasicOp.MakePointXYZ(theX, theY, theZ)
- if BasicOp.IsDone() == 0:
- print "MakePointXYZ : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a point, distant from the referenced point
-# on the given distances along the coordinate axes.
-# @param theReference The referenced point.
-# @param theX Displacement from the referenced point along OX axis.
-# @param theY Displacement from the referenced point along OY axis.
-# @param theZ Displacement from the referenced point along OZ axis.
-# @return New GEOM_Object, containing the created point.
-#
-# Example: see GEOM_TestAll.py
-def MakeVertexWithRef(theReference, theX, theY, theZ):
- anObj = BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
- if BasicOp.IsDone() == 0:
- print "MakePointWithReference : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a point, corresponding to the given parameter on the given curve.
-# @param theRefCurve The referenced curve.
-# @param theParameter Value of parameter on the referenced curve.
-# @return New GEOM_Object, containing the created point.
-#
-# Example: see GEOM_TestAll.py
-def MakeVertexOnCurve(theRefCurve, theParameter):
- anObj = BasicOp.MakePointOnCurve(theRefCurve, theParameter)
- if BasicOp.IsDone() == 0:
- print "MakePointOnCurve : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a tangent, corresponding to the given parameter on the given curve.
-# @param theRefCurve The referenced curve.
-# @param theParameter Value of parameter on the referenced curve.
-# @return New GEOM_Object, containing the created tangent.
-def MakeTangentOnCurve(theRefCurve, theParameter):
- anObj = BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
- if BasicOp.IsDone() == 0:
- print "MakeTangentOnCurve : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a vector with the given components.
-# @param theDX X component of the vector.
-# @param theDY Y component of the vector.
-# @param theDZ Z component of the vector.
-# @return New GEOM_Object, containing the created vector.
-#
-# Example: see GEOM_TestAll.py
-def MakeVectorDXDYDZ(theDX, theDY, theDZ):
- anObj = BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
- if BasicOp.IsDone() == 0:
- print "MakeVectorDXDYDZ : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a vector between two points.
-# @param thePnt1 Start point for the vector.
-# @param thePnt2 End point for the vector.
-# @return New GEOM_Object, containing the created vector.
-
-# Example: see GEOM_TestAll.py
-def MakeVector(thePnt1, thePnt2):
- anObj = BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
- if BasicOp.IsDone() == 0:
- print "MakeVectorTwoPnt : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a line, passing through the given point
-# and parrallel to the given direction
-# @param thePnt Point. The resulting line will pass through it.
-# @param theDir Direction. The resulting line will be parallel to it.
-# @return New GEOM_Object, containing the created line.
-#
-# Example: see GEOM_TestAll.py
-def MakeLine(thePnt, theDir):
- anObj = BasicOp.MakeLine(thePnt, theDir)
- if BasicOp.IsDone() == 0:
- print "MakeLine : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a line, passing through the given points
-# @param thePnt1 First of two points, defining the line.
-# @param thePnt2 Second of two points, defining the line.
-# @return New GEOM_Object, containing the created line.
-#
-# Example: see GEOM_TestAll.py
-def MakeLineTwoPnt(thePnt1, thePnt2):
- anObj = BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
- if BasicOp.IsDone() == 0:
- print "MakeLineTwoPnt : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a plane, passing through the given point
-# and normal to the given vector.
-# @param thePnt Point, the plane has to pass through.
-# @param theVec Vector, defining the plane normal direction.
-# @param theTrimSize Half size of a side of quadrangle face, representing the plane.
-# @return New GEOM_Object, containing the created plane.
-#
-# Example: see GEOM_TestAll.py
-def MakePlane(thePnt, theVec, theTrimSize):
- anObj = BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
- if BasicOp.IsDone() == 0:
- print "MakePlanePntVec : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a plane, passing through the three given points
-# @param thePnt1 First of three points, defining the plane.
-# @param thePnt2 Second of three points, defining the plane.
-# @param thePnt3 Fird of three points, defining the plane.
-# @param theTrimSize Half size of a side of quadrangle face, representing the plane.
-# @return New GEOM_Object, containing the created plane.
-#
-# Example: see GEOM_TestAll.py
-def MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize):
- anObj = BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
- if BasicOp.IsDone() == 0:
- print "MakePlaneThreePnt : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a plane, similar to the existing one, but with another size of representing face.
-# @param theFace Referenced plane or LCS(Marker).
-# @param theTrimSize New half size of a side of quadrangle face, representing the plane.
-# @return New GEOM_Object, containing the created plane.
-#
-# Example: see GEOM_TestAll.py
-def MakePlaneFace(theFace, theTrimSize):
- anObj = BasicOp.MakePlaneFace(theFace, theTrimSize)
- if BasicOp.IsDone() == 0:
- print "MakePlaneFace : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a local coordinate system.
-# @param OX,OY,OZ Three coordinates of coordinate system origin.
-# @param XDX,XDY,XDZ Three components of OX direction
-# @param YDX,YDY,YDZ Three components of OY direction
-# @return New GEOM_Object, containing the created coordinate system.
-#
-# Example: see GEOM_TestAll.py
-def MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ):
- anObj = BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
- if BasicOp.IsDone() == 0:
- print "MakeMarker : ", BasicOp.GetErrorCode()
- return anObj
-
-## Create a local coordinate system.
-# @param theOrigin Point of coordinate system origin.
-# @param theXVec Vector of X direction
-# @param theYVec Vector of Y direction
-# @return New GEOM_Object, containing the created coordinate system.
-def MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec):
- O = PointCoordinates( theOrigin )
- OXOY = []
- for vec in [ theXVec, theYVec ]:
- v1, v2 = SubShapeAll( vec, ShapeType["VERTEX"] )
- p1 = PointCoordinates( v1 )
- p2 = PointCoordinates( v2 )
- for i in range( 0, 3 ):
- OXOY.append( p2[i] - p1[i] )
- #
- anObj = BasicOp.MakeMarker( O[0], O[1], O[2],
- OXOY[0], OXOY[1], OXOY[2],
- OXOY[3], OXOY[4], OXOY[5], )
- if BasicOp.IsDone() == 0:
- print "MakeMarker : ", BasicOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Curves
-# -----------------------------------------------------------------------------
-
-## Create an arc of circle, passing through three given points.
-# @param thePnt1 Start point of the arc.
-# @param thePnt2 Middle point of the arc.
-# @param thePnt3 End point of the arc.
-# @return New GEOM_Object, containing the created arc.
-#
-# Example: see GEOM_TestAll.py
-def MakeArc(thePnt1, thePnt2, thePnt3):
- anObj = CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
- if CurvesOp.IsDone() == 0:
- print "MakeArc : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create an arc of circle from a center and 2 points.
-# @param thePnt1 Center of the arc
-# @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
-# @param thePnt3 End point of the arc (Gives also a direction)
-# @return New GEOM_Object, containing the created arc.
-#
-# Example: see GEOM_TestAll.py
-def MakeArcCenter(thePnt1, thePnt2, thePnt3,theSense):
- anObj = CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3,theSense)
- if CurvesOp.IsDone() == 0:
- print "MakeArcCenter : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create a circle with given center, normal vector and radius.
-# @param thePnt Circle center.
-# @param theVec Vector, normal to the plane of the circle.
-# @param theR Circle radius.
-# @return New GEOM_Object, containing the created circle.
-#
-# Example: see GEOM_TestAll.py
-def MakeCircle(thePnt, theVec, theR):
- anObj = CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
- if CurvesOp.IsDone() == 0:
- print "MakeCirclePntVecR : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create a circle, passing through three given points
-# @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
-# @return New GEOM_Object, containing the created circle.
-#
-# Example: see GEOM_TestAll.py
-def MakeCircleThreePnt(thePnt1, thePnt2, thePnt3):
- anObj = CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
- if CurvesOp.IsDone() == 0:
- print "MakeCircleThreePnt : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create an ellipse with given center, normal vector and radiuses.
-# @param thePnt Ellipse center.
-# @param theVec Vector, normal to the plane of the ellipse.
-# @param theRMajor Major ellipse radius.
-# @param theRMinor Minor ellipse radius.
-# @return New GEOM_Object, containing the created ellipse.
-#
-# Example: see GEOM_TestAll.py
-def MakeEllipse(thePnt, theVec, theRMajor, theRMinor):
- anObj = CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
- if CurvesOp.IsDone() == 0:
- print "MakeEllipse : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create a polyline on the set of points.
-# @param thePoints Sequence of points for the polyline.
-# @return New GEOM_Object, containing the created polyline.
-#
-# Example: see GEOM_TestAll.py
-def MakePolyline(thePoints):
- anObj = CurvesOp.MakePolyline(thePoints)
- if CurvesOp.IsDone() == 0:
- print "MakePolyline : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create bezier curve on the set of points.
-# @param thePoints Sequence of points for the bezier curve.
-# @return New GEOM_Object, containing the created bezier curve.
-#
-# Example: see GEOM_TestAll.py
-def MakeBezier(thePoints):
- anObj = CurvesOp.MakeSplineBezier(thePoints)
- if CurvesOp.IsDone() == 0:
- print "MakeSplineBezier : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create B-Spline curve on the set of points.
-# @param thePoints Sequence of points for the B-Spline curve.
-# @return New GEOM_Object, containing the created B-Spline curve.
-#
-# Example: see GEOM_TestAll.py
-def MakeInterpol(thePoints):
- anObj = CurvesOp.MakeSplineInterpolation(thePoints)
- if CurvesOp.IsDone() == 0:
- print "MakeSplineInterpolation : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create a sketcher (wire or face), following the textual description,
-# passed through \a theCommand argument. \n
-# Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
-# Format of the description string have to be the following:
-#
-# "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
-#
-# Where:
-# - x1, y1 are coordinates of the first sketcher point (zero by default),
-# - CMD is one of
-# - "R angle" : Set the direction by angle
-# - "D dx dy" : Set the direction by DX & DY
-# .
-# \n
-# - "TT x y" : Create segment by point at X & Y
-# - "T dx dy" : Create segment by point with DX & DY
-# - "L length" : Create segment by direction & Length
-# - "IX x" : Create segment by direction & Intersect. X
-# - "IY y" : Create segment by direction & Intersect. Y
-# .
-# \n
-# - "C radius length" : Create arc by direction, radius and length(in degree)
-# .
-# \n
-# - "WW" : Close Wire (to finish)
-# - "WF" : Close Wire and build face (to finish)
-#
-# @param theCommand String, defining the sketcher in local
-# coordinates of the working plane.
-# @param theWorkingPlane Nine double values, defining origin,
-# OZ and OX directions of the working plane.
-# @return New GEOM_Object, containing the created wire.
-#
-# Example: see GEOM_TestAll.py
-def MakeSketcher(theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0]):
- anObj = CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
- if CurvesOp.IsDone() == 0:
- print "MakeSketcher : ", CurvesOp.GetErrorCode()
- return anObj
-
-## Create a sketcher (wire or face), following the textual description,
-# passed through \a theCommand argument. \n
-# For format of the description string see the previous method.\n
-# @param theCommand String, defining the sketcher in local
-# coordinates of the working plane.
-# @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
-# @return New GEOM_Object, containing the created wire.
-def MakeSketcherOnPlane(theCommand, theWorkingPlane):
- anObj = CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
- if CurvesOp.IsDone() == 0:
- print "MakeSketcher : ", CurvesOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Create 3D Primitives
-# -----------------------------------------------------------------------------
-
-## Create a box by coordinates of two opposite vertices.
-#
-# Example: see GEOM_TestAll.py
-def MakeBox(x1,y1,z1,x2,y2,z2):
- pnt1 = MakeVertex(x1,y1,z1)
- pnt2 = MakeVertex(x2,y2,z2)
- return MakeBoxTwoPnt(pnt1,pnt2)
-
-## Create a box with specified dimensions along the coordinate axes
-# and with edges, parallel to the coordinate axes.
-# Center of the box will be at point (DX/2, DY/2, DZ/2).
-# @param theDX Length of Box edges, parallel to OX axis.
-# @param theDY Length of Box edges, parallel to OY axis.
-# @param theDZ Length of Box edges, parallel to OZ axis.
-# @return New GEOM_Object, containing the created box.
-#
-# Example: see GEOM_TestAll.py
-def MakeBoxDXDYDZ(theDX, theDY, theDZ):
- anObj = PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
- if PrimOp.IsDone() == 0:
- print "MakeBoxDXDYDZ : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a box with two specified opposite vertices,
-# and with edges, parallel to the coordinate axes
-# @param thePnt1 First of two opposite vertices.
-# @param thePnt2 Second of two opposite vertices.
-# @return New GEOM_Object, containing the created box.
-#
-# Example: see GEOM_TestAll.py
-def MakeBoxTwoPnt(thePnt1, thePnt2):
- anObj = PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
- if PrimOp.IsDone() == 0:
- print "MakeBoxTwoPnt : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a cylinder with given base point, axis, radius and height.
-# @param thePnt Central point of cylinder base.
-# @param theAxis Cylinder axis.
-# @param theR Cylinder radius.
-# @param theH Cylinder height.
-# @return New GEOM_Object, containing the created cylinder.
-#
-# Example: see GEOM_TestAll.py
-def MakeCylinder(thePnt, theAxis, theR, theH):
- anObj = PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
- if PrimOp.IsDone() == 0:
- print "MakeCylinderPntVecRH : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a cylinder with given radius and height at
-# the origin of coordinate system. Axis of the cylinder
-# will be collinear to the OZ axis of the coordinate system.
-# @param theR Cylinder radius.
-# @param theH Cylinder height.
-# @return New GEOM_Object, containing the created cylinder.
-#
-# Example: see GEOM_TestAll.py
-def MakeCylinderRH(theR, theH):
- anObj = PrimOp.MakeCylinderRH(theR, theH)
- if PrimOp.IsDone() == 0:
- print "MakeCylinderRH : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a sphere with given center and radius.
-# @param thePnt Sphere center.
-# @param theR Sphere radius.
-# @return New GEOM_Object, containing the created sphere.
-#
-# Example: see GEOM_TestAll.py
-def MakeSpherePntR(thePnt, theR):
- anObj = PrimOp.MakeSpherePntR(thePnt, theR)
- if PrimOp.IsDone() == 0:
- print "MakeSpherePntR : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a sphere with given center and radius.
-# @param x,y,z Coordinates of sphere center.
-# @param theR Sphere radius.
-# @return New GEOM_Object, containing the created sphere.
-#
-# Example: see GEOM_TestAll.py
-def MakeSphere(x, y, z, theR):
- point = MakeVertex(x, y, z)
- anObj = MakeSpherePntR(point, theR)
- return anObj
-
-## Create a sphere with given radius at the origin of coordinate system.
-# @param theR Sphere radius.
-# @return New GEOM_Object, containing the created sphere.
-#
-# Example: see GEOM_TestAll.py
-def MakeSphereR(theR):
- anObj = PrimOp.MakeSphereR(theR)
- if PrimOp.IsDone() == 0:
- print "MakeSphereR : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a cone with given base point, axis, height and radiuses.
-# @param thePnt Central point of the first cone base.
-# @param theAxis Cone axis.
-# @param theR1 Radius of the first cone base.
-# @param theR2 Radius of the second cone base.
-# \note If both radiuses are non-zero, the cone will be truncated.
-# \note If the radiuses are equal, a cylinder will be created instead.
-# @param theH Cone height.
-# @return New GEOM_Object, containing the created cone.
-#
-# Example: see GEOM_TestAll.py
-def MakeCone(thePnt, theAxis, theR1, theR2, theH):
- anObj = PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
- if PrimOp.IsDone() == 0:
- print "MakeConePntVecR1R2H : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a cone with given height and radiuses at
-# the origin of coordinate system. Axis of the cone will
-# be collinear to the OZ axis of the coordinate system.
-# @param theR1 Radius of the first cone base.
-# @param theR2 Radius of the second cone base.
-# \note If both radiuses are non-zero, the cone will be truncated.
-# \note If the radiuses are equal, a cylinder will be created instead.
-# @param theH Cone height.
-# @return New GEOM_Object, containing the created cone.
-#
-# Example: see GEOM_TestAll.py
-def MakeConeR1R2H(theR1, theR2, theH):
- anObj = PrimOp.MakeConeR1R2H(theR1, theR2, theH)
- if PrimOp.IsDone() == 0:
- print "MakeConeR1R2H : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a torus with given center, normal vector and radiuses.
-# @param thePnt Torus central point.
-# @param theVec Torus axis of symmetry.
-# @param theRMajor Torus major radius.
-# @param theRMinor Torus minor radius.
-# @return New GEOM_Object, containing the created torus.
-#
-# Example: see GEOM_TestAll.py
-def MakeTorus(thePnt, theVec, theRMajor, theRMinor):
- anObj = PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
- if PrimOp.IsDone() == 0:
- print "MakeTorusPntVecRR : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a torus with given radiuses at the origin of coordinate system.
-# @param theRMajor Torus major radius.
-# @param theRMinor Torus minor radius.
-# @return New GEOM_Object, containing the created torus.
-#
-# Example: see GEOM_TestAll.py
-def MakeTorusRR(theRMajor, theRMinor):
- anObj = PrimOp.MakeTorusRR(theRMajor, theRMinor)
- if PrimOp.IsDone() == 0:
- print "MakeTorusRR : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by extrusion of the base shape along a vector, defined by two points.
-# @param theBase Base shape to be extruded.
-# @param thePoint1 First end of extrusion vector.
-# @param thePoint2 Second end of extrusion vector.
-# @return New GEOM_Object, containing the created prism.
-#
-# Example: see GEOM_TestAll.py
-def MakePrism(theBase, thePoint1, thePoint2):
- anObj = PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
- if PrimOp.IsDone() == 0:
- print "MakePrismTwoPnt : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by extrusion of the base shape along the vector,
-# i.e. all the space, transfixed by the base shape during its translation
-# along the vector on the given distance.
-# @param theBase Base shape to be extruded.
-# @param theVec Direction of extrusion.
-# @param theH Prism dimension along theVec.
-# @return New GEOM_Object, containing the created prism.
-#
-# Example: see GEOM_TestAll.py
-def MakePrismVecH(theBase, theVec, theH):
- anObj = PrimOp.MakePrismVecH(theBase, theVec, theH)
- if PrimOp.IsDone() == 0:
- print "MakePrismVecH : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by extrusion of the base shape along
-# the path shape. The path shape can be a wire or an edge.
-# @param theBase Base shape to be extruded.
-# @param thePath Path shape to extrude the base shape along it.
-# @return New GEOM_Object, containing the created pipe.
-#
-# Example: see GEOM_TestAll.py
-def MakePipe(theBase, thePath):
- anObj = PrimOp.MakePipe(theBase, thePath)
- if PrimOp.IsDone() == 0:
- print "MakePipe : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by revolution of the base shape around the axis
-# on the given angle, i.e. all the space, transfixed by the base
-# shape during its rotation around the axis on the given angle.
-# @param theBase Base shape to be rotated.
-# @param theAxis Rotation axis.
-# @param theAngle Rotation angle in radians.
-# @return New GEOM_Object, containing the created revolution.
-#
-# Example: see GEOM_TestAll.py
-def MakeRevolution(theBase, theAxis, theAngle):
- anObj = PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
- if PrimOp.IsDone() == 0:
- print "MakeRevolutionAxisAngle : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
-# @param theSeqSections - set of specified sections.
-# @param theModeSolid - mode defining building solid or shell
-# @param thePreci - precision 3D used for smoothing by default 1.e-6
-# @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
-# @return New GEOM_Object, containing the created shell or solid.
-#
-# Example: see GEOM_TestAll.py
-def MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled):
- anObj = PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
- if PrimOp.IsDone() == 0:
- print "MakeThruSections : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by extrusion of the profile shape along
-# the path shape. The path shape can be a wire or an edge.
-# the several profiles can be specified in the several locations of path.
-# @param theSeqBases - list of Bases shape to be extruded.
-# @param theLocations - list of locations on the path corresponding
-# specified list of the Bases shapes. Number of locations
-# should be equal to number of bases or list of locations can be empty.
-# @param thePath - Path shape to extrude the base shape along it.
-# @param theWithContact - the mode defining that the section is translated to be in
-# contact with the spine.
-# @param - WithCorrection - defining that the section is rotated to be
-# orthogonal to the spine tangent in the correspondent point
-# @return New GEOM_Object, containing the created pipe.
-#
-# Example: see GEOM_TestAll.py
-def MakePipeWithDifferentSections(theSeqBases, theLocations,thePath,theWithContact,theWithCorrection):
- anObj = PrimOp.MakePipeWithDifferentSections(theSeqBases, theLocations,thePath,theWithContact,theWithCorrection)
- if PrimOp.IsDone() == 0:
- print "MakePipeWithDifferentSections : ", PrimOp.GetErrorCode()
- return anObj
-
-## Create a shape by extrusion of the profile shape along
-# the path shape. The path shape can be a shell or a face.
-# the several profiles can be specified in the several locations of path.
-# @param theSeqBases - list of Bases shape to be extruded.
-# @param theSeqSubBases - list of corresponding subshapes of section shapes.
-# @param theLocations - list of locations on the path corresponding
-# specified list of the Bases shapes. Number of locations
-# should be equal to number of bases or list of locations can be empty.
-# @param thePath - Path shape to extrude the base shape along it.
-# @param theWithContact - the mode defining that the section is translated to be in
-# contact with the spine.
-# @param - WithCorrection - defining that the section is rotated to be
-# orthogonal to the spine tangent in the correspondent point
-# @return New GEOM_Object, containing the created solids.
-#
-# Example: see GEOM_TestAll.py
-def MakePipeWithShellSections(theSeqBases, theSeqSubBases,
- theLocations, thePath,
- theWithContact, theWithCorrection):
- anObj = PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
- theLocations, thePath,
- theWithContact, theWithCorrection)
- if PrimOp.IsDone() == 0:
- print "MakePipeWithShellSections : ", PrimOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Create base shapes
-# -----------------------------------------------------------------------------
-
-## Create a linear edge with specified ends.
-# @param thePnt1 Point for the first end of edge.
-# @param thePnt2 Point for the second end of edge.
-# @return New GEOM_Object, containing the created edge.
-#
-# Example: see GEOM_TestAll.py
-def MakeEdge(thePnt1, thePnt2):
- anObj = ShapesOp.MakeEdge(thePnt1, thePnt2)
- if ShapesOp.IsDone() == 0:
- print "MakeEdge : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Create a wire from the set of edges and wires.
-# @param theEdgesAndWires List of edges and/or wires.
-# @return New GEOM_Object, containing the created wire.
-#
-# Example: see GEOM_TestAll.py
-def MakeWire(theEdgesAndWires):
- anObj = ShapesOp.MakeWire(theEdgesAndWires)
- if ShapesOp.IsDone() == 0:
- print "MakeWire : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Create a face on the given wire.
-# @param theWire closed Wire or Edge to build the face on.
-# @param isPlanarWanted If TRUE, only planar face will be built.
-# If impossible, NULL object will be returned.
-# @return New GEOM_Object, containing the created face.
-#
-# Example: see GEOM_TestAll.py
-def MakeFace(theWire, isPlanarWanted):
- anObj = ShapesOp.MakeFace(theWire, isPlanarWanted)
- if ShapesOp.IsDone() == 0:
- print "MakeFace : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Create a face on the given wires set.
-# @param theWires List of closed wires or edges to build the face on.
-# @param isPlanarWanted If TRUE, only planar face will be built.
-# If impossible, NULL object will be returned.
-# @return New GEOM_Object, containing the created face.
-#
-# Example: see GEOM_TestAll.py
-def MakeFaceWires(theWires, isPlanarWanted):
- anObj = ShapesOp.MakeFaceWires(theWires, isPlanarWanted)
- if ShapesOp.IsDone() == 0:
- print "MakeFaceWires : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Shortcut to MakeFaceWires()
-#
-# Example: see GEOM_TestOthers.py
-def MakeFaces(theWires, isPlanarWanted):
- anObj = MakeFaceWires(theWires, isPlanarWanted)
- return anObj
-
-## Create a shell from the set of faces and shells.
-# @param theFacesAndShells List of faces and/or shells.
-# @return New GEOM_Object, containing the created shell.
-#
-# Example: see GEOM_TestAll.py
-def MakeShell(theFacesAndShells):
- anObj = ShapesOp.MakeShell(theFacesAndShells)
- if ShapesOp.IsDone() == 0:
- print "MakeShell : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Create a solid, bounded by the given shells.
-# @param theShells Sequence of bounding shells.
-# @return New GEOM_Object, containing the created solid.
-#
-# Example: see GEOM_TestAll.py
-def MakeSolid(theShells):
- anObj = ShapesOp.MakeSolidShells(theShells)
- if ShapesOp.IsDone() == 0:
- print "MakeSolid : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Create a compound of the given shapes.
-# @param theShapes List of shapes to put in compound.
-# @return New GEOM_Object, containing the created compound.
-#
-# Example: see GEOM_TestAll.py
-def MakeCompound(theShapes):
- anObj = ShapesOp.MakeCompound(theShapes)
- if ShapesOp.IsDone() == 0:
- print "MakeCompound : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Gives quantity of faces in the given shape.
-# @param theShape Shape to count faces of.
-# @return Quantity of faces.
-#
-# Example: see GEOM_TestOthers.py
-def NumberOfFaces(theShape):
- nb_faces = ShapesOp.NumberOfFaces(theShape)
- if ShapesOp.IsDone() == 0:
- print "NumberOfFaces : ", ShapesOp.GetErrorCode()
- return nb_faces
-
-## Gives quantity of edges in the given shape.
-# @param theShape Shape to count edges of.
-# @return Quantity of edges.
-#
-# Example: see GEOM_TestOthers.py
-def NumberOfEdges(theShape):
- nb_edges = ShapesOp.NumberOfEdges(theShape)
- if ShapesOp.IsDone() == 0:
- print "NumberOfEdges : ", ShapesOp.GetErrorCode()
- return nb_edges
-
-## Reverses an orientation the given shape.
-# @param theShape Shape to be reversed.
-# @return The reversed copy of theShape.
-#
-# Example: see GEOM_TestAll.py
-def ChangeOrientation(theShape):
- anObj = ShapesOp.ChangeOrientation(theShape)
- if ShapesOp.IsDone() == 0:
- print "ChangeOrientation : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Shortcut to ChangeOrientation()
-#
-# Example: see GEOM_TestOthers.py
-def OrientationChange(theShape):
- anObj = ChangeOrientation(theShape)
- return anObj
-
-## Retrieve all free faces from the given shape.
-# Free face is a face, which is not shared between two shells of the shape.
-# @param theShape Shape to find free faces in.
-# @return List of IDs of all free faces, contained in theShape.
-#
-# Example: see GEOM_TestOthers.py
-def GetFreeFacesIDs(theShape):
- anIDs = ShapesOp.GetFreeFacesIDs(theShape)
- if ShapesOp.IsDone() == 0:
- print "GetFreeFacesIDs : ", ShapesOp.GetErrorCode()
- return anIDs
-
-## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
-# @param theShape1 Shape to find sub-shapes in.
-# @param theShape2 Shape to find shared sub-shapes with.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @return List of sub-shapes of theShape1, shared with theShape2.
-#
-# Example: see GEOM_TestOthers.py
-def GetSharedShapes(theShape1, theShape2, theShapeType):
- aList = ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
- if ShapesOp.IsDone() == 0:
- print "GetSharedShapes : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified plane by the certain way, defined through \a theState parameter.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theAx1 Vector (or line, or linear edge), specifying normal
-# direction and location of the plane to find shapes on.
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnPlane(theShape, theShapeType, theAx1, theState):
- aList = ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnPlane : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState):
- aList = ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnPlaneIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified plane by the certain way, defined through \a theState parameter.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theAx1 Vector (or line, or linear edge), specifying normal
-# direction of the plane to find shapes on.
-# @param thePnt Point specifying location of the plane to find shapes on.
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnPlaneWithLocation(theShape, theShapeType, theAx1, thePnt, theState):
- aList = ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType, theAx1, thePnt, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnPlaneWithLocation : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnPlaneWithLocationIDs(theShape, theShapeType, theAx1, thePnt, theState):
- aList = ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType, theAx1, thePnt, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnPlaneWithLocationIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified cylinder by the certain way, defined through \a theState parameter.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theAxis Vector (or line, or linear edge), specifying
-# axis of the cylinder to find shapes on.
-# @param theRadius Radius of the cylinder to find shapes on.
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState):
- aList = ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnCylinder : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState):
- aList = ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnCylinderIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified sphere by the certain way, defined through \a theState parameter.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theCenter Point, specifying center of the sphere to find shapes on.
-# @param theRadius Radius of the sphere to find shapes on.
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState):
- aList = ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnSphere : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState):
- aList = ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnSphereIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified quadrangle by the certain way, defined through \a theState parameter.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theTopLeftPoint Point, specifying top left corner of a quadrangle
-# @param theTopRigthPoint Point, specifying top right corner of a quadrangle
-# @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
-# @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnQuadrangle(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState):
- aList = ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnQuadrangle : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState):
- aList = ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnQuadrangleIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
-# the specified \a theBox by the certain way, defined through \a theState parameter.
-# @param theBox Shape for relative comparing.
-# @param theShape Shape to find sub-shapes of.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @param theState The state of the subshapes to find. It can be one of
-# ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
-# @return List of all found sub-shapes.
-#
-def GetShapesOnBox(theBox, theShape, theShapeType, theState):
- aList = ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnBox : ", ShapesOp.GetErrorCode()
- return aList
-
-## Works like the above method, but returns list of sub-shapes indices
-#
-def GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState):
- aList = ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
- if ShapesOp.IsDone() == 0:
- print "GetShapesOnBoxIDs : ", ShapesOp.GetErrorCode()
- return aList
-
-## Get sub-shape(s) of theShapeWhere, which are
-# coincident with \a theShapeWhat or could be a part of it.
-# @param theShapeWhere Shape to find sub-shapes of.
-# @param theShapeWhat Shape, specifying what to find.
-# @return Group of all found sub-shapes or a single found sub-shape.
-#
-# Example: see GEOM_TestOthers.py
-def GetInPlace(theShapeWhere, theShapeWhat):
- anObj = ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
- if ShapesOp.IsDone() == 0:
- print "GetInPlace : ", ShapesOp.GetErrorCode()
- return anObj
-
-## Get sub-shape of theShapeWhere, which is
-# equal to \a theShapeWhat.
-# @param theShapeWhere Shape to find sub-shape of.
-# @param theShapeWhat Shape, specifying what to find.
-# @return New GEOM_Object for found sub-shape.
-#
-def GetSame(theShapeWhere, theShapeWhat):
- anObj = ShapesOp.GetSame(theShapeWhere, theShapeWhat)
- if ShapesOp.IsDone() == 0:
- print "GetSame : ", ShapesOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Access to sub-shapes by their unique IDs inside the main shape.
-# -----------------------------------------------------------------------------
-
-## Obtain a composite sub-shape of <aShape>, composed from sub-shapes
-# of <aShape>, selected by their unique IDs inside <aShape>
-#
-# Example: see GEOM_TestAll.py
-def GetSubShape(aShape, ListOfID):
- anObj = geom.AddSubShape(aShape,ListOfID)
- return anObj
-
-## Obtain unique ID of sub-shape <aSubShape> inside <aShape>
-#
-# Example: see GEOM_TestAll.py
-def GetSubShapeID(aShape, aSubShape):
- anID = LocalOp.GetSubShapeIndex(aShape, aSubShape)
- if LocalOp.IsDone() == 0:
- print "GetSubShapeIndex : ", LocalOp.GetErrorCode()
- return anID
-
-# -----------------------------------------------------------------------------
-# Decompose objects
-# -----------------------------------------------------------------------------
-
-## Explode a shape on subshapes of a given type.
-# @param theShape Shape to be exploded.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @return List of sub-shapes of type theShapeType, contained in theShape.
-#
-# Example: see GEOM_TestAll.py
-def SubShapeAll(aShape, aType):
- ListObj = ShapesOp.MakeExplode(aShape,aType,0)
- if ShapesOp.IsDone() == 0:
- print "MakeExplode : ", ShapesOp.GetErrorCode()
- return ListObj
-
-## Explode a shape on subshapes of a given type.
-# @param theShape Shape to be exploded.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @return List of IDs of sub-shapes.
-def SubShapeAllIDs(aShape, aType):
- ListObj = ShapesOp.SubShapeAllIDs(aShape,aType,0)
- if ShapesOp.IsDone() == 0:
- print "SubShapeAllIDs : ", ShapesOp.GetErrorCode()
- return ListObj
-
-## Explode a shape on subshapes of a given type.
-# Sub-shapes will be sorted by coordinates of their gravity centers.
-# @param theShape Shape to be exploded.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @return List of sub-shapes of type theShapeType, contained in theShape.
-#
-# Example: see GEOM_TestAll.py
-def SubShapeAllSorted(aShape, aType):
- ListObj = ShapesOp.MakeExplode(aShape,aType,1)
- if ShapesOp.IsDone() == 0:
- print "MakeExplode : ", ShapesOp.GetErrorCode()
- return ListObj
-
-## Explode a shape on subshapes of a given type.
-# Sub-shapes will be sorted by coordinates of their gravity centers.
-# @param theShape Shape to be exploded.
-# @param theShapeType Type of sub-shapes to be retrieved.
-# @return List of IDs of sub-shapes.
-def SubShapeAllSortedIDs(aShape, aType):
- ListIDs = ShapesOp.SubShapeAllIDs(aShape,aType,1)
- if ShapesOp.IsDone() == 0:
- print "SubShapeAllSortedIDs : ", ShapesOp.GetErrorCode()
- return ListIDs
-
-## Obtain a compound of sub-shapes of <aShape>,
-# selected by they indices in list of all sub-shapes of type <aType>.
-# Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
-#
-# Example: see GEOM_TestAll.py
-def SubShape(aShape, aType, ListOfInd):
- ListOfIDs = []
- AllShapeList = SubShapeAll(aShape, aType)
- for ind in ListOfInd:
- ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1]))
- anObj = GetSubShape(aShape, ListOfIDs)
- return anObj
-
-## Obtain a compound of sub-shapes of <aShape>,
-# selected by they indices in sorted list of all sub-shapes of type <aType>.
-# Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
-#
-# Example: see GEOM_TestAll.py
-def SubShapeSorted(aShape, aType, ListOfInd):
- ListOfIDs = []
- AllShapeList = SubShapeAllSorted(aShape, aType)
- for ind in ListOfInd:
- ListOfIDs.append(GetSubShapeID(aShape, AllShapeList[ind - 1]))
- anObj = GetSubShape(aShape, ListOfIDs)
- return anObj
-
-# -----------------------------------------------------------------------------
-# Healing operations
-# -----------------------------------------------------------------------------
-
-## Apply a sequence of Shape Healing operators to the given object.
-# @param theShape Shape to be processed.
-# @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
-# @param theParameters List of names of parameters
-# ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
-# @param theValues List of values of parameters, in the same order
-# as parameters are listed in \a theParameters list.
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def ProcessShape(theShape, theOperators, theParameters, theValues):
- anObj = HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
- if HealOp.IsDone() == 0:
- print "ProcessShape : ", HealOp.GetErrorCode()
- return anObj
-
-## Remove faces from the given object (shape).
-# @param theObject Shape to be processed.
-# @param theFaces Indices of faces to be removed, if EMPTY then the method
-# removes ALL faces of the given object.
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def SuppressFaces(theObject, theFaces):
- anObj = HealOp.SuppressFaces(theObject, theFaces)
- if HealOp.IsDone() == 0:
- print "SuppressFaces : ", HealOp.GetErrorCode()
- return anObj
-
-## Sewing of some shapes into single shape.
-#
-# Example: see GEOM_TestHealing.py
-def MakeSewing(ListShape, theTolerance):
- comp = MakeCompound(ListShape)
- anObj = Sew(comp, theTolerance)
- return anObj
-
-## Sewing of the given object.
-# @param theObject Shape to be processed.
-# @param theTolerance Required tolerance value.
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see MakeSewing() above
-def Sew(theObject, theTolerance):
- anObj = HealOp.Sew(theObject, theTolerance)
- if HealOp.IsDone() == 0:
- print "Sew : ", HealOp.GetErrorCode()
- return anObj
-
-## Remove internal wires and edges from the given object (face).
-# @param theObject Shape to be processed.
-# @param theWires Indices of wires to be removed, if EMPTY then the method
-# removes ALL internal wires of the given object.
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def SuppressInternalWires(theObject, theWires):
- anObj = HealOp.RemoveIntWires(theObject, theWires)
- if HealOp.IsDone() == 0:
- print "SuppressInternalWires : ", HealOp.GetErrorCode()
- return anObj
-
-## Remove internal closed contours (holes) from the given object.
-# @param theObject Shape to be processed.
-# @param theWires Indices of wires to be removed, if EMPTY then the method
-# removes ALL internal holes of the given object
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def SuppressHoles(theObject, theWires):
- anObj = HealOp.FillHoles(theObject, theWires)
- if HealOp.IsDone() == 0:
- print "SuppressHoles : ", HealOp.GetErrorCode()
- return anObj
-
-## Close an open wire.
-# @param theObject Shape to be processed.
-# @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
-# if -1, then theObject itself is a wire.
-# @param isCommonVertex If TRUE : closure by creation of a common vertex,
-# If FALS : closure by creation of an edge between ends.
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def CloseContour(theObject, theWires, isCommonVertex):
- anObj = HealOp.CloseContour(theObject, theWires, isCommonVertex)
- if HealOp.IsDone() == 0:
- print "CloseContour : ", HealOp.GetErrorCode()
- return anObj
-
-## Addition of a point to a given edge object.
-# @param theObject Shape to be processed.
-# @param theEdgeIndex Index of edge to be divided within theObject's shape,
-# if -1, then theObject itself is the edge.
-# @param theValue Value of parameter on edge or length parameter,
-# depending on \a isByParameter.
-# @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1],
-# if FALSE : \a theValue is treated as a length parameter [0..1]
-# @return New GEOM_Object, containing processed shape.
-#
-# Example: see GEOM_TestHealing.py
-def DivideEdge(theObject, theEdgeIndex, theValue, isByParameter):
- anObj = HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
- if HealOp.IsDone() == 0:
- print "DivideEdge : ", HealOp.GetErrorCode()
- return anObj
-
-## Change orientation of the given object.
-# @param theObject Shape to be processed.
-# @update given shape
-def ChangeOrientationShell(theObject):
- theObject = HealOp.ChangeOrientation(theObject)
- if HealOp.IsDone() == 0:
- print "ChangeOrientation : ", HealOp.GetErrorCode()
-
-## Change orientation of the given object.
-# @param theObject Shape to be processed.
-# @return New GEOM_Object, containing processed shape.
-def ChangeOrientationShellCopy(theObject):
- anObj = HealOp.ChangeOrientationCopy(theObject)
- if HealOp.IsDone() == 0:
- print "ChangeOrientation : ", HealOp.GetErrorCode()
- return anObj
-
-## Get a list of wires (wrapped in GEOM_Object-s),
-# that constitute a free boundary of the given shape.
-# @param theObject Shape to get free boundary of.
-# @return [status, theClosedWires, theOpenWires]
-# status: FALSE, if an error(s) occured during the method execution.
-# theClosedWires: Closed wires on the free boundary of the given shape.
-# theOpenWires: Open wires on the free boundary of the given shape.
-#
-# Example: see GEOM_TestHealing.py
-def GetFreeBoundary(theObject):
- anObj = HealOp.GetFreeBoundary(theObject)
- if HealOp.IsDone() == 0:
- print "GetFreeBoundaries : ", HealOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Create advanced objects
-# -----------------------------------------------------------------------------
-
-## Create a copy of the given object
-#
-# Example: see GEOM_TestAll.py
-def MakeCopy(theOriginal):
- anObj = InsertOp.MakeCopy(theOriginal)
- if InsertOp.IsDone() == 0:
- print "MakeCopy : ", InsertOp.GetErrorCode()
- return anObj
-
-## Create a filling from the given compound of contours.
-# @param theShape the compound of contours
-# @param theMinDeg a minimal degree
-# @param theMaxDeg a maximal degree
-# @param theTol2D a 2d tolerance
-# @param theTol3D a 3d tolerance
-# @param theNbIter a number of iteration
-# @return New GEOM_Object, containing the created filling surface.
-#
-# Example: see GEOM_TestAll.py
-def MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter):
- anObj = PrimOp.MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
- if PrimOp.IsDone() == 0:
- print "MakeFilling : ", PrimOp.GetErrorCode()
- return anObj
-
-## Replace coincident faces in theShape by one face.
-# @param theShape Initial shape.
-# @param theTolerance Maximum distance between faces, which can be considered as coincident.
-# @return New GEOM_Object, containing a copy of theShape without coincident faces.
-#
-# Example: see GEOM_Spanner.py
-def MakeGlueFaces(theShape, theTolerance):
- anObj = ShapesOp.MakeGlueFaces(theShape, theTolerance)
- if ShapesOp.IsDone() == 0:
- print "MakeGlueFaces : ", ShapesOp.GetErrorCode()
- return anObj
-
-
-## Find coincident faces in theShape for possible gluing.
-# @param theShape Initial shape.
-# @param theTolerance Maximum distance between faces,
-# which can be considered as coincident.
-# @return ListOfGO.
-#
-# Example: see GEOM_Spanner.py
-def GetGlueFaces(theShape, theTolerance):
- anObj = ShapesOp.GetGlueFaces(theShape, theTolerance)
- if ShapesOp.IsDone() == 0:
- print "GetGlueFaces : ", ShapesOp.GetErrorCode()
- return anObj
-
-
-## Replace coincident faces in theShape by one face
-# in compliance with given list of faces
-# @param theShape Initial shape.
-# @param theTolerance Maximum distance between faces,
-# which can be considered as coincident.
-# @param theFaces List of faces for gluing.
-# @return New GEOM_Object, containing a copy of theShape
-# without some faces.
-#
-# Example: see GEOM_Spanner.py
-def MakeGlueFacesByList(theShape, theTolerance, theFaces):
- anObj = ShapesOp.MakeGlueFacesByList(theShape, theTolerance, theFaces)
- if ShapesOp.IsDone() == 0:
- print "MakeGlueFacesByList : ", ShapesOp.GetErrorCode()
- return anObj
-
-
-# -----------------------------------------------------------------------------
-# Boolean (Common, Cut, Fuse, Section)
-# -----------------------------------------------------------------------------
-
-## Perform one of boolean operations on two given shapes.
-# @param theShape1 First argument for boolean operation.
-# @param theShape2 Second argument for boolean operation.
-# @param theOperation Indicates the operation to be done:
-# 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeBoolean(theShape1, theShape2, theOperation):
- anObj = BoolOp.MakeBoolean(theShape1, theShape2, theOperation)
- if BoolOp.IsDone() == 0:
- print "MakeBoolean : ", BoolOp.GetErrorCode()
- return anObj
-
-## Shortcut to MakeBoolean(s1, s2, 1)
-#
-# Example: see GEOM_TestOthers.py
-def MakeCommon(s1, s2):
- return MakeBoolean(s1, s2, 1)
-
-## Shortcut to MakeBoolean(s1, s2, 2)
-#
-# Example: see GEOM_TestOthers.py
-def MakeCut(s1, s2):
- return MakeBoolean(s1, s2, 2)
-
-## Shortcut to MakeBoolean(s1, s2, 3)
-#
-# Example: see GEOM_TestOthers.py
-def MakeFuse(s1, s2):
- return MakeBoolean(s1, s2, 3)
-
-## Shortcut to MakeBoolean(s1, s2, 4)
-#
-# Example: see GEOM_TestOthers.py
-def MakeSection(s1, s2):
- return MakeBoolean(s1, s2, 4)
-
-## Perform partition operation.
-# @param ListShapes Shapes to be intersected.
-# @param ListTools Shapes to intersect theShapes.
-# !!!NOTE: Each compound from ListShapes and ListTools will be exploded
-# in order to avoid possible intersection between shapes from
-# this compound.
-# @param Limit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
-#
-# After implementation new version of PartitionAlgo (October 2006)
-# other parameters are ignored by current functionality. They are kept
-# in this function only for support old versions.
-# Ignored parameters:
-# @param ListKeepInside Shapes, outside which the results will be deleted.
-# Each shape from theKeepInside must belong to theShapes also.
-# @param ListRemoveInside Shapes, inside which the results will be deleted.
-# Each shape from theRemoveInside must belong to theShapes also.
-# @param RemoveWebs If TRUE, perform Glue 3D algorithm.
-# @param ListMaterials Material indices for each shape. Make sence,
-# only if theRemoveWebs is TRUE.
-#
-# @return New GEOM_Object, containing the result shapes.
-#
-# Example: see GEOM_TestAll.py
-def MakePartition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
- Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]):
- anObj = BoolOp.MakePartition(ListShapes, ListTools,
- ListKeepInside, ListRemoveInside,
- Limit, RemoveWebs, ListMaterials);
- if BoolOp.IsDone() == 0:
- print "MakePartition : ", BoolOp.GetErrorCode()
- return anObj
-
-## Perform partition operation.
-# This method may be useful if it is needed to make a partition for
-# compound contains nonintersected shapes. Performance will be better
-# since intersection between shapes from compound is not performed.
-#
-# Description of all parameters as in previous method MakePartition()
-#
-# !!!NOTE: Passed compounds (via ListShapes or via ListTools)
-# have to consist of nonintersecting shapes.
-#
-# @return New GEOM_Object, containing the result shapes.
-#
-def MakePartitionNonSelfIntersectedShape(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
- Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]):
- anObj = BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
- ListKeepInside, ListRemoveInside,
- Limit, RemoveWebs, ListMaterials);
- if BoolOp.IsDone() == 0:
- print "MakePartitionNonSelfIntersectedShape : ", BoolOp.GetErrorCode()
- return anObj
-
-## Shortcut to MakePartition()
-#
-# Example: see GEOM_TestOthers.py
-def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
- Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[]):
- anObj = MakePartition(ListShapes, ListTools,
- ListKeepInside, ListRemoveInside,
- Limit, RemoveWebs, ListMaterials);
- return anObj
-
-## Perform partition of the Shape with the Plane
-# @param theShape Shape to be intersected.
-# @param thePlane Tool shape, to intersect theShape.
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeHalfPartition(theShape, thePlane):
- anObj = BoolOp.MakeHalfPartition(theShape, thePlane)
- if BoolOp.IsDone() == 0:
- print "MakeHalfPartition : ", BoolOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Transform objects
-# -----------------------------------------------------------------------------
-
-## Translate the given object along the vector, specified
-# by its end points, creating its copy before the translation.
-# @param theObject The object to be translated.
-# @param thePoint1 Start point of translation vector.
-# @param thePoint2 End point of translation vector.
-# @return New GEOM_Object, containing the translated object.
-#
-# Example: see GEOM_TestAll.py
-def MakeTranslationTwoPoints(theObject, thePoint1, thePoint2):
- anObj = TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
- if TrsfOp.IsDone() == 0:
- print "TranslateTwoPointsCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Translate the given object along the vector, specified
-# by its components, creating its copy before the translation.
-# @param theObject The object to be translated.
-# @param theDX,theDY,theDZ Components of translation vector.
-# @return New GEOM_Object, containing the translated object.
-#
-# Example: see GEOM_TestAll.py
-def MakeTranslation(theObject, theDX, theDY, theDZ):
- anObj = TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
- if TrsfOp.IsDone() == 0:
- print "TranslateDXDYDZCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Translate the given object along the given vector,
-# creating its copy before the translation.
-# @param theObject The object to be translated.
-# @param theVector The translation vector.
-# @return New GEOM_Object, containing the translated object.
-#
-# Example: see GEOM_TestAll.py
-def MakeTranslationVector(theObject, theVector):
- anObj = TrsfOp.TranslateVectorCopy(theObject, theVector)
- if TrsfOp.IsDone() == 0:
- print "TranslateVectorCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Rotate the given object around the given axis
-# on the given angle, creating its copy before the rotatation.
-# @param theObject The object to be rotated.
-# @param theAxis Rotation axis.
-# @param theAngle Rotation angle in radians.
-# @return New GEOM_Object, containing the rotated object.
-#
-# Example: see GEOM_TestAll.py
-def MakeRotation(theObject, theAxis, theAngle):
- anObj = TrsfOp.RotateCopy(theObject, theAxis, theAngle)
- if TrsfOp.IsDone() == 0:
- print "RotateCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Rotate given object around vector perpendicular to plane
-# containing three points, creating its copy before the rotatation.
-# @param theObject The object to be rotated.
-# @param theCentPoint central point - the axis is the vector perpendicular to the plane
-# containing the three points.
-# @param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
-# @return New GEOM_Object, containing the rotated object.
-#
-# Example: see GEOM_TestAll.py
-def MakeRotationThreePoints(theObject, theCentPoint, thePoint1, thePoint2):
- anObj = TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
- if TrsfOp.IsDone() == 0:
- print "RotateThreePointsCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Scale the given object by the factor, creating its copy before the scaling.
-# @param theObject The object to be scaled.
-# @param thePoint Center point for scaling.
-# @param theFactor Scaling factor value.
-# @return New GEOM_Object, containing the scaled shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeScaleTransform(theObject, thePoint, theFactor):
- anObj = TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
- if TrsfOp.IsDone() == 0:
- print "ScaleShapeCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Create an object, symmetrical
-# to the given one relatively the given plane.
-# @param theObject The object to be mirrored.
-# @param thePlane Plane of symmetry.
-# @return New GEOM_Object, containing the mirrored shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeMirrorByPlane(theObject, thePlane):
- anObj = TrsfOp.MirrorPlaneCopy(theObject, thePlane)
- if TrsfOp.IsDone() == 0:
- print "MirrorPlaneCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Create an object, symmetrical
-# to the given one relatively the given axis.
-# @param theObject The object to be mirrored.
-# @param theAxis Axis of symmetry.
-# @return New GEOM_Object, containing the mirrored shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeMirrorByAxis(theObject, theAxis):
- anObj = TrsfOp.MirrorAxisCopy(theObject, theAxis)
- if TrsfOp.IsDone() == 0:
- print "MirrorAxisCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Create an object, symmetrical
-# to the given one relatively the given point.
-# @param theObject The object to be mirrored.
-# @param thePoint Point of symmetry.
-# @return New GEOM_Object, containing the mirrored shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeMirrorByPoint(theObject, thePoint):
- anObj = TrsfOp.MirrorPointCopy(theObject, thePoint)
- if TrsfOp.IsDone() == 0:
- print "MirrorPointCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Modify the Location of the given object by LCS,
-# creating its copy before the setting.
-# @param theObject The object to be displaced.
-# @param theStartLCS Coordinate system to perform displacement from it.
-# If \a theStartLCS is NULL, displacement
-# will be performed from global CS.
-# If \a theObject itself is used as \a theStartLCS,
-# its location will be changed to \a theEndLCS.
-# @param theEndLCS Coordinate system to perform displacement to it.
-# @return New GEOM_Object, containing the displaced shape.
-#
-# Example: see GEOM_TestAll.py
-def MakePosition(theObject, theStartLCS, theEndLCS):
- anObj = TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
- if TrsfOp.IsDone() == 0:
- print "PositionShapeCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Create new object as offset of the given one.
-# @param theObject The base object for the offset.
-# @param theOffset Offset value.
-# @return New GEOM_Object, containing the offset object.
-#
-# Example: see GEOM_TestAll.py
-def MakeOffset(theObject, theOffset):
- anObj = TrsfOp.OffsetShapeCopy(theObject, theOffset)
- if TrsfOp.IsDone() == 0:
- print "OffsetShapeCopy : ", TrsfOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Patterns
-# -----------------------------------------------------------------------------
-
-## Translate the given object along the given vector a given number times
-# @param theObject The object to be translated.
-# @param theVector Direction of the translation.
-# @param theStep Distance to translate on.
-# @param theNbTimes Quantity of translations to be done.
-# @return New GEOM_Object, containing compound of all
-# the shapes, obtained after each translation.
-#
-# Example: see GEOM_TestAll.py
-def MakeMultiTranslation1D(theObject, theVector, theStep, theNbTimes):
- anObj = TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
- if TrsfOp.IsDone() == 0:
- print "MultiTranslate1D : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Conseqently apply two specified translations to theObject specified number of times.
-# @param theObject The object to be translated.
-# @param theVector1 Direction of the first translation.
-# @param theStep1 Step of the first translation.
-# @param theNbTimes1 Quantity of translations to be done along theVector1.
-# @param theVector2 Direction of the second translation.
-# @param theStep2 Step of the second translation.
-# @param theNbTimes2 Quantity of translations to be done along theVector2.
-# @return New GEOM_Object, containing compound of all
-# the shapes, obtained after each translation.
-#
-# Example: see GEOM_TestAll.py
-def MakeMultiTranslation2D(theObject, theVector1, theStep1, theNbTimes1,
- theVector2, theStep2, theNbTimes2):
- anObj = TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
- theVector2, theStep2, theNbTimes2)
- if TrsfOp.IsDone() == 0:
- print "MultiTranslate2D : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Rotate the given object around the given axis a given number times.
-# Rotation angle will be 2*PI/theNbTimes.
-# @param theObject The object to be rotated.
-# @param theAxis The rotation axis.
-# @param theNbTimes Quantity of rotations to be done.
-# @return New GEOM_Object, containing compound of all the
-# shapes, obtained after each rotation.
-#
-# Example: see GEOM_TestAll.py
-def MultiRotate1D(theObject, theAxis, theNbTimes):
- anObj = TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
- if TrsfOp.IsDone() == 0:
- print "MultiRotate1D : ", TrsfOp.GetErrorCode()
- return anObj
-
-## Rotate the given object around the
-# given axis on the given angle a given number
-# times and multi-translate each rotation result.
-# Translation direction passes through center of gravity
-# of rotated shape and its projection on the rotation axis.
-# @param theObject The object to be rotated.
-# @param theAxis Rotation axis.
-# @param theAngle Rotation angle in graduces.
-# @param theNbTimes1 Quantity of rotations to be done.
-# @param theStep Translation distance.
-# @param theNbTimes2 Quantity of translations to be done.
-# @return New GEOM_Object, containing compound of all the
-# shapes, obtained after each transformation.
-#
-# Example: see GEOM_TestAll.py
-def MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2):
- anObj = TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
- if TrsfOp.IsDone() == 0:
- print "MultiRotate2D : ", TrsfOp.GetErrorCode()
- return anObj
-
-## The same, as MultiRotate1D(), but axis is given by direction and point
-#
-# Example: see GEOM_TestOthers.py
-def MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes):
- aVec = MakeLine(aPoint,aDir)
- anObj = MultiRotate1D(aShape,aVec,aNbTimes)
- return anObj
-
-## The same, as MultiRotate2D(), but axis is given by direction and point
-#
-# Example: see GEOM_TestOthers.py
-def MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2):
- aVec = MakeLine(aPoint,aDir)
- anObj = MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2)
- return anObj
-
-# -----------------------------------------------------------------------------
-# Local operations
-# -----------------------------------------------------------------------------
-
-## Perform a fillet on all edges of the given shape.
-# @param theShape Shape, to perform fillet on.
-# @param theR Fillet radius.
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestOthers.py
-def MakeFilletAll(theShape, theR):
- anObj = LocalOp.MakeFilletAll(theShape, theR)
- if LocalOp.IsDone() == 0:
- print "MakeFilletAll : ", LocalOp.GetErrorCode()
- return anObj
-
-## Perform a fillet on the specified edges/faces of the given shape
-# @param theShape Shape, to perform fillet on.
-# @param theR Fillet radius.
-# @param theShapeType Type of shapes in <theListShapes>.
-# @param theListShapes Global indices of edges/faces to perform fillet on.
-# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeFillet(theShape, theR, theShapeType, theListShapes):
- anObj = None
- if theShapeType == ShapeType["EDGE"]:
- anObj = LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
- else:
- anObj = LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
- if LocalOp.IsDone() == 0:
- print "MakeFillet : ", LocalOp.GetErrorCode()
- return anObj
-
-## Perform a symmetric chamfer on all edges of the given shape.
-# @param theShape Shape, to perform chamfer on.
-# @param theD Chamfer size along each face.
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestOthers.py
-def MakeChamferAll(theShape, theD):
- anObj = LocalOp.MakeChamferAll(theShape, theD)
- if LocalOp.IsDone() == 0:
- print "MakeChamferAll : ", LocalOp.GetErrorCode()
- return anObj
-
-## Perform a chamfer on edges, common to the specified faces,
-# with distance D1 on the Face1
-# @param theShape Shape, to perform chamfer on.
-# @param theD1 Chamfer size along \a theFace1.
-# @param theD2 Chamfer size along \a theFace2.
-# @param theFace1,theFace2 Global indices of two faces of \a theShape.
-# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2):
- anObj = LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
- if LocalOp.IsDone() == 0:
- print "MakeChamferEdge : ", LocalOp.GetErrorCode()
- return anObj
-
-## Perform a chamfer on all edges of the specified faces,
-# with distance D1 on the first specified face (if several for one edge)
-# @param theShape Shape, to perform chamfer on.
-# @param theD1 Chamfer size along face from \a theFaces. If both faces,
-# connected to the edge, are in \a theFaces, \a theD1
-# will be get along face, which is nearer to \a theFaces beginning.
-# @param theD2 Chamfer size along another of two faces, connected to the edge.
-# @param theFaces Sequence of global indices of faces of \a theShape.
-# \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_TestAll.py
-def MakeChamferFaces(theShape, theD1, theD2, theFaces):
- anObj = LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
- if LocalOp.IsDone() == 0:
- print "MakeChamferFaces : ", LocalOp.GetErrorCode()
- return anObj
-
-## Shortcut to MakeChamferEdge() and MakeChamferFaces()
-#
-# Example: see GEOM_TestOthers.py
-def MakeChamfer(aShape,d1,d2,aShapeType,ListShape):
- anObj = None
- if aShapeType == ShapeType["EDGE"]:
- anObj = MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1])
- else:
- anObj = MakeChamferFaces(aShape,d1,d2,ListShape)
- return anObj
-
-## Perform an Archimde operation on the given shape with given parameters.
-# The object presenting the resulting face is returned.
-# @param theShape Shape to be put in water.
-# @param theWeight Weight og the shape.
-# @param theWaterDensity Density of the water.
-# @param theMeshDeflection Deflection of the mesh, using to compute the section.
-# @return New GEOM_Object, containing a section of \a theShape
-# by a plane, corresponding to water level.
-#
-# Example: see GEOM_TestAll.py
-def Archimede(theShape, theWeight, theWaterDensity, theMeshDeflection):
- anObj = LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
- if LocalOp.IsDone() == 0:
- print "MakeArchimede : ", LocalOp.GetErrorCode()
- return anObj
-
-# -----------------------------------------------------------------------------
-# Information objects
-# -----------------------------------------------------------------------------
-
-## Get point coordinates
-# @return [x, y, z]
-#
-# Example: see GEOM_TestMeasures.py
-def PointCoordinates(Point):
- aTuple = MeasuOp.PointCoordinates(Point)
- if MeasuOp.IsDone() == 0:
- print "PointCoordinates : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Get summarized length of all wires,
-# area of surface and volume of the given shape.
-# @param theShape Shape to define properties of.
-# @return [theLength, theSurfArea, theVolume]
-# theLength: Summarized length of all wires of the given shape.
-# theSurfArea: Area of surface of the given shape.
-# theVolume: Volume of the given shape.
-#
-# Example: see GEOM_TestMeasures.py
-def BasicProperties(theShape):
- aTuple = MeasuOp.GetBasicProperties(theShape)
- if MeasuOp.IsDone() == 0:
- print "BasicProperties : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Get parameters of bounding box of the given shape
-# @param theShape Shape to obtain bounding box of.
-# @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
-# Xmin,Xmax: Limits of shape along OX axis.
-# Ymin,Ymax: Limits of shape along OY axis.
-# Zmin,Zmax: Limits of shape along OZ axis.
-#
-# Example: see GEOM_TestMeasures.py
-def BoundingBox(theShape):
- aTuple = MeasuOp.GetBoundingBox(theShape)
- if MeasuOp.IsDone() == 0:
- print "BoundingBox : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Get inertia matrix and moments of inertia of theShape.
-# @param theShape Shape to calculate inertia of.
-# @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
-# I(1-3)(1-3): Components of the inertia matrix of the given shape.
-# Ix,Iy,Iz: Moments of inertia of the given shape.
-#
-# Example: see GEOM_TestMeasures.py
-def Inertia(theShape):
- aTuple = MeasuOp.GetInertia(theShape)
- if MeasuOp.IsDone() == 0:
- print "Inertia : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Get minimal distance between the given shapes.
-# @param theShape1,theShape2 Shapes to find minimal distance between.
-# @return Value of the minimal distance between the given shapes.
-#
-# Example: see GEOM_TestMeasures.py
-def MinDistance(theShape1, theShape2):
- aTuple = MeasuOp.GetMinDistance(theShape1, theShape2)
- if MeasuOp.IsDone() == 0:
- print "MinDistance : ", MeasuOp.GetErrorCode()
- return aTuple[0]
-
-## Get min and max tolerances of sub-shapes of theShape
-# @param theShape Shape, to get tolerances of.
-# @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
-# FaceMin,FaceMax: Min and max tolerances of the faces.
-# EdgeMin,EdgeMax: Min and max tolerances of the edges.
-# VertMin,VertMax: Min and max tolerances of the vertices.
-#
-# Example: see GEOM_TestMeasures.py
-def Tolerance(theShape):
- aTuple = MeasuOp.GetTolerance(theShape)
- if MeasuOp.IsDone() == 0:
- print "Tolerance : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Obtain description of the given shape (number of sub-shapes of each type)
-# @param theShape Shape to be described.
-# @return Description of the given shape.
-#
-# Example: see GEOM_TestMeasures.py
-def WhatIs(theShape):
- aDescr = MeasuOp.WhatIs(theShape)
- if MeasuOp.IsDone() == 0:
- print "WhatIs : ", MeasuOp.GetErrorCode()
- return aDescr
-
-## Get a point, situated at the centre of mass of theShape.
-# @param theShape Shape to define centre of mass of.
-# @return New GEOM_Object, containing the created point.
-#
-# Example: see GEOM_TestMeasures.py
-def MakeCDG(theShape):
- anObj = MeasuOp.GetCentreOfMass(theShape)
- if MeasuOp.IsDone() == 0:
- print "GetCentreOfMass : ", MeasuOp.GetErrorCode()
- return anObj
-
-## Check a topology of the given shape.
-# @param theShape Shape to check validity of.
-# @param theIsCheckGeom If FALSE, only the shape's topology will be checked,
-# if TRUE, the shape's geometry will be checked also.
-# @return TRUE, if the shape "seems to be valid".
-# If theShape is invalid, prints a description of problem.
-#
-# Example: see GEOM_TestMeasures.py
-def CheckShape(theShape, theIsCheckGeom = 0):
- if theIsCheckGeom:
- (IsValid, Status) = MeasuOp.CheckShapeWithGeometry(theShape)
- else:
- (IsValid, Status) = MeasuOp.CheckShape(theShape)
-
- if MeasuOp.IsDone() == 0:
- print "CheckShape : ", MeasuOp.GetErrorCode()
- else:
- if IsValid == 0:
- print Status
- return IsValid
-
-## Get position (LCS) of theShape.
-#
-# Origin of the LCS is situated at the shape's center of mass.
-# Axes of the LCS are obtained from shape's location or,
-# if the shape is a planar face, from position of its plane.
-#
-# @param theShape Shape to calculate position of.
-# @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
-# Ox,Oy,Oz: Coordinates of shape's LCS origin.
-# Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
-# Xx,Xy,Xz: Coordinates of shape's LCS X direction.
-#
-# Example: see GEOM_TestMeasures.py
-def GetPosition(theShape):
- aTuple = MeasuOp.GetPosition(theShape)
- if MeasuOp.IsDone() == 0:
- print "GetPosition : ", MeasuOp.GetErrorCode()
- return aTuple
-
-## Get kind of theShape.
-#
-# @param theShape Shape to get a kind of.
-# @return Returns a kind of shape in terms of <VAR>GEOM_IKindOfShape.shape_kind</VAR> enumeration
-# and a list of parameters, describing the shape.
-# @note Concrete meaning of each value, returned via \a theIntegers
-# or \a theDoubles list depends on the kind of the shape.
-# The full list of possible outputs is:
-#
-# geompy.kind.COMPOUND nb_solids nb_faces nb_edges nb_vertices
-# geompy.kind.COMPSOLID nb_solids nb_faces nb_edges nb_vertices
-#
-# geompy.kind.SHELL geompy.info.CLOSED nb_faces nb_edges nb_vertices
-# geompy.kind.SHELL geompy.info.UNCLOSED nb_faces nb_edges nb_vertices
-#
-# geompy.kind.WIRE geompy.info.CLOSED nb_edges nb_vertices
-# geompy.kind.WIRE geompy.info.UNCLOSED nb_edges nb_vertices
-#
-# geompy.kind.SPHERE xc yc zc R
-# geompy.kind.CYLINDER xb yb zb dx dy dz R H
-# geompy.kind.BOX xc yc zc ax ay az
-# geompy.kind.ROTATED_BOX xc yc zc zx zy zz xx xy xz ax ay az
-# geompy.kind.TORUS xc yc zc dx dy dz R_1 R_2
-# geompy.kind.CONE xb yb zb dx dy dz R_1 R_2 H
-# geompy.kind.POLYHEDRON nb_faces nb_edges nb_vertices
-# geompy.kind.SOLID nb_faces nb_edges nb_vertices
-#
-# geompy.kind.SPHERE2D xc yc zc R
-# geompy.kind.CYLINDER2D xb yb zb dx dy dz R H
-# geompy.kind.TORUS2D xc yc zc dx dy dz R_1 R_2
-# geompy.kind.CONE2D xc yc zc dx dy dz R_1 R_2 H
-# geompy.kind.DISK_CIRCLE xc yc zc dx dy dz R
-# geompy.kind.DISK_ELLIPSE xc yc zc dx dy dz R_1 R_2
-# geompy.kind.POLYGON xo yo zo dx dy dz nb_edges nb_vertices
-# geompy.kind.PLANE xo yo zo dx dy dz
-# geompy.kind.PLANAR xo yo zo dx dy dz nb_edges nb_vertices
-# geompy.kind.FACE nb_edges nb_vertices
-#
-# geompy.kind.CIRCLE xc yc zc dx dy dz R
-# geompy.kind.ARC_CIRCLE xc yc zc dx dy dz R x1 y1 z1 x2 y2 z2
-# geompy.kind.ELLIPSE xc yc zc dx dy dz R_1 R_2
-# geompy.kind.ARC_ELLIPSE xc yc zc dx dy dz R_1 R_2 x1 y1 z1 x2 y2 z2
-# geompy.kind.LINE xo yo zo dx dy dz
-# geompy.kind.SEGMENT x1 y1 z1 x2 y2 z2
-# geompy.kind.EDGE nb_vertices
-#
-# geompy.kind.VERTEX x y z
-#
-# Example: see GEOM_TestMeasures.py
-def KindOfShape(theShape):
- aRoughTuple = MeasuOp.KindOfShape(theShape)
- if MeasuOp.IsDone() == 0:
- print "KindOfShape : ", MeasuOp.GetErrorCode()
- return []
-
- aKind = aRoughTuple[0]
- anInts = aRoughTuple[1]
- aDbls = aRoughTuple[2]
-
- # Now there is no exception from this rule:
- aKindTuple = [aKind] + aDbls + anInts
-
- # If they are we will regroup parameters for such kind of shape.
- # For example:
- #if aKind == kind.SOME_KIND:
- # # SOME_KIND int int double int double double
- # aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
-
- return aKindTuple
-
-# -----------------------------------------------------------------------------
-# Import/Export objects
-# -----------------------------------------------------------------------------
-
-## Import a shape from the BREP or IGES or STEP file
-# (depends on given format) with given name.
-# @param theFileName The file, containing the shape.
-# @param theFormatName Specify format for the file reading.
-# Available formats can be obtained with InsertOp.ImportTranslators() method.
-# @return New GEOM_Object, containing the imported shape.
-#
-# Example: see GEOM_TestOthers.py
-def Import(theFileName, theFormatName):
- anObj = InsertOp.Import(theFileName, theFormatName)
- if InsertOp.IsDone() == 0:
- print "Import : ", InsertOp.GetErrorCode()
- return anObj
-
-## Shortcut to Import() for BREP format
-#
-# Example: see GEOM_TestOthers.py
-def ImportBREP(theFileName):
- return Import(theFileName, "BREP")
-
-## Shortcut to Import() for IGES format
-#
-# Example: see GEOM_TestOthers.py
-def ImportIGES(theFileName):
- return Import(theFileName, "IGES")
-
-## Shortcut to Import() for STEP format
-#
-# Example: see GEOM_TestOthers.py
-def ImportSTEP(theFileName):
- return Import(theFileName, "STEP")
-
-## Export the given shape into a file with given name.
-# @param theObject Shape to be stored in the file.
-# @param theFileName Name of the file to store the given shape in.
-# @param theFormatName Specify format for the shape storage.
-# Available formats can be obtained with InsertOp.ImportTranslators() method.
-#
-# Example: see GEOM_TestOthers.py
-def Export(theObject, theFileName, theFormatName):
- InsertOp.Export(theObject, theFileName, theFormatName)
- if InsertOp.IsDone() == 0:
- print "Export : ", InsertOp.GetErrorCode()
-
-## Shortcut to Export() for BREP format
-#
-# Example: see GEOM_TestOthers.py
-def ExportBREP(theObject, theFileName):
- return Export(theObject, theFileName, "BREP")
-
-## Shortcut to Export() for IGES format
-#
-# Example: see GEOM_TestOthers.py
-def ExportIGES(theObject, theFileName):
- return Export(theObject, theFileName, "IGES")
-
-## Shortcut to Export() for STEP format
-#
-# Example: see GEOM_TestOthers.py
-def ExportSTEP(theObject, theFileName):
- return Export(theObject, theFileName, "STEP")
-
-# -----------------------------------------------------------------------------
-# Block operations
-# -----------------------------------------------------------------------------
-
-## Create a quadrangle face from four edges. Order of Edges is not
-# important. It is not necessary that edges share the same vertex.
-# @param E1,E2,E3,E4 Edges for the face bound.
-# @return New GEOM_Object, containing the created face.
-#
-# Example: see GEOM_Spanner.py
-def MakeQuad(E1, E2, E3, E4):
- anObj = BlocksOp.MakeQuad(E1, E2, E3, E4)
- if BlocksOp.IsDone() == 0:
- print "MakeQuad : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Create a quadrangle face on two edges.
-# The missing edges will be built by creating the shortest ones.
-# @param E1,E2 Two opposite edges for the face.
-# @return New GEOM_Object, containing the created face.
-#
-# Example: see GEOM_Spanner.py
-def MakeQuad2Edges(E1, E2):
- anObj = BlocksOp.MakeQuad2Edges(E1, E2)
- if BlocksOp.IsDone() == 0:
- print "MakeQuad2Edges : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Create a quadrangle face with specified corners.
-# The missing edges will be built by creating the shortest ones.
-# @param V1,V2,V3,V4 Corner vertices for the face.
-# @return New GEOM_Object, containing the created face.
-#
-# Example: see GEOM_Spanner.py
-def MakeQuad4Vertices(V1, V2, V3, V4):
- anObj = BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
- if BlocksOp.IsDone() == 0:
- print "MakeQuad4Vertices : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Create a hexahedral solid, bounded by the six given faces. Order of
-# faces is not important. It is not necessary that Faces share the same edge.
-# @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
-# @return New GEOM_Object, containing the created solid.
-#
-# Example: see GEOM_Spanner.py
-def MakeHexa(F1, F2, F3, F4, F5, F6):
- anObj = BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
- if BlocksOp.IsDone() == 0:
- print "MakeHexa : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Create a hexahedral solid between two given faces.
-# The missing faces will be built by creating the smallest ones.
-# @param F1,F2 Two opposite faces for the hexahedral solid.
-# @return New GEOM_Object, containing the created solid.
-#
-# Example: see GEOM_Spanner.py
-def MakeHexa2Faces(F1, F2):
- anObj = BlocksOp.MakeHexa2Faces(F1, F2)
- if BlocksOp.IsDone() == 0:
- print "MakeHexa2Faces : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Get a vertex, found in the given shape by its coordinates.
-# @param theShape Block or a compound of blocks.
-# @param theX,theY,theZ Coordinates of the sought vertex.
-# @param theEpsilon Maximum allowed distance between the resulting
-# vertex and point with the given coordinates.
-# @return New GEOM_Object, containing the found vertex.
-#
-# Example: see GEOM_TestOthers.py
-def GetPoint(theShape, theX, theY, theZ, theEpsilon):
- anObj = BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
- if BlocksOp.IsDone() == 0:
- print "GetPoint : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Get an edge, found in the given shape by two given vertices.
-# @param theShape Block or a compound of blocks.
-# @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
-# @return New GEOM_Object, containing the found edge.
-#
-# Example: see GEOM_Spanner.py
-def GetEdge(theShape, thePoint1, thePoint2):
- anObj = BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
- if BlocksOp.IsDone() == 0:
- print "GetEdge : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Find an edge of the given shape, which has minimal distance to the given point.
-# @param theShape Block or a compound of blocks.
-# @param thePoint Point, close to the desired edge.
-# @return New GEOM_Object, containing the found edge.
-#
-# Example: see GEOM_TestOthers.py
-def GetEdgeNearPoint(theShape, thePoint):
- anObj = BlocksOp.GetEdgeNearPoint(theShape, thePoint)
- if BlocksOp.IsDone() == 0:
- print "GetEdgeNearPoint : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Returns a face, found in the given shape by four given corner vertices.
-# @param theShape Block or a compound of blocks.
-# @param thePoint1-thePoint4 Points, close to the corners of the desired face.
-# @return New GEOM_Object, containing the found face.
-#
-# Example: see GEOM_Spanner.py
-def GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4):
- anObj = BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
- if BlocksOp.IsDone() == 0:
- print "GetFaceByPoints : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Get a face of block, found in the given shape by two given edges.
-# @param theShape Block or a compound of blocks.
-# @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
-# @return New GEOM_Object, containing the found face.
-#
-# Example: see GEOM_Spanner.py
-def GetFaceByEdges(theShape, theEdge1, theEdge2):
- anObj = BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
- if BlocksOp.IsDone() == 0:
- print "GetFaceByEdges : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Find a face, opposite to the given one in the given block.
-# @param theBlock Must be a hexahedral solid.
-# @param theFace Face of \a theBlock, opposite to the desired face.
-# @return New GEOM_Object, containing the found face.
-#
-# Example: see GEOM_Spanner.py
-def GetOppositeFace(theBlock, theFace):
- anObj = BlocksOp.GetOppositeFace(theBlock, theFace)
- if BlocksOp.IsDone() == 0:
- print "GetOppositeFace : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Find a face of the given shape, which has minimal distance to the given point.
-# @param theShape Block or a compound of blocks.
-# @param thePoint Point, close to the desired face.
-# @return New GEOM_Object, containing the found face.
-#
-# Example: see GEOM_Spanner.py
-def GetFaceNearPoint(theShape, thePoint):
- anObj = BlocksOp.GetFaceNearPoint(theShape, thePoint)
- if BlocksOp.IsDone() == 0:
- print "GetFaceNearPoint : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Find a face of block, whose outside normale has minimal angle with the given vector.
-# @param theShape Block or a compound of blocks.
-# @param theVector Vector, close to the normale of the desired face.
-# @return New GEOM_Object, containing the found face.
-#
-# Example: see GEOM_Spanner.py
-def GetFaceByNormale(theBlock, theVector):
- anObj = BlocksOp.GetFaceByNormale(theBlock, theVector)
- if BlocksOp.IsDone() == 0:
- print "GetFaceByNormale : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Check, if the compound of blocks is given.
-# To be considered as a compound of blocks, the
-# given shape must satisfy the following conditions:
-# - Each element of the compound should be a Block (6 faces and 12 edges).
-# - A connection between two Blocks should be an entire quadrangle face or an entire edge.
-# - The compound should be connexe.
-# - The glue between two quadrangle faces should be applied.
-# @param theCompound The compound to check.
-# @return TRUE, if the given shape is a compound of blocks.
-# If theCompound is not valid, prints all discovered errors.
-#
-# Example: see GEOM_Spanner.py
-def CheckCompoundOfBlocks(theCompound):
- (IsValid, BCErrors) = BlocksOp.CheckCompoundOfBlocks(theCompound)
- if BlocksOp.IsDone() == 0:
- print "CheckCompoundOfBlocks : ", BlocksOp.GetErrorCode()
- else:
- if IsValid == 0:
- Descr = BlocksOp.PrintBCErrors(theCompound, BCErrors)
- print Descr
- return IsValid
-
-## Remove all seam and degenerated edges from \a theShape.
-# Unite faces and edges, sharing one surface. It means that
-# this faces must have references to one C++ surface object (handle).
-# @param theShape The compound or single solid to remove irregular edges from.
-# @return Improved shape.
-#
-# Example: see GEOM_TestOthers.py
-def RemoveExtraEdges(theShape):
- anObj = BlocksOp.RemoveExtraEdges(theShape)
- if BlocksOp.IsDone() == 0:
- print "RemoveExtraEdges : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Check, if the given shape is a blocks compound.
-# Fix all detected errors.
-# \note Single block can be also fixed by this method.
-# @param theCompound The compound to check and improve.
-# @return Improved compound.
-#
-# Example: see GEOM_TestOthers.py
-def CheckAndImprove(theShape):
- anObj = BlocksOp.CheckAndImprove(theShape)
- if BlocksOp.IsDone() == 0:
- print "CheckAndImprove : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Get all the blocks, contained in the given compound.
-# @param theCompound The compound to explode.
-# @param theMinNbFaces If solid has lower number of faces, it is not a block.
-# @param theMaxNbFaces If solid has higher number of faces, it is not a block.
-# \note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
-# @return List of GEOM_Objects, containing the retrieved blocks.
-#
-# Example: see GEOM_TestOthers.py
-def MakeBlockExplode(theCompound, theMinNbFaces, theMaxNbFaces):
- aList = BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
- if BlocksOp.IsDone() == 0:
- print "MakeBlockExplode : ", BlocksOp.GetErrorCode()
- return aList
-
-## Find block, containing the given point inside its volume or on boundary.
-# @param theCompound Compound, to find block in.
-# @param thePoint Point, close to the desired block. If the point lays on
-# boundary between some blocks, we return block with nearest center.
-# @return New GEOM_Object, containing the found block.
-#
-# Example: see GEOM_Spanner.py
-def GetBlockNearPoint(theCompound, thePoint):
- anObj = BlocksOp.GetBlockNearPoint(theCompound, thePoint)
- if BlocksOp.IsDone() == 0:
- print "GetBlockNearPoint : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
-# @param theCompound Compound, to find block in.
-# @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
-# @return New GEOM_Object, containing the found block.
-#
-# Example: see GEOM_TestOthers.py
-def GetBlockByParts(theCompound, theParts):
- anObj = BlocksOp.GetBlockByParts(theCompound, theParts)
- if BlocksOp.IsDone() == 0:
- print "GetBlockByParts : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Return all blocks, containing all the elements, passed as the parts.
-# @param theCompound Compound, to find blocks in.
-# @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
-# @return List of GEOM_Objects, containing the found blocks.
-#
-# Example: see GEOM_Spanner.py
-def GetBlocksByParts(theCompound, theParts):
- aList = BlocksOp.GetBlocksByParts(theCompound, theParts)
- if BlocksOp.IsDone() == 0:
- print "GetBlocksByParts : ", BlocksOp.GetErrorCode()
- return aList
-
-## Multi-transformate block and glue the result.
-# Transformation is defined so, as to superpose direction faces.
-# @param Block Hexahedral solid to be multi-transformed.
-# @param DirFace1 ID of First direction face.
-# @param DirFace2 ID of Second direction face.
-# @param NbTimes Quantity of transformations to be done.
-# \note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_Spanner.py
-def MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes):
- anObj = BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
- if BlocksOp.IsDone() == 0:
- print "MakeMultiTransformation1D : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Multi-transformate block and glue the result.
-# @param Block Hexahedral solid to be multi-transformed.
-# @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
-# @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
-# @param NbTimesU,NbTimesV Quantity of transformations to be done.
-# @return New GEOM_Object, containing the result shape.
-#
-# Example: see GEOM_Spanner.py
-def MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
- DirFace1V, DirFace2V, NbTimesV):
- anObj = BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
- DirFace1V, DirFace2V, NbTimesV)
- if BlocksOp.IsDone() == 0:
- print "MakeMultiTransformation2D : ", BlocksOp.GetErrorCode()
- return anObj
-
-## Build all possible propagation groups.
-# Propagation group is a set of all edges, opposite to one (main)
-# edge of this group directly or through other opposite edges.
-# Notion of Opposite Edge make sence only on quadrangle face.
-# @param theShape Shape to build propagation groups on.
-# @return List of GEOM_Objects, each of them is a propagation group.
-#
-# Example: see GEOM_TestOthers.py
-def Propagate(theShape):
- listChains = BlocksOp.Propagate(theShape)
- if BlocksOp.IsDone() == 0:
- print "Propagate : ", BlocksOp.GetErrorCode()
- return listChains
-
-# -----------------------------------------------------------------------------
-# Group operations
-# -----------------------------------------------------------------------------
-
-## Creates a new group which will store sub shapes of theMainShape
-# @param theMainShape is a GEOM object on which the group is selected
-# @param theShapeType defines a shape type of the group
-# @return a newly created GEOM group
-#
-# Example: see GEOM_TestOthers.py
-def CreateGroup(theMainShape, theShapeType):
- anObj = GroupOp.CreateGroup(theMainShape, theShapeType)
- if GroupOp.IsDone() == 0:
- print "CreateGroup : ", GroupOp.GetErrorCode()
- return anObj
-
-## Adds a sub object with ID theSubShapeId to the group
-# @param theGroup is a GEOM group to which the new sub shape is added
-# @param theSubShapeID is a sub shape ID in the main object.
-# \note Use method GetSubShapeID() to get an unique ID of the sub shape
-#
-# Example: see GEOM_TestOthers.py
-def AddObject(theGroup, theSubShapeID):
- GroupOp.AddObject(theGroup, theSubShapeID)
- if GroupOp.IsDone() == 0:
- print "AddObject : ", GroupOp.GetErrorCode()
-
-## Removes a sub object with ID \a theSubShapeId from the group
-# @param theGroup is a GEOM group from which the new sub shape is removed
-# @param theSubShapeID is a sub shape ID in the main object.
-# \note Use method GetSubShapeID() to get an unique ID of the sub shape
-#
-# Example: see GEOM_TestOthers.py
-def RemoveObject(theGroup, theSubShapeID):
- GroupOp.RemoveObject(theGroup, theSubShapeID)
- if GroupOp.IsDone() == 0:
- print "RemoveObject : ", GroupOp.GetErrorCode()
-
-## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
-# @param theGroup is a GEOM group to which the new sub shapes are added.
-# @param theSubShapes is a list of sub shapes to be added.
-#
-# Example: see GEOM_TestOthers.py
-def UnionList (theGroup, theSubShapes):
- GroupOp.UnionList(theGroup, theSubShapes)
- if GroupOp.IsDone() == 0:
- print "UnionList : ", GroupOp.GetErrorCode()
-
-## Works like the above method, but argument
-# theSubShapes here is a list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def UnionIDs(theGroup, theSubShapes):
- GroupOp.UnionIDs(theGroup, theSubShapes)
- if GroupOp.IsDone() == 0:
- print "UnionIDs : ", GroupOp.GetErrorCode()
-
-## Removes from the group all the given shapes. No errors, if some shapes are not included.
-# @param theGroup is a GEOM group from which the sub-shapes are removed.
-# @param theSubShapes is a list of sub-shapes to be removed.
-#
-# Example: see GEOM_TestOthers.py
-def DifferenceList (theGroup, theSubShapes):
- GroupOp.DifferenceList(theGroup, theSubShapes)
- if GroupOp.IsDone() == 0:
- print "DifferenceList : ", GroupOp.GetErrorCode()
-
-## Works like the above method, but argument
-# theSubShapes here is a list of sub-shapes indices
-#
-# Example: see GEOM_TestOthers.py
-def DifferenceIDs(theGroup, theSubShapes):
- GroupOp.DifferenceIDs(theGroup, theSubShapes)
- if GroupOp.IsDone() == 0:
- print "DifferenceIDs : ", GroupOp.GetErrorCode()
-
-## Returns a list of sub objects ID stored in the group
-# @param theGroup is a GEOM group for which a list of IDs is requested
-#
-# Example: see GEOM_TestOthers.py
-def GetObjectIDs(theGroup):
- ListIDs = GroupOp.GetObjects(theGroup)
- if GroupOp.IsDone() == 0:
- print "GetObjectIDs : ", GroupOp.GetErrorCode()
- return ListIDs
-
-## Returns a type of sub objects stored in the group
-# @param theGroup is a GEOM group which type is returned.
-#
-# Example: see GEOM_TestOthers.py
-def GetType(theGroup):
- aType = GroupOp.GetType(theGroup)
- if GroupOp.IsDone() == 0:
- print "GetType : ", GroupOp.GetErrorCode()
- return aType
-
-## Returns a main shape associated with the group
-# @param theGroup is a GEOM group for which a main shape object is requested
-# @return a GEOM object which is a main shape for theGroup
-#
-# Example: see GEOM_TestOthers.py
-def GetMainShape(theGroup):
- anObj = GroupOp.GetMainShape(theGroup)
- if GroupOp.IsDone() == 0:
- print "GetMainShape : ", GroupOp.GetErrorCode()
- return anObj
-
-## Create group of edges of theShape, whose length is in range [min_length, max_length].
-# If include_min/max == 0, edges with length == min/max_length will not be included in result.
-def GetEdgesByLength (theShape, min_length, max_length, include_min = 1, include_max = 1):
- edges = SubShapeAll(theShape, ShapeType["EDGE"])
- edges_in_range = []
- for edge in edges:
- Props = BasicProperties(edge)
- if min_length <= Props[0] and Props[0] <= max_length:
- if (not include_min) and (min_length == Props[0]):
- skip = 1
- else:
- if (not include_max) and (Props[0] == max_length):
- skip = 1
- else:
- edges_in_range.append(edge)
-
- if len(edges_in_range) <= 0:
- print "No edges found by given criteria"
- return 0
-
- group_edges = CreateGroup(theShape, ShapeType["EDGE"])
- UnionList(group_edges, edges_in_range)
-
- return group_edges
-
-## Create group of edges of selected shape, whose length is in range [min_length, max_length].
-# If include_min/max == 0, edges with length == min/max_length will not be included in result.
-def SelectEdges (min_length, max_length, include_min = 1, include_max = 1):
- nb_selected = sg.SelectedCount()
- if nb_selected < 1:
- print "Select a shape before calling this function, please."
- return 0
- if nb_selected > 1:
- print "Only one shape must be selected"
- return 0
-
- id_shape = sg.getSelected(0)
- shape = IDToObject( id_shape )
-
- group_edges = GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
-
- left_str = " < "
- right_str = " < "
- if include_min: left_str = " <= "
- if include_max: right_str = " <= "
-
- addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
- + left_str + "length" + right_str + `max_length`)
-
- sg.updateObjBrowser(1)
-
- return group_edges
-
-## Add Path to load python scripts from
-def addPath(Path):
- if (sys.path.count(Path) < 1):
- sys.path.append(Path)
--- /dev/null
+# GEOM GEOM_SWIG : binding of C++ omplementaion with Python
+#
+# 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 : geompy.py
+# Author : Paul RASCLE, EDF
+# Module : GEOM
+# $Header$
+"""
+ \namespace geompy
+ \brief Module geompy
+"""
+
+import salome
+salome.salome_init()
+from salome import *
+
+import GEOM
+
+# -----------------------------------------------------------------------------
+# enumeration ShapeType as a dictionary
+# -----------------------------------------------------------------------------
+
+ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}
+
+# -----------------------------------------------------------------------------
+# Raise an Error Function if Operation is Failed
+# -----------------------------------------------------------------------------
+def RaiseIfFailed (Method_name, Operation):
+ #NPAL18017#if Operation.IsDone() == 0:
+ if Operation.IsDone() == 0 and Operation.GetErrorCode() != "NOT_FOUND_ANY":
+ raise RuntimeError, Method_name + " : " + Operation.GetErrorCode()
+
+# -----------------------------------------------------------------------------
+# enumeration shape_kind
+# -----------------------------------------------------------------------------
+
+kind = GEOM.GEOM_IKindOfShape
+
+class info:
+ UNKNOWN = 0
+ CLOSED = 1
+ UNCLOSED = 2
+
+
+class geompyDC(GEOM._objref_GEOM_Gen):
+ def __init__(self):
+ GEOM._objref_GEOM_Gen.__init__(self)
+ self.myBuilder = None
+ self.myStudyId = 0
+ self.father = None
+
+ self.BasicOp = None
+ self.CurvesOp = None
+ self.PrimOp = None
+ self.ShapesOp = None
+ self.HealOp = None
+ self.InsertOp = None
+ self.BoolOp = None
+ self.TrsfOp = None
+ self.LocalOp = None
+ self.MeasuOp = None
+ self.BlocksOp = None
+ self.GroupOp = None
+ pass
+
+ def init_geom(self,theStudy):
+ self.myStudy = theStudy
+ self.myStudyId = self.myStudy._get_StudyId()
+ self.myBuilder = self.myStudy.NewBuilder()
+ self.father = self.myStudy.FindComponent("GEOM")
+ if self.father is None:
+ self.father = self.myBuilder.NewComponent("GEOM")
+ A1 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributeName")
+ FName = A1._narrow(SALOMEDS.AttributeName)
+ FName.SetValue("Geometry")
+ A2 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributePixMap")
+ aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
+ aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
+ self.myBuilder.DefineComponentInstance(self.father,self)
+ pass
+ self.BasicOp = self.GetIBasicOperations (self.myStudyId)
+ self.CurvesOp = self.GetICurvesOperations (self.myStudyId)
+ self.PrimOp = self.GetI3DPrimOperations (self.myStudyId)
+ self.ShapesOp = self.GetIShapesOperations (self.myStudyId)
+ self.HealOp = self.GetIHealingOperations (self.myStudyId)
+ self.InsertOp = self.GetIInsertOperations (self.myStudyId)
+ self.BoolOp = self.GetIBooleanOperations (self.myStudyId)
+ self.TrsfOp = self.GetITransformOperations(self.myStudyId)
+ self.LocalOp = self.GetILocalOperations (self.myStudyId)
+ self.MeasuOp = self.GetIMeasureOperations (self.myStudyId)
+ self.BlocksOp = self.GetIBlocksOperations (self.myStudyId)
+ self.GroupOp = self.GetIGroupOperations (self.myStudyId)
+ pass
+
+ ## Get name for sub-shape aSubObj of shape aMainObj
+ #
+ # Example: see GEOM_TestAll.py
+ def SubShapeName(self,aSubObj, aMainObj):
+ #aSubId = orb.object_to_string(aSubObj)
+ #aMainId = orb.object_to_string(aMainObj)
+ #index = gg.getIndexTopology(aSubId, aMainId)
+ #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
+ index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
+ name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
+ return name
+
+ ## Publish in study aShape with name aName
+ #
+ # Example: see GEOM_TestAll.py
+ def addToStudy(self,aShape, aName):
+ try:
+ aSObject = self.AddInStudy(self.myStudy, aShape, aName, None)
+ except:
+ print "addToStudy() failed"
+ return ""
+ return aShape.GetStudyEntry()
+
+ ## Publish in study aShape with name aName as sub-object of previously published aFather
+ #
+ # Example: see GEOM_TestAll.py
+ def addToStudyInFather(self,aFather, aShape, aName):
+ try:
+ aSObject = self.AddInStudy(myStudy, aShape, aName, aFather)
+ except:
+ print "addToStudyInFather() failed"
+ return ""
+ return aShape.GetStudyEntry()
+
+ # -----------------------------------------------------------------------------
+ # Basic primitives
+ # -----------------------------------------------------------------------------
+
+ ## Create point by three coordinates.
+ # @param theX The X coordinate of the point.
+ # @param theY The Y coordinate of the point.
+ # @param theZ The Z coordinate of the point.
+ # @return New GEOM_Object, containing the created point.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeVertex(self,theX, theY, theZ):
+ anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
+ RaiseIfFailed("MakePointXYZ", self.BasicOp)
+ return anObj
+
+ ## Create a point, distant from the referenced point
+ # on the given distances along the coordinate axes.
+ # @param theReference The referenced point.
+ # @param theX Displacement from the referenced point along OX axis.
+ # @param theY Displacement from the referenced point along OY axis.
+ # @param theZ Displacement from the referenced point along OZ axis.
+ # @return New GEOM_Object, containing the created point.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeVertexWithRef(self,theReference, theX, theY, theZ):
+ anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
+ RaiseIfFailed("MakePointWithReference", self.BasicOp)
+ return anObj
+
+ ## Create a point, corresponding to the given parameter on the given curve.
+ # @param theRefCurve The referenced curve.
+ # @param theParameter Value of parameter on the referenced curve.
+ # @return New GEOM_Object, containing the created point.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeVertexOnCurve(self,theRefCurve, theParameter):
+ anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter)
+ RaiseIfFailed("MakePointOnCurve", self.BasicOp)
+ return anObj
+
+ ## Create a point on intersection of two lines.
+ # @param theRefLine1, theRefLine2 The referenced lines.
+ # @return New GEOM_Object, containing the created point.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2):
+ anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
+ RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
+ return anObj
+
+ ## Create a tangent, corresponding to the given parameter on the given curve.
+ # @param theRefCurve The referenced curve.
+ # @param theParameter Value of parameter on the referenced curve.
+ # @return New GEOM_Object, containing the created tangent.
+ def MakeTangentOnCurve(self,theRefCurve, theParameter):
+ anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
+ RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
+ return anObj
+
+ ## Create a vector with the given components.
+ # @param theDX X component of the vector.
+ # @param theDY Y component of the vector.
+ # @param theDZ Z component of the vector.
+ # @return New GEOM_Object, containing the created vector.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeVectorDXDYDZ(self,theDX, theDY, theDZ):
+ anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
+ RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
+ return anObj
+
+ ## Create a vector between two points.
+ # @param thePnt1 Start point for the vector.
+ # @param thePnt2 End point for the vector.
+ # @return New GEOM_Object, containing the created vector.
+
+ # Example: see GEOM_TestAll.py
+ def MakeVector(self,thePnt1, thePnt2):
+ anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
+ RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
+ return anObj
+
+ ## Create a line, passing through the given point
+ # and parrallel to the given direction
+ # @param thePnt Point. The resulting line will pass through it.
+ # @param theDir Direction. The resulting line will be parallel to it.
+ # @return New GEOM_Object, containing the created line.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeLine(self,thePnt, theDir):
+ anObj = self.BasicOp.MakeLine(thePnt, theDir)
+ RaiseIfFailed("MakeLine", self.BasicOp)
+ return anObj
+
+ ## Create a line, passing through the given points
+ # @param thePnt1 First of two points, defining the line.
+ # @param thePnt2 Second of two points, defining the line.
+ # @return New GEOM_Object, containing the created line.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeLineTwoPnt(self,thePnt1, thePnt2):
+ anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
+ RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
+ return anObj
+
+ ## Create a line on two faces intersection.
+ # @param theFace1 First of two faces, defining the line.
+ # @param theFace2 Second of two faces, defining the line.
+ # @return New GEOM_Object, containing the created line.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeLineTwoFaces(self, theFace1, theFace2):
+ anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
+ RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
+ return anObj
+
+ ## Create a plane, passing through the given point
+ # and normal to the given vector.
+ # @param thePnt Point, the plane has to pass through.
+ # @param theVec Vector, defining the plane normal direction.
+ # @param theTrimSize Half size of a side of quadrangle face, representing the plane.
+ # @return New GEOM_Object, containing the created plane.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePlane(self,thePnt, theVec, theTrimSize):
+ anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
+ RaiseIfFailed("MakePlanePntVec", self.BasicOp)
+ return anObj
+
+ ## Create a plane, passing through the three given points
+ # @param thePnt1 First of three points, defining the plane.
+ # @param thePnt2 Second of three points, defining the plane.
+ # @param thePnt3 Fird of three points, defining the plane.
+ # @param theTrimSize Half size of a side of quadrangle face, representing the plane.
+ # @return New GEOM_Object, containing the created plane.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePlaneThreePnt(self,thePnt1, thePnt2, thePnt3, theTrimSize):
+ anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
+ RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
+ return anObj
+
+ ## Create a plane, similar to the existing one, but with another size of representing face.
+ # @param theFace Referenced plane or LCS(Marker).
+ # @param theTrimSize New half size of a side of quadrangle face, representing the plane.
+ # @return New GEOM_Object, containing the created plane.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePlaneFace(self,theFace, theTrimSize):
+ anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
+ RaiseIfFailed("MakePlaneFace", self.BasicOp)
+ return anObj
+
+ ## Create a local coordinate system.
+ # @param OX,OY,OZ Three coordinates of coordinate system origin.
+ # @param XDX,XDY,XDZ Three components of OX direction
+ # @param YDX,YDY,YDZ Three components of OY direction
+ # @return New GEOM_Object, containing the created coordinate system.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMarker(self,OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ):
+ anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
+ RaiseIfFailed("MakeMarker", self.BasicOp)
+ return anObj
+
+ ## Create a local coordinate system.
+ # @param theOrigin Point of coordinate system origin.
+ # @param theXVec Vector of X direction
+ # @param theYVec Vector of Y direction
+ # @return New GEOM_Object, containing the created coordinate system.
+ def MakeMarkerPntTwoVec(self,theOrigin, theXVec, theYVec):
+ O = self.PointCoordinates( theOrigin )
+ OXOY = []
+ for vec in [ theXVec, theYVec ]:
+ v1, v2 = self.SubShapeAll( vec, ShapeType["VERTEX"] )
+ p1 = self.PointCoordinates( v1 )
+ p2 = self.PointCoordinates( v2 )
+ for i in range( 0, 3 ):
+ OXOY.append( p2[i] - p1[i] )
+ #
+ anObj = self.BasicOp.MakeMarker( O[0], O[1], O[2],
+ OXOY[0], OXOY[1], OXOY[2],
+ OXOY[3], OXOY[4], OXOY[5], )
+ RaiseIfFailed("MakeMarker", self.BasicOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Curves
+ # -----------------------------------------------------------------------------
+
+ ## Create an arc of circle, passing through three given points.
+ # @param thePnt1 Start point of the arc.
+ # @param thePnt2 Middle point of the arc.
+ # @param thePnt3 End point of the arc.
+ # @return New GEOM_Object, containing the created arc.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeArc(self,thePnt1, thePnt2, thePnt3):
+ anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
+ RaiseIfFailed("MakeArc", self.CurvesOp)
+ return anObj
+
+ ## Create an arc of circle from a center and 2 points.
+ # @param thePnt1 Center of the arc
+ # @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
+ # @param thePnt3 End point of the arc (Gives also a direction)
+ # @return New GEOM_Object, containing the created arc.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeArcCenter(self,thePnt1, thePnt2, thePnt3,theSense):
+ anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3,theSense)
+ RaiseIfFailed("MakeArcCenter", self.CurvesOp)
+ return anObj
+
+ ## Create a circle with given center, normal vector and radius.
+ # @param thePnt Circle center.
+ # @param theVec Vector, normal to the plane of the circle.
+ # @param theR Circle radius.
+ # @return New GEOM_Object, containing the created circle.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCircle(self,thePnt, theVec, theR):
+ anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
+ RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
+ return anObj
+
+ ## Create a circle, passing through three given points
+ # @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
+ # @return New GEOM_Object, containing the created circle.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCircleThreePnt(self,thePnt1, thePnt2, thePnt3):
+ anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
+ RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
+ return anObj
+
+ ## Create a circle, with given point1 as center,
+ # passing through the point2 as radius and laying in the plane,
+ # defined by all three given points.
+ # @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
+ # @return New GEOM_Object, containing the created circle.
+ #
+ # Example: see GEOM_example6.py
+ def MakeCircleCenter2Pnt(self,thePnt1, thePnt2, thePnt3):
+ anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
+ RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
+ return anObj
+
+ ## Create an ellipse with given center, normal vector and radiuses.
+ # @param thePnt Ellipse center.
+ # @param theVec Vector, normal to the plane of the ellipse.
+ # @param theRMajor Major ellipse radius.
+ # @param theRMinor Minor ellipse radius.
+ # @return New GEOM_Object, containing the created ellipse.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeEllipse(self,thePnt, theVec, theRMajor, theRMinor):
+ anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
+ RaiseIfFailed("MakeEllipse", self.CurvesOp)
+ return anObj
+
+ ## Create a polyline on the set of points.
+ # @param thePoints Sequence of points for the polyline.
+ # @return New GEOM_Object, containing the created polyline.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePolyline(self,thePoints):
+ anObj = self.CurvesOp.MakePolyline(thePoints)
+ RaiseIfFailed("MakePolyline", self.CurvesOp)
+ return anObj
+
+ ## Create bezier curve on the set of points.
+ # @param thePoints Sequence of points for the bezier curve.
+ # @return New GEOM_Object, containing the created bezier curve.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeBezier(self,thePoints):
+ anObj = self.CurvesOp.MakeSplineBezier(thePoints)
+ RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
+ return anObj
+
+ ## Create B-Spline curve on the set of points.
+ # @param thePoints Sequence of points for the B-Spline curve.
+ # @return New GEOM_Object, containing the created B-Spline curve.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeInterpol(self,thePoints):
+ anObj = self.CurvesOp.MakeSplineInterpolation(thePoints)
+ RaiseIfFailed("MakeSplineInterpolation", self.CurvesOp)
+ return anObj
+
+ ## Create a sketcher (wire or face), following the textual description,
+ # passed through \a theCommand argument. \n
+ # Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
+ # Format of the description string have to be the following:
+ #
+ # "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
+ #
+ # Where:
+ # - x1, y1 are coordinates of the first sketcher point (zero by default),
+ # - CMD is one of
+ # - "R angle" : Set the direction by angle
+ # - "D dx dy" : Set the direction by DX & DY
+ # .
+ # \n
+ # - "TT x y" : Create segment by point at X & Y
+ # - "T dx dy" : Create segment by point with DX & DY
+ # - "L length" : Create segment by direction & Length
+ # - "IX x" : Create segment by direction & Intersect. X
+ # - "IY y" : Create segment by direction & Intersect. Y
+ # .
+ # \n
+ # - "C radius length" : Create arc by direction, radius and length(in degree)
+ # .
+ # \n
+ # - "WW" : Close Wire (to finish)
+ # - "WF" : Close Wire and build face (to finish)
+ #
+ # @param theCommand String, defining the sketcher in local
+ # coordinates of the working plane.
+ # @param theWorkingPlane Nine double values, defining origin,
+ # OZ and OX directions of the working plane.
+ # @return New GEOM_Object, containing the created wire.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeSketcher(self,theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0]):
+ anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
+ RaiseIfFailed("MakeSketcher", self.CurvesOp)
+ return anObj
+
+ ## Create a sketcher (wire or face), following the textual description,
+ # passed through \a theCommand argument. \n
+ # For format of the description string see the previous method.\n
+ # @param theCommand String, defining the sketcher in local
+ # coordinates of the working plane.
+ # @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
+ # @return New GEOM_Object, containing the created wire.
+ def MakeSketcherOnPlane(self,theCommand, theWorkingPlane):
+ anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
+ RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Create 3D Primitives
+ # -----------------------------------------------------------------------------
+
+ ## Create a box by coordinates of two opposite vertices.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeBox(self,x1,y1,z1,x2,y2,z2):
+ pnt1 = self.MakeVertex(x1,y1,z1)
+ pnt2 = self.MakeVertex(x2,y2,z2)
+ return self.MakeBoxTwoPnt(pnt1,pnt2)
+
+ ## Create a box with specified dimensions along the coordinate axes
+ # and with edges, parallel to the coordinate axes.
+ # Center of the box will be at point (DX/2, DY/2, DZ/2).
+ # @param theDX Length of Box edges, parallel to OX axis.
+ # @param theDY Length of Box edges, parallel to OY axis.
+ # @param theDZ Length of Box edges, parallel to OZ axis.
+ # @return New GEOM_Object, containing the created box.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeBoxDXDYDZ(self,theDX, theDY, theDZ):
+ anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
+ RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
+ return anObj
+
+ ## Create a box with two specified opposite vertices,
+ # and with edges, parallel to the coordinate axes
+ # @param thePnt1 First of two opposite vertices.
+ # @param thePnt2 Second of two opposite vertices.
+ # @return New GEOM_Object, containing the created box.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeBoxTwoPnt(self,thePnt1, thePnt2):
+ anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
+ RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
+ return anObj
+
+ ## Create a cylinder with given base point, axis, radius and height.
+ # @param thePnt Central point of cylinder base.
+ # @param theAxis Cylinder axis.
+ # @param theR Cylinder radius.
+ # @param theH Cylinder height.
+ # @return New GEOM_Object, containing the created cylinder.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCylinder(self,thePnt, theAxis, theR, theH):
+ anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
+ RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
+ return anObj
+
+ ## Create a cylinder with given radius and height at
+ # the origin of coordinate system. Axis of the cylinder
+ # will be collinear to the OZ axis of the coordinate system.
+ # @param theR Cylinder radius.
+ # @param theH Cylinder height.
+ # @return New GEOM_Object, containing the created cylinder.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCylinderRH(self,theR, theH):
+ anObj = self.PrimOp.MakeCylinderRH(theR, theH)
+ RaiseIfFailed("MakeCylinderRH", self.PrimOp)
+ return anObj
+
+ ## Create a sphere with given center and radius.
+ # @param thePnt Sphere center.
+ # @param theR Sphere radius.
+ # @return New GEOM_Object, containing the created sphere.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeSpherePntR(self,thePnt, theR):
+ anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
+ RaiseIfFailed("MakeSpherePntR", self.PrimOp)
+ return anObj
+
+ ## Create a sphere with given center and radius.
+ # @param x,y,z Coordinates of sphere center.
+ # @param theR Sphere radius.
+ # @return New GEOM_Object, containing the created sphere.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeSphere(self,x, y, z, theR):
+ point = self.MakeVertex(x, y, z)
+ anObj = self.MakeSpherePntR(point, theR)
+ return anObj
+
+ ## Create a sphere with given radius at the origin of coordinate system.
+ # @param theR Sphere radius.
+ # @return New GEOM_Object, containing the created sphere.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeSphereR(self,theR):
+ anObj = self.PrimOp.MakeSphereR(theR)
+ RaiseIfFailed("MakeSphereR", self.PrimOp)
+ return anObj
+
+ ## Create a cone with given base point, axis, height and radiuses.
+ # @param thePnt Central point of the first cone base.
+ # @param theAxis Cone axis.
+ # @param theR1 Radius of the first cone base.
+ # @param theR2 Radius of the second cone base.
+ # \note If both radiuses are non-zero, the cone will be truncated.
+ # \note If the radiuses are equal, a cylinder will be created instead.
+ # @param theH Cone height.
+ # @return New GEOM_Object, containing the created cone.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCone(self,thePnt, theAxis, theR1, theR2, theH):
+ anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
+ RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
+ return anObj
+
+ ## Create a cone with given height and radiuses at
+ # the origin of coordinate system. Axis of the cone will
+ # be collinear to the OZ axis of the coordinate system.
+ # @param theR1 Radius of the first cone base.
+ # @param theR2 Radius of the second cone base.
+ # \note If both radiuses are non-zero, the cone will be truncated.
+ # \note If the radiuses are equal, a cylinder will be created instead.
+ # @param theH Cone height.
+ # @return New GEOM_Object, containing the created cone.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeConeR1R2H(self,theR1, theR2, theH):
+ anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
+ RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
+ return anObj
+
+ ## Create a torus with given center, normal vector and radiuses.
+ # @param thePnt Torus central point.
+ # @param theVec Torus axis of symmetry.
+ # @param theRMajor Torus major radius.
+ # @param theRMinor Torus minor radius.
+ # @return New GEOM_Object, containing the created torus.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeTorus(self,thePnt, theVec, theRMajor, theRMinor):
+ anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
+ RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
+ return anObj
+
+ ## Create a torus with given radiuses at the origin of coordinate system.
+ # @param theRMajor Torus major radius.
+ # @param theRMinor Torus minor radius.
+ # @return New GEOM_Object, containing the created torus.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeTorusRR(self,theRMajor, theRMinor):
+ anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
+ RaiseIfFailed("MakeTorusRR", self.PrimOp)
+ return anObj
+
+ ## Create a shape by extrusion of the base shape along a vector, defined by two points.
+ # @param theBase Base shape to be extruded.
+ # @param thePoint1 First end of extrusion vector.
+ # @param thePoint2 Second end of extrusion vector.
+ # @return New GEOM_Object, containing the created prism.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePrism(self,theBase, thePoint1, thePoint2):
+ anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
+ RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
+ return anObj
+
+ ## Create a shape by extrusion of the base shape along the vector,
+ # i.e. all the space, transfixed by the base shape during its translation
+ # along the vector on the given distance.
+ # @param theBase Base shape to be extruded.
+ # @param theVec Direction of extrusion.
+ # @param theH Prism dimension along theVec.
+ # @return New GEOM_Object, containing the created prism.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePrismVecH(self,theBase, theVec, theH):
+ anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
+ RaiseIfFailed("MakePrismVecH", self.PrimOp)
+ return anObj
+
+ ## Create a shape by extrusion of the base shape along
+ # the path shape. The path shape can be a wire or an edge.
+ # @param theBase Base shape to be extruded.
+ # @param thePath Path shape to extrude the base shape along it.
+ # @return New GEOM_Object, containing the created pipe.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePipe(self,theBase, thePath):
+ anObj = self.PrimOp.MakePipe(theBase, thePath)
+ RaiseIfFailed("MakePipe", self.PrimOp)
+ return anObj
+
+ ## Create a shape by revolution of the base shape around the axis
+ # on the given angle, i.e. all the space, transfixed by the base
+ # shape during its rotation around the axis on the given angle.
+ # @param theBase Base shape to be rotated.
+ # @param theAxis Rotation axis.
+ # @param theAngle Rotation angle in radians.
+ # @return New GEOM_Object, containing the created revolution.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeRevolution(self,theBase, theAxis, theAngle):
+ anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
+ RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
+ return anObj
+
+ ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
+ # @param theSeqSections - set of specified sections.
+ # @param theModeSolid - mode defining building solid or shell
+ # @param thePreci - precision 3D used for smoothing by default 1.e-6
+ # @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
+ # @return New GEOM_Object, containing the created shell or solid.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeThruSections(self,theSeqSections,theModeSolid,thePreci,theRuled):
+ anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
+ RaiseIfFailed("MakeThruSections", self.PrimOp)
+ return anObj
+
+ ## Create a shape by extrusion of the profile shape along
+ # the path shape. The path shape can be a wire or an edge.
+ # the several profiles can be specified in the several locations of path.
+ # @param theSeqBases - list of Bases shape to be extruded.
+ # @param theLocations - list of locations on the path corresponding
+ # specified list of the Bases shapes. Number of locations
+ # should be equal to number of bases or list of locations can be empty.
+ # @param thePath - Path shape to extrude the base shape along it.
+ # @param theWithContact - the mode defining that the section is translated to be in
+ # contact with the spine.
+ # @param - WithCorrection - defining that the section is rotated to be
+ # orthogonal to the spine tangent in the correspondent point
+ # @return New GEOM_Object, containing the created pipe.
+ #
+ def MakePipeWithDifferentSections(self, theSeqBases,
+ theLocations, thePath,
+ theWithContact, theWithCorrection):
+ anObj = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
+ theLocations, thePath,
+ theWithContact, theWithCorrection)
+ RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
+ return anObj
+
+ ## Create a shape by extrusion of the profile shape along
+ # the path shape. The path shape can be a shell or a face.
+ # the several profiles can be specified in the several locations of path.
+ # @param theSeqBases - list of Bases shape to be extruded.
+ # @param theSeqSubBases - list of corresponding subshapes of section shapes.
+ # @param theLocations - list of locations on the path corresponding
+ # specified list of the Bases shapes. Number of locations
+ # should be equal to number of bases. First and last
+ # locations must be coincided with first and last vertexes
+ # of path correspondingly.
+ # @param thePath - Path shape to extrude the base shape along it.
+ # @param theWithContact - the mode defining that the section is translated to be in
+ # contact with the spine.
+ # @param - WithCorrection - defining that the section is rotated to be
+ # orthogonal to the spine tangent in the correspondent point
+ # @return New GEOM_Object, containing the created solids.
+ #
+ def MakePipeWithShellSections(self,theSeqBases, theSeqSubBases,
+ theLocations, thePath,
+ theWithContact, theWithCorrection):
+ anObj = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
+ theLocations, thePath,
+ theWithContact, theWithCorrection)
+ RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
+ return anObj
+
+ def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
+ theLocations, thePath,
+ theWithContact, theWithCorrection):
+ res = []
+ nbsect = len(theSeqBases)
+ nbsubsect = len(theSeqSubBases)
+ #print "nbsect = ",nbsect
+ for i in range(1,nbsect):
+ #print " i = ",i
+ tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
+ tmpLocations = [ theLocations[i-1], theLocations[i] ]
+ tmpSeqSubBases = []
+ if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
+ anObj = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
+ tmpLocations, thePath,
+ theWithContact, theWithCorrection)
+ if self.PrimOp.IsDone() == 0:
+ print "Problems with pipe creation between ",i," and ",i+1," sections"
+ RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
+ break
+ else:
+ print "Pipe between ",i," and ",i+1," sections is OK"
+ res.append(anObj)
+ pass
+ pass
+
+ resc = self.MakeCompound(res)
+ #resc = self.MakeSewing(res, 0.001)
+ #print "resc: ",resc
+ return resc
+
+ ## Create solids between given sections
+ # @param theSeqBases - list of sections (shell or face).
+ # @param theLocations - list of corresponding vertexes
+ # @return New GEOM_Object, containing the created solids.
+ #
+ def MakePipeShellsWithoutPath(self, theSeqBases, theLocations):
+ anObj = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations)
+ RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
+ return anObj
+
+
+ # -----------------------------------------------------------------------------
+ # Create base shapes
+ # -----------------------------------------------------------------------------
+
+ ## Create a linear edge with specified ends.
+ # @param thePnt1 Point for the first end of edge.
+ # @param thePnt2 Point for the second end of edge.
+ # @return New GEOM_Object, containing the created edge.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeEdge(self,thePnt1, thePnt2):
+ anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
+ RaiseIfFailed("MakeEdge", self.ShapesOp)
+ return anObj
+
+ ## Create a wire from the set of edges and wires.
+ # @param theEdgesAndWires List of edges and/or wires.
+ # @return New GEOM_Object, containing the created wire.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeWire(self,theEdgesAndWires):
+ anObj = self.ShapesOp.MakeWire(theEdgesAndWires)
+ RaiseIfFailed("MakeWire", self.ShapesOp)
+ return anObj
+
+ ## Create a face on the given wire.
+ # @param theWire closed Wire or Edge to build the face on.
+ # @param isPlanarWanted If TRUE, only planar face will be built.
+ # If impossible, NULL object will be returned.
+ # @return New GEOM_Object, containing the created face.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeFace(self,theWire, isPlanarWanted):
+ anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
+ RaiseIfFailed("MakeFace", self.ShapesOp)
+ return anObj
+
+ ## Create a face on the given wires set.
+ # @param theWires List of closed wires or edges to build the face on.
+ # @param isPlanarWanted If TRUE, only planar face will be built.
+ # If impossible, NULL object will be returned.
+ # @return New GEOM_Object, containing the created face.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeFaceWires(self,theWires, isPlanarWanted):
+ anObj = self.ShapesOp.MakeFaceWires(theWires, isPlanarWanted)
+ RaiseIfFailed("MakeFaceWires", self.ShapesOp)
+ return anObj
+
+ ## Shortcut to MakeFaceWires()
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeFaces(self,theWires, isPlanarWanted):
+ anObj = self.MakeFaceWires(theWires, isPlanarWanted)
+ return anObj
+
+ ## Create a shell from the set of faces and shells.
+ # @param theFacesAndShells List of faces and/or shells.
+ # @return New GEOM_Object, containing the created shell.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeShell(self,theFacesAndShells):
+ anObj = self.ShapesOp.MakeShell(theFacesAndShells)
+ RaiseIfFailed("MakeShell", self.ShapesOp)
+ return anObj
+
+ ## Create a solid, bounded by the given shells.
+ # @param theShells Sequence of bounding shells.
+ # @return New GEOM_Object, containing the created solid.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeSolid(self,theShells):
+ anObj = self.ShapesOp.MakeSolidShells(theShells)
+ RaiseIfFailed("MakeSolidShells", self.ShapesOp)
+ return anObj
+
+ ## Create a compound of the given shapes.
+ # @param theShapes List of shapes to put in compound.
+ # @return New GEOM_Object, containing the created compound.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCompound(self,theShapes):
+ anObj = self.ShapesOp.MakeCompound(theShapes)
+ RaiseIfFailed("MakeCompound", self.ShapesOp)
+ return anObj
+
+ ## Gives quantity of faces in the given shape.
+ # @param theShape Shape to count faces of.
+ # @return Quantity of faces.
+ #
+ # Example: see GEOM_TestOthers.py
+ def NumberOfFaces(self,theShape):
+ nb_faces = self.ShapesOp.NumberOfFaces(theShape)
+ RaiseIfFailed("NumberOfFaces", self.ShapesOp)
+ return nb_faces
+
+ ## Gives quantity of edges in the given shape.
+ # @param theShape Shape to count edges of.
+ # @return Quantity of edges.
+ #
+ # Example: see GEOM_TestOthers.py
+ def NumberOfEdges(self,theShape):
+ nb_edges = self.ShapesOp.NumberOfEdges(theShape)
+ RaiseIfFailed("NumberOfEdges", self.ShapesOp)
+ return nb_edges
+
+ ## Reverses an orientation the given shape.
+ # @param theShape Shape to be reversed.
+ # @return The reversed copy of theShape.
+ #
+ # Example: see GEOM_TestAll.py
+ def ChangeOrientation(self,theShape):
+ anObj = self.ShapesOp.ChangeOrientation(theShape)
+ RaiseIfFailed("ChangeOrientation", self.ShapesOp)
+ return anObj
+
+ ## Shortcut to ChangeOrientation()
+ #
+ # Example: see GEOM_TestOthers.py
+ def OrientationChange(self,theShape):
+ anObj = self.ChangeOrientation(theShape)
+ return anObj
+
+ ## Retrieve all free faces from the given shape.
+ # Free face is a face, which is not shared between two shells of the shape.
+ # @param theShape Shape to find free faces in.
+ # @return List of IDs of all free faces, contained in theShape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetFreeFacesIDs(self,theShape):
+ anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
+ RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
+ return anIDs
+
+ ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
+ # @param theShape1 Shape to find sub-shapes in.
+ # @param theShape2 Shape to find shared sub-shapes with.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @return List of sub-shapes of theShape1, shared with theShape2.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetSharedShapes(self,theShape1, theShape2, theShapeType):
+ aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
+ RaiseIfFailed("GetSharedShapes", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified plane by the certain way, defined through \a theState parameter.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theAx1 Vector (or line, or linear edge), specifying normal
+ # direction and location of the plane to find shapes on.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnPlane(self,theShape, theShapeType, theAx1, theState):
+ aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
+ RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnPlaneIDs(self,theShape, theShapeType, theAx1, theState):
+ aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
+ RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified plane by the certain way, defined through \a theState parameter.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theAx1 Vector (or line, or linear edge), specifying normal
+ # direction of the plane to find shapes on.
+ # @param thePnt Point specifying location of the plane to find shapes on.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnPlaneWithLocation(self,theShape, theShapeType, theAx1, thePnt, theState):
+ aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType, theAx1, thePnt, theState)
+ RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnPlaneWithLocationIDs(self,theShape, theShapeType, theAx1, thePnt, theState):
+ aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType, theAx1, thePnt, theState)
+ RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified cylinder by the certain way, defined through \a theState parameter.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theAxis Vector (or line, or linear edge), specifying
+ # axis of the cylinder to find shapes on.
+ # @param theRadius Radius of the cylinder to find shapes on.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnCylinder(self,theShape, theShapeType, theAxis, theRadius, theState):
+ aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
+ RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnCylinderIDs(self,theShape, theShapeType, theAxis, theRadius, theState):
+ aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
+ RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified sphere by the certain way, defined through \a theState parameter.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theCenter Point, specifying center of the sphere to find shapes on.
+ # @param theRadius Radius of the sphere to find shapes on.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnSphere(self,theShape, theShapeType, theCenter, theRadius, theState):
+ aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
+ RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnSphereIDs(self,theShape, theShapeType, theCenter, theRadius, theState):
+ aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
+ RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified quadrangle by the certain way, defined through \a theState parameter.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theTopLeftPoint Point, specifying top left corner of a quadrangle
+ # @param theTopRigthPoint Point, specifying top right corner of a quadrangle
+ # @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
+ # @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnQuadrangle(self,theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState):
+ aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState)
+ RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetShapesOnQuadrangleIDs(self,theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState):
+ aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType, theTopLeftPoint, theTopRigthPoint, theBottomLeftPoint, theBottomRigthPoint, theState)
+ RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
+ return aList
+
+ ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
+ # the specified \a theBox by the certain way, defined through \a theState parameter.
+ # @param theBox Shape for relative comparing.
+ # @param theShape Shape to find sub-shapes of.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @param theState The state of the subshapes to find. It can be one of
+ # ST_ON, ST_OUT, ST_ONOUT, ST_IN, ST_ONIN.
+ # @return List of all found sub-shapes.
+ #
+ def GetShapesOnBox(self,theBox, theShape, theShapeType, theState):
+ aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
+ RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
+ return aList
+
+ ## Works like the above method, but returns list of sub-shapes indices
+ #
+ def GetShapesOnBoxIDs(self,theBox, theShape, theShapeType, theState):
+ aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
+ RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
+ return aList
+
+ ## Get sub-shape(s) of theShapeWhere, which are
+ # coincident with \a theShapeWhat or could be a part of it.
+ # @param theShapeWhere Shape to find sub-shapes of.
+ # @param theShapeWhat Shape, specifying what to find.
+ # @return Group of all found sub-shapes or a single found sub-shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetInPlace(self,theShapeWhere, theShapeWhat):
+ anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
+ RaiseIfFailed("GetInPlace", self.ShapesOp)
+ return anObj
+
+ ## Get sub-shape(s) of \a theShapeWhere, which are
+ # coincident with \a theShapeWhat or could be a part of it.
+ #
+ # Implementation of this method is based on a saved history of an operation,
+ # produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
+ # arguments (an argument shape or a sub-shape of an argument shape).
+ # The operation could be the Partition or one of boolean operations,
+ # performed on simple shapes (not on compounds).
+ #
+ # @param theShapeWhere Shape to find sub-shapes of.
+ # @param theShapeWhat Shape, specifying what to find (must be in the
+ # building history of the ShapeWhere).
+ # @return Group of all found sub-shapes or a single found sub-shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat):
+ anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
+ RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
+ return anObj
+
+ ## Get sub-shape of theShapeWhere, which is
+ # equal to \a theShapeWhat.
+ # @param theShapeWhere Shape to find sub-shape of.
+ # @param theShapeWhat Shape, specifying what to find.
+ # @return New GEOM_Object for found sub-shape.
+ #
+ def GetSame(self,theShapeWhere, theShapeWhat):
+ anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
+ RaiseIfFailed("GetSame", self.ShapesOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Access to sub-shapes by their unique IDs inside the main shape.
+ # -----------------------------------------------------------------------------
+
+ ## Obtain a composite sub-shape of <aShape>, composed from sub-shapes
+ # of <aShape>, selected by their unique IDs inside <aShape>
+ #
+ # Example: see GEOM_TestAll.py
+ def GetSubShape(self,aShape, ListOfID):
+ anObj = self.AddSubShape(aShape,ListOfID)
+ return anObj
+
+ ## Obtain unique ID of sub-shape <aSubShape> inside <aShape>
+ #
+ # Example: see GEOM_TestAll.py
+ def GetSubShapeID(self,aShape, aSubShape):
+ anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
+ RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
+ return anID
+
+ # -----------------------------------------------------------------------------
+ # Decompose objects
+ # -----------------------------------------------------------------------------
+
+ ## Explode a shape on subshapes of a given type.
+ # @param theShape Shape to be exploded.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @return List of sub-shapes of type theShapeType, contained in theShape.
+ #
+ # Example: see GEOM_TestAll.py
+ def SubShapeAll(self,aShape, aType):
+ ListObj = self.ShapesOp.MakeExplode(aShape,aType,0)
+ RaiseIfFailed("MakeExplode", self.ShapesOp)
+ return ListObj
+
+ ## Explode a shape on subshapes of a given type.
+ # @param theShape Shape to be exploded.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @return List of IDs of sub-shapes.
+ def SubShapeAllIDs(self,aShape, aType):
+ ListObj = self.ShapesOp.SubShapeAllIDs(aShape,aType,0)
+ RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
+ return ListObj
+
+ ## Explode a shape on subshapes of a given type.
+ # Sub-shapes will be sorted by coordinates of their gravity centers.
+ # @param theShape Shape to be exploded.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @return List of sub-shapes of type theShapeType, contained in theShape.
+ #
+ # Example: see GEOM_TestAll.py
+ def SubShapeAllSorted(self,aShape, aType):
+ ListObj = self.ShapesOp.MakeExplode(aShape,aType,1)
+ RaiseIfFailed("MakeExplode", self.ShapesOp)
+ return ListObj
+
+ ## Explode a shape on subshapes of a given type.
+ # Sub-shapes will be sorted by coordinates of their gravity centers.
+ # @param theShape Shape to be exploded.
+ # @param theShapeType Type of sub-shapes to be retrieved.
+ # @return List of IDs of sub-shapes.
+ def SubShapeAllSortedIDs(self,aShape, aType):
+ ListIDs = self.ShapesOp.SubShapeAllIDs(aShape,aType,1)
+ RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
+ return ListIDs
+
+ ## Obtain a compound of sub-shapes of <aShape>,
+ # selected by they indices in list of all sub-shapes of type <aType>.
+ # Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
+ #
+ # Example: see GEOM_TestAll.py
+ def SubShape(self,aShape, aType, ListOfInd):
+ ListOfIDs = []
+ AllShapeList = self.SubShapeAll(aShape, aType)
+ for ind in ListOfInd:
+ ListOfIDs.append(self.GetSubShapeID(aShape, AllShapeList[ind - 1]))
+ anObj = self.GetSubShape(aShape, ListOfIDs)
+ return anObj
+
+ ## Obtain a compound of sub-shapes of <aShape>,
+ # selected by they indices in sorted list of all sub-shapes of type <aType>.
+ # Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
+ #
+ # Example: see GEOM_TestAll.py
+ def SubShapeSorted(self,aShape, aType, ListOfInd):
+ ListOfIDs = []
+ AllShapeList = self.SubShapeAllSorted(aShape, aType)
+ for ind in ListOfInd:
+ ListOfIDs.append(self.GetSubShapeID(aShape, AllShapeList[ind - 1]))
+ anObj = self.GetSubShape(aShape, ListOfIDs)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Healing operations
+ # -----------------------------------------------------------------------------
+
+ ## Apply a sequence of Shape Healing operators to the given object.
+ # @param theShape Shape to be processed.
+ # @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
+ # @param theParameters List of names of parameters
+ # ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
+ # @param theValues List of values of parameters, in the same order
+ # as parameters are listed in \a theParameters list.
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def ProcessShape(self,theShape, theOperators, theParameters, theValues):
+ anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
+ RaiseIfFailed("ProcessShape", self.HealOp)
+ return anObj
+
+ ## Remove faces from the given object (shape).
+ # @param theObject Shape to be processed.
+ # @param theFaces Indices of faces to be removed, if EMPTY then the method
+ # removes ALL faces of the given object.
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def SuppressFaces(self,theObject, theFaces):
+ anObj = self.HealOp.SuppressFaces(theObject, theFaces)
+ RaiseIfFailed("SuppressFaces", self.HealOp)
+ return anObj
+
+ ## Sewing of some shapes into single shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def MakeSewing(self,ListShape, theTolerance):
+ comp = self.MakeCompound(ListShape)
+ anObj = self.Sew(comp, theTolerance)
+ return anObj
+
+ ## Sewing of the given object.
+ # @param theObject Shape to be processed.
+ # @param theTolerance Required tolerance value.
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see MakeSewing() above
+ def Sew(self,theObject, theTolerance):
+ anObj = self.HealOp.Sew(theObject, theTolerance)
+ RaiseIfFailed("Sew", self.HealOp)
+ return anObj
+
+ ## Remove internal wires and edges from the given object (face).
+ # @param theObject Shape to be processed.
+ # @param theWires Indices of wires to be removed, if EMPTY then the method
+ # removes ALL internal wires of the given object.
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def SuppressInternalWires(self,theObject, theWires):
+ anObj = self.HealOp.RemoveIntWires(theObject, theWires)
+ RaiseIfFailed("RemoveIntWires", self.HealOp)
+ return anObj
+
+ ## Remove internal closed contours (holes) from the given object.
+ # @param theObject Shape to be processed.
+ # @param theWires Indices of wires to be removed, if EMPTY then the method
+ # removes ALL internal holes of the given object
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def SuppressHoles(self,theObject, theWires):
+ anObj = self.HealOp.FillHoles(theObject, theWires)
+ RaiseIfFailed("FillHoles", self.HealOp)
+ return anObj
+
+ ## Close an open wire.
+ # @param theObject Shape to be processed.
+ # @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
+ # if -1, then theObject itself is a wire.
+ # @param isCommonVertex If TRUE : closure by creation of a common vertex,
+ # If FALS : closure by creation of an edge between ends.
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def CloseContour(self,theObject, theWires, isCommonVertex):
+ anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
+ RaiseIfFailed("CloseContour", self.HealOp)
+ return anObj
+
+ ## Addition of a point to a given edge object.
+ # @param theObject Shape to be processed.
+ # @param theEdgeIndex Index of edge to be divided within theObject's shape,
+ # if -1, then theObject itself is the edge.
+ # @param theValue Value of parameter on edge or length parameter,
+ # depending on \a isByParameter.
+ # @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1],
+ # if FALSE : \a theValue is treated as a length parameter [0..1]
+ # @return New GEOM_Object, containing processed shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def DivideEdge(self,theObject, theEdgeIndex, theValue, isByParameter):
+ anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
+ RaiseIfFailed("DivideEdge", self.HealOp)
+ return anObj
+
+ ## Change orientation of the given object.
+ # @param theObject Shape to be processed.
+ # @update given shape
+ def ChangeOrientationShell(self,theObject):
+ theObject = self.HealOp.ChangeOrientation(theObject)
+ RaiseIfFailed("ChangeOrientation", self.HealOp)
+ pass
+
+ ## Change orientation of the given object.
+ # @param theObject Shape to be processed.
+ # @return New GEOM_Object, containing processed shape.
+ def ChangeOrientationShellCopy(self,theObject):
+ anObj = self.HealOp.ChangeOrientationCopy(theObject)
+ RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
+ return anObj
+
+ ## Get a list of wires (wrapped in GEOM_Object-s),
+ # that constitute a free boundary of the given shape.
+ # @param theObject Shape to get free boundary of.
+ # @return [status, theClosedWires, theOpenWires]
+ # status: FALSE, if an error(s) occured during the method execution.
+ # theClosedWires: Closed wires on the free boundary of the given shape.
+ # theOpenWires: Open wires on the free boundary of the given shape.
+ #
+ # Example: see GEOM_TestHealing.py
+ def GetFreeBoundary(self,theObject):
+ anObj = self.HealOp.GetFreeBoundary(theObject)
+ RaiseIfFailed("GetFreeBoundary", self.HealOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Create advanced objects
+ # -----------------------------------------------------------------------------
+
+ ## Create a copy of the given object
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeCopy(self,theOriginal):
+ anObj = self.InsertOp.MakeCopy(theOriginal)
+ RaiseIfFailed("MakeCopy", self.InsertOp)
+ return anObj
+
+ ## Create a filling from the given compound of contours.
+ # @param theShape the compound of contours
+ # @param theMinDeg a minimal degree
+ # @param theMaxDeg a maximal degree
+ # @param theTol2D a 2d tolerance
+ # @param theTol3D a 3d tolerance
+ # @param theNbIter a number of iteration
+ # @return New GEOM_Object, containing the created filling surface.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeFilling(self,theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter):
+ anObj = self.PrimOp.MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
+ RaiseIfFailed("MakeFilling", self.PrimOp)
+ return anObj
+
+ ## Replace coincident faces in theShape by one face.
+ # @param theShape Initial shape.
+ # @param theTolerance Maximum distance between faces, which can be considered as coincident.
+ # @param doKeepNonSolids If FALSE, only solids will present in the result,
+ # otherwise all initial shapes.
+ # @return New GEOM_Object, containing a copy of theShape without coincident faces.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeGlueFaces(self, theShape, theTolerance, doKeepNonSolids=True):
+ anObj = self.ShapesOp.MakeGlueFaces(theShape, theTolerance, doKeepNonSolids)
+ if anObj is None:
+ raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
+ return anObj
+
+
+ ## Find coincident faces in theShape for possible gluing.
+ # @param theShape Initial shape.
+ # @param theTolerance Maximum distance between faces,
+ # which can be considered as coincident.
+ # @return ListOfGO.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetGlueFaces(self, theShape, theTolerance):
+ anObj = self.ShapesOp.GetGlueFaces(theShape, theTolerance)
+ RaiseIfFailed("GetGlueFaces", self.ShapesOp)
+ return anObj
+
+
+ ## Replace coincident faces in theShape by one face
+ # in compliance with given list of faces
+ # @param theShape Initial shape.
+ # @param theTolerance Maximum distance between faces,
+ # which can be considered as coincident.
+ # @param theFaces List of faces for gluing.
+ # @param doKeepNonSolids If FALSE, only solids will present in the result,
+ # otherwise all initial shapes.
+ # @return New GEOM_Object, containing a copy of theShape
+ # without some faces.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeGlueFacesByList(self, theShape, theTolerance, theFaces, doKeepNonSolids=True):
+ anObj = self.ShapesOp.MakeGlueFacesByList(theShape, theTolerance, theFaces, doKeepNonSolids)
+ if anObj is None:
+ raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
+ return anObj
+
+
+ # -----------------------------------------------------------------------------
+ # Boolean (Common, Cut, Fuse, Section)
+ # -----------------------------------------------------------------------------
+
+ ## Perform one of boolean operations on two given shapes.
+ # @param theShape1 First argument for boolean operation.
+ # @param theShape2 Second argument for boolean operation.
+ # @param theOperation Indicates the operation to be done:
+ # 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeBoolean(self,theShape1, theShape2, theOperation):
+ anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation)
+ RaiseIfFailed("MakeBoolean", self.BoolOp)
+ return anObj
+
+ ## Shortcut to MakeBoolean(s1, s2, 1)
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeCommon(self, s1, s2):
+ return self.MakeBoolean(s1, s2, 1)
+
+ ## Shortcut to MakeBoolean(s1, s2, 2)
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeCut(self, s1, s2):
+ return self.MakeBoolean(s1, s2, 2)
+
+ ## Shortcut to MakeBoolean(s1, s2, 3)
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeFuse(self, s1, s2):
+ return self.MakeBoolean(s1, s2, 3)
+
+ ## Shortcut to MakeBoolean(s1, s2, 4)
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeSection(self, s1, s2):
+ return self.MakeBoolean(s1, s2, 4)
+
+ ## Perform partition operation.
+ # @param ListShapes Shapes to be intersected.
+ # @param ListTools Shapes to intersect theShapes.
+ # !!!NOTE: Each compound from ListShapes and ListTools will be exploded
+ # in order to avoid possible intersection between shapes from
+ # this compound.
+ # @param Limit Type of resulting shapes (corresponding to TopAbs_ShapeEnum).
+ # @param KeepNonlimitShapes: if this parameter == 0 - only shapes with
+ # type <= Limit are kept in the result,
+ # else - shapes with type > Limit are kept
+ # also (if they exist)
+ #
+ # After implementation new version of PartitionAlgo (October 2006)
+ # other parameters are ignored by current functionality. They are kept
+ # in this function only for support old versions.
+ # Ignored parameters:
+ # @param ListKeepInside Shapes, outside which the results will be deleted.
+ # Each shape from theKeepInside must belong to theShapes also.
+ # @param ListRemoveInside Shapes, inside which the results will be deleted.
+ # Each shape from theRemoveInside must belong to theShapes also.
+ # @param RemoveWebs If TRUE, perform Glue 3D algorithm.
+ # @param ListMaterials Material indices for each shape. Make sence,
+ # only if theRemoveWebs is TRUE.
+ #
+ # @return New GEOM_Object, containing the result shapes.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
+ Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[],
+ KeepNonlimitShapes=0):
+ anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
+ ListKeepInside, ListRemoveInside,
+ Limit, RemoveWebs, ListMaterials,
+ KeepNonlimitShapes);
+ RaiseIfFailed("MakePartition", self.BoolOp)
+ return anObj
+
+ ## Perform partition operation.
+ # This method may be useful if it is needed to make a partition for
+ # compound contains nonintersected shapes. Performance will be better
+ # since intersection between shapes from compound is not performed.
+ #
+ # Description of all parameters as in previous method MakePartition()
+ #
+ # !!!NOTE: Passed compounds (via ListShapes or via ListTools)
+ # have to consist of nonintersecting shapes.
+ #
+ # @return New GEOM_Object, containing the result shapes.
+ #
+ def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
+ ListKeepInside=[], ListRemoveInside=[],
+ Limit=ShapeType["SHAPE"], RemoveWebs=0,
+ ListMaterials=[], KeepNonlimitShapes=0):
+ anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
+ ListKeepInside, ListRemoveInside,
+ Limit, RemoveWebs, ListMaterials,
+ KeepNonlimitShapes);
+ RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
+ return anObj
+
+ ## Shortcut to MakePartition()
+ #
+ # Example: see GEOM_TestOthers.py
+ def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
+ Limit=ShapeType["SHAPE"], RemoveWebs=0, ListMaterials=[],
+ KeepNonlimitShapes=0):
+ anObj = self.MakePartition(ListShapes, ListTools,
+ ListKeepInside, ListRemoveInside,
+ Limit, RemoveWebs, ListMaterials,
+ KeepNonlimitShapes);
+ return anObj
+
+ ## Perform partition of the Shape with the Plane
+ # @param theShape Shape to be intersected.
+ # @param thePlane Tool shape, to intersect theShape.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeHalfPartition(self,theShape, thePlane):
+ anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
+ RaiseIfFailed("MakeHalfPartition", self.BoolOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Transform objects
+ # -----------------------------------------------------------------------------
+
+ ## Translate the given object along the vector, specified
+ # by its end points, creating its copy before the translation.
+ # @param theObject The object to be translated.
+ # @param thePoint1 Start point of translation vector.
+ # @param thePoint2 End point of translation vector.
+ # @return New GEOM_Object, containing the translated object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeTranslationTwoPoints(self,theObject, thePoint1, thePoint2):
+ anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
+ RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
+ return anObj
+
+ ## Translate the given object along the vector, specified
+ # by its components, creating its copy before the translation.
+ # @param theObject The object to be translated.
+ # @param theDX,theDY,theDZ Components of translation vector.
+ # @return New GEOM_Object, containing the translated object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeTranslation(self,theObject, theDX, theDY, theDZ):
+ anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
+ RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
+ return anObj
+
+ ## Translate the given object along the given vector,
+ # creating its copy before the translation.
+ # @param theObject The object to be translated.
+ # @param theVector The translation vector.
+ # @return New GEOM_Object, containing the translated object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeTranslationVector(self,theObject, theVector):
+ anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
+ RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
+ return anObj
+
+ ## Rotate the given object around the given axis
+ # on the given angle, creating its copy before the rotatation.
+ # @param theObject The object to be rotated.
+ # @param theAxis Rotation axis.
+ # @param theAngle Rotation angle in radians.
+ # @return New GEOM_Object, containing the rotated object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeRotation(self,theObject, theAxis, theAngle):
+ anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
+ RaiseIfFailed("RotateCopy", self.TrsfOp)
+ return anObj
+
+ ## Rotate given object around vector perpendicular to plane
+ # containing three points, creating its copy before the rotatation.
+ # @param theObject The object to be rotated.
+ # @param theCentPoint central point - the axis is the vector perpendicular to the plane
+ # containing the three points.
+ # @param thePoint1 and thePoint2 - in a perpendicular plan of the axis.
+ # @return New GEOM_Object, containing the rotated object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeRotationThreePoints(self,theObject, theCentPoint, thePoint1, thePoint2):
+ anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
+ RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
+ return anObj
+
+ ## Scale the given object by the factor, creating its copy before the scaling.
+ # @param theObject The object to be scaled.
+ # @param thePoint Center point for scaling.
+ # @param theFactor Scaling factor value.
+ # @return New GEOM_Object, containing the scaled shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeScaleTransform(self,theObject, thePoint, theFactor):
+ anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
+ RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
+ return anObj
+
+ ## Create an object, symmetrical
+ # to the given one relatively the given plane.
+ # @param theObject The object to be mirrored.
+ # @param thePlane Plane of symmetry.
+ # @return New GEOM_Object, containing the mirrored shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMirrorByPlane(self,theObject, thePlane):
+ anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
+ RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
+ return anObj
+
+ ## Create an object, symmetrical
+ # to the given one relatively the given axis.
+ # @param theObject The object to be mirrored.
+ # @param theAxis Axis of symmetry.
+ # @return New GEOM_Object, containing the mirrored shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMirrorByAxis(self,theObject, theAxis):
+ anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
+ RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
+ return anObj
+
+ ## Create an object, symmetrical
+ # to the given one relatively the given point.
+ # @param theObject The object to be mirrored.
+ # @param thePoint Point of symmetry.
+ # @return New GEOM_Object, containing the mirrored shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMirrorByPoint(self,theObject, thePoint):
+ anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
+ RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
+ return anObj
+
+ ## Modify the Location of the given object by LCS,
+ # creating its copy before the setting.
+ # @param theObject The object to be displaced.
+ # @param theStartLCS Coordinate system to perform displacement from it.
+ # If \a theStartLCS is NULL, displacement
+ # will be performed from global CS.
+ # If \a theObject itself is used as \a theStartLCS,
+ # its location will be changed to \a theEndLCS.
+ # @param theEndLCS Coordinate system to perform displacement to it.
+ # @return New GEOM_Object, containing the displaced shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakePosition(self,theObject, theStartLCS, theEndLCS):
+ anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
+ RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
+ return anObj
+
+ ## Create new object as offset of the given one.
+ # @param theObject The base object for the offset.
+ # @param theOffset Offset value.
+ # @return New GEOM_Object, containing the offset object.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeOffset(self,theObject, theOffset):
+ anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
+ RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Patterns
+ # -----------------------------------------------------------------------------
+
+ ## Translate the given object along the given vector a given number times
+ # @param theObject The object to be translated.
+ # @param theVector Direction of the translation.
+ # @param theStep Distance to translate on.
+ # @param theNbTimes Quantity of translations to be done.
+ # @return New GEOM_Object, containing compound of all
+ # the shapes, obtained after each translation.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMultiTranslation1D(self,theObject, theVector, theStep, theNbTimes):
+ anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
+ RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
+ return anObj
+
+ ## Conseqently apply two specified translations to theObject specified number of times.
+ # @param theObject The object to be translated.
+ # @param theVector1 Direction of the first translation.
+ # @param theStep1 Step of the first translation.
+ # @param theNbTimes1 Quantity of translations to be done along theVector1.
+ # @param theVector2 Direction of the second translation.
+ # @param theStep2 Step of the second translation.
+ # @param theNbTimes2 Quantity of translations to be done along theVector2.
+ # @return New GEOM_Object, containing compound of all
+ # the shapes, obtained after each translation.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeMultiTranslation2D(self,theObject, theVector1, theStep1, theNbTimes1,
+ theVector2, theStep2, theNbTimes2):
+ anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
+ theVector2, theStep2, theNbTimes2)
+ RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
+ return anObj
+
+ ## Rotate the given object around the given axis a given number times.
+ # Rotation angle will be 2*PI/theNbTimes.
+ # @param theObject The object to be rotated.
+ # @param theAxis The rotation axis.
+ # @param theNbTimes Quantity of rotations to be done.
+ # @return New GEOM_Object, containing compound of all the
+ # shapes, obtained after each rotation.
+ #
+ # Example: see GEOM_TestAll.py
+ def MultiRotate1D(self,theObject, theAxis, theNbTimes):
+ anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
+ RaiseIfFailed("MultiRotate1D", self.TrsfOp)
+ return anObj
+
+ ## Rotate the given object around the
+ # given axis on the given angle a given number
+ # times and multi-translate each rotation result.
+ # Translation direction passes through center of gravity
+ # of rotated shape and its projection on the rotation axis.
+ # @param theObject The object to be rotated.
+ # @param theAxis Rotation axis.
+ # @param theAngle Rotation angle in graduces.
+ # @param theNbTimes1 Quantity of rotations to be done.
+ # @param theStep Translation distance.
+ # @param theNbTimes2 Quantity of translations to be done.
+ # @return New GEOM_Object, containing compound of all the
+ # shapes, obtained after each transformation.
+ #
+ # Example: see GEOM_TestAll.py
+ def MultiRotate2D(self,theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2):
+ anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
+ RaiseIfFailed("MultiRotate2D", self.TrsfOp)
+ return anObj
+
+ ## The same, as MultiRotate1D(), but axis is given by direction and point
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeMultiRotation1D(self,aShape,aDir,aPoint,aNbTimes):
+ aVec = self.MakeLine(aPoint,aDir)
+ anObj = self.MultiRotate1D(aShape,aVec,aNbTimes)
+ return anObj
+
+ ## The same, as MultiRotate2D(), but axis is given by direction and point
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeMultiRotation2D(self,aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2):
+ aVec = self.MakeLine(aPoint,aDir)
+ anObj = self.MultiRotate2D(aShape,aVec,anAngle,nbtimes1,aStep,nbtimes2)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Local operations
+ # -----------------------------------------------------------------------------
+
+ ## Perform a fillet on all edges of the given shape.
+ # @param theShape Shape, to perform fillet on.
+ # @param theR Fillet radius.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeFilletAll(self,theShape, theR):
+ anObj = self.LocalOp.MakeFilletAll(theShape, theR)
+ RaiseIfFailed("MakeFilletAll", self.LocalOp)
+ return anObj
+
+ ## Perform a fillet on the specified edges/faces of the given shape
+ # @param theShape Shape, to perform fillet on.
+ # @param theR Fillet radius.
+ # @param theShapeType Type of shapes in <theListShapes>.
+ # @param theListShapes Global indices of edges/faces to perform fillet on.
+ # \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeFillet(self,theShape, theR, theShapeType, theListShapes):
+ anObj = None
+ if theShapeType == ShapeType["EDGE"]:
+ anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
+ RaiseIfFailed("MakeFilletEdges", self.LocalOp)
+ else:
+ anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
+ RaiseIfFailed("MakeFilletFaces", self.LocalOp)
+ return anObj
+
+ ## The same that MakeFillet but with two Fillet Radius R1 and R2
+ def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes):
+ anObj = None
+ if theShapeType == ShapeType["EDGE"]:
+ anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
+ RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
+ else:
+ anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
+ RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
+ return anObj
+
+ ## Perform a symmetric chamfer on all edges of the given shape.
+ # @param theShape Shape, to perform chamfer on.
+ # @param theD Chamfer size along each face.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeChamferAll(self,theShape, theD):
+ anObj = self.LocalOp.MakeChamferAll(theShape, theD)
+ RaiseIfFailed("MakeChamferAll", self.LocalOp)
+ return anObj
+
+ ## Perform a chamfer on edges, common to the specified faces,
+ # with distance D1 on the Face1
+ # @param theShape Shape, to perform chamfer on.
+ # @param theD1 Chamfer size along \a theFace1.
+ # @param theD2 Chamfer size along \a theFace2.
+ # @param theFace1,theFace2 Global indices of two faces of \a theShape.
+ # \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeChamferEdge(self,theShape, theD1, theD2, theFace1, theFace2):
+ anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
+ RaiseIfFailed("MakeChamferEdge", self.LocalOp)
+ return anObj
+
+ ## The Same that MakeChamferEdge but with params theD is chamfer lenght and
+ # theAngle is Angle of chamfer (angle in radians)
+ def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2):
+ anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
+ RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
+ return anObj
+
+ ## Perform a chamfer on all edges of the specified faces,
+ # with distance D1 on the first specified face (if several for one edge)
+ # @param theShape Shape, to perform chamfer on.
+ # @param theD1 Chamfer size along face from \a theFaces. If both faces,
+ # connected to the edge, are in \a theFaces, \a theD1
+ # will be get along face, which is nearer to \a theFaces beginning.
+ # @param theD2 Chamfer size along another of two faces, connected to the edge.
+ # @param theFaces Sequence of global indices of faces of \a theShape.
+ # \note Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_TestAll.py
+ def MakeChamferFaces(self,theShape, theD1, theD2, theFaces):
+ anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
+ RaiseIfFailed("MakeChamferFaces", self.LocalOp)
+ return anObj
+
+ ## The Same that MakeChamferFaces but with params theD is chamfer lenght and
+ # theAngle is Angle of chamfer (angle in radians)
+ def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces):
+ anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
+ RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
+ return anObj
+
+ ## Perform a chamfer on edges,
+ # with distance D1 on the first specified face (if several for one edge)
+ # @param theShape Shape, to perform chamfer on.
+ # @param theD1 and theD2 Chamfer size
+ # @param theEdges Sequence of edges of \a theShape.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example:
+ def MakeChamferEdges(self, theShape, theD1, theD2, theEdges):
+ anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
+ RaiseIfFailed("MakeChamferEdges", self.LocalOp)
+ return anObj
+
+ ## The Same that MakeChamferEdges but with params theD is chamfer lenght and
+ # theAngle is Angle of chamfer (angle in radians)
+ def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges):
+ anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
+ RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
+ return anObj
+
+ ## Shortcut to MakeChamferEdge() and MakeChamferFaces()
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeChamfer(self,aShape,d1,d2,aShapeType,ListShape):
+ anObj = None
+ if aShapeType == ShapeType["EDGE"]:
+ anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1])
+ else:
+ anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape)
+ return anObj
+
+ ## Perform an Archimde operation on the given shape with given parameters.
+ # The object presenting the resulting face is returned.
+ # @param theShape Shape to be put in water.
+ # @param theWeight Weight og the shape.
+ # @param theWaterDensity Density of the water.
+ # @param theMeshDeflection Deflection of the mesh, using to compute the section.
+ # @return New GEOM_Object, containing a section of \a theShape
+ # by a plane, corresponding to water level.
+ #
+ # Example: see GEOM_TestAll.py
+ def Archimede(self,theShape, theWeight, theWaterDensity, theMeshDeflection):
+ anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
+ RaiseIfFailed("MakeArchimede", self.LocalOp)
+ return anObj
+
+ # -----------------------------------------------------------------------------
+ # Information objects
+ # -----------------------------------------------------------------------------
+
+ ## Get point coordinates
+ # @return [x, y, z]
+ #
+ # Example: see GEOM_TestMeasures.py
+ def PointCoordinates(self,Point):
+ aTuple = self.MeasuOp.PointCoordinates(Point)
+ RaiseIfFailed("PointCoordinates", self.MeasuOp)
+ return aTuple
+
+ ## Get summarized length of all wires,
+ # area of surface and volume of the given shape.
+ # @param theShape Shape to define properties of.
+ # @return [theLength, theSurfArea, theVolume]
+ # theLength: Summarized length of all wires of the given shape.
+ # theSurfArea: Area of surface of the given shape.
+ # theVolume: Volume of the given shape.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def BasicProperties(self,theShape):
+ aTuple = self.MeasuOp.GetBasicProperties(theShape)
+ RaiseIfFailed("GetBasicProperties", self.MeasuOp)
+ return aTuple
+
+ ## Get parameters of bounding box of the given shape
+ # @param theShape Shape to obtain bounding box of.
+ # @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
+ # Xmin,Xmax: Limits of shape along OX axis.
+ # Ymin,Ymax: Limits of shape along OY axis.
+ # Zmin,Zmax: Limits of shape along OZ axis.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def BoundingBox(self,theShape):
+ aTuple = self.MeasuOp.GetBoundingBox(theShape)
+ RaiseIfFailed("GetBoundingBox", self.MeasuOp)
+ return aTuple
+
+ ## Get inertia matrix and moments of inertia of theShape.
+ # @param theShape Shape to calculate inertia of.
+ # @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
+ # I(1-3)(1-3): Components of the inertia matrix of the given shape.
+ # Ix,Iy,Iz: Moments of inertia of the given shape.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def Inertia(self,theShape):
+ aTuple = self.MeasuOp.GetInertia(theShape)
+ RaiseIfFailed("GetInertia", self.MeasuOp)
+ return aTuple
+
+ ## Get minimal distance between the given shapes.
+ # @param theShape1,theShape2 Shapes to find minimal distance between.
+ # @return Value of the minimal distance between the given shapes.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def MinDistance(self, theShape1, theShape2):
+ aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
+ RaiseIfFailed("GetMinDistance", self.MeasuOp)
+ return aTuple[0]
+
+ ## Get minimal distance between the given shapes.
+ # @param theShape1,theShape2 Shapes to find minimal distance between.
+ # @return Value of the minimal distance between the given shapes.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def MinDistanceComponents(self, theShape1, theShape2):
+ aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
+ RaiseIfFailed("GetMinDistance", self.MeasuOp)
+ aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
+ return aRes
+
+ ## Get angle between the given shapes.
+ # @param theShape1,theShape2 Lines or linear edges to find angle between.
+ # @return Value of the angle between the given shapes.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def GetAngle(self, theShape1, theShape2):
+ anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
+ RaiseIfFailed("GetAngle", self.MeasuOp)
+ return anAngle
+
+ ## Get min and max tolerances of sub-shapes of theShape
+ # @param theShape Shape, to get tolerances of.
+ # @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
+ # FaceMin,FaceMax: Min and max tolerances of the faces.
+ # EdgeMin,EdgeMax: Min and max tolerances of the edges.
+ # VertMin,VertMax: Min and max tolerances of the vertices.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def Tolerance(self,theShape):
+ aTuple = self.MeasuOp.GetTolerance(theShape)
+ RaiseIfFailed("GetTolerance", self.MeasuOp)
+ return aTuple
+
+ ## Obtain description of the given shape (number of sub-shapes of each type)
+ # @param theShape Shape to be described.
+ # @return Description of the given shape.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def WhatIs(self,theShape):
+ aDescr = self.MeasuOp.WhatIs(theShape)
+ RaiseIfFailed("WhatIs", self.MeasuOp)
+ return aDescr
+
+ ## Get a point, situated at the centre of mass of theShape.
+ # @param theShape Shape to define centre of mass of.
+ # @return New GEOM_Object, containing the created point.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def MakeCDG(self,theShape):
+ anObj = self.MeasuOp.GetCentreOfMass(theShape)
+ RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
+ return anObj
+
+ ## Get a normale to the given face. If the point is not given,
+ # the normale is calculated at the center of mass.
+ # @param theFace Face to define normale of.
+ # @param theOptionalPoint Point to compute the normale at.
+ # @return New GEOM_Object, containing the created vector.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def GetNormal(self, theFace, theOptionalPoint = None):
+ anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
+ RaiseIfFailed("GetNormal", self.MeasuOp)
+ return anObj
+
+ ## Check a topology of the given shape.
+ # @param theShape Shape to check validity of.
+ # @param theIsCheckGeom If FALSE, only the shape's topology will be checked,
+ # if TRUE, the shape's geometry will be checked also.
+ # @return TRUE, if the shape "seems to be valid".
+ # If theShape is invalid, prints a description of problem.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def CheckShape(self,theShape, theIsCheckGeom = 0):
+ if theIsCheckGeom:
+ (IsValid, Status) = self.MeasuOp.CheckShapeWithGeometry(theShape)
+ RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
+ else:
+ (IsValid, Status) = self.MeasuOp.CheckShape(theShape)
+ RaiseIfFailed("CheckShape", self.MeasuOp)
+ if IsValid == 0:
+ print Status
+ return IsValid
+
+ ## Get position (LCS) of theShape.
+ #
+ # Origin of the LCS is situated at the shape's center of mass.
+ # Axes of the LCS are obtained from shape's location or,
+ # if the shape is a planar face, from position of its plane.
+ #
+ # @param theShape Shape to calculate position of.
+ # @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
+ # Ox,Oy,Oz: Coordinates of shape's LCS origin.
+ # Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
+ # Xx,Xy,Xz: Coordinates of shape's LCS X direction.
+ #
+ # Example: see GEOM_TestMeasures.py
+ def GetPosition(self,theShape):
+ aTuple = self.MeasuOp.GetPosition(theShape)
+ RaiseIfFailed("GetPosition", self.MeasuOp)
+ return aTuple
+
+ ## Get kind of theShape.
+ #
+ # @param theShape Shape to get a kind of.
+ # @return Returns a kind of shape in terms of <VAR>GEOM_IKindOfShape.shape_kind</VAR> enumeration
+ # and a list of parameters, describing the shape.
+ # @note Concrete meaning of each value, returned via \a theIntegers
+ # or \a theDoubles list depends on the kind of the shape.
+ # The full list of possible outputs is:
+ #
+ # geompy.kind.COMPOUND nb_solids nb_faces nb_edges nb_vertices
+ # geompy.kind.COMPSOLID nb_solids nb_faces nb_edges nb_vertices
+ #
+ # geompy.kind.SHELL geompy.info.CLOSED nb_faces nb_edges nb_vertices
+ # geompy.kind.SHELL geompy.info.UNCLOSED nb_faces nb_edges nb_vertices
+ #
+ # geompy.kind.WIRE geompy.info.CLOSED nb_edges nb_vertices
+ # geompy.kind.WIRE geompy.info.UNCLOSED nb_edges nb_vertices
+ #
+ # geompy.kind.SPHERE xc yc zc R
+ # geompy.kind.CYLINDER xb yb zb dx dy dz R H
+ # geompy.kind.BOX xc yc zc ax ay az
+ # geompy.kind.ROTATED_BOX xc yc zc zx zy zz xx xy xz ax ay az
+ # geompy.kind.TORUS xc yc zc dx dy dz R_1 R_2
+ # geompy.kind.CONE xb yb zb dx dy dz R_1 R_2 H
+ # geompy.kind.POLYHEDRON nb_faces nb_edges nb_vertices
+ # geompy.kind.SOLID nb_faces nb_edges nb_vertices
+ #
+ # geompy.kind.SPHERE2D xc yc zc R
+ # geompy.kind.CYLINDER2D xb yb zb dx dy dz R H
+ # geompy.kind.TORUS2D xc yc zc dx dy dz R_1 R_2
+ # geompy.kind.CONE2D xc yc zc dx dy dz R_1 R_2 H
+ # geompy.kind.DISK_CIRCLE xc yc zc dx dy dz R
+ # geompy.kind.DISK_ELLIPSE xc yc zc dx dy dz R_1 R_2
+ # geompy.kind.POLYGON xo yo zo dx dy dz nb_edges nb_vertices
+ # geompy.kind.PLANE xo yo zo dx dy dz
+ # geompy.kind.PLANAR xo yo zo dx dy dz nb_edges nb_vertices
+ # geompy.kind.FACE nb_edges nb_vertices
+ #
+ # geompy.kind.CIRCLE xc yc zc dx dy dz R
+ # geompy.kind.ARC_CIRCLE xc yc zc dx dy dz R x1 y1 z1 x2 y2 z2
+ # geompy.kind.ELLIPSE xc yc zc dx dy dz R_1 R_2
+ # geompy.kind.ARC_ELLIPSE xc yc zc dx dy dz R_1 R_2 x1 y1 z1 x2 y2 z2
+ # geompy.kind.LINE xo yo zo dx dy dz
+ # geompy.kind.SEGMENT x1 y1 z1 x2 y2 z2
+ # geompy.kind.EDGE nb_vertices
+ #
+ # geompy.kind.VERTEX x y z
+ #
+ # Example: see GEOM_TestMeasures.py
+ def KindOfShape(self,theShape):
+ aRoughTuple = self.MeasuOp.KindOfShape(theShape)
+ RaiseIfFailed("KindOfShape", self.MeasuOp)
+
+ aKind = aRoughTuple[0]
+ anInts = aRoughTuple[1]
+ aDbls = aRoughTuple[2]
+
+ # Now there is no exception from this rule:
+ aKindTuple = [aKind] + aDbls + anInts
+
+ # If they are we will regroup parameters for such kind of shape.
+ # For example:
+ #if aKind == kind.SOME_KIND:
+ # # SOME_KIND int int double int double double
+ # aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
+
+ return aKindTuple
+
+ # -----------------------------------------------------------------------------
+ # Import/Export objects
+ # -----------------------------------------------------------------------------
+
+ ## Import a shape from the BREP or IGES or STEP file
+ # (depends on given format) with given name.
+ # @param theFileName The file, containing the shape.
+ # @param theFormatName Specify format for the file reading.
+ # Available formats can be obtained with InsertOp.ImportTranslators() method.
+ # @return New GEOM_Object, containing the imported shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def Import(self,theFileName, theFormatName):
+ anObj = self.InsertOp.Import(theFileName, theFormatName)
+ RaiseIfFailed("Import", self.InsertOp)
+ return anObj
+
+ ## Shortcut to Import() for BREP format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ImportBREP(self,theFileName):
+ return self.Import(theFileName, "BREP")
+
+ ## Shortcut to Import() for IGES format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ImportIGES(self,theFileName):
+ return self.Import(theFileName, "IGES")
+
+ ## Shortcut to Import() for STEP format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ImportSTEP(self,theFileName):
+ return self.Import(theFileName, "STEP")
+
+ ## Export the given shape into a file with given name.
+ # @param theObject Shape to be stored in the file.
+ # @param theFileName Name of the file to store the given shape in.
+ # @param theFormatName Specify format for the shape storage.
+ # Available formats can be obtained with InsertOp.ImportTranslators() method.
+ #
+ # Example: see GEOM_TestOthers.py
+ def Export(self,theObject, theFileName, theFormatName):
+ self.InsertOp.Export(theObject, theFileName, theFormatName)
+ if self.InsertOp.IsDone() == 0:
+ raise RuntimeError, "Export : " + self.InsertOp.GetErrorCode()
+ pass
+ pass
+
+ ## Shortcut to Export() for BREP format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ExportBREP(self,theObject, theFileName):
+ return self.Export(theObject, theFileName, "BREP")
+
+ ## Shortcut to Export() for IGES format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ExportIGES(self,theObject, theFileName):
+ return self.Export(theObject, theFileName, "IGES")
+
+ ## Shortcut to Export() for STEP format
+ #
+ # Example: see GEOM_TestOthers.py
+ def ExportSTEP(self,theObject, theFileName):
+ return self.Export(theObject, theFileName, "STEP")
+
+ # -----------------------------------------------------------------------------
+ # Block operations
+ # -----------------------------------------------------------------------------
+
+ ## Create a quadrangle face from four edges. Order of Edges is not
+ # important. It is not necessary that edges share the same vertex.
+ # @param E1,E2,E3,E4 Edges for the face bound.
+ # @return New GEOM_Object, containing the created face.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeQuad(self,E1, E2, E3, E4):
+ anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
+ RaiseIfFailed("MakeQuad", self.BlocksOp)
+ return anObj
+
+ ## Create a quadrangle face on two edges.
+ # The missing edges will be built by creating the shortest ones.
+ # @param E1,E2 Two opposite edges for the face.
+ # @return New GEOM_Object, containing the created face.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeQuad2Edges(self,E1, E2):
+ anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
+ RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
+ return anObj
+
+ ## Create a quadrangle face with specified corners.
+ # The missing edges will be built by creating the shortest ones.
+ # @param V1,V2,V3,V4 Corner vertices for the face.
+ # @return New GEOM_Object, containing the created face.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeQuad4Vertices(self,V1, V2, V3, V4):
+ anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
+ RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
+ return anObj
+
+ ## Create a hexahedral solid, bounded by the six given faces. Order of
+ # faces is not important. It is not necessary that Faces share the same edge.
+ # @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
+ # @return New GEOM_Object, containing the created solid.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeHexa(self,F1, F2, F3, F4, F5, F6):
+ anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
+ RaiseIfFailed("MakeHexa", self.BlocksOp)
+ return anObj
+
+ ## Create a hexahedral solid between two given faces.
+ # The missing faces will be built by creating the smallest ones.
+ # @param F1,F2 Two opposite faces for the hexahedral solid.
+ # @return New GEOM_Object, containing the created solid.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeHexa2Faces(self,F1, F2):
+ anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
+ RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
+ return anObj
+
+ ## Get a vertex, found in the given shape by its coordinates.
+ # @param theShape Block or a compound of blocks.
+ # @param theX,theY,theZ Coordinates of the sought vertex.
+ # @param theEpsilon Maximum allowed distance between the resulting
+ # vertex and point with the given coordinates.
+ # @return New GEOM_Object, containing the found vertex.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetPoint(self,theShape, theX, theY, theZ, theEpsilon):
+ anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
+ RaiseIfFailed("GetPoint", self.BlocksOp)
+ return anObj
+
+ ## Get an edge, found in the given shape by two given vertices.
+ # @param theShape Block or a compound of blocks.
+ # @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
+ # @return New GEOM_Object, containing the found edge.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetEdge(self,theShape, thePoint1, thePoint2):
+ anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
+ RaiseIfFailed("GetEdge", self.BlocksOp)
+ return anObj
+
+ ## Find an edge of the given shape, which has minimal distance to the given point.
+ # @param theShape Block or a compound of blocks.
+ # @param thePoint Point, close to the desired edge.
+ # @return New GEOM_Object, containing the found edge.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetEdgeNearPoint(self,theShape, thePoint):
+ anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
+ RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
+ return anObj
+
+ ## Returns a face, found in the given shape by four given corner vertices.
+ # @param theShape Block or a compound of blocks.
+ # @param thePoint1-thePoint4 Points, close to the corners of the desired face.
+ # @return New GEOM_Object, containing the found face.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetFaceByPoints(self,theShape, thePoint1, thePoint2, thePoint3, thePoint4):
+ anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
+ RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
+ return anObj
+
+ ## Get a face of block, found in the given shape by two given edges.
+ # @param theShape Block or a compound of blocks.
+ # @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
+ # @return New GEOM_Object, containing the found face.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetFaceByEdges(self,theShape, theEdge1, theEdge2):
+ anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
+ RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
+ return anObj
+
+ ## Find a face, opposite to the given one in the given block.
+ # @param theBlock Must be a hexahedral solid.
+ # @param theFace Face of \a theBlock, opposite to the desired face.
+ # @return New GEOM_Object, containing the found face.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetOppositeFace(self,theBlock, theFace):
+ anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
+ RaiseIfFailed("GetOppositeFace", self.BlocksOp)
+ return anObj
+
+ ## Find a face of the given shape, which has minimal distance to the given point.
+ # @param theShape Block or a compound of blocks.
+ # @param thePoint Point, close to the desired face.
+ # @return New GEOM_Object, containing the found face.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetFaceNearPoint(self,theShape, thePoint):
+ anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
+ RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
+ return anObj
+
+ ## Find a face of block, whose outside normale has minimal angle with the given vector.
+ # @param theShape Block or a compound of blocks.
+ # @param theVector Vector, close to the normale of the desired face.
+ # @return New GEOM_Object, containing the found face.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetFaceByNormale(self,theBlock, theVector):
+ anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
+ RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
+ return anObj
+
+ ## Check, if the compound of blocks is given.
+ # To be considered as a compound of blocks, the
+ # given shape must satisfy the following conditions:
+ # - Each element of the compound should be a Block (6 faces and 12 edges).
+ # - A connection between two Blocks should be an entire quadrangle face or an entire edge.
+ # - The compound should be connexe.
+ # - The glue between two quadrangle faces should be applied.
+ # @param theCompound The compound to check.
+ # @return TRUE, if the given shape is a compound of blocks.
+ # If theCompound is not valid, prints all discovered errors.
+ #
+ # Example: see GEOM_Spanner.py
+ def CheckCompoundOfBlocks(self,theCompound):
+ (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound)
+ RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
+ if IsValid == 0:
+ Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
+ print Descr
+ return IsValid
+
+ ## Remove all seam and degenerated edges from \a theShape.
+ # Unite faces and edges, sharing one surface. It means that
+ # this faces must have references to one C++ surface object (handle).
+ # @param theShape The compound or single solid to remove irregular edges from.
+ # @return Improved shape.
+ #
+ # Example: see GEOM_TestOthers.py
+ def RemoveExtraEdges(self,theShape):
+ anObj = self.BlocksOp.RemoveExtraEdges(theShape)
+ RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
+ return anObj
+
+ ## Check, if the given shape is a blocks compound.
+ # Fix all detected errors.
+ # \note Single block can be also fixed by this method.
+ # @param theCompound The compound to check and improve.
+ # @return Improved compound.
+ #
+ # Example: see GEOM_TestOthers.py
+ def CheckAndImprove(self,theShape):
+ anObj = self.BlocksOp.CheckAndImprove(theShape)
+ RaiseIfFailed("CheckAndImprove", self.BlocksOp)
+ return anObj
+
+ ## Get all the blocks, contained in the given compound.
+ # @param theCompound The compound to explode.
+ # @param theMinNbFaces If solid has lower number of faces, it is not a block.
+ # @param theMaxNbFaces If solid has higher number of faces, it is not a block.
+ # \note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
+ # @return List of GEOM_Objects, containing the retrieved blocks.
+ #
+ # Example: see GEOM_TestOthers.py
+ def MakeBlockExplode(self,theCompound, theMinNbFaces, theMaxNbFaces):
+ aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
+ RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
+ return aList
+
+ ## Find block, containing the given point inside its volume or on boundary.
+ # @param theCompound Compound, to find block in.
+ # @param thePoint Point, close to the desired block. If the point lays on
+ # boundary between some blocks, we return block with nearest center.
+ # @return New GEOM_Object, containing the found block.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetBlockNearPoint(self,theCompound, thePoint):
+ anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
+ RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
+ return anObj
+
+ ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
+ # @param theCompound Compound, to find block in.
+ # @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
+ # @return New GEOM_Object, containing the found block.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetBlockByParts(self,theCompound, theParts):
+ anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
+ RaiseIfFailed("GetBlockByParts", self.BlocksOp)
+ return anObj
+
+ ## Return all blocks, containing all the elements, passed as the parts.
+ # @param theCompound Compound, to find blocks in.
+ # @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
+ # @return List of GEOM_Objects, containing the found blocks.
+ #
+ # Example: see GEOM_Spanner.py
+ def GetBlocksByParts(self,theCompound, theParts):
+ aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
+ RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
+ return aList
+
+ ## Multi-transformate block and glue the result.
+ # Transformation is defined so, as to superpose direction faces.
+ # @param Block Hexahedral solid to be multi-transformed.
+ # @param DirFace1 ID of First direction face.
+ # @param DirFace2 ID of Second direction face.
+ # @param NbTimes Quantity of transformations to be done.
+ # \note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeMultiTransformation1D(self,Block, DirFace1, DirFace2, NbTimes):
+ anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
+ RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
+ return anObj
+
+ ## Multi-transformate block and glue the result.
+ # @param Block Hexahedral solid to be multi-transformed.
+ # @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
+ # @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
+ # @param NbTimesU,NbTimesV Quantity of transformations to be done.
+ # @return New GEOM_Object, containing the result shape.
+ #
+ # Example: see GEOM_Spanner.py
+ def MakeMultiTransformation2D(self,Block, DirFace1U, DirFace2U, NbTimesU,
+ DirFace1V, DirFace2V, NbTimesV):
+ anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
+ DirFace1V, DirFace2V, NbTimesV)
+ RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
+ return anObj
+
+ ## Build all possible propagation groups.
+ # Propagation group is a set of all edges, opposite to one (main)
+ # edge of this group directly or through other opposite edges.
+ # Notion of Opposite Edge make sence only on quadrangle face.
+ # @param theShape Shape to build propagation groups on.
+ # @return List of GEOM_Objects, each of them is a propagation group.
+ #
+ # Example: see GEOM_TestOthers.py
+ def Propagate(self,theShape):
+ listChains = self.BlocksOp.Propagate(theShape)
+ RaiseIfFailed("Propagate", self.BlocksOp)
+ return listChains
+
+ # -----------------------------------------------------------------------------
+ # Group operations
+ # -----------------------------------------------------------------------------
+
+ ## Creates a new group which will store sub shapes of theMainShape
+ # @param theMainShape is a GEOM object on which the group is selected
+ # @param theShapeType defines a shape type of the group
+ # @return a newly created GEOM group
+ #
+ # Example: see GEOM_TestOthers.py
+ def CreateGroup(self,theMainShape, theShapeType):
+ anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
+ RaiseIfFailed("CreateGroup", self.GroupOp)
+ return anObj
+
+ ## Adds a sub object with ID theSubShapeId to the group
+ # @param theGroup is a GEOM group to which the new sub shape is added
+ # @param theSubShapeID is a sub shape ID in the main object.
+ # \note Use method GetSubShapeID() to get an unique ID of the sub shape
+ #
+ # Example: see GEOM_TestOthers.py
+ def AddObject(self,theGroup, theSubShapeID):
+ self.GroupOp.AddObject(theGroup, theSubShapeID)
+ RaiseIfFailed("AddObject", self.GroupOp)
+ pass
+
+ ## Removes a sub object with ID \a theSubShapeId from the group
+ # @param theGroup is a GEOM group from which the new sub shape is removed
+ # @param theSubShapeID is a sub shape ID in the main object.
+ # \note Use method GetSubShapeID() to get an unique ID of the sub shape
+ #
+ # Example: see GEOM_TestOthers.py
+ def RemoveObject(self,theGroup, theSubShapeID):
+ self.GroupOp.RemoveObject(theGroup, theSubShapeID)
+ RaiseIfFailed("RemoveObject", self.GroupOp)
+ pass
+
+ ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+ # @param theGroup is a GEOM group to which the new sub shapes are added.
+ # @param theSubShapes is a list of sub shapes to be added.
+ #
+ # Example: see GEOM_TestOthers.py
+ def UnionList (self,theGroup, theSubShapes):
+ self.GroupOp.UnionList(theGroup, theSubShapes)
+ RaiseIfFailed("UnionList", self.GroupOp)
+ pass
+
+ ## Works like the above method, but argument
+ # theSubShapes here is a list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def UnionIDs(self,theGroup, theSubShapes):
+ self.GroupOp.UnionIDs(theGroup, theSubShapes)
+ RaiseIfFailed("UnionIDs", self.GroupOp)
+ pass
+
+ ## Removes from the group all the given shapes. No errors, if some shapes are not included.
+ # @param theGroup is a GEOM group from which the sub-shapes are removed.
+ # @param theSubShapes is a list of sub-shapes to be removed.
+ #
+ # Example: see GEOM_TestOthers.py
+ def DifferenceList (self,theGroup, theSubShapes):
+ self.GroupOp.DifferenceList(theGroup, theSubShapes)
+ RaiseIfFailed("DifferenceList", self.GroupOp)
+ pass
+
+ ## Works like the above method, but argument
+ # theSubShapes here is a list of sub-shapes indices
+ #
+ # Example: see GEOM_TestOthers.py
+ def DifferenceIDs(self,theGroup, theSubShapes):
+ self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
+ RaiseIfFailed("DifferenceIDs", self.GroupOp)
+ pass
+
+ ## Returns a list of sub objects ID stored in the group
+ # @param theGroup is a GEOM group for which a list of IDs is requested
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetObjectIDs(self,theGroup):
+ ListIDs = self.GroupOp.GetObjects(theGroup)
+ RaiseIfFailed("GetObjects", self.GroupOp)
+ return ListIDs
+
+ ## Returns a type of sub objects stored in the group
+ # @param theGroup is a GEOM group which type is returned.
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetType(self,theGroup):
+ aType = self.GroupOp.GetType(theGroup)
+ RaiseIfFailed("GetType", self.GroupOp)
+ return aType
+
+ ## Returns a main shape associated with the group
+ # @param theGroup is a GEOM group for which a main shape object is requested
+ # @return a GEOM object which is a main shape for theGroup
+ #
+ # Example: see GEOM_TestOthers.py
+ def GetMainShape(self,theGroup):
+ anObj = self.GroupOp.GetMainShape(theGroup)
+ RaiseIfFailed("GetMainShape", self.GroupOp)
+ return anObj
+
+ ## Create group of edges of theShape, whose length is in range [min_length, max_length].
+ # If include_min/max == 0, edges with length == min/max_length will not be included in result.
+ def GetEdgesByLength (self,theShape, min_length, max_length, include_min = 1, include_max = 1):
+ edges = self.SubShapeAll(theShape, ShapeType["EDGE"])
+ edges_in_range = []
+ for edge in edges:
+ Props = self.BasicProperties(edge)
+ if min_length <= Props[0] and Props[0] <= max_length:
+ if (not include_min) and (min_length == Props[0]):
+ skip = 1
+ else:
+ if (not include_max) and (Props[0] == max_length):
+ skip = 1
+ else:
+ edges_in_range.append(edge)
+
+ if len(edges_in_range) <= 0:
+ print "No edges found by given criteria"
+ return 0
+
+ group_edges = self.CreateGroup(theShape, ShapeType["EDGE"])
+ self.UnionList(group_edges, edges_in_range)
+
+ return group_edges
+
+ ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
+ # If include_min/max == 0, edges with length == min/max_length will not be included in result.
+ def SelectEdges (self,min_length, max_length, include_min = 1, include_max = 1):
+ nb_selected = sg.SelectedCount()
+ if nb_selected < 1:
+ print "Select a shape before calling this function, please."
+ return 0
+ if nb_selected > 1:
+ print "Only one shape must be selected"
+ return 0
+
+ id_shape = sg.getSelected(0)
+ shape = IDToObject( id_shape )
+
+ group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
+
+ left_str = " < "
+ right_str = " < "
+ if include_min: left_str = " <= "
+ if include_max: right_str = " <= "
+
+ self.addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
+ + left_str + "length" + right_str + `max_length`)
+
+ sg.updateObjBrowser(1)
+
+ return group_edges
+
+ ## Add Path to load python scripts from
+ def addPath(self,Path):
+ if (sys.path.count(Path) < 1):
+ sys.path.append(Path)
+
+import omniORB
+#Register the new proxy for GEOM_Gen
+omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geompyDC)
+++ /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 : libGeometry_Swig.i
-// Created : Tue Mar 26 15:04:48 2002
-// Author : Nicolas REJNERI, Paul RASCLE
-// Project : SALOME
-// Module : GEOM
-// Copyright : Open CASCADE, EDF 2002
-// $Header$
-
-%module libGEOM_Swig
-
-%include "GeometryGUI_Swig.i"
-
--- /dev/null
+# GEOM GEOM_SWIG : binding of C++ omplementaion with Python
+#
+# 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 : GEOM
+# $Header$
+
+
+# Libraries targets
+
+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)/../GEOMGUI
+
+SWIG_SOURCES = libGEOM_Swig.i
+
+# Libraries targets
+lib_LTLIBRARIES = libGEOM_Swigcmodule.la
+
+nodist_pkgpython_DATA = libGEOM_Swig.py
+libGEOM_Swig.py: swig_wrap.cpp
+
+libGEOM_Swigcmodule_la_SOURCES = \
+ $(BUILT_SOURCES) \
+ $(SWIG_SOURCES)
+
+nodist_libGEOM_Swigcmodule_la_SOURCES = swig_wrap.cpp
+
+#LIB_CLIENT_IDL = SALOMEDS.idl \
+# SALOMEDS_Attributes.idl \
+# SALOME_Exception.idl \
+# GEOM_Gen.idl \
+# SALOME_Component.idl \
+# SALOME_GenericObj.idl
+
+libGEOM_Swigcmodule_la_CPPFLAGS = \
+ $(QT_INCLUDES) \
+ $(PYTHON_INCLUDES) \
+ $(CAS_CPPFLAGS) \
+ $(VTK_INCLUDES) \
+ $(OGL_INCLUDES) \
+ $(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
+ $(CORBA_CXXFLAGS) \
+ $(CORBA_INCLUDES) \
+ -I$(srcdir)/../GEOMGUI \
+ -I$(top_builddir)/idl \
+ -I$(top_builddir)/salome_adm/unix
+
+libGEOM_Swigcmodule_la_LDFLAGS = \
+ ../GEOMGUI/libGEOM.la
+
+
+libGEOM_Swigcmodule_la_LIBADD = \
+ $(PYTHON_LIBS)
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+ $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = \
+ swig_wrap.cpp
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Scripts to be installed.
+dist_salomescript_DATA= \
+ libGEOM_Swig.py
+
+install-exec-hook:\
+ $(libdir)/_libGEOM_Swig.so
+
+$(libdir)/_libGEOM_Swig.so:
+ ( cd $(libdir); ln -sf libGEOM_Swigcmodule.so _libGEOM_Swig.so; )
--- /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 : libGeometry_Swig.i
+// Created : Tue Mar 26 15:04:48 2002
+// Author : Nicolas REJNERI, Paul RASCLE
+// Project : SALOME
+// Module : GEOM
+// Copyright : Open CASCADE, EDF 2002
+// $Header$
+
+%module libGEOM_Swig
+
+%include "GeometryGUI_Swig.i"
+
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "filling.htm" );
+ setHelpFileName( "creaet_filling_page.html" );
/* Initialisations */
Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "pipe_creation.htm" );
+ setHelpFileName( "create_extrusion_alongpath_page.html" );
/* Initialisations */
Init();
initName( tr( "GEOM_PIPE" ) );
- globalSelection( GEOM_ALLSHAPES );
+ //globalSelection( GEOM_ALLSHAPES );
}
return;
myBase = aSelectedObject;
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
myOkBase = true;
}
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
myOkPath = false;
- if ( !GEOMBase::GetShape( aSelectedObject, S ) ||
- !( S.ShapeType() == TopAbs_WIRE || S.ShapeType() == TopAbs_EDGE ) )
+ if ( !GEOMBase::GetShape( aSelectedObject, S ) )
return;
+
+ QString aName = GEOMBase::GetName( aSelectedObject );
- myPath = aSelectedObject;
- myOkPath = true;
+ if ( testResult && !aSelectedObject->_is_nil() && aSelectedObject != myBase ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName.append( ":edge_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ myPath = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ myOkPath = true;
+ }
+ else { // get Object from study
+ myPath = aFindedObject;
+ myOkPath = true;
+ }
+ }
+ else {
+ myOkPath = true;
+ if ( S.ShapeType() != TopAbs_EDGE ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ myOkPath = false;
+ }
+ myPath = aSelectedObject;
+ }
+ }
+ myEditCurrentArgument->setText( aName );
}
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
displayPreview();
}
void GenerationGUI_PipeDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection();
if ( send == GroupPoints->PushButton1 ) {
GroupPoints->LineEdit1->setFocus();
+ globalSelection( GEOM_ALLSHAPES );
myEditCurrentArgument = GroupPoints->LineEdit1;
}
else if ( send == GroupPoints->PushButton2 ) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
+ globalSelection();
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
SelectionIntoArgument();
}
}
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void GenerationGUI_PipeDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ objMap[GroupPoints->LineEdit2->text()] = myPath;
+
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
bool modal, Qt::WindowFlags fl )
: GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl )
{
- QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM" ) ) );
- QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
- QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM_2P" ) ) );
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM" ) ) );
+ QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+ QPixmap image2( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM_2P" ) ) );
setWindowTitle( tr( "GEOM_EXTRUSION_TITLE" ) );
mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
mainFrame()->RadioButton3->close();
+ mainFrame()->RadioButton1->setChecked( true );
+ myBothway = myBothway2 = false;
+
GroupPoints = new DlgRef_2Sel1Spin2Check( centralWidget() );
- GroupPoints->CheckButton1->hide();
GroupPoints->GroupBox1->setTitle( tr( "GEOM_EXTRUSION_BSV" ) );
GroupPoints->TextLabel1->setText( tr( "GEOM_BASE" ) );
GroupPoints->TextLabel2->setText( tr( "GEOM_VECTOR" ) );
GroupPoints->PushButton2->setIcon( image1 );
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
+ GroupPoints->CheckButton1->setText( tr( "GEOM_BOTHWAY" ) );
+ GroupPoints->CheckButton1->setChecked( myBothway );
GroupPoints->CheckButton2->setText( tr( "GEOM_REVERSE" ) );
- GroupPoints2 = new DlgRef_3Sel( centralWidget() );
+ GroupPoints2 = new DlgRef_3Sel1Check( centralWidget() );
GroupPoints2->GroupBox1->setTitle( tr( "GEOM_EXTRUSION_BSV_2P" ) );
GroupPoints2->TextLabel1->setText( tr( "GEOM_BASE" ) );
GroupPoints2->PushButton1->setIcon( image1 );
GroupPoints2->PushButton2->setIcon( image1 );
GroupPoints2->PushButton3->setIcon( image1 );
+ GroupPoints2->CheckButton1->setText( tr( "GEOM_BOTHWAY" ) );
+ GroupPoints2->CheckButton1->setChecked( myBothway2 );
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( GroupPoints2 );
/***************************************************************/
- setHelpFileName( "extrusion.htm" );
+ setHelpFileName( "create_extrusion_page.html" );
- /* Initialisations */
Init();
}
//=================================================================================
GenerationGUI_PrismDlg::~GenerationGUI_PrismDlg()
{
- /* no need to delete child widgets, Qt does it all for us */
+ // no need to delete child widgets, Qt does it all for us
}
GroupPoints2->LineEdit2->setReadOnly( true );
GroupPoints2->LineEdit3->setReadOnly( true );
- //myOkBase = myOkVec = false;
+ myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil();
myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
/* Get setting of step value from file configuration */
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 100.0 );
/* signals and slots connections */
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupPoints->SpinBox_DX, SLOT( SetStep( double ) ) );
// <<-
- connect( GroupPoints->CheckButton2, SIGNAL( toggled( bool ) ), this, SLOT( onReverse() ) );
+ connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway() ) );
+ connect( GroupPoints->CheckButton2, SIGNAL( toggled( bool ) ), this, SLOT( onReverse() ) );
- connect( GroupPoints2->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
- connect( GroupPoints2->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
- connect( GroupPoints2->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupPoints2->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupPoints2->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupPoints2->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupPoints2->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway2() ) );
- connect( GroupPoints2->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
- connect( GroupPoints2->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
- connect( GroupPoints2->LineEdit3, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupPoints2->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupPoints2->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupPoints2->LineEdit3, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_EXTRUSION" ) );
- globalSelection( GEOM_ALLSHAPES );
ConstructorsClicked( 0 );
}
//=================================================================================
void GenerationGUI_PrismDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
-
+ erasePreview();
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
+
switch ( constructorId ) {
case 0:
{
- globalSelection( GEOM_POINT );
+ globalSelection( GEOM_ALLSHAPES );
+
GroupPoints2->hide();
GroupPoints->show();
- //GroupPoints->LineEdit1->setFocus();
- //myEditCurrentArgument = GroupPoints->LineEdit1;
- //displayPreview();
-
myEditCurrentArgument = GroupPoints->LineEdit1;
- GroupPoints->LineEdit1->setText( "" );
+ GroupPoints->LineEdit1->setText( GroupPoints2->LineEdit1->text() ); // keep base
GroupPoints->LineEdit2->setText( "" );
- GroupPoints2->LineEdit1->setText( "" );
- GroupPoints2->LineEdit2->setText( "" );
- GroupPoints2->LineEdit3->setText( "" );
- myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil();
- myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
+ myVec = GEOM::GEOM_Object::_nil();
+ myOkVec = false;
break;
}
case 1:
{
+ globalSelection( GEOM_ALLSHAPES );
+
GroupPoints->hide();
GroupPoints2->show();
myEditCurrentArgument = GroupPoints2->LineEdit1;
- GroupPoints2->LineEdit1->setText( "" );
+ GroupPoints2->LineEdit1->setText( GroupPoints->LineEdit1->text() ); // keep base
GroupPoints2->LineEdit2->setText( "" );
GroupPoints2->LineEdit3->setText( "" );
- myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil();
- myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
- GroupPoints->LineEdit1->setText("");
- GroupPoints->LineEdit2->setText("");
+ myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil();
+ myOkPnt1 = myOkPnt2 = false;
break;
}
updateGeometry();
resize( minimumSize() );
- displayPreview();
+ myEditCurrentArgument->setFocus();
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+
+ if ( !myOkBase )
+ SelectionIntoArgument();
}
// nbSel == 1
Standard_Boolean testResult = Standard_False;
- GEOM::GEOM_Object_ptr aSelectedObject =
+ GEOM::GEOM_Object_var aSelectedObject =
GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
if ( !testResult )
return;
+ bool myOk = true;
+ TopoDS_Shape aShape;
+ QString aName = GEOMBase::GetName( aSelectedObject );
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName.append( ":edge_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != TopAbs_EDGE && myEditCurrentArgument == GroupPoints->LineEdit2 ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ myOk = false;
+ }
+ }
+ }
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
myBase = aSelectedObject;
myOkBase = true;
}
- else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
+ else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && myOk ) {
+ myOkVec = true;
myVec = aSelectedObject;
- myOkVec = true;
}
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
-
- displayPreview();
+ myEditCurrentArgument->setText( aName );
}
-
else { // getConstructorId()==1 - extrusion using 2 points
-
if ( IObjectCount() != 1 ) {
if ( myEditCurrentArgument == GroupPoints2->LineEdit1 )
myOkBase = false;
Standard_Boolean testResult = Standard_False;
GEOM::GEOM_Object_var aSelectedObject =
GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
-
+
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+
+ QString aName = GEOMBase::GetName( aSelectedObject );
+ TopoDS_Shape aShape;
+ bool myOk = true;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if (aMap.Extent() == 1) {
+ int anIndex = aMap(1);
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject;
+ }
+ }
+ else {
+ if ( ( aShape.ShapeType() != TopAbs_VERTEX && myEditCurrentArgument == GroupPoints2->LineEdit2 ) ||
+ ( aShape.ShapeType() != TopAbs_VERTEX && myEditCurrentArgument == GroupPoints2->LineEdit3 ) ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ myOk = false;
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
if ( myEditCurrentArgument == GroupPoints2->LineEdit1 ) {
- myBase = aSelectedObject;
myOkBase = true;
+ myBase = aSelectedObject;
}
- else if ( myEditCurrentArgument == GroupPoints2->LineEdit2 ) {
- myPoint1 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPoints2->LineEdit2 && myOk ) {
myOkPnt1 = true;
+ myPoint1 = aSelectedObject;
}
- else if ( myEditCurrentArgument == GroupPoints2->LineEdit3 ) {
- myPoint2 = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPoints2->LineEdit3 && myOk ) {
myOkPnt2 = true;
+ myPoint2 = aSelectedObject;
}
-
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
-
- displayPreview();
}
+
+ displayPreview();
}
else if ( send == GroupPoints->PushButton2 ) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == GroupPoints2->PushButton1 ) {
GroupPoints2->LineEdit1->setFocus();
else if ( send == GroupPoints2->PushButton2 ) {
GroupPoints2->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit2;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints2->PushButton3 ) {
GroupPoints2->LineEdit3->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit3;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
+
+ myEditCurrentArgument->setFocus();
SelectionIntoArgument();
}
void GenerationGUI_PrismDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- globalSelection( GEOM_ALLSHAPES );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- //GroupPoints->LineEdit1->setFocus();
- //myEditCurrentArgument = GroupPoints->LineEdit1;
- //displayPreview();
+
ConstructorsClicked( getConstructorId() );
}
//=================================================================================
bool GenerationGUI_PrismDlg::isValid( QString& )
{
- return myOkBase && ( myOkVec || (myOkPnt1 && myOkPnt2) );
+ if ( getConstructorId() == 0 )
+ return ( myOkBase && myOkVec ); // by vector and height
+ else
+ return ( myOkBase && myOkPnt1 && myOkPnt2 ); // by two points
}
//=================================================================================
switch ( getConstructorId() ) {
case 0 :
- anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
- MakePrismVecH( myBase, myVec, getHeight() );
+ if ( !myBothway ) {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
+ MakePrismVecH( myBase, myVec, getHeight() );
+ }
+ else {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
+ MakePrismVecH2Ways( myBase, myVec, getHeight() );
+ }
break;
case 1 :
- anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
- MakePrismTwoPnt( myBase, myPoint1, myPoint2 );
+ if ( !myBothway2 ) {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
+ MakePrismTwoPnt( myBase, myPoint1, myPoint2 );
+ }
+ else {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )->
+ MakePrismTwoPnt2Ways( myBase, myPoint1, myPoint2 );
+ }
break;
}
if ( !anObj->_is_nil() )
double anOldValue = GroupPoints->SpinBox_DX->value();
GroupPoints->SpinBox_DX->setValue( -anOldValue );
}
+
+//=================================================================================
+// function : onBothway()
+// purpose :
+//=================================================================================
+void GenerationGUI_PrismDlg::onBothway()
+{
+ bool anOldValue = myBothway;
+ myBothway = !anOldValue;
+ GroupPoints->CheckButton2->setEnabled( !myBothway );
+ displayPreview();
+}
+
+void GenerationGUI_PrismDlg::onBothway2()
+{
+ bool anOldValue = myBothway2;
+ myBothway2 = !anOldValue;
+ displayPreview();
+}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void GenerationGUI_PrismDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit2->text()] = myVec;
+ break;
+ case 1:
+ objMap[GroupPoints2->LineEdit2->text()] = myPoint1;
+ objMap[GroupPoints2->LineEdit3->text()] = myPoint2;
+ break;
+ }
+ addSubshapesToFather( objMap );
+}
#include <GEOMBase_Skeleton.h>
-class DlgRef_3Sel;
class DlgRef_2Sel1Spin2Check;
+class DlgRef_3Sel1Check;
//=================================================================================
// class : GenerationGUI_PrismDlg
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
bool myOkVec;
bool myOkPnt1;
bool myOkPnt2;
+ bool myBothway;
+ bool myBothway2;
DlgRef_2Sel1Spin2Check* GroupPoints;
- DlgRef_3Sel* GroupPoints2; // for second layout for extrusion using 2 points
+ DlgRef_3Sel1Check* GroupPoints2; // for second layout for extrusion using 2 points
private slots:
void ClickOnOk();
void ConstructorsClicked( int );
void ValueChangedInSpinBox();
void onReverse();
+ void onBothway();
+ void onBothway2();
};
#endif // GENERATIONGUI_PRISMDLG_H
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
#include <TopExp_Explorer.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
mainFrame()->RadioButton2->close();
mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
mainFrame()->RadioButton3->close();
+ myBothway = false;
GroupPoints = new DlgRef_2Sel1Spin2Check( centralWidget() );
- GroupPoints->CheckButton1->hide();
GroupPoints->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
GroupPoints->TextLabel1->setText( tr( "GEOM_OBJECT" ) );
GroupPoints->TextLabel2->setText( tr( "GEOM_AXIS" ) );
GroupPoints->PushButton2->setIcon( image1 );
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
+ GroupPoints->CheckButton1->setText( tr( "GEOM_BOTHWAY" ) );
GroupPoints->CheckButton2->setText( tr( "GEOM_REVERSE" ) );
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "revolution.htm" );
+ setHelpFileName( "create_revolution_page.html" );
/* Initialisations */
Init();
double SpecificStep = 5;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 45.0 );
/* signals and slots connections */
connect( GroupPoints->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
connect( GroupPoints->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) );
+ connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway() ) );
connect( GroupPoints->CheckButton2, SIGNAL( toggled( bool ) ), this, SLOT( onReverse() ) );
// VSR: TODO ->>
// nbSel == 1
Standard_Boolean testResult = Standard_False;
GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ QString aName = GEOMBase::GetName( aSelectedObject );
if ( !testResult )
return;
myOkBase = true;
}
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
- myAxis = aSelectedObject;
- myOkAxis = true;
+ if ( testResult && !aSelectedObject->_is_nil() ) {
+ TopoDS_Shape aShape;
+
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+
+ int anIndex = aMap( 1 );
+ aName.append( ":edge_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ myAxis = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ myOkAxis = true;
+ }
+ else {
+ myAxis = aFindedObject;
+ myOkAxis = true;
+ }
+ }
+ else {
+ myOkAxis = true;
+ if ( aShape.ShapeType() != TopAbs_EDGE ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ myOkAxis = false;
+ }
+ myAxis = aSelectedObject;
+ }
+ }
+ }
}
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+ myEditCurrentArgument->setText( aName );
displayPreview();
}
else if ( send == GroupPoints->PushButton2 ) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
SelectionIntoArgument();
}
{
GEOM::GEOM_Object_var anObj;
- anObj = GEOM::GEOM_I3DPrimOperations::_narrow(
- getOperation() )->MakeRevolutionAxisAngle( myBase, myAxis, getAngle() * PI180 );
+ if ( !myBothway ) {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow(
+ getOperation() )->MakeRevolutionAxisAngle( myBase, myAxis, getAngle() * PI180 );
+ }
+ else {
+ anObj = GEOM::GEOM_I3DPrimOperations::_narrow(
+ getOperation() )->MakeRevolutionAxisAngle2Ways( myBase, myAxis, getAngle() * PI180 );
+ }
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
double anOldValue = GroupPoints->SpinBox_DX->value();
GroupPoints->SpinBox_DX->setValue( -anOldValue );
}
+
+
+//=================================================================================
+// function : onBothway()
+// purpose :
+//=================================================================================
+void GenerationGUI_RevolDlg::onBothway()
+{
+ bool anOldValue = myBothway;
+ myBothway = !anOldValue;
+ GroupPoints->CheckButton2->setEnabled( !myBothway );
+ displayPreview();
+}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void GenerationGUI_RevolDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ objMap[GroupPoints->LineEdit2->text()] = myAxis;
+
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
+ virtual void addSubshapesToStudy();
private:
void Init();
GEOM::GEOM_Object_var myAxis; /* Axis of the revolution */
bool myOkBase;
bool myOkAxis;
+ bool myBothway;
DlgRef_2Sel1Spin2Check* GroupPoints;
void SetEditCurrentArgument();
void ValueChangedInSpinBox();
void onReverse();
+ void onBothway();
};
#endif // GENERATIONGUI_REVOLUTIONDLG_H
#include <DlgRef.h>
#include <GEOMBase.h>
+#include <GeometryGUI.h>
#include <GEOMImpl_Types.hxx>
mainFrame()->GroupBoxName->setTitle( tr( "GROUP_NAME" ) );
// Main shape and sub-shapes
- myGroupBox = new DlgRef_1Sel1List4Btn( centralWidget() );
+ myGroupBox = new DlgRef_1Sel1List1Check3Btn( centralWidget() );
myGroupBox->GroupBox1->setTitle( tr( "MAIN_SUB_SHAPES" ) );
myGroupBox->TextLabel1->setText( tr( "MAIN_SHAPE" ) );
myGroupBox->PushButton1->setIcon( iconSelect );
myGroupBox->PushButton1->setEnabled( myMode == CreateGroup );
myGroupBox->LineEdit1->setReadOnly( true );
myGroupBox->LineEdit1->setEnabled( myMode == CreateGroup );
- myGroupBox->PushButton2->setText( tr( "SELECT_SUB_SHAPES" ) );
- myGroupBox->PushButton3->setText( tr( "SELECT_ALL" ) );
- myGroupBox->PushButton4->setText( tr( "ADD" ) );
- myGroupBox->PushButton5->setText( tr( "REMOVE" ) );
+ myGroupBox->CheckButton1->setText( tr( "SELECT_SUB_SHAPES" ) );
+ myGroupBox->PushButton2->setText( tr( "SELECT_ALL" ) );
+ myGroupBox->PushButton3->setText( tr( "ADD" ) );
+ myGroupBox->PushButton4->setText( tr( "REMOVE" ) );
myGroupBox->ListView1->setSelectionMode( QAbstractItemView::ExtendedSelection );
myGroupBox->ListView1->setFlow( QListView::TopToBottom );
myGroupBox->ListView1->setWrapping( true );
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( myGroupBox );
- setHelpFileName( "working_with_groups.htm" );
+ setHelpFileName( "work_with_groups_page.html" );
Init();
}
void GroupGUI_GroupDlg::Init()
{
// san -- TODO: clear selected sub-shapes...
+ myGroupBox->CheckButton1->setChecked( true );
if ( myMode == CreateGroup ) {
initName( tr( "GROUP_PREFIX" ) );
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
- connect( myGroupBox->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
- connect( myGroupBox->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
- connect( myGroupBox->PushButton4, SIGNAL( clicked() ), this, SLOT( add() ) );
- connect( myGroupBox->PushButton5, SIGNAL( clicked() ), this, SLOT( remove() ) );
- connect( myGroupBox->ListView1, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) );
+ connect( myGroupBox->CheckButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( myGroupBox->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( myGroupBox->PushButton3, SIGNAL( clicked() ), this, SLOT( add() ) );
+ connect( myGroupBox->PushButton4, SIGNAL( clicked() ), this, SLOT( remove() ) );
+ connect( myGroupBox->ListView1, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) );
activateSelection();
+ // activate subshapes selection if Main Shape is Selected
+ if ( !CORBA::is_nil( myMainObj ) ) {
+ myEditCurrentArgument = 0;
+ activateSelection();
+ updateState();
+ }
}
//=================================================================================
//=================================================================================
void GroupGUI_GroupDlg::SetEditCurrentArgument()
{
- QPushButton* send = (QPushButton*)sender();
+ const QObject* send = sender();
if ( send == myGroupBox->PushButton1 )
myEditCurrentArgument = myGroupBox->LineEdit1;
- else if ( send == myGroupBox->PushButton2 || send == myGroupBox->PushButton3 )
+ else if ( send == myGroupBox->CheckButton1 || send == myGroupBox->PushButton2 )
myEditCurrentArgument = 0;
activateSelection();
- if ( send == myGroupBox->PushButton3 )
+ if ( send == myGroupBox->PushButton2 )
selectAllSubShapes();
else
updateState();
if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) {
myMainObj = anObj;
myEditCurrentArgument->setText( GEOMBase::GetName( anObj ) );
- updateState();
+ // activate subshapes selection by default
+ myEditCurrentArgument = 0;
+ activateSelection();
+ updateState();
return;
}
}
TColStd_IndexedMapOfInteger aMapIndex;
- if ( IObjectCount() == 1 ) {
- Standard_Boolean aResult = Standard_False;
- GEOM::GEOM_Object_var anObj =
- GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult );
-
- if ( aResult && !anObj->_is_nil() )
- ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->
- selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
+ SALOME_ListIO aSelIOs;
+ SalomeApp_Application* app = myGeomGUI->getApp();
+ if ( app ) {
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ if ( aSelMgr ) {
+ LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap;
+ aSelMgr->selectedSubOwners( aMap );
+ if ( aMap.Size() == 1 )
+ aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
+ }
}
// try to find out and process the object browser selection
return;
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
- GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() );
- GEOM::ListOfGO_var aSubShapes = aShOp->MakeExplode( myMainObj, getShapeType(), false );
+ GEOM::ListOfLong_var aSubShapes = aShOp->SubShapeAllIDs( myMainObj, getShapeType(), false );
if ( !aShOp->IsDone() )
return;
myGroupBox->ListView1->clear();
for ( int i = 0, n = aSubShapes->length(); i < n; i++ ) {
- CORBA::Long anIndex = aLocOp->GetSubShapeIndex( myMainObj, aSubShapes[i] );
+ CORBA::Long anIndex = aSubShapes[i];
if ( anIndex < 0 )
continue;
myGroupBox->ListView1->blockSignals( isBlocked );
highlightSubShapes();
- updateState();
+ //updateState(); // already done in highlightSubShapes()
}
//=================================================================================
TColStd_IndexedMapOfInteger aMapIndex;
- if ( IObjectCount() == 1 ) {
- Standard_Boolean aResult = Standard_False;
- GEOM::GEOM_Object_var anObj =
- GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult );
-
- if ( aResult && !anObj->_is_nil() )
- ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->
- selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
+ SALOME_ListIO aSelIOs;
+ SalomeApp_Application* app = myGeomGUI->getApp();
+ if ( app ) {
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ if ( aSelMgr ) {
+ LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap;
+ aSelMgr->selectedSubOwners( aMap );
+ if ( aMap.Size() == 1 )
+ aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
+ }
}
// try to find out and process the object browser selection
GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() );
GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
+
for ( int i = 0; i < anObjects.length(); i++ ) {
GEOM::GEOM_Object_var aGeomObj = anObjects[i];
GEOM::ListOfGO_var aSubObjects = new GEOM::ListOfGO();
//=================================================================================
void GroupGUI_GroupDlg::remove()
{
+ bool isBlocked = myGroupBox->ListView1->signalsBlocked();
+ myGroupBox->ListView1->blockSignals( true );
+
QListIterator<QListWidgetItem*> it( myGroupBox->ListView1->selectedItems() );
while ( it.hasNext() )
delete it.next();
- updateState();
+
+ myGroupBox->ListView1->blockSignals( isBlocked );
+
+ highlightSubShapes();
}
TColStd_IndexedMapOfInteger aMapIndex;
- if ( IObjectCount() == 1 ) {
- Standard_Boolean aResult = Standard_False;
- GEOM::GEOM_Object_var anObj =
- GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult );
-
- if ( aResult && !anObj->_is_nil() )
- ( (SalomeApp_Application*)(SUIT_Session::session()->activeApplication() ) )->
- selectionMgr()->GetIndexes( firstIObject(), aMapIndex );
+ SALOME_ListIO aSelIOs;
+ SalomeApp_Application* app = myGeomGUI->getApp();
+ if ( app ) {
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+ if ( aSelMgr ) {
+ LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap;
+ aSelMgr->selectedSubOwners( aMap );
+ if ( aMap.Size() == 1 )
+ aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value();
+ }
}
// try to find out and process the object browser selection
if ( !aMapIndex.Extent() && !CORBA::is_nil( myMainObj ) ) {
GEOM::ListOfGO anObjects;
- GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), anObjects );
-
+ //GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), anObjects);
+ GEOMBase::ConvertListOfIOInListOfGO( aSelIOs, anObjects );
+
GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() );
GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
- isAdd = true;
-
- for ( int i = 0; i < anObjects.length(); i++ ) {
- GEOM::GEOM_Object_var aGeomObj = anObjects[i];
- GEOM::ListOfGO_var aSubObjects = new GEOM::ListOfGO();
- TopoDS_Shape aShape;
- if ( GEOMBase::GetShape( aGeomObj, aShape, getShapeType() ) ) {
- aSubObjects->length( 1 );
- aSubObjects[0] = aGeomObj;
- }
- else if ( aGeomObj->GetType() == GEOM_GROUP )
- aSubObjects = aShapesOp->MakeExplode( aGeomObj, getShapeType(), false );
- else {
- aMapIndex.Clear();
- break;
- }
-
- for ( int i = 0; i < aSubObjects->length(); i++ ) {
- TopoDS_Shape aShape;
- aSubObjects[i];
- if ( GEOMBase::GetShape( aSubObjects[i], aShape, getShapeType() ) ) {
- CORBA::Long anIndex = aLocOp->GetSubShapeIndex( myMainObj, aSubObjects[i] );
- if ( anIndex >= 0 )
- aMapIndex.Add( anIndex );
- else
- isAdd = false;
- }
- else
- isAdd = false;
-
- if ( !isAdd ) {
- aMapIndex.Clear();
- break;
- }
- }
-
- if ( !isAdd ) {
- aMapIndex.Clear();
- break;
- }
- }
+ isAdd = true;
+
+ for ( int i = 0; i < anObjects.length(); i++ ) {
+ GEOM::GEOM_Object_var aGeomObj = anObjects[i];
+ GEOM::ListOfGO_var aSubObjects = new GEOM::ListOfGO();
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aGeomObj, aShape, getShapeType() ) ) {
+ aSubObjects->length(1);
+ aSubObjects[0] = aGeomObj;
+ }
+ else if ( aGeomObj->GetType() == GEOM_GROUP ) {
+ aSubObjects = aShapesOp->MakeExplode( aGeomObj, getShapeType(), false );
+ }
+ else {
+ aMapIndex.Clear();
+ break;
+ }
+
+ for ( int i = 0; i < aSubObjects->length(); i++ ) {
+ TopoDS_Shape aShape;
+ aSubObjects[i];
+ if ( GEOMBase::GetShape( aSubObjects[i], aShape, getShapeType() ) ) {
+ CORBA::Long anIndex = aLocOp->GetSubShapeIndex( myMainObj, aSubObjects[i] );
+ if ( anIndex >= 0 )
+ aMapIndex.Add( anIndex );
+ else
+ isAdd = false;
+ }
+ else {
+ isAdd = false;
+ }
+
+ if ( !isAdd ) {
+ aMapIndex.Clear();
+ break;
+ }
+ }
+ if ( !isAdd ) {
+ aMapIndex.Clear();
+ break;
+ }
+ }
}
isAdd = aMapIndex.Extent() > 0;
- myGroupBox->PushButton4->setEnabled( !myEditCurrentArgument && !CORBA::is_nil( myMainObj ) && isAdd );
+ myGroupBox->PushButton3->setEnabled( !myEditCurrentArgument && !CORBA::is_nil( myMainObj ) && isAdd );
bool hasSel = myGroupBox->ListView1->selectedItems().count() > 0;
- myGroupBox->PushButton5->setEnabled( hasSel );
+ myGroupBox->PushButton4->setEnabled( hasSel );
+ myGroupBox->CheckButton1->setEnabled( !CORBA::is_nil( myMainObj ) );
myGroupBox->PushButton2->setEnabled( !CORBA::is_nil( myMainObj ) );
- myGroupBox->PushButton3->setEnabled( !CORBA::is_nil( myMainObj ) );
}
//=================================================================================
myBusy = true;
- for ( int ii = 0, nn = myGroupBox->ListView1->count(); ii < nn; ii++ )
+ int ii = 0, nn = myGroupBox->ListView1->count();
+ for ( ; ii < nn; ii++ )
if ( myGroupBox->ListView1->item( ii )->isSelected() )
anIds.Add( myGroupBox->ListView1->item( ii )->text().toInt() );
- LightApp_SelectionMgr* aSelMgr =
- ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr();
+ SalomeApp_Application* app = myGeomGUI->getApp();
+ LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
aSelMgr->clearSelected();
+ //if (nn < 3000) aSelMgr->AddOrRemoveIndex(aSh->getIO(), anIds, false);
aSelMgr->AddOrRemoveIndex( aSh->getIO(), anIds, false );
myBusy = false;
- updateState();
+ //updateState();
+ if ( nn < 3000 ) {
+ updateState();
+ }
+ else {
+ myGroupBox->PushButton3->setEnabled( true );
+ myGroupBox->PushButton4->setEnabled( true );
+ }
}
//=================================================================================
if ( !anOp->IsDone() )
return false;
- for ( int i = 0, n = aCurrList->length(); i < n; i++ ) {
- anOp->RemoveObject( aGroup, aCurrList[i] );
- if ( !anOp->IsDone() )
+ if ( aCurrList->length() > 0 ) {
+ anOp->DifferenceIDs( aGroup, aCurrList );
+ if ( !anOp->IsDone() )
return false;
}
- for ( int ii = 0, nn = myGroupBox->ListView1->count(); ii < nn; ii++ ) {
- anOp->AddObject( aGroup, myGroupBox->ListView1->item( ii )->text().toInt() );
- if ( !anOp->IsDone() )
+ int ii, nn = myGroupBox->ListView1->count();
+ if ( nn > 0 ) {
+ GEOM::ListOfLong_var aNewList = new GEOM::ListOfLong;
+ aNewList->length( nn );
+ for ( ii = 0; ii < nn; ii++ ) {
+ aNewList[ii] = myGroupBox->ListView1->item( ii )->text().toInt();
+ }
+ anOp->UnionIDs( aGroup, aNewList );
+ if ( !anOp->IsDone() )
return false;
}
}
return aFatherObj._retn();
}
-
#include <TopAbs_ShapeEnum.hxx>
-class DlgRef_1Sel1List4Btn;
+class DlgRef_1Sel1List1Check3Btn;
//=================================================================================
// class : GroupGUI_GroupDlg
GEOM::GEOM_Object_var myMainObj;
GEOM::GEOM_Object_var myGroup;
- DlgRef_1Sel1List4Btn* myGroupBox;
+ DlgRef_1Sel1List1Check3Btn* myGroupBox;
};
#endif // GROUPGUI_GROUPDLG_H
# Package : src (source files directory)
#
-SUBDIRS = OBJECT ARCHIMEDE NMTDS NMTTools NMTAlgo GEOMAlgo SKETCHER GEOM BREPExport BREPImport IGESExport IGESImport STEPExport STEPImport STLExport ShHealOper GEOMImpl GEOM_I GEOMClient DlgRef GEOMFiltersSelection GEOMGUI GEOMBase GEOMToolsGUI DisplayGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI GroupGUI BlocksGUI GEOM_I_Superv GEOM_SWIG
+SUBDIRS = ARCHIMEDE NMTDS NMTTools GEOMAlgo SKETCHER GEOM BREPExport BREPImport IGESExport IGESImport STEPExport STEPImport STLExport ShHealOper GEOMImpl GEOM_I GEOMClient GEOM_I_Superv GEOM_SWIG
+
+if GEOM_ENABLE_GUI
+ SUBDIRS+= OBJECT DlgRef GEOMFiltersSelection GEOMGUI GEOMBase GEOMToolsGUI DisplayGUI BasicGUI PrimitiveGUI GenerationGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI RepairGUI MeasureGUI GroupGUI BlocksGUI GEOM_SWIG_WITHIHM
+endif
MeasureGUI_Skeleton.h \
MeasureGUI_PropertiesDlg.h \
MeasureGUI_CenterMassDlg.h \
+ MeasureGUI_NormaleDlg.h \
MeasureGUI_InertiaDlg.h \
MeasureGUI_BndBoxDlg.h \
MeasureGUI_DistanceDlg.h \
+ MeasureGUI_AngleDlg.h \
MeasureGUI_MaxToleranceDlg.h \
MeasureGUI_WhatisDlg.h \
MeasureGUI_CheckShapeDlg.h \
MeasureGUI_Skeleton.cxx \
MeasureGUI_PropertiesDlg.cxx \
MeasureGUI_CenterMassDlg.cxx \
+ MeasureGUI_NormaleDlg.cxx \
MeasureGUI_InertiaDlg.cxx \
MeasureGUI_BndBoxDlg.cxx \
MeasureGUI_DistanceDlg.cxx \
+ MeasureGUI_AngleDlg.cxx \
MeasureGUI_MaxToleranceDlg.cxx \
MeasureGUI_WhatisDlg.cxx \
MeasureGUI_CheckShapeDlg.cxx \
MeasureGUI_Skeleton_moc.cxx \
MeasureGUI_PropertiesDlg_moc.cxx \
MeasureGUI_CenterMassDlg_moc.cxx \
+ MeasureGUI_NormaleDlg_moc.cxx \
MeasureGUI_InertiaDlg_moc.cxx \
MeasureGUI_BndBoxDlg_moc.cxx \
MeasureGUI_DistanceDlg_moc.cxx \
+ MeasureGUI_AngleDlg_moc.cxx \
MeasureGUI_MaxToleranceDlg_moc.cxx \
MeasureGUI_WhatisDlg_moc.cxx \
MeasureGUI_CheckShapeDlg_moc.cxx \
ui_MeasureGUI_1Sel3LineEdit_QTD.h \
ui_MeasureGUI_1Sel6LineEdit_QTD.h \
ui_MeasureGUI_2Sel1LineEdit_QTD.h \
+ ui_MeasureGUI_2Sel4LineEdit_QTD.h \
ui_MeasureGUI_SkeletonBox_QTD.h
BUILT_SOURCES = $(UIC_FILES)
#include "MeasureGUI_PropertiesDlg.h" // Method PROPERTIES
#include "MeasureGUI_CenterMassDlg.h" // Method CENTER MASS
+#include "MeasureGUI_NormaleDlg.h" // Method NORMALE
#include "MeasureGUI_InertiaDlg.h" // Method INERTIA
#include "MeasureGUI_BndBoxDlg.h" // Method BNDBOX
#include "MeasureGUI_DistanceDlg.h" // Method DISTANCE
+#include "MeasureGUI_AngleDlg.h" // Method ANGLE
#include "MeasureGUI_MaxToleranceDlg.h" // Method MAXTOLERANCE
#include "MeasureGUI_WhatisDlg.h" // Method WHATIS
#include "MeasureGUI_CheckShapeDlg.h" // Method CHECKSHAPE
case 703:
dlg = new MeasureGUI_InertiaDlg( getGeometryGUI(), parent );
break; // INERTIA
+ case 704 :
+ dlg = new MeasureGUI_NormaleDlg( getGeometryGUI(), parent );
+ break; // NORMALE
case 7041:
dlg = new MeasureGUI_BndBoxDlg( getGeometryGUI(), parent );
break; // BOUNDING BOX
case 7042:
dlg = new MeasureGUI_DistanceDlg( getGeometryGUI(), parent );
break; // MIN DISTANCE
+ case 7043:
+ dlg = new MeasureGUI_AngleDlg( getGeometryGUI(), parent );
+ break; // ANGLE
case 705:
dlg = new MeasureGUI_MaxToleranceDlg( getGeometryGUI(), parent );
break; // MAXTOLERANCE
--- /dev/null
+<ui version="4.0" >
+ <class>MeasureGUI_2Sel4LineEdit_QTD</class>
+ <widget class="QWidget" name="MeasureGUI_2Sel4LineEdit_QTD" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>132</width>
+ <height>183</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TextLabel1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL1</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="PushButton1" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QLineEdit" name="LineEdit1" >
+ <property name="minimumSize" >
+ <size>
+ <width>50</width>
+ <height>0</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="TextLabel2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL2</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QPushButton" name="PushButton2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QLineEdit" name="LineEdit2" >
+ <property name="minimumSize" >
+ <size>
+ <width>50</width>
+ <height>0</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="TextLabel3" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL3</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="2" >
+ <widget class="QLineEdit" name="LineEdit3" />
+ </item>
+ <item row="3" column="0" >
+ <widget class="QLabel" name="TextLabel4" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL4</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" colspan="2" >
+ <widget class="QLineEdit" name="LineEdit4" />
+ </item>
+ <item row="4" column="0" >
+ <widget class="QLabel" name="TextLabel5" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL5</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1" colspan="2" >
+ <widget class="QLineEdit" name="LineEdit5" />
+ </item>
+ <item row="5" column="0" >
+ <widget class="QLabel" name="TextLabel6" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>TL6</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1" colspan="2" >
+ <widget class="QLineEdit" name="LineEdit6" />
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : MeasureGUI_AngleDlg.cxx
+// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
+//
+
+#include "MeasureGUI_AngleDlg.h"
+#include "MeasureGUI_Widgets.h"
+
+#include <GEOMBase.h>
+#include <DlgRef.h>
+
+#include <SUIT_Desktop.h>
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+#include <SalomeApp_Tools.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_ViewWindow.h>
+#include <SUIT_ViewManager.h>
+#include <SOCC_Prs.h>
+#include <SOCC_ViewModel.h>
+//#include "SalomeApp_Application.h"
+
+// OCCT Includes
+#include <AIS_AngleDimension.hxx>
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <BRep_Tool.hxx>
+#include <BRepBuilderAPI_MakeEdge.hxx>
+#include <BRepBuilderAPI_MakeVertex.hxx>
+#include <TopExp.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <Geom_Plane.hxx>
+#include <gce_MakePln.hxx>
+#include <Precision.hxx>
+
+// QT Includes
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qbuttongroup.h>
+
+#include "GEOMImpl_Types.hxx"
+
+#include "utilities.h"
+
+#include <Standard_Failure.hxx>
+#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+
+//=================================================================================
+// class : MeasureGUI_AngleDlg()
+// purpose : Constructs a MeasureGUI_AngleDlg which is a child of 'parent', with the
+// name 'name' and widget flags set to 'f'.
+// The dialog will by default be modeless, unless you set 'modal' to
+// TRUE to construct a modal dialog.
+//=================================================================================
+MeasureGUI_AngleDlg::MeasureGUI_AngleDlg( GeometryGUI* GUI, QWidget* parent )
+ : MeasureGUI_Skeleton( GUI, parent )
+{
+ QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_ANGLE" ) ) );
+ QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+
+ setWindowTitle( tr( "GEOM_MEASURE_ANGLE_TITLE" ) );
+
+ // Widgets
+
+ mainFrame()->GroupConstructors->setTitle( tr( "GEOM_MEASURE_ANGLE_ANGLE" ) );
+ mainFrame()->RadioButton1->setIcon( image0 );
+
+ myGrp = new MeasureGUI_2Sel1LineEdit( centralWidget() );
+ myGrp->GroupBox1->setTitle( tr( "GEOM_MEASURE_ANGLE_OBJ" ) );
+ myGrp->TextLabel1->setText( tr( "GEOM_OBJECT_I" ).arg( "1" ) );
+ myGrp->TextLabel2->setText( tr( "GEOM_OBJECT_I" ).arg( "2" ) );
+ myGrp->TextLabel3->setText( tr( "GEOM_MEASURE_ANGLE_IS" ) );
+ myGrp->LineEdit3->setReadOnly( true );
+ myGrp->PushButton1->setIcon( image1 );
+ myGrp->PushButton2->setIcon( image1 );
+ myGrp->LineEdit1->setReadOnly( true );
+ myGrp->LineEdit2->setReadOnly( true );
+
+ QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
+ layout->setMargin( 0 ); layout->setSpacing( 6 );
+ layout->addWidget( myGrp );
+
+ // Help page reference
+ myHelpFileName = "using_measurement_tools_page.html#angle_anchor";
+
+ // Initialisation
+ Init();
+}
+
+//=================================================================================
+// function : ~MeasureGUI_AngleDlg()
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+MeasureGUI_AngleDlg::~MeasureGUI_AngleDlg()
+{
+}
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void MeasureGUI_AngleDlg::Init()
+{
+ mySelBtn = myGrp->PushButton1;
+ mySelEdit = myGrp->LineEdit1;
+ mySelBtn2 = myGrp->PushButton2;
+ mySelEdit2 = myGrp->LineEdit2;
+
+ myEditCurrentArgument = mySelEdit;
+
+ connect( mySelEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+
+ globalSelection( GEOM_LINE );
+ MeasureGUI_Skeleton::Init();
+}
+
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection has changed
+//=================================================================================
+void MeasureGUI_AngleDlg::SelectionIntoArgument()
+{
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_var aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+
+ if ( !testResult )
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+
+ if ( myEditCurrentArgument == mySelEdit )
+ myObj = aSelectedObject;
+ else
+ myObj2 = aSelectedObject;
+
+ processObject();
+}
+
+//=================================================================================
+// function : processObject()
+// purpose : Fill dialogs fields in accordance with myObj and myObj2
+//=================================================================================
+void MeasureGUI_AngleDlg::processObject()
+{
+ myGrp->LineEdit1->setText( !myObj->_is_nil() ? GEOMBase::GetName( myObj ) : "" );
+ myGrp->LineEdit2->setText( !myObj2->_is_nil() ? GEOMBase::GetName( myObj2 ) : "" );
+
+ double anAngle = 0.;
+ if ( getParameters( anAngle ) ) {
+ myGrp->LineEdit3->setText( DlgRef::PrintDoubleValue( anAngle ) );
+ redisplayPreview();
+ }
+ else {
+ myGrp->LineEdit3->setText( "" );
+ erasePreview();
+ }
+}
+
+//=================================================================================
+// function : getParameters()
+// purpose : Get angle between objects
+//=================================================================================
+bool MeasureGUI_AngleDlg::getParameters( double& theAngle )
+{
+ QString msg;
+ if ( isValid( msg ) ) {
+ try {
+ theAngle = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetAngle( myObj, myObj2 );
+ }
+ catch( const SALOME::SALOME_Exception& e ) {
+ SalomeApp_Tools::QtCatchCorbaException( e );
+ return false;
+ }
+
+ bool isDone = getOperation()->IsDone();
+ if ( !isDone ) {
+ CORBA::String_var aMsg = getOperation()->GetErrorCode();
+ SUIT_MessageBox::warning( this,
+ QObject::tr( "WRN_WARNING" ),
+ QObject::tr( aMsg.in() ) );
+ }
+ return isDone;
+ }
+
+ return false;
+}
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose :
+//=================================================================================
+void MeasureGUI_AngleDlg::SetEditCurrentArgument()
+{
+ QPushButton* send = (QPushButton*)sender();
+
+ if ( send == mySelBtn ) {
+ mySelEdit->setFocus();
+ myEditCurrentArgument = mySelEdit;
+ }
+ else {
+ mySelEdit2->setFocus();
+ myEditCurrentArgument = mySelEdit2;
+ }
+
+ globalSelection( GEOM_LINE );
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose :
+//=================================================================================
+void MeasureGUI_AngleDlg::LineEditReturnPressed()
+{
+ QLineEdit* send = (QLineEdit*)sender();
+
+ if ( send == mySelEdit )
+ myEditCurrentArgument = mySelEdit;
+ else
+ myEditCurrentArgument = mySelEdit2;
+
+ if ( GEOMBase::SelectionByNameInDialogs( this, mySelEdit->text(), selectedIO() ) )
+ mySelEdit->setText( mySelEdit->text() );
+}
+
+//=================================================================================
+// function : buildPrs()
+// purpose :
+//=================================================================================
+SALOME_Prs* MeasureGUI_AngleDlg::buildPrs()
+{
+ double anAngle = 0.;
+
+ SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+
+ if ( myObj->_is_nil() || myObj2->_is_nil() || !getParameters( anAngle ) ||
+ vw->getViewManager()->getType() != OCCViewer_Viewer::Type() )
+ return 0;
+
+ if ( anAngle > Precision::Angular() ) {
+ try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
+ TopoDS_Shape S1, S2;
+ if ( GEOMBase::GetShape( myObj , S1, TopAbs_EDGE ) &&
+ GEOMBase::GetShape( myObj2, S2, TopAbs_EDGE ) ) {
+ TopoDS_Edge anEdge1 = TopoDS::Edge( S1 );
+ TopoDS_Edge anEdge2 = TopoDS::Edge( S2 );
+
+ // Build a plane for angle dimension presentation {P11, P12, P3}
+ TopoDS_Vertex V11, V12, V21, V22;
+ TopExp::Vertices( anEdge1, V11, V12 );
+ TopExp::Vertices( anEdge2, V21, V22 );
+
+ gp_Pnt aP11 = BRep_Tool::Pnt( TopExp::FirstVertex( anEdge1 ) );
+ gp_Pnt aP12 = BRep_Tool::Pnt( TopExp::LastVertex ( anEdge1 ) );
+
+ gp_Pnt aP21 = BRep_Tool::Pnt( TopExp::FirstVertex( anEdge2 ) );
+ gp_Pnt aP22 = BRep_Tool::Pnt( TopExp::LastVertex ( anEdge2 ) );
+
+ // *P3
+ // \
+ // \
+ // *P22
+ // /
+ // /
+ // P11 / P12
+ // *-----/----------*
+ // \ /
+ // \ /
+ // *P21
+ gp_Pnt aP3 ( aP22.XYZ() + aP11.XYZ() - aP21.XYZ() );
+
+ gce_MakePln gce_MP( aP11, aP12, aP3 );
+ Handle(Geom_Plane) aPlane = new Geom_Plane( gce_MP.Value() );
+
+ // Build the angle dimension presentation
+ QString aLabel;
+ aLabel.sprintf( "%.1f", anAngle );
+
+ Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension
+ ( anEdge1, anEdge2, aPlane, anAngle * PI180,
+ TCollection_ExtendedString( (Standard_CString)aLabel.toLatin1().data() ) );
+
+ SOCC_Prs* aPrs =
+ dynamic_cast<SOCC_Prs*>( ( (SOCC_Viewer*)( vw->getViewManager()->getViewModel() ) )->CreatePrs( 0 ) );
+
+ if ( aPrs )
+ aPrs->AddObject( anIO );
+
+ return aPrs;
+ }
+ }
+ catch( Standard_Failure ) {
+ }
+ }
+
+ return 0;
+}
+
+//=================================================================================
+// function : isValid()
+// purpose :
+//=================================================================================
+bool MeasureGUI_AngleDlg::isValid( QString& msg )
+{
+ return MeasureGUI_Skeleton::isValid( msg ) && !myObj2->_is_nil();
+}
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : MeasureGUI_AngleDlg.h
+// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
+//
+
+#ifndef MEASUREGUI_ANGLEDLG_H
+#define MEASUREGUI_ANGLEDLG_H
+
+#include "MeasureGUI_Skeleton.h"
+
+class MeasureGUI_2Sel1LineEdit;
+
+//=================================================================================
+// class : MeasureGUI_AngleDlg
+// purpose :
+//=================================================================================
+class MeasureGUI_AngleDlg : public MeasureGUI_Skeleton
+{
+ Q_OBJECT
+
+public:
+ MeasureGUI_AngleDlg( GeometryGUI*, QWidget* );
+ ~MeasureGUI_AngleDlg();
+
+protected:
+ // redefined from GEOMBase_Helper and MeasureGUI_Skeleton
+ virtual void processObject();
+ virtual SALOME_Prs* buildPrs();
+ virtual void SelectionIntoArgument();
+ virtual void LineEditReturnPressed();
+ virtual void SetEditCurrentArgument();
+ virtual bool isValid( QString& );
+
+private:
+ void Init();
+ bool getParameters( double& );
+
+private:
+ QLineEdit* myEditCurrentArgument;
+ QLineEdit* mySelEdit2;
+ QPushButton* mySelBtn2;
+ MeasureGUI_2Sel1LineEdit* myGrp;
+
+ GEOM::GEOM_Object_var myObj2;
+};
+
+#endif // MEASUREGUI_ANGLEDLG_H
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Bounding_box";
+ myHelpFileName = "using_measurement_tools_page.html#bounding_box_anchor";
/* Initialisation */
Init();
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Center_gravity";
+ myHelpFileName = "using_measurement_tools_page.html#center_mass_anchor";
/* Initialisation */
Init();
getParameters( x, y, z );
myGrp->LineEdit1->setText( GEOMBase::GetName( myObj ) );
- myGrp->LineEdit2->setText( QString( "%1" ).arg( x ) );
- myGrp->LineEdit3->setText( QString( "%1" ).arg( y ) );
- myGrp->LineEdit4->setText( QString( "%1" ).arg( z ) );
+ myGrp->LineEdit2->setText( DlgRef::PrintDoubleValue( x ) );
+ myGrp->LineEdit3->setText( DlgRef::PrintDoubleValue( y ) );
+ myGrp->LineEdit4->setText( DlgRef::PrintDoubleValue( z ) );
displayPreview();
}
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Check_comp_blocks";
+ myHelpFileName = "using_measurement_tools_page.html#check_compound_anchor";
/* Initialisation */
Init();
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#check";
+ myHelpFileName = "using_measurement_tools_page.html#check_anchor";
/* Initialisation */
Init();
#include "MeasureGUI_Widgets.h"
#include <GEOMBase.h>
+#include <DlgRef.h>
#include <SUIT_Session.h>
#include <SUIT_Desktop.h>
mainFrame()->GroupConstructors->setTitle( tr( "GEOM_DISTANCE" ) );
mainFrame()->RadioButton1->setIcon( image0 );
- myGrp = new MeasureGUI_2Sel1LineEdit( centralWidget() );
+ myGrp = new MeasureGUI_2Sel4LineEdit( centralWidget() );
myGrp->GroupBox1->setTitle( tr( "GEOM_MINDIST_OBJ" ) );
myGrp->TextLabel1->setText( tr( "GEOM_OBJECT_I" ).arg( "1" ) );
myGrp->TextLabel2->setText( tr( "GEOM_OBJECT_I" ).arg( "2" ) );
myGrp->TextLabel3->setText( tr( "GEOM_LENGTH" ) );
+ myGrp->TextLabel4->setText( tr( "GEOM_DX" ) );
+ myGrp->TextLabel5->setText( tr( "GEOM_DY" ) );
+ myGrp->TextLabel6->setText( tr( "GEOM_DZ" ) );
myGrp->LineEdit3->setReadOnly( true );
myGrp->PushButton1->setIcon( image1 );
myGrp->PushButton2->setIcon( image1 );
myGrp->LineEdit1->setReadOnly( true );
myGrp->LineEdit2->setReadOnly( true );
+ myGrp->LineEdit4->setReadOnly( true );
+ myGrp->LineEdit5->setReadOnly( true );
+ myGrp->LineEdit6->setReadOnly( true );
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->setMargin( 0 ); layout->setSpacing( 6 );
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Min_distance";
+ myHelpFileName = "using_measurement_tools_page.html#min_distance_anchor";
/* Initialisation */
Init();
connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
MeasureGUI_Skeleton::Init();
-
}
//=================================================================================
// function : processObject()
-// purpose : Fill dialogs fileds in accordance with myObj and myObj2
+// purpose : Fill dialogs fields in accordance with myObj and myObj2
//=================================================================================
void MeasureGUI_DistanceDlg::processObject()
{
gp_Pnt aPnt1, aPnt2;
double aDist = 0.;
if ( getParameters( aDist, aPnt1, aPnt2 ) ) {
- myGrp->LineEdit3->setText( QString( "%1" ).arg( aDist ) );
+ myGrp->LineEdit3->setText( DlgRef::PrintDoubleValue( aDist ) );
+
+ gp_XYZ aVec = aPnt2.XYZ() - aPnt1.XYZ();
+ myGrp->LineEdit4->setText( DlgRef::PrintDoubleValue( aVec.X() ) );
+ myGrp->LineEdit5->setText( DlgRef::PrintDoubleValue( aVec.Y() ) );
+ myGrp->LineEdit6->setText( DlgRef::PrintDoubleValue( aVec.Z() ) );
+
redisplayPreview();
}
else {
myGrp->LineEdit3->setText( "" );
+ myGrp->LineEdit4->setText( "" );
+ myGrp->LineEdit5->setText( "" );
+ myGrp->LineEdit6->setText( "" );
erasePreview();
}
-
}
//=================================================================================
double aDist = 0.;
gp_Pnt aPnt1( 0, 0, 0 ), aPnt2( 0, 0, 0 );
- if ( myObj->_is_nil() || myObj2->_is_nil() || !getParameters( aDist, aPnt1, aPnt2 ) ||
- SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType()
- != OCCViewer_Viewer::Type() )
+
+ SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
+
+ if ( myObj->_is_nil() || myObj2->_is_nil() ||
+ !getParameters( aDist, aPnt1, aPnt2 ) ||
+ vw->getViewManager()->getType() != OCCViewer_Viewer::Type() )
return 0;
try
( aPnt1.Y() + aPnt2.Y() ) / 2,
( aPnt1.Z() + aPnt2.Z() ) / 2 + 100 );
-
gp_Vec va( aPnt3, aPnt1 );
gp_Vec vb( aPnt3, aPnt2 );
Handle( AIS_LengthDimension ) anIO = new AIS_LengthDimension(
aVert1, aVert2, P, aDist, TCollection_ExtendedString( (Standard_CString)aLabel.toLatin1().constData() ) );
- SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
SOCC_Prs* aPrs = dynamic_cast<SOCC_Prs*>( ((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs( 0 ) );
-
- //QAD_ViewFrame* vf = GEOM_Displayer::GetActiveView();
- //OCCViewer_Prs* aPrs = dynamic_cast<OCCViewer_Prs*>( vf->CreatePrs( 0 ) );
if ( aPrs )
aPrs->AddObject( anIO );
{
return MeasureGUI_Skeleton::isValid( msg ) && !myObj2->_is_nil();
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
#include "MeasureGUI_Skeleton.h"
-class MeasureGUI_2Sel1LineEdit;
+class MeasureGUI_2Sel4LineEdit;
class gp_Pnt;
//=================================================================================
QLineEdit* mySelEdit2;
QPushButton* mySelBtn2;
- MeasureGUI_2Sel1LineEdit* myGrp;
+ MeasureGUI_2Sel4LineEdit* myGrp;
GEOM::GEOM_Object_var myObj2;
};
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Inertia_axis";
+ myHelpFileName = "using_measurement_tools_page.html#inertia_anchor";
/* Initialisation */
Init();
return getOperation()->IsDone();
}
}
-
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Tolerance";
+ myHelpFileName = "using_measurement_tools_page.html#tolerance_anchor";
/* Initialisation */
Init();
return getOperation()->IsDone();
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : MeasureGUI_NormaleDlg.cxx
+// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
+//
+
+#include "MeasureGUI_NormaleDlg.h"
+
+#include <DlgRef.h>
+#include <GEOMBase.h>
+#include <GeometryGUI.h>
+
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+#include <SalomeApp_Application.h>
+#include <LightApp_SelectionMgr.h>
+
+#include "GEOMImpl_Types.hxx"
+
+//=================================================================================
+// class : MeasureGUI_NormaleDlg()
+// purpose : Constructs a MeasureGUI_NormaleDlg which is a child of 'parent', with the
+// name 'name' and widget flags set to 'f'.
+// The dialog will by default be modeless, unless you set 'modal' to
+// TRUE to construct a modal dialog.
+//=================================================================================
+MeasureGUI_NormaleDlg::MeasureGUI_NormaleDlg( GeometryGUI* theGeometryGUI, QWidget* parent )
+ : GEOMBase_Skeleton( theGeometryGUI, parent, false )
+{
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_NORMALE" ) ) );
+ QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+
+ setWindowTitle( tr( "GEOM_NORMALE_TITLE" ) );
+
+ /***************************************************************/
+ mainFrame()->GroupConstructors->setTitle( tr( "GEOM_NORMALE" ) );
+ mainFrame()->RadioButton1->setIcon( image0 );
+ mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose );
+ mainFrame()->RadioButton2->close();
+ mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
+ mainFrame()->RadioButton3->close();
+
+ GroupArgs = new DlgRef_2Sel ( centralWidget() );
+ GroupArgs->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
+
+ GroupArgs->TextLabel1->setText( tr( "GEOM_FACE" ) );
+ GroupArgs->TextLabel2->setText( tr( "GEOM_POINT" ) );
+
+ GroupArgs->PushButton1->setIcon( image1 );
+ GroupArgs->PushButton2->setIcon( image1 );
+
+ QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
+ layout->setMargin( 0 ); layout->setSpacing( 6 );
+ layout->addWidget( GroupArgs );
+
+ /***************************************************************/
+
+ setHelpFileName("using_measurement_tools_page.html#normale_anchor");
+
+ Init();
+}
+
+//=================================================================================
+// function : ~MeasureGUI_NormaleDlg()
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+MeasureGUI_NormaleDlg::~MeasureGUI_NormaleDlg()
+{
+}
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::Init()
+{
+ /* init variables */
+ GroupArgs->LineEdit1->setReadOnly( true );
+ GroupArgs->LineEdit2->setReadOnly( true );
+
+ myFace = GEOM::GEOM_Object::_nil();
+ myPoint = GEOM::GEOM_Object::_nil();
+
+ myEditCurrentArgument = GroupArgs->LineEdit1;
+ globalSelection( GEOM_FACE );
+
+ /* signals and slots connections */
+ connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
+ connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
+
+ connect( GroupArgs->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupArgs->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+
+ connect( GroupArgs->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+ connect( GroupArgs->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+
+ connect( myGeomGUI->getApp()->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+
+ initName(tr("GEOM_VECTOR_NORMALE"));
+
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::ClickOnOk()
+{
+ if ( ClickOnApply() )
+ ClickOnCancel();
+}
+
+//=================================================================================
+// function : ClickOnApply()
+// purpose :
+//=================================================================================
+bool MeasureGUI_NormaleDlg::ClickOnApply()
+{
+ if ( !onAccept() )
+ return false;
+
+ initName();
+ return true;
+}
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection as changed or other case
+//=================================================================================
+void MeasureGUI_NormaleDlg::SelectionIntoArgument()
+{
+ erasePreview();
+ myEditCurrentArgument->setText( "" );
+
+ if ( myEditCurrentArgument == GroupArgs->LineEdit1 ) {
+ myFace = GEOM::GEOM_Object::_nil();
+ }
+ else if ( myEditCurrentArgument == GroupArgs->LineEdit2 ) {
+ myPoint = GEOM::GEOM_Object::_nil();
+ }
+
+ if ( IObjectCount() != 1 )
+ return;
+
+ // nbSel == 1
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_var aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+
+ if ( !testResult )
+ return;
+
+ if ( myEditCurrentArgument == GroupArgs->LineEdit1 ) {
+ myFace = aSelectedObject;
+ }
+ else if ( myEditCurrentArgument == GroupArgs->LineEdit2 ) {
+ myPoint = aSelectedObject;
+ }
+
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+ displayPreview();
+}
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::LineEditReturnPressed()
+{
+ QLineEdit* send = (QLineEdit*)sender();
+ if ( send == GroupArgs->LineEdit1 ||
+ send == GroupArgs->LineEdit2 ) {
+ myEditCurrentArgument = send;
+ GEOMBase_Skeleton::LineEditReturnPressed();
+ }
+}
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::SetEditCurrentArgument()
+{
+ QPushButton* send = (QPushButton*)sender();
+
+ if ( send == GroupArgs->PushButton1 ) {
+ myEditCurrentArgument = GroupArgs->LineEdit1;
+ globalSelection( GEOM_FACE );
+ }
+ else if ( send == GroupArgs->PushButton2 ) {
+ myEditCurrentArgument = GroupArgs->LineEdit2;
+ globalSelection( GEOM_POINT );
+ }
+
+ myEditCurrentArgument->setFocus();
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::ActivateThisDialog()
+{
+ GEOMBase_Skeleton::ActivateThisDialog();
+
+ SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : enterEvent()
+// purpose :
+//=================================================================================
+void MeasureGUI_NormaleDlg::enterEvent( QEvent* e )
+{
+ if ( !mainFrame()->GroupConstructors->isEnabled() )
+ ActivateThisDialog();
+}
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr MeasureGUI_NormaleDlg::createOperation()
+{
+ return getGeomEngine()->GetIMeasureOperations( getStudyId() );
+}
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool MeasureGUI_NormaleDlg::isValid( QString& )
+{
+ //return !CORBA::is_nil(myFace) && !CORBA::is_nil(myPoint);
+ return !CORBA::is_nil( myFace );
+}
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool MeasureGUI_NormaleDlg::execute( ObjectList& objects )
+{
+ GEOM::GEOM_Object_var anObj =
+ GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetNormal( myFace, myPoint );
+
+ if ( !anObj->_is_nil() )
+ objects.push_back( anObj._retn() );
+
+ return true;
+}
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : MeasureGUI_NormaleDlg.h
+// Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
+//
+
+#ifndef MEASUREGUI_NORMALEDLG_H
+#define MEASUREGUI_NORMALEDLG_H
+
+#include <GEOMBase_Skeleton.h>
+
+class DlgRef_2Sel;
+
+//=================================================================================
+// class : MeasureGUI_NormaleDlg
+// purpose :
+//=================================================================================
+class MeasureGUI_NormaleDlg : public GEOMBase_Skeleton
+{
+ Q_OBJECT
+
+public:
+ MeasureGUI_NormaleDlg( GeometryGUI*, QWidget* );
+ ~MeasureGUI_NormaleDlg();
+
+protected:
+ // redefined from GEOMBase_Helper
+ virtual GEOM::GEOM_IOperations_ptr createOperation();
+ virtual bool isValid( QString& );
+ virtual bool execute( ObjectList& );
+
+private:
+ void Init();
+ void enterEvent( QEvent* );
+
+private:
+ GEOM::GEOM_Object_var myFace;
+ GEOM::GEOM_Object_var myPoint;
+
+ DlgRef_2Sel* GroupArgs;
+
+private slots:
+ void ClickOnOk();
+ bool ClickOnApply();
+
+ void ActivateThisDialog();
+ void LineEditReturnPressed();
+ void SelectionIntoArgument();
+ void SetEditCurrentArgument();
+};
+
+#endif // MEASUREGUI_NORMALEDLG_H
#include "MeasureGUI_Widgets.h"
#include <GEOMBase.h>
+#include <DlgRef.h>
#include <SUIT_Session.h>
#include <SUIT_ResourceMgr.h>
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( myGrp );
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#PointCoord";
+ myHelpFileName = "using_measurement_tools_page.html#point_coord_anchor";
Init();
}
if ( !aPoint.IsNull() ) {
gp_Pnt aPnt = BRep_Tool::Pnt( aPoint );
myGrp->LineEdit1->setText( aName );
- myGrp->LineEdit2->setText( QString( "%1" ).arg( aPnt.X() ) );
- myGrp->LineEdit3->setText( QString( "%1" ).arg( aPnt.Y() ) );
- myGrp->LineEdit4->setText( QString( "%1" ).arg( aPnt.Z() ) );
+ myGrp->LineEdit2->setText( DlgRef::PrintDoubleValue( aPnt.X() ) );
+ myGrp->LineEdit3->setText( DlgRef::PrintDoubleValue( aPnt.Y() ) );
+ myGrp->LineEdit4->setText( DlgRef::PrintDoubleValue( aPnt.Z() ) );
}
}
catch( ... )
#include <GEOMImpl_Types.hxx>
#include <GEOMBase.h>
+#include <DlgRef.h>
#include <SalomeApp_Tools.h>
#include <SUIT_Session.h>
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Basic_properties";
+ myHelpFileName = "using_measurement_tools_page.html#basic_prop_anchor";
/* Initialisation */
Init();
myGrp->LineEdit4->setText( "" );
}
else {
- myGrp->LineEdit2->setText( QString( "%1" ).arg( aLength ) );
- myGrp->LineEdit3->setText( QString( "%1" ).arg( anArea ) );
- myGrp->LineEdit4->setText( QString( "%1" ).arg( aVolume ) );
+ myGrp->LineEdit2->setText( DlgRef::PrintDoubleValue( aLength ) );
+ myGrp->LineEdit3->setText( DlgRef::PrintDoubleValue( anArea ) );
+ myGrp->LineEdit4->setText( DlgRef::PrintDoubleValue( aVolume ) );
}
}
return getDisplayer()->BuildPrs( aResult );
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{
myMainFrame = new MeasureGUI_SkeletonBox( this );
QVBoxLayout* topLayout = new QVBoxLayout( this );
- topLayout->setMargin( 0 ); topLayout->setSpacing( 0 );
+ topLayout->setMargin( 9 ); topLayout->setSpacing( 0 );
topLayout->addWidget( myMainFrame );
setAttribute( Qt::WA_DeleteOnClose );
#include <SUIT_ResourceMgr.h>
#include <SalomeApp_Tools.h>
+#include <QScrollBar>
+
//=================================================================================
// class : MeasureGUI_WhatisDlg( )
// purpose : Constructs a MeasureGUI_WhatisDlg which is a child of 'parent', with the
myGrp->GroupBox1->setTitle( tr( "GEOM_WHATIS_OBJECT" ) );
myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) );
myGrp->TextView1->setReadOnly( true );
+
+ // fix height to fit all text
+ myGrp->TextView1->setLineWrapMode( QTextEdit::NoWrap );
+ // myGrp->TextView1->setTextFormat( Qt::PlainText ); // VSR : TODO
+ QString allLines ("\n\n\n\n\n\n\n\n\n"); // 10 lines
+ myGrp->TextView1->setText( allLines );
+ int sbHeight = myGrp->TextView1->horizontalScrollBar()->height();
+ myGrp->TextView1->setFixedHeight( myGrp->TextView1->document()->size().height() + sbHeight );
+
myGrp->PushButton1->setIcon( image1 );
myGrp->LineEdit1->setReadOnly( true );
/***************************************************************/
- myHelpFileName = "files/salome2_sp3_measuregui_functions.htm#Whatis";
+ myHelpFileName = "using_measurement_tools_page.html#whatis_anchor";
/* Initialisation */
Init();
return getOperation()->IsDone();
}
}
-
-
-
{
}
+//////////////////////////////////////////
+// MeasureGUI_2Sel4LineEdit
+//////////////////////////////////////////
+
+MeasureGUI_2Sel4LineEdit::MeasureGUI_2Sel4LineEdit( QWidget* parent, Qt::WindowFlags f )
+: QWidget( parent, f )
+{
+ setupUi( this );
+}
+
+MeasureGUI_2Sel4LineEdit::~MeasureGUI_2Sel4LineEdit()
+{
+}
+
//////////////////////////////////////////
// MeasureGUI_SkeletonBox
//////////////////////////////////////////
~MeasureGUI_2Sel1LineEdit();
};
+//////////////////////////////////////////
+// MeasureGUI_2Sel4LineEdit
+//////////////////////////////////////////
+
+#include "ui_MeasureGUI_2Sel4LineEdit_QTD.h"
+
+class MeasureGUI_2Sel4LineEdit : public QWidget,
+ public Ui::MeasureGUI_2Sel4LineEdit_QTD
+{
+ Q_OBJECT
+
+public:
+ MeasureGUI_2Sel4LineEdit( QWidget* = 0, Qt::WindowFlags = 0 );
+ ~MeasureGUI_2Sel4LineEdit();
+};
+
//////////////////////////////////////////
// MeasureGUI_SkeletonBox
//////////////////////////////////////////
--- /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
+
+#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#define _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+
+#ifndef _Handle_TCollection_MapNode_HeaderFile
+#include <Handle_TCollection_MapNode.hxx>
+#endif
+
+class Standard_Transient;
+class Handle_Standard_Type;
+class Handle(TCollection_MapNode);
+class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger);
+
+class Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) : public Handle(TCollection_MapNode) {
+ public:
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)():Handle(TCollection_MapNode)() {}
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)(const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& aHandle) : Handle(TCollection_MapNode)(aHandle)
+ {
+ }
+
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)(const NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* anItem) : Handle(TCollection_MapNode)((TCollection_MapNode *)anItem)
+ {
+ }
+
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& operator=(const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& aHandle)
+ {
+ Assign(aHandle.Access());
+ return *this;
+ }
+
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)& operator=(const NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* anItem)
+ {
+ Assign((Standard_Transient *)anItem);
+ return *this;
+ }
+
+ NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger* operator->() const
+ {
+ return (NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger *)ControlAccess();
+ }
+
+// Standard_EXPORT ~Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)();
+
+ Standard_EXPORT static const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
# header files
salomeinclude_HEADERS = \
+ Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx \
Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \
Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \
Handle_NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \
Handle_NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \
Handle_NMTDS_StdMapNodeOfMapOfPassKey.hxx \
NMTDS_CArray1OfIndexRange.hxx \
+ NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx \
+ NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx \
+ NMTDS_DataMapOfIntegerMapOfInteger.hxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger.hxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape.hxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox.hxx \
NMTDS_IndexedDataMapOfIntegerShape.hxx \
NMTDS_IndexedDataMapOfShapeBox.hxx \
NMTDS_IndexRange.hxx \
+ NMTDS_InterfPool.hxx \
+ NMTDS_InterfType.hxx \
NMTDS_Iterator.hxx \
+ NMTDS_IteratorCheckerSI.hxx \
NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx \
NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx \
NMTDS_ListIteratorOfListOfPassKey.hxx \
NMTDS_MapOfPassKeyBoolean.hxx \
NMTDS_MapOfPassKey.hxx \
NMTDS_PassKeyBoolean.hxx \
+ NMTDS_PInterfPool.hxx \
+ NMTDS_PIterator.hxx \
NMTDS_PassKey.hxx \
NMTDS_PassKeyMapHasher.hxx \
+ NMTDS_PassKeyShape.hxx \
+ NMTDS_PassKeyShapeMapHasher.hxx \
NMTDS_PShapesDataStructure.hxx \
NMTDS_ShapesDataStructure.hxx \
NMTDS_StdMapNodeOfMapOfPassKeyBoolean.hxx \
NMTDS_StdMapNodeOfMapOfPassKey.hxx \
+ NMTDS_Tools.hxx \
NMTDS_BoxBndTree.hxx
# Libraries targets
dist_libNMTDS_la_SOURCES = \
NMTDS_CArray1OfIndexRange_0.cxx \
+ NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_0.cxx \
+ NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_0.cxx \
+ NMTDS_DataMapOfIntegerMapOfInteger_0.cxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerIndexedDataMapOfShapeInteger_0.cxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfIntegerShape_0.cxx \
NMTDS_IndexedDataMapNodeOfIndexedDataMapOfShapeBox_0.cxx \
NMTDS_IndexedDataMapOfIntegerShape_0.cxx \
NMTDS_IndexedDataMapOfShapeBox_0.cxx \
NMTDS_IndexRange.cxx \
+ NMTDS_InterfPool.cxx \
NMTDS_Iterator.cxx \
+ NMTDS_IteratorCheckerSI.cxx \
NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors_0.cxx \
NMTDS_ListIteratorOfListOfPassKey_0.cxx \
NMTDS_ListIteratorOfListOfPassKeyBoolean_0.cxx \
NMTDS_PassKeyBoolean.cxx \
NMTDS_PassKey.cxx \
NMTDS_PassKeyMapHasher.cxx \
+ NMTDS_PassKeyShape.cxx \
+ NMTDS_PassKeyShapeMapHasher.cxx \
NMTDS_ShapesDataStructure.cxx \
NMTDS_StdMapNodeOfMapOfPassKey_0.cxx \
NMTDS_StdMapNodeOfMapOfPassKeyBoolean_0.cxx \
+ NMTDS_Tools.cxx \
NMTDS_BoxBndTree.cxx
# additionnal information to compil and link file
---Purpose:
uses
-
TCollection,
TColStd,
Bnd,
TopoDS,
TopAbs,
TopTools,
- BooleanOperations,
- BOPTColStd
+ BooleanOperations,
+ BOPTools,
+ BOPTColStd
+
is
+ enumeration InterfType is
+ TI_VV,
+ TI_VE,
+ TI_VF,
+ TI_EE,
+ TI_EF,
+ TI_FF,
+ TI_UNKNOWN
+ end InterfType;
+ --
class ShapesDataStructure;
class IndexRange;
-- Modified to Add new classes Thu Sep 14 14:35:18 2006
-- Contribution of Samtech www.samcef.com BEGIN
class Iterator;
+
class PassKey;
class PassKeyBoolean;
class PassKeyMapHasher;
-- Contribution of Samtech www.samcef.com END
-
+ class PassKeyShape;
+ class PassKeyShapeMapHasher;
+ --modified by NIZNHY-PKV Tue Feb 6 10:40:02 2007f
+ class IteratorCheckerSI;
+ class Tools;
+ class InterfPool;
+ --modified by NIZNHY-PKV Tue Feb 6 10:40:04 2007t
pointer PShapesDataStructure to ShapesDataStructure from NMTDS;
-
+ pointer PIterator to Iterator from NMTDS;
+ pointer PInterfPool to InterfPool from NMTDS;
+
class CArray1OfIndexRange instantiates
CArray1 from BOPTColStd(IndexRange from NMTDS);
PassKeyMapHasher from NMTDS);
-- Contribution of Samtech www.samcef.com END
-
+--modified by NIZNHY-PKV Tue Oct 10 11:19:06 2006f
class IndexedDataMapOfShapeBox
instantiates IndexedDataMap from TCollection (Shape from TopoDS,
Box from Bnd,
instantiates IndexedDataMap from TCollection (Integer from Standard,
Shape from TopoDS,
MapIntegerHasher from TColStd);
+
+ class DataMapOfIntegerMapOfInteger
+ instantiates DataMap from TCollection (Integer from Standard,
+ MapOfInteger from TColStd,
+ MapIntegerHasher from TColStd);
+--modified by NIZNHY-PKV Tue Oct 10 11:19:08 2006t
end NMTDS;
--- /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
+
+#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile
+#define _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile
+
+#ifndef _TCollection_BasicMapIterator_HeaderFile
+#include <TCollection_BasicMapIterator.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+class Standard_NoSuchObject;
+class TColStd_MapOfInteger;
+class TColStd_MapIntegerHasher;
+class NMTDS_DataMapOfIntegerMapOfInteger;
+class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger : public TCollection_BasicMapIterator {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger();
+
+
+Standard_EXPORT NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger(const NMTDS_DataMapOfIntegerMapOfInteger& aMap);
+
+
+Standard_EXPORT void Initialize(const NMTDS_DataMapOfIntegerMapOfInteger& aMap) ;
+
+
+Standard_EXPORT const Standard_Integer& Key() const;
+
+
+Standard_EXPORT const TColStd_MapOfInteger& Value() const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _TColStd_MapOfInteger_HeaderFile
+#include <TColStd_MapOfInteger.hxx>
+#endif
+#ifndef _TColStd_MapIntegerHasher_HeaderFile
+#include <TColStd_MapIntegerHasher.hxx>
+#endif
+#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#endif
+#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+
+
+#define TheKey Standard_Integer
+#define TheKey_hxx <Standard_Integer.hxx>
+#define TheItem TColStd_MapOfInteger
+#define TheItem_hxx <TColStd_MapOfInteger.hxx>
+#define Hasher TColStd_MapIntegerHasher
+#define Hasher_hxx <TColStd_MapIntegerHasher.hxx>
+#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_hxx <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapIterator_hxx <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_()
+#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger
+#define TCollection_DataMap_hxx <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#include <TCollection_DataMapIterator.gxx>
+
--- /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
+
+#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#define _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _TColStd_MapOfInteger_HeaderFile
+#include <TColStd_MapOfInteger.hxx>
+#endif
+#ifndef _TCollection_MapNode_HeaderFile
+#include <TCollection_MapNode.hxx>
+#endif
+#ifndef _TCollection_MapNodePtr_HeaderFile
+#include <TCollection_MapNodePtr.hxx>
+#endif
+class TColStd_MapOfInteger;
+class TColStd_MapIntegerHasher;
+class NMTDS_DataMapOfIntegerMapOfInteger;
+class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger;
+
+
+
+class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger : public TCollection_MapNode {
+
+public:
+ // Methods PUBLIC
+ //
+
+NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger(const Standard_Integer& K,const TColStd_MapOfInteger& I,const TCollection_MapNodePtr& n);
+
+ Standard_Integer& Key() const;
+
+ TColStd_MapOfInteger& Value() const;
+//Standard_EXPORT ~NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ //Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+Standard_Integer myKey;
+TColStd_MapOfInteger myValue;
+
+
+};
+
+#define TheKey Standard_Integer
+#define TheKey_hxx <Standard_Integer.hxx>
+#define TheItem TColStd_MapOfInteger
+#define TheItem_hxx <TColStd_MapOfInteger.hxx>
+#define Hasher TColStd_MapIntegerHasher
+#define Hasher_hxx <TColStd_MapIntegerHasher.hxx>
+#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_hxx <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapIterator_hxx <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_()
+#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger
+#define TCollection_DataMap_hxx <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+
+#include <TCollection_DataMapNode.lxx>
+
+#undef TheKey
+#undef TheKey_hxx
+#undef TheItem
+#undef TheItem_hxx
+#undef Hasher
+#undef Hasher_hxx
+#undef TCollection_DataMapNode
+#undef TCollection_DataMapNode_hxx
+#undef TCollection_DataMapIterator
+#undef TCollection_DataMapIterator_hxx
+#undef Handle_TCollection_DataMapNode
+#undef TCollection_DataMapNode_Type_
+#undef TCollection_DataMap
+#undef TCollection_DataMap_hxx
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+#ifndef _TColStd_MapOfInteger_HeaderFile
+#include <TColStd_MapOfInteger.hxx>
+#endif
+#ifndef _TColStd_MapIntegerHasher_HeaderFile
+#include <TColStd_MapIntegerHasher.hxx>
+#endif
+#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#endif
+#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+//NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::~NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger() {}
+
+
+
+Standard_EXPORT Handle_Standard_Type& NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_()
+{
+
+ static Handle_Standard_Type aType1 = STANDARD_TYPE(TCollection_MapNode);
+ static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
+ static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
+
+
+ static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
+ static Handle_Standard_Type _aType = new Standard_Type("NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger",
+ sizeof(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger),
+ 1,
+ (Standard_Address)_Ancestors,
+ (Standard_Address)NULL);
+
+ return _aType;
+}
+
+
+// DownCast method
+// allow safe downcasting
+//
+const Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject)
+{
+ Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) _anOtherObject;
+
+ if (!AnObject.IsNull()) {
+ if (AnObject->IsKind(STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger))) {
+ _anOtherObject = Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)((Handle(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger)&)AnObject);
+ }
+ }
+
+ return _anOtherObject ;
+}
+const Handle(Standard_Type)& NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::DynamicType() const
+{
+ return STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) ;
+}
+//Standard_Boolean NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const
+//{
+// return (STANDARD_TYPE(NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger) == AType || TCollection_MapNode::IsKind(AType));
+//}
+//Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger::~Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger() {}
+#define TheKey Standard_Integer
+#define TheKey_hxx <Standard_Integer.hxx>
+#define TheItem TColStd_MapOfInteger
+#define TheItem_hxx <TColStd_MapOfInteger.hxx>
+#define Hasher TColStd_MapIntegerHasher
+#define Hasher_hxx <TColStd_MapIntegerHasher.hxx>
+#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_hxx <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapIterator_hxx <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_()
+#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger
+#define TCollection_DataMap_hxx <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#include <TCollection_DataMapNode.gxx>
+
--- /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
+
+#ifndef _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile
+#define _NMTDS_DataMapOfIntegerMapOfInteger_HeaderFile
+
+#ifndef _TCollection_BasicMap_HeaderFile
+#include <TCollection_BasicMap.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class Standard_DomainError;
+class Standard_NoSuchObject;
+class TColStd_MapOfInteger;
+class TColStd_MapIntegerHasher;
+class NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger;
+class NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_DataMapOfIntegerMapOfInteger : public TCollection_BasicMap {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger(const Standard_Integer NbBuckets = 1);
+
+
+Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger& Assign(const NMTDS_DataMapOfIntegerMapOfInteger& Other) ;
+ NMTDS_DataMapOfIntegerMapOfInteger& operator =(const NMTDS_DataMapOfIntegerMapOfInteger& Other)
+{
+ return Assign(Other);
+}
+
+
+
+Standard_EXPORT void ReSize(const Standard_Integer NbBuckets) ;
+
+
+Standard_EXPORT void Clear() ;
+~NMTDS_DataMapOfIntegerMapOfInteger()
+{
+ Clear();
+}
+
+
+
+Standard_EXPORT Standard_Boolean Bind(const Standard_Integer& K,const TColStd_MapOfInteger& I) ;
+
+
+Standard_EXPORT Standard_Boolean IsBound(const Standard_Integer& K) const;
+
+
+Standard_EXPORT Standard_Boolean UnBind(const Standard_Integer& K) ;
+
+
+Standard_EXPORT const TColStd_MapOfInteger& Find(const Standard_Integer& K) const;
+ const TColStd_MapOfInteger& operator()(const Standard_Integer& K) const
+{
+ return Find(K);
+}
+
+
+
+Standard_EXPORT TColStd_MapOfInteger& ChangeFind(const Standard_Integer& K) ;
+ TColStd_MapOfInteger& operator()(const Standard_Integer& K)
+{
+ return ChangeFind(K);
+}
+
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+Standard_EXPORT NMTDS_DataMapOfIntegerMapOfInteger(const NMTDS_DataMapOfIntegerMapOfInteger& Other);
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+
+#ifndef _Standard_DomainError_HeaderFile
+#include <Standard_DomainError.hxx>
+#endif
+#ifndef _Standard_NoSuchObject_HeaderFile
+#include <Standard_NoSuchObject.hxx>
+#endif
+#ifndef _TColStd_MapOfInteger_HeaderFile
+#include <TColStd_MapOfInteger.hxx>
+#endif
+#ifndef _TColStd_MapIntegerHasher_HeaderFile
+#include <TColStd_MapIntegerHasher.hxx>
+#endif
+#ifndef _NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+#ifndef _NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger_HeaderFile
+#include <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#endif
+
+
+#define TheKey Standard_Integer
+#define TheKey_hxx <Standard_Integer.hxx>
+#define TheItem TColStd_MapOfInteger
+#define TheItem_hxx <TColStd_MapOfInteger.hxx>
+#define Hasher TColStd_MapIntegerHasher
+#define Hasher_hxx <TColStd_MapIntegerHasher.hxx>
+#define TCollection_DataMapNode NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_hxx <NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger.hxx>
+#define TCollection_DataMapIterator NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapIterator_hxx <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
+#define Handle_TCollection_DataMapNode Handle_NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger
+#define TCollection_DataMapNode_Type_() NMTDS_DataMapNodeOfDataMapOfIntegerMapOfInteger_Type_()
+#define TCollection_DataMap NMTDS_DataMapOfIntegerMapOfInteger
+#define TCollection_DataMap_hxx <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#include <TCollection_DataMap.gxx>
+
--- /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: NMTDS_InterfPool.cdl
+-- Created: Wed Feb 21 10:10:58 2007
+-- Author: Peter KURNEV
+-- <pkv@irinox>
+---Copyright: Matra Datavision 2007
+
+
+class InterfPool from NMTDS
+
+ ---Purpose:
+
+uses
+ MapOfPassKeyBoolean from NMTDS,
+ ListOfPassKeyBoolean from NMTDS,
+ PassKeyBoolean from NMTDS,
+ InterfType from NMTDS,
+ --
+ CArray1OfSSInterference from BOPTools,
+ CArray1OfESInterference from BOPTools,
+ CArray1OfVSInterference from BOPTools,
+ CArray1OfEEInterference from BOPTools,
+ CArray1OfVEInterference from BOPTools,
+ CArray1OfVVInterference from BOPTools
+
+--raises
+
+is
+ Create
+ returns InterfPool from NMTDS;
+ ---C++: alias "Standard_EXPORT virtual ~NMTDS_InterfPool();"
+
+
+ Add (me:out;
+ aPKB : PassKeyBoolean from NMTDS;
+ aType: InterfType from NMTDS)
+ returns Boolean from Standard;
+
+ Add (me:out;
+ aInd1 : Integer from Standard;
+ aInd2 : Integer from Standard;
+ aType : InterfType from NMTDS)
+ returns Boolean from Standard;
+
+ Add (me:out;
+ aInd1 : Integer from Standard;
+ aInd2 : Integer from Standard;
+ bFlag : Boolean from Standard;
+ aType : InterfType from NMTDS)
+ returns Boolean from Standard;
+
+ Contains(me;
+ aPKB : PassKeyBoolean from NMTDS)
+ returns Boolean from Standard;
+
+ Contains(me;
+ aInd1 : Integer from Standard;
+ aInd2 : Integer from Standard)
+ returns Boolean from Standard;
+
+ Get(me)
+ returns ListOfPassKeyBoolean from NMTDS;
+ ---C++: return const &
+
+ Get(me;
+ aType : InterfType from NMTDS)
+ returns ListOfPassKeyBoolean from NMTDS;
+ ---C++: return const &
+
+ Get(me;
+ aInd : Integer from Standard)
+ returns ListOfPassKeyBoolean from NMTDS;
+ ---C++: return const &
+
+ Get(me;
+ aInd : Integer from Standard;
+ aType: InterfType from NMTDS)
+ returns ListOfPassKeyBoolean from NMTDS;
+ ---C++: return const &
+
+ --
+ -- Interferences
+ --
+ SSInterferences (me:out)
+ returns CArray1OfSSInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to array Of F/F interferences
+ ---
+ ESInterferences (me:out)
+ returns CArray1OfESInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to array Of E/F interferences
+ ---
+ VSInterferences (me:out)
+ returns CArray1OfVSInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to array Of V/F interferences
+ ---
+ EEInterferences (me:out)
+ returns CArray1OfEEInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to arrray Of E/E interferences
+ ---
+ VEInterferences (me:out)
+ returns CArray1OfVEInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to arrray Of V/E interferences
+ ---
+ VVInterferences (me:out)
+ returns CArray1OfVVInterference from BOPTools;
+ ---C++: return &
+ ---Purpose:
+ --- Returns the reference to arrray Of V/V interferences
+ ---
+
+fields
+ myTable : MapOfPassKeyBoolean from NMTDS [6] is protected;
+ myList : ListOfPassKeyBoolean from NMTDS is protected;
+ myMaxInd: Integer from Standard is protected;
+ --
+ mySSInterferences : CArray1OfSSInterference from BOPTools is protected;
+ myESInterferences : CArray1OfESInterference from BOPTools is protected;
+ myVSInterferences : CArray1OfVSInterference from BOPTools is protected;
+ myEEInterferences : CArray1OfEEInterference from BOPTools is protected;
+ myVEInterferences : CArray1OfVEInterference from BOPTools is protected;
+ myVVInterferences : CArray1OfVVInterference from BOPTools is protected;
+
+end InterfPool;
--- /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: NMTDS_.InterfPoolcxx
+// Created: Wed Feb 21 10:35:35 2007
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTDS_InterfPool.ixx>
+#include <NMTDS_PassKeyBoolean.hxx>
+#include <NMTDS_ListOfPassKeyBoolean.hxx>
+#include <NMTDS_MapIteratorOfMapOfPassKeyBoolean.hxx>
+#include <NMTDS_ListIteratorOfListOfPassKeyBoolean.hxx>
+
+static
+ Standard_Integer TypeToInteger(const NMTDS_InterfType aType);
+
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTDS_InterfPool::NMTDS_InterfPool()
+{
+ myMaxInd=6;
+}
+//=======================================================================
+//function : ~
+//purpose :
+//=======================================================================
+ NMTDS_InterfPool::~NMTDS_InterfPool()
+{
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_InterfPool::Add (const NMTDS_PassKeyBoolean& aPKB,
+ const NMTDS_InterfType aType)
+{
+ Standard_Boolean bRet;
+ Standard_Integer iType;
+ //
+ bRet=Standard_False;
+ //
+ iType=TypeToInteger(aType);
+ if (iType>-1 && iType<myMaxInd) {
+ bRet=myTable[iType].Add(aPKB);
+ }
+ return bRet;
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_InterfPool::Add (const Standard_Integer aInd1,
+ const Standard_Integer aInd2,
+ const NMTDS_InterfType aType)
+{
+ NMTDS_PassKeyBoolean aPKB;
+ //
+ aPKB.SetIds(aInd1, aInd2);
+ return Add(aPKB, aType);
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_InterfPool::Add (const Standard_Integer aInd1,
+ const Standard_Integer aInd2,
+ const Standard_Boolean bFlag,
+ const NMTDS_InterfType aType)
+{
+ NMTDS_PassKeyBoolean aPKB;
+ //
+ aPKB.SetIds(aInd1, aInd2);
+ aPKB.SetFlag(bFlag);
+ return Add(aPKB, aType);
+}
+//=======================================================================
+//function : Contains
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_InterfPool::Contains(const NMTDS_PassKeyBoolean& aPKB)const
+{
+ Standard_Boolean bRet;
+ Standard_Integer i;
+ //
+ for (i=0; i<myMaxInd; ++i) {
+ bRet=myTable[i].Contains(aPKB);
+ if (bRet) {
+ break;
+ }
+ }
+ return bRet;
+}
+//=======================================================================
+//function : Contains
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_InterfPool::Contains(const Standard_Integer aInd1,
+ const Standard_Integer aInd2)const
+{
+ NMTDS_PassKeyBoolean aPKB;
+ //
+ aPKB.SetIds(aInd1, aInd2);
+ return Contains(aPKB);
+}
+//=======================================================================
+//function : Get
+//purpose :
+//=======================================================================
+ const NMTDS_ListOfPassKeyBoolean& NMTDS_InterfPool::Get()const
+{
+ Standard_Integer i;
+ NMTDS_ListOfPassKeyBoolean* pL;
+ //
+ pL=(NMTDS_ListOfPassKeyBoolean*)&myList;
+ pL->Clear();
+ //
+ for (i=0; i<myMaxInd; ++i) {
+ NMTDS_MapIteratorOfMapOfPassKeyBoolean aIt;
+ //
+ aIt.Initialize(myTable[i]);
+ for(; aIt.More(); aIt.Next()) {
+ const NMTDS_PassKeyBoolean& aPKB=aIt.Key();
+ pL->Append(aPKB);
+ }
+ }
+ return myList;
+}
+//=======================================================================
+//function : Get
+//purpose :
+//=======================================================================
+ const NMTDS_ListOfPassKeyBoolean& NMTDS_InterfPool::Get(const Standard_Integer aInd)const
+{
+ Standard_Integer i, n1, n2;
+ NMTDS_ListOfPassKeyBoolean* pL;
+ //
+ pL=(NMTDS_ListOfPassKeyBoolean*)&myList;
+ pL->Clear();
+ //
+ for (i=0; i<myMaxInd; ++i) {
+ NMTDS_MapIteratorOfMapOfPassKeyBoolean aIt;
+ //
+ aIt.Initialize(myTable[i]);
+ for(; aIt.More(); aIt.Next()) {
+ const NMTDS_PassKeyBoolean& aPKB=aIt.Key();
+ aPKB.Ids(n1, n2);
+ if(n1==aInd || n2==aInd) {
+ pL->Append(aPKB);
+ }
+ }
+ }
+ return myList;
+}
+//=======================================================================
+//function : Get
+//purpose :
+//=======================================================================
+ const NMTDS_ListOfPassKeyBoolean& NMTDS_InterfPool::Get(const NMTDS_InterfType aType)const
+{
+ Standard_Integer iType;
+ NMTDS_ListOfPassKeyBoolean* pL;
+ //
+ pL=(NMTDS_ListOfPassKeyBoolean*)&myList;
+ pL->Clear();
+ //
+ iType=TypeToInteger(aType);
+ if (iType>-1 && iType<myMaxInd) {
+ NMTDS_MapIteratorOfMapOfPassKeyBoolean aIt;
+ //
+ aIt.Initialize(myTable[iType]);
+ for(; aIt.More(); aIt.Next()) {
+ const NMTDS_PassKeyBoolean& aPKB=aIt.Key();
+ pL->Append(aPKB);
+ }
+ }
+ return myList;
+}
+//=======================================================================
+//function : Get
+//purpose :
+//=======================================================================
+ const NMTDS_ListOfPassKeyBoolean& NMTDS_InterfPool::Get(const Standard_Integer aInd,
+ const NMTDS_InterfType aType)const
+{
+ Standard_Integer n1, n2;
+ NMTDS_ListOfPassKeyBoolean *pL, aLPKB;
+ NMTDS_ListIteratorOfListOfPassKeyBoolean aIt;
+ //
+ aLPKB=Get(aType);
+ //
+ pL=(NMTDS_ListOfPassKeyBoolean*)&myList;
+ pL->Clear();
+ //
+ aIt.Initialize (aLPKB);
+ for (; aIt.More(); aIt.Next()) {
+ const NMTDS_PassKeyBoolean& aPKB=aIt.Value();
+ aPKB.Ids(n1, n2);
+ if(n1==aInd || n2==aInd) {
+ pL->Append(aPKB);
+ }
+ }
+ return myList;
+}
+////////////////////
+//===========================================================================
+//function : SSInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfSSInterference& NMTDS_InterfPool::SSInterferences()
+{
+ return mySSInterferences;
+}
+//===========================================================================
+//function : ESInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfESInterference& NMTDS_InterfPool::ESInterferences()
+{
+ return myESInterferences;
+}
+//===========================================================================
+//function : VSInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfVSInterference& NMTDS_InterfPool::VSInterferences()
+{
+ return myVSInterferences;
+}
+//===========================================================================
+//function : EEInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfEEInterference& NMTDS_InterfPool::EEInterferences()
+{
+ return myEEInterferences;
+}
+//===========================================================================
+//function : VEInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfVEInterference& NMTDS_InterfPool::VEInterferences()
+{
+ return myVEInterferences;
+}
+//===========================================================================
+//function : VVInterferences
+//purpose :
+//===========================================================================
+ BOPTools_CArray1OfVVInterference& NMTDS_InterfPool::VVInterferences()
+{
+ return myVVInterferences;
+}
+////////////////////
+//=======================================================================
+//function : TypeToInteger
+//purpose :
+//=======================================================================
+Standard_Integer TypeToInteger(const NMTDS_InterfType aType)
+{
+ return (Standard_Integer)aType;
+}
--- /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
+
+#ifndef _NMTDS_InterfPool_HeaderFile
+#define _NMTDS_InterfPool_HeaderFile
+
+#ifndef _NMTDS_MapOfPassKeyBoolean_HeaderFile
+#include <NMTDS_MapOfPassKeyBoolean.hxx>
+#endif
+#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile
+#include <NMTDS_ListOfPassKeyBoolean.hxx>
+#endif
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile
+#include <BOPTools_CArray1OfSSInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfESInterference_HeaderFile
+#include <BOPTools_CArray1OfESInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVSInterference_HeaderFile
+#include <BOPTools_CArray1OfVSInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfEEInterference_HeaderFile
+#include <BOPTools_CArray1OfEEInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVEInterference_HeaderFile
+#include <BOPTools_CArray1OfVEInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile
+#include <BOPTools_CArray1OfVVInterference.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+#ifndef _NMTDS_InterfType_HeaderFile
+#include <NMTDS_InterfType.hxx>
+#endif
+class NMTDS_PassKeyBoolean;
+class NMTDS_ListOfPassKeyBoolean;
+class BOPTools_CArray1OfSSInterference;
+class BOPTools_CArray1OfESInterference;
+class BOPTools_CArray1OfVSInterference;
+class BOPTools_CArray1OfEEInterference;
+class BOPTools_CArray1OfVEInterference;
+class BOPTools_CArray1OfVVInterference;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_InterfPool {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTDS_InterfPool();
+Standard_EXPORT virtual ~NMTDS_InterfPool();
+
+
+Standard_EXPORT Standard_Boolean Add(const NMTDS_PassKeyBoolean& aPKB,const NMTDS_InterfType aType) ;
+
+
+Standard_EXPORT Standard_Boolean Add(const Standard_Integer aInd1,const Standard_Integer aInd2,const NMTDS_InterfType aType) ;
+
+
+Standard_EXPORT Standard_Boolean Add(const Standard_Integer aInd1,const Standard_Integer aInd2,const Standard_Boolean bFlag,const NMTDS_InterfType aType) ;
+
+
+Standard_EXPORT Standard_Boolean Contains(const NMTDS_PassKeyBoolean& aPKB) const;
+
+
+Standard_EXPORT Standard_Boolean Contains(const Standard_Integer aInd1,const Standard_Integer aInd2) const;
+
+
+Standard_EXPORT const NMTDS_ListOfPassKeyBoolean& Get() const;
+
+
+Standard_EXPORT const NMTDS_ListOfPassKeyBoolean& Get(const NMTDS_InterfType aType) const;
+
+
+Standard_EXPORT const NMTDS_ListOfPassKeyBoolean& Get(const Standard_Integer aInd) const;
+
+
+Standard_EXPORT const NMTDS_ListOfPassKeyBoolean& Get(const Standard_Integer aInd,const NMTDS_InterfType aType) const;
+
+
+//! Returns the reference to array Of F/F interferences <br>
+Standard_EXPORT BOPTools_CArray1OfSSInterference& SSInterferences() ;
+
+
+//! Returns the reference to array Of E/F interferences <br>
+Standard_EXPORT BOPTools_CArray1OfESInterference& ESInterferences() ;
+
+
+//! Returns the reference to array Of V/F interferences <br>
+Standard_EXPORT BOPTools_CArray1OfVSInterference& VSInterferences() ;
+
+
+//! Returns the reference to arrray Of E/E interferences <br>
+Standard_EXPORT BOPTools_CArray1OfEEInterference& EEInterferences() ;
+
+
+//! Returns the reference to arrray Of V/E interferences <br>
+Standard_EXPORT BOPTools_CArray1OfVEInterference& VEInterferences() ;
+
+
+//! Returns the reference to arrray Of V/V interferences <br>
+Standard_EXPORT BOPTools_CArray1OfVVInterference& VVInterferences() ;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+NMTDS_MapOfPassKeyBoolean myTable[6];
+NMTDS_ListOfPassKeyBoolean myList;
+Standard_Integer myMaxInd;
+BOPTools_CArray1OfSSInterference mySSInterferences;
+BOPTools_CArray1OfESInterference myESInterferences;
+BOPTools_CArray1OfVSInterference myVSInterferences;
+BOPTools_CArray1OfEEInterference myEEInterferences;
+BOPTools_CArray1OfVEInterference myVEInterferences;
+BOPTools_CArray1OfVVInterference myVVInterferences;
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_InterfPool.jxx>
+
+
+
+
--- /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
+
+#ifndef _NMTDS_PassKeyBoolean_HeaderFile
+#include <NMTDS_PassKeyBoolean.hxx>
+#endif
+#ifndef _NMTDS_ListOfPassKeyBoolean_HeaderFile
+#include <NMTDS_ListOfPassKeyBoolean.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfSSInterference_HeaderFile
+#include <BOPTools_CArray1OfSSInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfESInterference_HeaderFile
+#include <BOPTools_CArray1OfESInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVSInterference_HeaderFile
+#include <BOPTools_CArray1OfVSInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfEEInterference_HeaderFile
+#include <BOPTools_CArray1OfEEInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVEInterference_HeaderFile
+#include <BOPTools_CArray1OfVEInterference.hxx>
+#endif
+#ifndef _BOPTools_CArray1OfVVInterference_HeaderFile
+#include <BOPTools_CArray1OfVVInterference.hxx>
+#endif
+#ifndef _NMTDS_InterfPool_HeaderFile
+#include <NMTDS_InterfPool.hxx>
+#endif
--- /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
+
+#ifndef _NMTDS_InterfType_HeaderFile
+#define _NMTDS_InterfType_HeaderFile
+
+
+enum NMTDS_InterfType {
+ NMTDS_TI_VV,
+NMTDS_TI_VE,
+NMTDS_TI_VF,
+NMTDS_TI_EE,
+NMTDS_TI_EF,
+NMTDS_TI_FF,
+NMTDS_TI_UNKNOWN
+};
+
+
+#ifndef _Standard_PrimitiveTypes_HeaderFile
+#include <Standard_PrimitiveTypes.hxx>
+#endif
+
+#endif
class Iterator from NMTDS
-
+
---Purpose:
uses
ShapesDataStructure from NMTDS,
PShapesDataStructure from NMTDS,
ListOfPassKeyBoolean from NMTDS,
- ListIteratorOfListOfPassKeyBoolean from NMTDS
+ ListIteratorOfListOfPassKeyBoolean from NMTDS,
+ PassKeyBoolean from NMTDS
+
--raises
is
aIndex2:out Integer from Standard;
aWithSubShape: out Boolean from Standard);
- Prepare(me:out);
-
+ Prepare(me:out)
+ is virtual;
+
+ Intersect(me:out)
+ is virtual protected;
+
ExpectedLength(me)
returns Integer from Standard;
+ BlockLength(me)
+ returns Integer from Standard;
+
SDVertices(me)
returns DataMapOfIntegerListOfInteger from TColStd;
- ---C++:return const &
-
+ ---C++:return const &
+
+ FillMVSD(myclass;
+ aMVSD1:DataMapOfIntegerListOfInteger from TColStd;
+ aMVSD2:out DataMapOfIntegerListOfInteger from TColStd);
fields
- myPDS :PShapesDataStructure from NMTDS is protected;
+ myDS :PShapesDataStructure from NMTDS is protected;
myLists :ListOfPassKeyBoolean from NMTDS [6] is protected;
myIterator :ListIteratorOfListOfPassKeyBoolean from NMTDS is protected;
myEmptyList:ListOfPassKeyBoolean from NMTDS is protected;
-// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2006 SAMTECH
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#include <NMTDS_Iterator.ixx>
-#include <NMTDS_CArray1OfIndexRange.hxx>
-#include <NMTDS_IndexRange.hxx>
+//
#include <Bnd_Box.hxx>
-#include <TopoDS_Shape.hxx>
+//
#include <TColStd_ListOfInteger.hxx>
-#include <TColStd_Array1OfListOfInteger.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
-#include <NMTDS_PassKeyBoolean.hxx>
-#include <NMTDS_MapOfPassKeyBoolean.hxx>
-#include <NMTDS_IndexedDataMapOfShapeBox.hxx>
-#include <NMTDS_IndexedDataMapOfIntegerShape.hxx>
-#include <Bnd_HArray1OfBox.hxx>
-#include <Bnd_BoundSortBox.hxx>
-#include <TColStd_ListOfInteger.hxx>
#include <TColStd_DataMapOfIntegerInteger.hxx>
-#include <TopTools_DataMapOfShapeInteger.hxx>
#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
-#include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
-
+//
+#include <TopoDS.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS_Shape.hxx>
+//
+#include <TopTools_DataMapOfShapeInteger.hxx>
+//
#include <NMTDS_BoxBndTree.hxx>
#include <NCollection_UBTreeFiller.hxx>
-
-static
- void ComputeBoxEx(const Standard_Integer aIx,
- NMTDS_ShapesDataStructure* pDS,
- Bnd_Box& aBoxEx);
-
-static inline
- Standard_Boolean IsValidType(const TopAbs_ShapeEnum aT);
-
-static
- Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1,
- const TopAbs_ShapeEnum aType2);
-
+#include <NMTDS_CArray1OfIndexRange.hxx>
+#include <NMTDS_IndexRange.hxx>
+#include <NMTDS_PassKeyBoolean.hxx>
+#include <NMTDS_MapOfPassKeyBoolean.hxx>
+#include <NMTDS_IndexedDataMapOfShapeBox.hxx>
+#include <NMTDS_IndexedDataMapOfIntegerShape.hxx>
+#include <NMTDS_Tools.hxx>
+#include <NMTDS_DataMapOfIntegerMapOfInteger.hxx>
+#include <NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger.hxx>
//=======================================================================
//function : NMTDS_Iterator
//=======================================================================
NMTDS_Iterator::NMTDS_Iterator()
{
- myPDS=NULL;
+ myDS=NULL;
myLength=0;
}
//=======================================================================
//=======================================================================
void NMTDS_Iterator::SetDS(const NMTDS_PShapesDataStructure& aDS)
{
- myPDS=aDS;
+ myDS=aDS;
}
//=======================================================================
// function: DS
//=======================================================================
const NMTDS_ShapesDataStructure& NMTDS_Iterator::DS()const
{
- return *myPDS;
+ return *myDS;
}
//=======================================================================
// function: ExpectedLength
return myLength;
}
//=======================================================================
+// function: BlockLength
+// purpose:
+//=======================================================================
+ Standard_Integer NMTDS_Iterator::BlockLength() const
+{
+ Standard_Integer aNbIIs;
+ Standard_Real aCfPredict=.5;
+
+ aNbIIs=ExpectedLength();
+
+ if (aNbIIs<=1) {
+ return 1;
+ }
+ //
+ aNbIIs=(Standard_Integer) (aCfPredict*(Standard_Real)aNbIIs);
+ return aNbIIs;
+}
+//=======================================================================
// function: Initialize
// purpose:
//=======================================================================
{
Standard_Integer iX;
//
- iX=TypeToInteger(aType1, aType2);
+ iX=NMTDS_Tools::TypeToInteger(aType1, aType2);
if (iX>=0) {
myIterator.Initialize(myLists[iX]);
myLength=myLists[iX].Extent();
{
return myMVSD;
}
-
//=======================================================================
// function: Prepare
// purpose:
//=======================================================================
void NMTDS_Iterator::Prepare()
+{
+ Standard_Integer i;
+ //
+ myLength=0;
+ for (i=0; i<6; ++i) {
+ myLists[i].Clear();
+ }
+ myMVSD.Clear();
+ //
+ if (myDS==NULL){
+ return;
+ }
+ Intersect();
+}
+//=======================================================================
+// function: Intersect
+// purpose:
+//=======================================================================
+ void NMTDS_Iterator::Intersect()
{
Standard_Boolean bFlag;
- Standard_Integer aNb, i, aNbB, aNbR;
+ Standard_Integer aNb, i, aNbB, aNbR, iFlag;
Standard_Integer i1, i2, aNbSD, iX, j, iDS, jB, iR, k, aNbLV;
TColStd_ListIteratorOfListOfInteger aIt;
TColStd_DataMapOfIntegerInteger aMII;
- TColStd_MapOfInteger aMFence;
+ //modified by NIZNHY-PKV Mon Jan 22 15:08:00 2007f
+ //TColStd_MapOfInteger aMFence;
+ TColStd_DataMapOfIntegerListOfInteger aMVSD;
+ TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItVSD;
+ //modified by NIZNHY-PKV Mon Jan 22 10:21:50 2007t
TopTools_DataMapOfShapeInteger aMSI;
TopAbs_ShapeEnum aTi, aTj;
NMTDS_PassKeyBoolean aPKXB;
NMTDS_MapOfPassKeyBoolean aMPKXB;
NMTDS_IndexedDataMapOfShapeBox aMSB;
- Handle(Bnd_HArray1OfBox) aHAB;
- Bnd_BoundSortBox aBSB;
//
NMTDS_BoxBndTreeSelector aSelector;
NMTDS_BoxBndTree aBBTree;
NCollection_UBTreeFiller <Standard_Integer, Bnd_Box> aTreeFiller(aBBTree);
//
- if (myPDS==NULL){
- return;
- }
- //
- myLength=0;
- for (i=0; i<6; ++i) {
- myLists[i].Clear();
- }
- myMVSD.Clear();
- //
- const NMTDS_CArray1OfIndexRange& aRanges=myPDS->Ranges();
+ const NMTDS_CArray1OfIndexRange& aRanges=myDS->Ranges();
aNbR=aRanges.Extent();
//
- aNb=myPDS->NumberOfShapesOfTheObject();
+ aNb=myDS->NumberOfShapesOfTheObject();
for (i=1; i<=aNb; ++i) {
- const TopoDS_Shape& aS=myPDS->Shape(i);
+ const TopoDS_Shape& aS=myDS->Shape(i);
aTi=aS.ShapeType();
- if (IsValidType(aTi)) {
+ if (NMTDS_Tools::HasBRep(aTi)) {
Bnd_Box aBoxEx;
//
- ComputeBoxEx(i, myPDS, aBoxEx);
+ myDS->ComputeBoxEx(i, aBoxEx);
aMSI.Bind(aS, i);
aMSB.Add(aS, aBoxEx);
}
i1=aR.First();
i2=aR.Last();
for (i=i1; i<=i2; ++i) {
- const TopoDS_Shape& aSi=myPDS->Shape(i);
+ const TopoDS_Shape& aSi=myDS->Shape(i);
aTi=aSi.ShapeType();
- if (!IsValidType(aTi)){
+ if (!NMTDS_Tools::HasBRep(aTi)){
continue;
}
const Bnd_Box& aBoxEx=aMSB.FindFromKey(aSi);
}
//
aPKXB.SetIds(i, j);
+ //
if (aMPKXB.Add(aPKXB)) {
bFlag=Standard_False;// Bounding boxes are intersected
- const Bnd_Box& aBoxi=myPDS->GetBoundingBox(i);
- const Bnd_Box& aBoxj=myPDS->GetBoundingBox(j);
+ const Bnd_Box& aBoxi=myDS->GetBoundingBox(i);
+ const Bnd_Box& aBoxj=myDS->GetBoundingBox(j);
if (aBoxi.IsOut(aBoxj)) {
bFlag=!bFlag; //Bounding boxes of Sub-shapes are intersected
}
- const TopoDS_Shape& aSj=myPDS->Shape(j);
+ const TopoDS_Shape& aSj=myDS->Shape(j);
aTj=aSj.ShapeType();
- iX=TypeToInteger(aTi, aTj);
-
+ iX=NMTDS_Tools::TypeToInteger(aTi, aTj);
+ //bFlag=(iStatus==2);
aPKXB.SetFlag(bFlag);
myLists[iX].Append(aPKXB);
//
// VSD prepare
if (iX==5) { //VV
- if (aMFence.Add(j)) {
- aLV.Append(j);
- }
+ aLV.Append(j);
}
}// if (aMPKXB.Add(aPKXB)) {
}// for (; aIt.More(); aIt.Next()) {
// VSD treatment
aNbLV=aLV.Extent();
if (aNbLV) {
- myMVSD.Bind(i, aLV);
+ TColStd_ListOfInteger aLV1;
+ //
+ const TopoDS_Vertex& aVi=TopoDS::Vertex(aSi);
+ aIt.Initialize(aLV);
+ for (; aIt.More(); aIt.Next()) {
+ j=aIt.Value();
+ const TopoDS_Shape& aSj=myDS->Shape(j);
+ const TopoDS_Vertex& aVj=TopoDS::Vertex(aSj);
+ iFlag=NMTDS_Tools::ComputeVV(aVi, aVj);
+ if (!iFlag) {
+ aLV1.Append(j);
+ }
+ else {
+ aPKXB.SetIds(i, j);
+ aMPKXB.Remove(aPKXB);
+ }
+ }
+ aMVSD.Bind(i, aLV1);
}
}//for (i=i1; i<=i2; ++i) {
}//for (iR=1; iR<aNbR; ++iR) {
-}
-
-//=======================================================================
-// function: IsValidType
-// purpose:
-//=======================================================================
-Standard_Boolean IsValidType(const TopAbs_ShapeEnum aTi)
-{
- return (aTi==TopAbs_VERTEX || aTi==TopAbs_EDGE || aTi==TopAbs_FACE);
-}
-//=======================================================================
-// function: ComputeBoxEx
-// purpose:
-//=======================================================================
- void ComputeBoxEx(const Standard_Integer aIx,
- NMTDS_ShapesDataStructure* pDS,
- Bnd_Box& aBoxEx)
-{
- Standard_Integer i, aNbS, iS;
//
- const Bnd_Box& aBox=pDS->GetBoundingBox(aIx);
- aBoxEx.Add(aBox);
//
- aNbS=pDS->NumberOfSuccessors(aIx);
- for (i=1; i<=aNbS; ++i) {
- Bnd_Box aBoxS;
- iS=pDS->GetSuccessor(aIx, i);
- ComputeBoxEx(iS, pDS, aBoxS);
- aBoxEx.Add(aBoxS);
- }
+ // Chains
+ //=================
+ myMVSD.Clear();
+ NMTDS_Iterator::FillMVSD(aMVSD, myMVSD);
}
-
//=======================================================================
-// function: TypeToInteger
-// purpose:
+//function : FillMVSD
+//purpose :
//=======================================================================
-Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aType1,
- const TopAbs_ShapeEnum aType2)
+ void NMTDS_Iterator::FillMVSD(const TColStd_DataMapOfIntegerListOfInteger& aMVSD,
+ TColStd_DataMapOfIntegerListOfInteger& bMVSD)
{
- Standard_Integer iRet, iT1, iT2, iX;
- //
- iRet=-1;
- iT1=(Standard_Integer)aType1;
- iT2=(Standard_Integer)aType2;
+ Standard_Boolean bFound;
+ Standard_Integer aNbVSD, iCnt, i, j, k;
+ TColStd_ListOfInteger aLV;
+ TColStd_ListIteratorOfListOfInteger aIt;
+ TColStd_MapOfInteger aMF;
+ TColStd_MapIteratorOfMapOfInteger aItMI;
+ TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItVSD;
+ NMTDS_DataMapOfIntegerMapOfInteger aDMIMI;
+ NMTDS_DataMapIteratorOfDataMapOfIntegerMapOfInteger aIti, aItj;
//
- iX=iT2*10+iT1;
- switch (iX) {
- case 77:
- iRet=5; // VV
- break;
- case 76:
- case 67:
- iRet=4; // VE
- break;
- case 74:
- case 47:
- iRet=2; // VF
- break;
- case 66:
- iRet=3; // EE
- break;
- case 64:
- case 46:
- iRet=1; // EF
- break;
- case 44:
- iRet=0; // FF
- break;
- default:
- break;
+ aNbVSD=aMVSD.Extent();
+ if (!aNbVSD) {
+ return;
}
- return iRet;
-}
-
-/*
-//
- // check
- TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aIt1;
- TColStd_DataMapIteratorOfDataMapOfIntegerInteger aIt2;
//
- printf(" \n");
- printf(" aMVLV.Extent()=%d\n", aMVLV.Extent());
- aIt1.Initialize(aMVLV);
- for (; aIt1.More(); aIt1.Next()) {
- i=aIt1.Key();
- printf(" i=%d (", i);
- const TColStd_ListOfInteger& aLV=aIt1.Value();
- aIt.Initialize(aLV);
+ aItVSD.Initialize(aMVSD);
+ for (; aItVSD.More(); aItVSD.Next()) {
+ TColStd_MapOfInteger aMI;
+ //
+ i=aItVSD.Key();
+ aMI.Add(i);
+ const TColStd_ListOfInteger& aLVSD=aItVSD.Value();
+ aIt.Initialize(aLVSD);
for (; aIt.More(); aIt.Next()) {
j=aIt.Value();
- printf(" %d", j);
+ aMI.Add(j);
}
- printf(")\n");
+ aDMIMI.Bind(i, aMI);
}
- //
- printf(" \n");
- printf(" aMVV.Extent()=%d\n", aMVV.Extent());
- aIt2.Initialize(aMVV);
- for (; aIt2.More(); aIt2.Next()) {
- i=aIt2.Key();
- j=aIt2.Value();
- printf(" (%d, %d)\n", i, j);
+ // i
+ aIti.Initialize(aDMIMI);
+ for (; aIti.More(); aIti.Next()) {
+ i=aIti.Key();
+ if (aMF.Contains(i)) {
+ continue;
+ }
+ aMF.Add(i);
+ //
+ //TColStd_MapOfInteger& aMIi=aDMIMI.ChangeFind(i);
+ TColStd_MapOfInteger *pMIi=(TColStd_MapOfInteger *)&aIti.Value();
+ TColStd_MapOfInteger& aMIi=*pMIi;
+ // j
+ while (1) {
+ iCnt=0;
+ aItj.Initialize(aDMIMI);
+ for (; aItj.More(); aItj.Next()) {
+ j=aItj.Key();
+ if (aMF.Contains(j)) {
+ continue;
+ }
+ //
+ //TColStd_MapOfInteger& aMIj=aDMIMI.ChangeFind(j);
+ TColStd_MapOfInteger *pMj=(TColStd_MapOfInteger *)&aItj.Value();
+ TColStd_MapOfInteger& aMIj=*pMj;
+ //
+ aItMI.Initialize(aMIj);
+ for (; aItMI.More(); aItMI.Next()) {
+ k=aItMI.Key();
+ bFound=aMIi.Contains(k);
+ if (bFound) {
+ break;
+ }
+ }
+ if (!bFound) {
+ continue;
+ }
+ //
+ aItMI.Initialize(aMIj);
+ for (; aItMI.More(); aItMI.Next()) {
+ k=aItMI.Key();
+ aMIi.Add(k);
+ }
+ //
+ if (aMF.Add(j)) {
+ ++iCnt;
+ }
+ } //for (; aItj.More(); aItj.Next()) {
+ if (!iCnt) {
+ break;
+ }
+ } // while (1) {
+ //
+ aLV.Clear();
+ aItMI.Initialize(aMIi);
+ for (; aItMI.More(); aItMI.Next()) {
+ k=aItMI.Key();
+ if (k!=i) {
+ aLV.Append(k);
+ }
+ }
+ bMVSD.Bind(i, aLV);
+ }// for (; aIti.More(); aIti.Next()) {
+}
+
+ /*
+ {
+ // check
+ TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItX;
+ //
+ printf(" \n");
+ printf(" myMVSD.Extent()=%d\n", myMVSD.Extent());
+ aItX.Initialize(myMVSD);
+ for (; aItX.More(); aItX.Next()) {
+ i=aItX.Key();
+ printf(" i=%d (", i);
+ const TColStd_ListOfInteger& aLV=aItX.Value();
+ aIt.Initialize(aLV);
+ for (; aIt.More(); aIt.Next()) {
+ j=aIt.Value();
+ printf(" %d", j);
+ }
+ printf(")\n");
+ }
}
- printf("\n");
*/
+
Standard_EXPORT void Current(Standard_Integer& aIndex1,Standard_Integer& aIndex2,Standard_Boolean& aWithSubShape) const;
-Standard_EXPORT void Prepare() ;
+Standard_EXPORT virtual void Prepare() ;
Standard_EXPORT Standard_Integer ExpectedLength() const;
+Standard_EXPORT Standard_Integer BlockLength() const;
+
+
Standard_EXPORT const TColStd_DataMapOfIntegerListOfInteger& SDVertices() const;
+Standard_EXPORT static void FillMVSD(const TColStd_DataMapOfIntegerListOfInteger& aMVSD1,TColStd_DataMapOfIntegerListOfInteger& aMVSD2) ;
+
+
//
+Standard_EXPORT virtual void Intersect() ;
+
+
// Fields PROTECTED
//
-NMTDS_PShapesDataStructure myPDS;
+NMTDS_PShapesDataStructure myDS;
NMTDS_ListOfPassKeyBoolean myLists[6];
NMTDS_ListIteratorOfListOfPassKeyBoolean myIterator;
NMTDS_ListOfPassKeyBoolean myEmptyList;
--- /dev/null
+-- Copyright (C) 2007 SAMTECH
+--
+-- 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: NMTDS_IteratorCheckerSI.cdl
+-- Created: Tue Feb 6 10:18:27 2007
+-- Author: Peter KURNEV
+
+
+class IteratorCheckerSI from NMTDS
+ inherits Iterator from NMTDS
+
+ ---Purpose:
+
+--uses
+--raises
+
+is
+ Create
+ returns IteratorCheckerSI from NMTDS;
+ ---C++: alias "Standard_EXPORT virtual ~NMTDS_IteratorCheckerSI();"
+
+ Intersect(me:out)
+ is redefined protected;
+
+--fields
+end IteratorCheckerSI;
--- /dev/null
+// Copyright (C) 2007 SAMTECH
+//
+// 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: NMTDS_IteratorChecker.cxx
+// Created: Tue Feb 6 10:37:59 2007
+// Author: Peter KURNEV
+
+
+#include <NMTDS_IteratorCheckerSI.ixx>
+
+#include <TopAbs_ShapeEnum.hxx>
+#include <gp_Pnt.hxx>
+#include <Bnd_Box.hxx>
+//
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS.hxx>
+#include <BRep_Tool.hxx>
+//
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TColStd_ListOfInteger.hxx>
+#include <TColStd_DataMapOfIntegerInteger.hxx>
+#include <TColStd_ListIteratorOfListOfInteger.hxx>
+#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_MapIteratorOfMapOfInteger.hxx>
+#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
+#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
+//
+#include <TopTools_DataMapOfShapeInteger.hxx>
+//
+#include <NCollection_UBTreeFiller.hxx>
+#include <NMTDS_BoxBndTree.hxx>
+#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_CArray1OfIndexRange.hxx>
+#include <NMTDS_IndexRange.hxx>
+#include <NMTDS_PassKeyBoolean.hxx>
+#include <NMTDS_MapOfPassKeyBoolean.hxx>
+#include <NMTDS_IndexedDataMapOfShapeBox.hxx>
+#include <NMTDS_Tools.hxx>
+
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTDS_IteratorCheckerSI::NMTDS_IteratorCheckerSI()
+:
+ NMTDS_Iterator()
+{
+}
+//=======================================================================
+//function : ~
+//purpose :
+//=======================================================================
+ NMTDS_IteratorCheckerSI::~NMTDS_IteratorCheckerSI()
+{
+}
+//=======================================================================
+// function: Intersect
+// purpose:
+//=======================================================================
+ void NMTDS_IteratorCheckerSI::Intersect()
+{
+ Standard_Boolean bFlag;
+ Standard_Integer aNbS, i, aNbA, aNbB, iFlag;
+ Standard_Integer aNbSD, iX, j, iDS, jB, k, aNbLV;
+ TColStd_ListIteratorOfListOfInteger aIt;
+ TColStd_DataMapOfIntegerInteger aMII;
+ TColStd_DataMapOfIntegerListOfInteger aMVSD;
+ TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aItVSD;
+ TopTools_DataMapOfShapeInteger aMSI;
+ TopAbs_ShapeEnum aTi, aTj;
+ NMTDS_PassKeyBoolean aPKXB;
+ NMTDS_MapOfPassKeyBoolean aMPKXB;
+ NMTDS_IndexedDataMapOfShapeBox aMSB;
+ NMTDS_MapOfPassKeyBoolean aMPA;//myPairsAvoid
+ //
+ NMTDS_BoxBndTreeSelector aSelector;
+ NMTDS_BoxBndTree aBBTree;
+ NCollection_UBTreeFiller <Standard_Integer, Bnd_Box> aTreeFiller(aBBTree);
+ //
+ aNbS=myDS->NumberOfShapesOfTheObject();
+ //
+ // myPairsAvoid, aMSI, aMSB
+ for (i=1; i<=aNbS; ++i) {
+ const TopoDS_Shape& aSi=myDS->Shape(i);
+ aTi=aSi.ShapeType();
+ if (NMTDS_Tools::HasBRep(aTi)) {
+ if (aTi!=TopAbs_VERTEX) {
+ TColStd_IndexedMapOfInteger aMA;
+ //
+ myDS->GetAllSuccessors(i, aMA);
+ //
+ aNbA=aMA.Extent();
+ for (j=1; j<=aNbA; ++j) {
+ iX=aMA(j);
+ aPKXB.Clear();
+ aPKXB.SetIds(i, iX);
+ aMPA.Add(aPKXB);
+ }
+ }
+ else {
+ aPKXB.Clear();
+ aPKXB.SetIds(i, i);
+ aMPA.Add(aPKXB);
+ }
+ //
+ Bnd_Box aBoxEx;
+ //
+ myDS->ComputeBoxEx(i, aBoxEx);
+ aMSI.Bind(aSi, i);
+ aMSB.Add(aSi, aBoxEx);
+ }
+ }
+ //
+ // aMII
+ aNbB=aMSB.Extent();
+ for (i=1; i<=aNbB; ++i) {
+ const TopoDS_Shape& aS=aMSB.FindKey(i);
+ const Bnd_Box& aBoxEx=aMSB(i);
+ //
+ aTreeFiller.Add(i, aBoxEx);
+ //
+ iDS=aMSI.Find(aS);
+ aMII.Bind(i, iDS);
+ }
+ //
+ aTreeFiller.Fill();
+ //
+ for (i=1; i<=aNbS; ++i) {
+ const TopoDS_Shape& aSi=myDS->Shape(i);
+ aTi=aSi.ShapeType();
+ if (!NMTDS_Tools::HasBRep(aTi)){
+ continue;
+ }
+ const Bnd_Box& aBoxEx=aMSB.FindFromKey(aSi);
+ aSelector.Clear();
+ aSelector.SetBox(aBoxEx);
+ //
+ aNbSD=aBBTree.Select(aSelector);
+ if (!aNbSD){
+ continue;
+ }
+ //
+ const TColStd_ListOfInteger& aLI=aSelector.Indices();
+ //
+ k=0;
+ TColStd_ListOfInteger aLV;
+ //
+ aIt.Initialize(aLI);
+ for (; aIt.More(); aIt.Next()) {
+ jB=aIt.Value(); // box index in MII
+ j=aMII.Find(jB); // DS index
+ //
+ aPKXB.SetIds(i, j);
+ if (aMPA.Contains(aPKXB)) {
+ continue;
+ }
+ //
+ if (aMPKXB.Add(aPKXB)) {
+ bFlag=Standard_False;// Bounding boxes are intersected
+ const Bnd_Box& aBoxi=myDS->GetBoundingBox(i);
+ const Bnd_Box& aBoxj=myDS->GetBoundingBox(j);
+ if (aBoxi.IsOut(aBoxj)) {
+ bFlag=!bFlag; //Bounding boxes of Sub-shapes are intersected
+ }
+ const TopoDS_Shape& aSj=myDS->Shape(j);
+ aTj=aSj.ShapeType();
+ iX=NMTDS_Tools::TypeToInteger(aTi, aTj);
+ //bFlag=(iStatus==2);
+ aPKXB.SetFlag(bFlag);
+ myLists[iX].Append(aPKXB);
+ //
+ // VSD prepare
+ if (iX==5) { //VV
+ aLV.Append(j);
+ }
+ }// if (aMPKXB.Add(aPKXB)) {
+ }// for (; aIt.More(); aIt.Next()) {
+ //
+ // VSD treatment
+ aNbLV=aLV.Extent();
+ if (aNbLV) {
+ TColStd_ListOfInteger aLV1;
+ //
+ const TopoDS_Vertex& aVi=TopoDS::Vertex(aSi);
+ aIt.Initialize(aLV);
+ for (; aIt.More(); aIt.Next()) {
+ j=aIt.Value();
+ const TopoDS_Shape& aSj=myDS->Shape(j);
+ const TopoDS_Vertex& aVj=TopoDS::Vertex(aSj);
+ iFlag=NMTDS_Tools::ComputeVV(aVi, aVj);
+ if (!iFlag) {
+ aLV1.Append(j);
+ }
+ else {
+ aPKXB.SetIds(i, j);
+ aMPKXB.Remove(aPKXB);
+ }
+ }
+ aMVSD.Bind(i, aLV1);
+ }
+ }//for (i=1; i<=aNbS; ++i) {
+ //
+ //
+ // 2. Chains
+ //=================
+ myMVSD.Clear();
+ NMTDS_Iterator::FillMVSD(aMVSD, myMVSD);
+}
+
--- /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
+
+#ifndef _NMTDS_IteratorCheckerSI_HeaderFile
+#define _NMTDS_IteratorCheckerSI_HeaderFile
+
+#ifndef _NMTDS_Iterator_HeaderFile
+#include <NMTDS_Iterator.hxx>
+#endif
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_IteratorCheckerSI : public NMTDS_Iterator {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTDS_IteratorCheckerSI();
+Standard_EXPORT virtual ~NMTDS_IteratorCheckerSI();
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+Standard_EXPORT virtual void Intersect() ;
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_IteratorCheckerSI.jxx>
+
+
+
+
--- /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
+
+#ifndef _NMTDS_IteratorCheckerSI_HeaderFile
+#include <NMTDS_IteratorCheckerSI.hxx>
+#endif
--- /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
+
+#ifndef _NMTDS_PInterfPool_HeaderFile
+#define _NMTDS_PInterfPool_HeaderFile
+
+class NMTDS_InterfPool;
+
+typedef NMTDS_InterfPool* NMTDS_PInterfPool;
+
+#endif
--- /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
+
+#ifndef _NMTDS_PIterator_HeaderFile
+#define _NMTDS_PIterator_HeaderFile
+
+class NMTDS_Iterator;
+
+typedef NMTDS_Iterator* NMTDS_PIterator;
+
+#endif
--- Copyright (C) 2006 SAMTECH
+-- 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 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: NMTDS_PassKey.cdl
--- Created:
+-- Created: Mon Nov 20 12:16:13 2006
-- Author: Peter KURNEV
-- <pkv@irinox>
+
class PassKey from NMTDS
---Purpose:
uses
Shape from TopoDS,
- ListOfInteger from TColStd
-
+ IndexedMapOfInteger from TColStd,
+ ListOfInteger from TColStd
+
--raises
is
Create
returns PassKey from NMTDS;
-
- Assign(me:out;
- Other : PassKey from NMTDS)
- returns PassKey from NMTDS;
- ---C++: alias operator =
- ---C++: return &
---
+ ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKey();"
+
+ Create(Other:PassKey from NMTDS)
+ returns PassKey from NMTDS;
+ ---C++: alias "Standard_EXPORT NMTDS_PassKey& operator =(const NMTDS_PassKey& Other);"
+
+ Clear(me:out);
+
SetIds(me:out;
- aI1 :Integer from Standard;
+ aI1 :Integer from Standard);
+
+ SetIds(me:out;
+ aI1 :Integer from Standard;
aI2 :Integer from Standard);
- NbMax(me)
- returns Integer from Standard;
-
- Clear(me:out);
+ SetIds(me:out;
+ aI1 :Integer from Standard;
+ aI2 :Integer from Standard;
+ aI3 :Integer from Standard);
+
+ SetIds(me:out;
+ aI1 :Integer from Standard;
+ aI2 :Integer from Standard;
+ aI3 :Integer from Standard;
+ aI4 :Integer from Standard);
- Compute(me:out);
+ SetIds(me:out;
+ aLS :ListOfInteger from TColStd);
+
+ NbIds(me)
+ returns Integer from Standard;
IsEqual(me;
aOther:PassKey from NMTDS)
returns Boolean from Standard;
-
- Key(me)
- returns Address from Standard;
HashCode(me;
Upper : Integer from Standard)
returns Integer from Standard;
-
+ Id(me;
+ aIndex: Integer from Standard)
+ returns Integer from Standard;
+
Ids(me;
aI1 :out Integer from Standard;
aI2 :out Integer from Standard);
-
- Dump(me);
+ Dump(me;
+ aHex:Integer from Standard=0);
+
+
fields
-
myNbIds: Integer from Standard is protected;
- myNbMax: Integer from Standard is protected;
- mySum : Integer from Standard is protected;
- myIds : Integer from Standard [2] is protected;
+ mySum : Integer from Standard is protected;
+ myMap : IndexedMapOfInteger from TColStd is protected;
end PassKey;
-// Copyright (C) 2006 SAMTECH
+// 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
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-// File: NMTDS_PassKey.cxx
-// Created:
+//
+// File: NMTDS_Algo.cxx
+// Created: Sat Dec 04 12:39:47 2004
// Author: Peter KURNEV
-// <pkv@irinox>
+// <peter@PREFEX>
#include <NMTDS_PassKey.ixx>
#include <stdio.h>
#include <string.h>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
+#include <TColStd_ListOfInteger.hxx>
#ifdef WNT
#pragma warning( disable : 4101)
#endif
-static
- void SortShell(const int n, int* a);
static
Standard_Integer NormalizedId(const Standard_Integer aId,
const Standard_Integer aDiv);
//=======================================================================
NMTDS_PassKey::NMTDS_PassKey()
{
- Clear();
+ Clear();
+}
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTDS_PassKey::NMTDS_PassKey(const NMTDS_PassKey& aOther)
+{
+ myNbIds=aOther.myNbIds;
+ mySum=aOther.mySum;
+ myMap=aOther.myMap;
}
//=======================================================================
-//function :Assign
+//function :operator =
//purpose :
//=======================================================================
- NMTDS_PassKey& NMTDS_PassKey::Assign(const NMTDS_PassKey& anOther)
+ NMTDS_PassKey& NMTDS_PassKey::operator =(const NMTDS_PassKey& aOther)
{
- myNbIds=anOther.myNbIds;
- myNbMax=anOther.myNbMax;
- mySum=anOther.mySum;
- memcpy(myIds, anOther.myIds, sizeof(myIds));
+ myNbIds=aOther.myNbIds;
+ mySum=aOther.mySum;
+ myMap=aOther.myMap;
return *this;
}
//=======================================================================
+//function :~
+//purpose :
+//=======================================================================
+ NMTDS_PassKey::~NMTDS_PassKey()
+{
+}
+//=======================================================================
//function :Clear
//purpose :
//=======================================================================
void NMTDS_PassKey::Clear()
{
- Standard_Integer i;
- //
myNbIds=0;
- myNbMax=2;
mySum=0;
- for (i=0; i<myNbMax; ++i) {
- myIds[i]=0;
- }
+ myMap.Clear();
+}
+//=======================================================================
+//function :SetIds
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::SetIds(const Standard_Integer aId1)
+
+{
+ Clear();
+ myNbIds=1;
+ myMap.Add(aId1);
+ mySum=NormalizedId(aId1, myNbIds);
+}
+//=======================================================================
+//function :SetIds
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::SetIds(const Standard_Integer aId1,
+ const Standard_Integer aId2)
+{
+ TColStd_ListOfInteger aLI;
+ //
+ aLI.Append(aId1);
+ aLI.Append(aId2);
+ SetIds(aLI);
}
//=======================================================================
//function :SetIds
//purpose :
//=======================================================================
- void NMTDS_PassKey::SetIds(const Standard_Integer anId1,
- const Standard_Integer anId2)
+ void NMTDS_PassKey::SetIds(const Standard_Integer aId1,
+ const Standard_Integer aId2,
+ const Standard_Integer aId3)
{
- Standard_Integer aIdN1, aIdN2;
+ TColStd_ListOfInteger aLI;
//
- myNbIds=2;
- aIdN1=NormalizedId(anId1, myNbIds);
- aIdN2=NormalizedId(anId2, myNbIds);
- mySum=aIdN1+aIdN2;
+ aLI.Append(aId1);
+ aLI.Append(aId2);
+ aLI.Append(aId3);
+ SetIds(aLI);
+}
+//=======================================================================
+//function :SetIds
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::SetIds(const Standard_Integer aId1,
+ const Standard_Integer aId2,
+ const Standard_Integer aId3,
+ const Standard_Integer aId4)
+{
+ TColStd_ListOfInteger aLI;
//
- if (anId1<anId2) {
- myIds[myNbMax-2]=anId1;
- myIds[myNbMax-1]=anId2;
- return;
- }
- myIds[myNbMax-2]=anId2;
- myIds[myNbMax-1]=anId1;
+ aLI.Append(aId1);
+ aLI.Append(aId2);
+ aLI.Append(aId3);
+ aLI.Append(aId4);
+ SetIds(aLI);
}
//=======================================================================
-//function :Ids
+//function :SetIds
//purpose :
//=======================================================================
- void NMTDS_PassKey::Ids(Standard_Integer& aId1,
- Standard_Integer& aId2)const
+ void NMTDS_PassKey::SetIds(const TColStd_ListOfInteger& aLI)
{
- aId1=myIds[0];
- aId2=myIds[1];
+ Standard_Integer i, aId, aIdN;
+ TColStd_ListIteratorOfListOfInteger aIt;
+ //
+ Clear();
+ aIt.Initialize(aLI);
+ for (; aIt.More(); aIt.Next()) {
+ aId=aIt.Value();
+ myMap.Add(aId);
+ }
+ myNbIds=myMap.Extent();
+ for(i=1; i<=myNbIds; ++i) {
+ aId=myMap(i);
+ aIdN=NormalizedId(aId, myNbIds);
+ mySum+=aIdN;
+ }
}
+
//=======================================================================
-//function :NbMax
+//function :NbIds
//purpose :
//=======================================================================
- Standard_Integer NMTDS_PassKey::NbMax()const
+ Standard_Integer NMTDS_PassKey::NbIds()const
{
- return myNbMax;
+ return myNbIds;
}
//=======================================================================
-//function :Compute
+//function :Id
//purpose :
//=======================================================================
- void NMTDS_PassKey::Compute()
+ Standard_Integer NMTDS_PassKey::Id(const Standard_Integer aIndex) const
{
- SortShell(myNbIds, myIds+myNbMax-myNbIds);
+ if (aIndex<1 || aIndex>myNbIds) {
+ return -1;
+ }
+ return myMap(aIndex);
}
//=======================================================================
-//function :IsEqual
+//function :Ids
//purpose :
//=======================================================================
- Standard_Boolean NMTDS_PassKey::IsEqual(const NMTDS_PassKey& anOther) const
+ void NMTDS_PassKey::Ids(Standard_Integer& aId1,
+ Standard_Integer& aId2) const
{
- Standard_Integer iIsEqual;
- Standard_Boolean bIsEqual;
- //
- iIsEqual=memcmp(myIds, anOther.myIds, sizeof(myIds));
- bIsEqual=Standard_False;
- if (!iIsEqual) {
- bIsEqual=!bIsEqual;
+ aId1=0;
+ aId2=0;
+ if (myNbIds>1) {
+ aId1=myMap(1);
+ aId2=myMap(2);
}
- return bIsEqual;
}
//=======================================================================
-//function :Key
+//function :IsEqual
//purpose :
//=======================================================================
- Standard_Address NMTDS_PassKey::Key()const
+ Standard_Boolean NMTDS_PassKey::IsEqual(const NMTDS_PassKey& aOther) const
{
- return (Standard_Address)myIds;
+ Standard_Boolean bRet;
+ Standard_Integer i, aId;
+ //
+ bRet=Standard_False;
+ //
+ if (myNbIds!=aOther.myNbIds) {
+ return bRet;
+ }
+ for (i=1; i<=myNbIds; ++i) {
+ aId=myMap(i);
+ if (!aOther.myMap.Contains(aId)) {
+ return bRet;
+ }
+ }
+ return !bRet;
}
//=======================================================================
//function : HashCode
//purpose :
//=======================================================================
- Standard_Integer NMTDS_PassKey::HashCode(const Standard_Integer Upper) const
+ Standard_Integer NMTDS_PassKey::HashCode(const Standard_Integer aUpper) const
{
- return ::HashCode(mySum, Upper);
+ return ::HashCode(mySum, aUpper);
}
//=======================================================================
//function : Dump
//purpose :
//=======================================================================
- void NMTDS_PassKey::Dump()const
+ void NMTDS_PassKey::Dump(const Standard_Integer )const
{
- Standard_Integer i;
- //
- printf(" PassKey: {");
- for (i=0; i<myNbMax; ++i) {
- printf(" %d", myIds[i]);
- }
- printf(" }");
}
+
//=======================================================================
// function: NormalizedId
// purpose :
}
return aIdRet;
}
+/*
+//=========
//=======================================================================
-// function: SortShell
-// purpose :
+//function : Contains
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_PassKey::Contains(const Standard_Integer aId) const
+{
+ return myMap.Contains(aId);
+}
+//=======================================================================
+//function :Contains
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_PassKey::Contains(const NMTDS_PassKey& aOther) const
+{
+ Standard_Boolean bRet;
+ Standard_Integer i, aId;
+ //
+ bRet=Standard_False;
+ //
+ if (myNbIds<aOther.myNbIds) {
+ return bRet;
+ }
+ for (i=1; i<=aOther.myNbIds; ++i) {
+ aId=aOther.myMap(i);
+ if (!myMap.Contains(aId)) {
+ return bRet;
+ }
+ }
+ return !bRet;
+}
+//=======================================================================
+//function :Intersected
+//purpose :
//=======================================================================
-void SortShell(const int n, int* a)
+ Standard_Boolean NMTDS_PassKey::Intersected(const NMTDS_PassKey& aOther) const
{
- int x, nd, i, j, l, d=1;
+ Standard_Boolean bRet;
+ Standard_Integer i, aId;
//
- while(d<=n) {
- d*=2;
+ bRet=Standard_False;
+ //
+ for (i=1; i<=myNbIds; ++i) {
+ aId=myMap(i);
+ if (aOther.Contains(aId)) {
+ return !bRet;
+ }
+ }
+ return bRet;
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::Add(const Standard_Integer aId)
+{
+ TColStd_ListOfInteger aLI;
+ aLI.Append(aId);
+ //
+ Add(aLI);
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::Add(const NMTDS_PassKey& aOther)
+{
+ Standard_Integer i, aId;
+ TColStd_ListOfInteger aLS;
+ //
+ for(i=1; i<=myNbIds; ++i) {
+ aId=myMap(i);
+ aLS.Append(aId);
+ }
+ for(i=1; i<=aOther.myNbIds; ++i) {
+ aId=aOther.myMap(i);
+ aLS.Append(aId);
+ }
+ //
+ Add(aLS);
+}
+//=======================================================================
+//function : Add
+//purpose :
+//=======================================================================
+ void NMTDS_PassKey::Add(const TColStd_ListOfInteger& aLI)
+{
+ Standard_Integer i, aId;
+ TColStd_ListOfInteger aLS;
+ TColStd_ListIteratorOfListOfInteger aIt;
+ //
+ for(i=1; i<=myNbIds; ++i) {
+ aId=myMap(i);
+ aLS.Append(aId);
+ }
+ aIt.Initialize(aLI);
+ for (; aIt.More(); aIt.Next()) {
+ aId=aIt.Value();
+ aLS.Append(aId);
}
//
- while (d) {
- d=(d-1)/2;
- //
- nd=n-d;
- for (i=0; i<nd; ++i) {
- j=i;
- m30:;
- l=j+d;
- if (a[l] < a[j]){
- x=a[j];
- a[j]=a[l];
- a[l]=x;
- j-=d;
- if (j > -1) goto m30;
- }//if (a[l] < a[j]){
- }//for (i=0; i<nd; ++i)
- }//while (1)
+ SetIds(aLS);
}
+//=========
+*/
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
+#ifndef _TColStd_IndexedMapOfInteger_HeaderFile
+#include <TColStd_IndexedMapOfInteger.hxx>
+#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
-#ifndef _Standard_Address_HeaderFile
-#include <Standard_Address.hxx>
-#endif
+class TColStd_ListOfInteger;
#ifndef _Standard_HeaderFile
Standard_EXPORT NMTDS_PassKey();
+Standard_EXPORT virtual ~NMTDS_PassKey();
+
+Standard_EXPORT NMTDS_PassKey(const NMTDS_PassKey& Other);
+Standard_EXPORT NMTDS_PassKey& operator =(const NMTDS_PassKey& Other);
+
+
+Standard_EXPORT void Clear() ;
-Standard_EXPORT NMTDS_PassKey& Assign(const NMTDS_PassKey& Other) ;
- NMTDS_PassKey& operator =(const NMTDS_PassKey& Other)
-{
- return Assign(Other);
-}
+Standard_EXPORT void SetIds(const Standard_Integer aI1) ;
Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2) ;
-Standard_EXPORT Standard_Integer NbMax() const;
+Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3) ;
-Standard_EXPORT void Clear() ;
+Standard_EXPORT void SetIds(const Standard_Integer aI1,const Standard_Integer aI2,const Standard_Integer aI3,const Standard_Integer aI4) ;
-Standard_EXPORT void Compute() ;
+Standard_EXPORT void SetIds(const TColStd_ListOfInteger& aLS) ;
-Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const;
+Standard_EXPORT Standard_Integer NbIds() const;
-Standard_EXPORT Standard_Address Key() const;
+Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKey& aOther) const;
Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const;
+Standard_EXPORT Standard_Integer Id(const Standard_Integer aIndex) const;
+
+
Standard_EXPORT void Ids(Standard_Integer& aI1,Standard_Integer& aI2) const;
-Standard_EXPORT void Dump() const;
+Standard_EXPORT void Dump(const Standard_Integer aHex = 0) const;
// Fields PROTECTED
//
Standard_Integer myNbIds;
-Standard_Integer myNbMax;
Standard_Integer mySum;
-Standard_Integer myIds[2];
+TColStd_IndexedMapOfInteger myMap;
private:
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#ifndef _TColStd_ListOfInteger_HeaderFile
+#include <TColStd_ListOfInteger.hxx>
+#endif
#ifndef _NMTDS_PassKey_HeaderFile
#include <NMTDS_PassKey.hxx>
#endif
is
Create
returns PassKeyBoolean from NMTDS;
-
- Assign(me:out;
- Other : PassKeyBoolean from NMTDS)
- returns PassKeyBoolean from NMTDS;
- ---C++: alias operator =
- ---C++: return &
---
+ ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKeyBoolean();"
+
SetFlag(me:out;
aFlag: Boolean from Standard);
-
+ ---C++: alias " Standard_EXPORT NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other);"
+
Flag(me)
returns Boolean from Standard;
fields
-
myFlag: Boolean from Standard is protected;
end PassKeyBoolean;
#include <NMTDS_PassKeyBoolean.ixx>
//=======================================================================
-//function : NMTDS_PassKeyBoolean
+//function :
//purpose :
//=======================================================================
NMTDS_PassKeyBoolean::NMTDS_PassKeyBoolean()
{
}
//=======================================================================
-//function :Assign
+//function : ~
//purpose :
//=======================================================================
- NMTDS_PassKeyBoolean& NMTDS_PassKeyBoolean::Assign(const NMTDS_PassKeyBoolean& anOther)
+ NMTDS_PassKeyBoolean::~NMTDS_PassKeyBoolean()
+{
+}
+//=======================================================================
+//function :operator =
+//purpose :
+//=======================================================================
+ NMTDS_PassKeyBoolean& NMTDS_PassKeyBoolean::operator =(const NMTDS_PassKeyBoolean& anOther)
{
myFlag=anOther.myFlag;
- NMTDS_PassKey::Assign(anOther);
+ NMTDS_PassKey::operator =(anOther);
return *this;
}
//=======================================================================
Standard_EXPORT NMTDS_PassKeyBoolean();
-
-
-Standard_EXPORT NMTDS_PassKeyBoolean& Assign(const NMTDS_PassKeyBoolean& Other) ;
- NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other)
-{
- return Assign(Other);
-}
-
+Standard_EXPORT virtual ~NMTDS_PassKeyBoolean();
Standard_EXPORT void SetFlag(const Standard_Boolean aFlag) ;
+ Standard_EXPORT NMTDS_PassKeyBoolean& operator =(const NMTDS_PassKeyBoolean& Other);
Standard_EXPORT Standard_Boolean Flag() const;
--- Copyright (C) 2006 SAMTECH
+-- 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 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: NMTDS_PassKeyMapHasher.cdl
-- Created:
-- Author: Peter KURNEV
-// Copyright (C) 2006 SAMTECH
+// 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
//function : HashCode
//purpose :
//=======================================================================
- Standard_Integer NMTDS_PassKeyMapHasher::HashCode(const NMTDS_PassKey& aPKey,
+ Standard_Integer NMTDS_PassKeyMapHasher::HashCode(const NMTDS_PassKey& aPK,
const Standard_Integer Upper)
{
- return aPKey.HashCode(Upper);
+ return aPK.HashCode(Upper);
}
//=======================================================================
//function :IsEqual
//purpose :
//=======================================================================
- Standard_Boolean NMTDS_PassKeyMapHasher::IsEqual(const NMTDS_PassKey& aPKey1,
- const NMTDS_PassKey& aPKey2)
+ Standard_Boolean NMTDS_PassKeyMapHasher::IsEqual(const NMTDS_PassKey& aPK1,
+ const NMTDS_PassKey& aPK2)
{
- return aPKey1.IsEqual(aPKey2);
+ return aPK1.IsEqual(aPK2);
}
--- /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: NMTDS_PassKeyShape.cdl
+-- Created:
+-- Author: Peter KURNEV
+-- <pkv@irinox>
+
+
+class PassKeyShape from NMTDS
+
+ ---Purpose:
+
+uses
+ Shape from TopoDS,
+ ListOfShape from TopTools,
+ IndexedMapOfShape from TopTools
+
+--raises
+
+is
+ Create
+ returns PassKeyShape from NMTDS;
+ ---C++: alias "Standard_EXPORT virtual ~NMTDS_PassKeyShape();"
+
+ Create(Other:PassKeyShape from NMTDS)
+ returns PassKeyShape from NMTDS;
+
+ Assign(me:out;
+ Other : PassKeyShape from NMTDS)
+ returns PassKeyShape from NMTDS;
+ ---C++: alias operator =
+ ---C++: return &
+
+ SetShapes(me:out;
+ aS :Shape from TopoDS);
+
+ SetShapes(me:out;
+ aS1 :Shape from TopoDS;
+ aS2 :Shape from TopoDS);
+
+ SetShapes(me:out;
+ aS1 :Shape from TopoDS;
+ aS2 :Shape from TopoDS;
+ aS3 :Shape from TopoDS);
+
+ SetShapes(me:out;
+ aS1 :Shape from TopoDS;
+ aS2 :Shape from TopoDS;
+ aS3 :Shape from TopoDS;
+ aS4 :Shape from TopoDS);
+
+ SetShapes(me:out;
+ aLS :ListOfShape from TopTools);
+
+ Clear(me:out);
+
+
+ NbIds(me)
+ returns Integer from Standard;
+
+ IsEqual(me;
+ aOther:PassKeyShape from NMTDS)
+ returns Boolean from Standard;
+
+ HashCode(me;
+ Upper : Integer from Standard)
+ returns Integer from Standard;
+
+ Dump(me;
+ aHex:Integer from Standard=0);
+
+fields
+ myNbIds:Integer from Standard is protected;
+ mySum :Integer from Standard is protected;
+ myUpper:Integer from Standard is protected;
+ myMap :IndexedMapOfShape from TopTools is protected;
+
+end PassKeyShape;
--- /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: NMTDS_PassKeyShape.cxx
+// Created:
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTDS_PassKeyShape.ixx>
+
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+
+
+static
+ Standard_Integer NormalizedId(const Standard_Integer aId,
+ const Standard_Integer aDiv);
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTDS_PassKeyShape::NMTDS_PassKeyShape()
+{
+ myUpper=432123;
+}
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTDS_PassKeyShape::NMTDS_PassKeyShape(const NMTDS_PassKeyShape& aOther)
+{
+ myUpper=432123;
+ myNbIds=aOther.myNbIds;
+ mySum=aOther.mySum;
+ myMap=aOther.myMap;
+}
+//=======================================================================
+//function :~
+//purpose :
+//=======================================================================
+ NMTDS_PassKeyShape::~NMTDS_PassKeyShape()
+{
+}
+//=======================================================================
+//function :Assign
+//purpose :
+//=======================================================================
+ NMTDS_PassKeyShape& NMTDS_PassKeyShape::Assign(const NMTDS_PassKeyShape& aOther)
+{
+ myUpper=432123;
+ myNbIds=aOther.myNbIds;
+ mySum=aOther.mySum;
+ myMap=aOther.myMap;
+ return *this;
+}
+//=======================================================================
+//function :Clear
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::Clear()
+{
+ myNbIds=0;
+ mySum=0;
+ myMap.Clear();
+}
+//=======================================================================
+//function :SetShapes
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1)
+
+{
+ Standard_Integer aHC;
+ //
+ Clear();
+ myNbIds=1;
+ myMap.Add(aS1);
+ aHC=aS1.HashCode(myUpper);
+ mySum=NormalizedId(aHC, myNbIds);
+}
+//=======================================================================
+//function :SetShapes
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1,
+ const TopoDS_Shape& aS2)
+{
+ TopTools_ListOfShape aLS;
+ //
+ aLS.Append(aS1);
+ aLS.Append(aS2);
+ SetShapes(aLS);
+}
+//=======================================================================
+//function :SetShapes
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1,
+ const TopoDS_Shape& aS2,
+ const TopoDS_Shape& aS3)
+{
+ TopTools_ListOfShape aLS;
+ //
+ aLS.Append(aS1);
+ aLS.Append(aS2);
+ aLS.Append(aS3);
+ SetShapes(aLS);
+}
+//=======================================================================
+//function :SetShapes
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::SetShapes(const TopoDS_Shape& aS1,
+ const TopoDS_Shape& aS2,
+ const TopoDS_Shape& aS3,
+ const TopoDS_Shape& aS4)
+{
+ TopTools_ListOfShape aLS;
+ //
+ aLS.Append(aS1);
+ aLS.Append(aS2);
+ aLS.Append(aS3);
+ aLS.Append(aS4);
+ SetShapes(aLS);
+}
+//=======================================================================
+//function :SetShapes
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::SetShapes(const TopTools_ListOfShape& aLS)
+{
+ Standard_Integer i, aId, aIdN;
+ TopTools_ListIteratorOfListOfShape aIt;
+ //
+ Clear();
+ aIt.Initialize(aLS);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Shape& aS=aIt.Value();
+ myMap.Add(aS);
+ }
+ myNbIds=myMap.Extent();
+ for(i=1; i<=myNbIds; ++i) {
+ const TopoDS_Shape& aS=myMap(i);
+ aId=aS.HashCode(myUpper);
+ aIdN=NormalizedId(aId, myNbIds);
+ mySum+=aIdN;
+ }
+}
+//=======================================================================
+//function :NbIds
+//purpose :
+//=======================================================================
+ Standard_Integer NMTDS_PassKeyShape::NbIds()const
+{
+ return myNbIds;
+}
+//=======================================================================
+//function :IsEqual
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_PassKeyShape::IsEqual(const NMTDS_PassKeyShape& aOther) const
+{
+ Standard_Boolean bRet;
+ Standard_Integer i;
+ //
+ bRet=Standard_False;
+ //
+ if (myNbIds!=aOther.myNbIds) {
+ return bRet;
+ }
+ for (i=1; i<=myNbIds; ++i) {
+ const TopoDS_Shape& aS=myMap(i);
+ if (!aOther.myMap.Contains(aS)) {
+ return bRet;
+ }
+ }
+ return !bRet;
+}
+//=======================================================================
+//function : HashCode
+//purpose :
+//=======================================================================
+ Standard_Integer NMTDS_PassKeyShape::HashCode(const Standard_Integer aUpper) const
+{
+ return ::HashCode(mySum, aUpper);
+}
+//=======================================================================
+//function : Dump
+//purpose :
+//=======================================================================
+ void NMTDS_PassKeyShape::Dump(const Standard_Integer)const
+{
+}
+//=======================================================================
+// function: NormalizedId
+// purpose :
+//=======================================================================
+Standard_Integer NormalizedId(const Standard_Integer aId,
+ const Standard_Integer aDiv)
+{
+ Standard_Integer aMax, aTresh, aIdRet;
+ //
+ aIdRet=aId;
+ aMax=::IntegerLast();
+ aTresh=aMax/aDiv;
+ if (aId>aTresh) {
+ aIdRet=aId%aTresh;
+ }
+ return aIdRet;
+}
--- /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
+
+#ifndef _NMTDS_PassKeyShape_HeaderFile
+#define _NMTDS_PassKeyShape_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _TopTools_IndexedMapOfShape_HeaderFile
+#include <TopTools_IndexedMapOfShape.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class TopoDS_Shape;
+class TopTools_ListOfShape;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_PassKeyShape {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTDS_PassKeyShape();
+Standard_EXPORT virtual ~NMTDS_PassKeyShape();
+
+
+Standard_EXPORT NMTDS_PassKeyShape(const NMTDS_PassKeyShape& Other);
+
+
+Standard_EXPORT NMTDS_PassKeyShape& Assign(const NMTDS_PassKeyShape& Other) ;
+ NMTDS_PassKeyShape& operator =(const NMTDS_PassKeyShape& Other)
+{
+ return Assign(Other);
+}
+
+
+
+Standard_EXPORT void SetShapes(const TopoDS_Shape& aS) ;
+
+
+Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2) ;
+
+
+Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3) ;
+
+
+Standard_EXPORT void SetShapes(const TopoDS_Shape& aS1,const TopoDS_Shape& aS2,const TopoDS_Shape& aS3,const TopoDS_Shape& aS4) ;
+
+
+Standard_EXPORT void SetShapes(const TopTools_ListOfShape& aLS) ;
+
+
+Standard_EXPORT void Clear() ;
+
+
+Standard_EXPORT Standard_Integer NbIds() const;
+
+
+Standard_EXPORT Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aOther) const;
+
+
+Standard_EXPORT Standard_Integer HashCode(const Standard_Integer Upper) const;
+
+
+Standard_EXPORT void Dump(const Standard_Integer aHex = 0) const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+Standard_Integer myNbIds;
+Standard_Integer mySum;
+Standard_Integer myUpper;
+TopTools_IndexedMapOfShape myMap;
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_PassKeyShape.jxx>
+
+
+
+
--- /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
+
+#ifndef _TopoDS_Shape_HeaderFile
+#include <TopoDS_Shape.hxx>
+#endif
+#ifndef _TopTools_ListOfShape_HeaderFile
+#include <TopTools_ListOfShape.hxx>
+#endif
+#ifndef _NMTDS_PassKeyShape_HeaderFile
+#include <NMTDS_PassKeyShape.hxx>
+#endif
--- /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: NMTDS_PassKeyMapHasher.cdl
+-- Created:
+-- Author: Peter KURNEV
+-- <pkv@irinox>
+
+
+class PassKeyShapeMapHasher from NMTDS
+
+ ---Purpose:
+
+uses
+ PassKeyShape from NMTDS
+
+--raises
+
+is
+ HashCode(myclass;
+ aPKey : PassKeyShape from NMTDS;
+ Upper : Integer from Standard)
+ returns Integer from Standard;
+
+
+ IsEqual(myclass;
+ aPKey1 : PassKeyShape from NMTDS;
+ aPKey2 : PassKeyShape from NMTDS)
+ returns Boolean from Standard;
+
+end PassKeyShapeMapHasher;
--- /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: NMTDS_PassKeyMapHasher.cxx
+// Created:
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTDS_PassKeyShapeMapHasher.ixx>
+
+//=======================================================================
+//function : HashCode
+//purpose :
+//=======================================================================
+ Standard_Integer NMTDS_PassKeyShapeMapHasher::HashCode(const NMTDS_PassKeyShape& aPK,
+ const Standard_Integer Upper)
+{
+ return aPK.HashCode(Upper);
+}
+//=======================================================================
+//function :IsEqual
+//purpose :
+//=======================================================================
+ Standard_Boolean NMTDS_PassKeyShapeMapHasher::IsEqual(const NMTDS_PassKeyShape& aPK1,
+ const NMTDS_PassKeyShape& aPK2)
+{
+ return aPK1.IsEqual(aPK2);
+}
--- /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
+
+#ifndef _NMTDS_PassKeyShapeMapHasher_HeaderFile
+#define _NMTDS_PassKeyShapeMapHasher_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class NMTDS_PassKeyShape;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_PassKeyShapeMapHasher {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT static Standard_Integer HashCode(const NMTDS_PassKeyShape& aPKey,const Standard_Integer Upper) ;
+
+
+Standard_EXPORT static Standard_Boolean IsEqual(const NMTDS_PassKeyShape& aPKey1,const NMTDS_PassKeyShape& aPKey2) ;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_PassKeyShapeMapHasher.jxx>
+
+
+
+
--- /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
+
+#ifndef _NMTDS_PassKeyShape_HeaderFile
+#include <NMTDS_PassKeyShape.hxx>
+#endif
+#ifndef _NMTDS_PassKeyShapeMapHasher_HeaderFile
+#include <NMTDS_PassKeyShapeMapHasher.hxx>
+#endif
---Purpose:
-uses
- Shape from TopoDS,
+uses
+ Box from Bnd,
+ IndexedMapOfInteger from TColStd,
+ Shape from TopoDS,
IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations,
CArray1OfIndexRange from NMTDS,
IndexedDataMapOfIntegerIndexedDataMapOfShapeInteger from NMTDS
aMS :out IndexedDataMapOfShapeAncestorsSuccessors from BooleanOperations);
-- Contribution of Samtech www.samcef.com END
+ GetAllSuccessors(me;
+ anIndex:Integer from Standard;
+ aScrs :out IndexedMapOfInteger from TColStd);
+
+ ComputeBoxEx(me;
+ anIndex:Integer from Standard;
+ aBox:out Box from Bnd);
+
fields
myCompositeShape: Shape from TopoDS is protected;
myRanges : CArray1OfIndexRange from NMTDS is protected;
#include <NMTDS_ShapesDataStructure.ixx>
-
-#include <TColStd_MapOfInteger.hxx>
-
#include <TopoDS_Iterator.hxx>
#include <TopoDS_Shape.hxx>
-
-#include <BooleanOperations_ShapeAndInterferences.hxx>
#include <BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors.hxx>
-#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
-
#include <NMTDS_ListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx>
#include <NMTDS_ListIteratorOfListOfIndexedDataMapOfShapeAncestorsSuccessors.hxx>
+#include <BooleanOperations_ShapeAndInterferences.hxx>
#include <NMTDS_IndexRange.hxx>
+//
+#include <BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors.hxx>
+#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
+#include <TColStd_MapOfInteger.hxx>
+#include <NMTDS_Tools.hxx>
+
+
+static
+ void ComputeBoxExS(const Standard_Integer aIx,
+ const NMTDS_ShapesDataStructure* pDS,
+ Bnd_Box& aBoxEx);
+static
+ void GetAllSuccessorsS(const Standard_Integer nS,
+ const NMTDS_ShapesDataStructure* myDS,
+ TColStd_IndexedMapOfInteger& aMA);
//===========================================================================
//function : NMTDS_ShapesDataStructure::NMTDS_ShapesDataStructure
}
//modified by NIZNHY-PKV Tue Feb 27 17:06:03 2007t
}
- //
aNbS=aMSA.Extent();
//
// Fill myRanges
// Contribution of Samtech www.samcef.com BEGIN
//
// Fill the table
+
//aShift=0;
//for (i=0; i<2; ++i) {
// if (i) {
// InsertShapeAndAncestorsSuccessors(aSx, aASx, aShift);
// }
//}
-
+
aShift=0;
for (j=1; j<=aNbS; ++j) {
const TopoDS_Shape& aSx=aMSA.FindKey(j);
// Contribution of Samtech www.samcef.com END
return aIndex;
}
+
+//=======================================================================
+//function : ComputeBoxEx
+//purpose :
+//=======================================================================
+ void NMTDS_ShapesDataStructure::ComputeBoxEx (const Standard_Integer aIx,
+ Bnd_Box& aBoxEx)const
+{
+ ComputeBoxExS(aIx, this, aBoxEx);
+}
+//=======================================================================
+//function : GetAllSuccessors
+//purpose :
+//=======================================================================
+ void NMTDS_ShapesDataStructure::GetAllSuccessors(const Standard_Integer nS,
+ TColStd_IndexedMapOfInteger& aMA)const
+{
+ GetAllSuccessorsS(nS, this, aMA);
+}
+//=======================================================================
+//function : GetAllSuccessorsS
+//purpose :
+//=======================================================================
+void GetAllSuccessorsS(const Standard_Integer nS,
+ const NMTDS_ShapesDataStructure* myDS,
+ TColStd_IndexedMapOfInteger& aMA)
+{
+ TopAbs_ShapeEnum aT;
+ Standard_Integer i, nSx, aNbSuccessors, *pSuccessors;
+ Standard_Address xSuccessors;
+ //
+ const TopoDS_Shape& aS=myDS->Shape(nS);
+ aT=aS.ShapeType();
+ if(NMTDS_Tools::HasBRep(aT)) {
+ aMA.Add(nS);
+ //
+ if (aT==TopAbs_VERTEX) {
+ return;
+ }
+ }
+ //
+ myDS->GetSuccessors(nS, xSuccessors, aNbSuccessors);
+ pSuccessors=(Standard_Integer*)xSuccessors;
+ for (i=0; i<aNbSuccessors; ++i) {
+ nSx=pSuccessors[i];
+ GetAllSuccessorsS(nSx, myDS, aMA);
+ }
+}
+//=======================================================================
+// function: ComputeBoxExS
+// purpose:
+//=======================================================================
+ void ComputeBoxExS(const Standard_Integer aIx,
+ const NMTDS_ShapesDataStructure* pDS,
+ Bnd_Box& aBoxEx)
+{
+ Standard_Integer i, aNbS, iS;
+ //
+ const Bnd_Box& aBox=pDS->GetBoundingBox(aIx);
+ aBoxEx.Add(aBox);
+ //
+ aNbS=pDS->NumberOfSuccessors(aIx);
+ for (i=1; i<=aNbS; ++i) {
+ Bnd_Box aBoxS;
+ iS=pDS->GetSuccessor(aIx, i);
+ ComputeBoxExS(iS, pDS, aBoxS);
+ aBoxEx.Add(aBoxS);
+ }
+}
class TopoDS_Shape;
class NMTDS_CArray1OfIndexRange;
class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors;
+class TColStd_IndexedMapOfInteger;
+class Bnd_Box;
#ifndef _Standard_HeaderFile
Standard_EXPORT void FillSubshapes(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const;
+Standard_EXPORT void GetAllSuccessors(const Standard_Integer anIndex,TColStd_IndexedMapOfInteger& aScrs) const;
+
+
+Standard_EXPORT void ComputeBoxEx(const Standard_Integer anIndex,Bnd_Box& aBox) const;
+
+
#ifndef _BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors_HeaderFile
#include <BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors.hxx>
#endif
+#ifndef _TColStd_IndexedMapOfInteger_HeaderFile
+#include <TColStd_IndexedMapOfInteger.hxx>
+#endif
+#ifndef _Bnd_Box_HeaderFile
+#include <Bnd_Box.hxx>
+#endif
#ifndef _NMTDS_ShapesDataStructure_HeaderFile
#include <NMTDS_ShapesDataStructure.hxx>
#endif
--- /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: NMTDS_Tools.cdl
+-- Created: Tue Feb 20 14:56:14 2007
+-- Author: Peter KURNEV
+-- <pkv@irinox>
+---Copyright: Matra Datavision 2007
+
+
+class Tools from NMTDS
+
+ ---Purpose:
+
+uses
+ ShapeEnum from TopAbs,
+ Vertex from TopoDS,
+ Shape from TopoDS,
+ IndexedDataMapOfShapeShape from TopTools
+
+--raises
+
+is
+ TypeToInteger(myclass;
+ aT1: ShapeEnum from TopAbs;
+ aT2: ShapeEnum from TopAbs)
+ returns Integer from Standard;
+
+ HasBRep(myclass;
+ aT: ShapeEnum from TopAbs)
+ returns Boolean from Standard;
+
+ ComputeVV(myclass;
+ aV1:Vertex from TopoDS;
+ aV2:Vertex from TopoDS)
+ returns Integer from Standard;
+
+ CopyShape(myclass;
+ aS:Shape from TopoDS;
+ aSC:out Shape from TopoDS);
+
+ CopyShape(myclass;
+ aS:Shape from TopoDS;
+ aSC :out Shape from TopoDS;
+ aMSS :out IndexedDataMapOfShapeShape from TopTools);
+--fields
+
+end Tools;
--- /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: NMTDS_Tools.cxx
+// Created: Tue Feb 20 14:57:28 2007
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTDS_Tools.ixx>
+#include <TopoDS_Vertex.hxx>
+#include <gp_Pnt.hxx>
+#include <BRep_Tool.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopTools_IndexedDataMapOfShapeShape.hxx>
+#include <TopAbs_ShapeEnum.hxx>
+#include <TopoDS_Iterator.hxx>
+#include <BRep_Builder.hxx>
+
+void CopySource(const TopoDS_Shape& aS,
+ TopTools_IndexedDataMapOfShapeShape& aMapSS,
+ TopoDS_Shape& aSC);
+
+//=======================================================================
+//function : CopyShape
+//purpose :
+//=======================================================================
+ void NMTDS_Tools::CopyShape(const TopoDS_Shape& aS,
+ TopoDS_Shape& aSC)
+{
+ TopTools_IndexedDataMapOfShapeShape aMapSS;
+ //
+ CopySource(aS, aMapSS, aSC);
+}
+//=======================================================================
+//function : CopyShape
+//purpose :
+//=======================================================================
+ void NMTDS_Tools::CopyShape(const TopoDS_Shape& aS,
+ TopoDS_Shape& aSC,
+ TopTools_IndexedDataMapOfShapeShape& aMapSS)
+{
+ CopySource(aS, aMapSS, aSC);
+}
+//=======================================================================
+//function : CopySource
+//purpose :
+//=======================================================================
+void CopySource(const TopoDS_Shape& aS,
+ TopTools_IndexedDataMapOfShapeShape& aMapSS,
+ TopoDS_Shape& aSC)
+{
+ Standard_Boolean bFree;
+ TopAbs_ShapeEnum aT;
+ TopoDS_Iterator aIt;
+ BRep_Builder BB;
+ //
+ aT=aS.ShapeType();
+ //
+ if (aMapSS.Contains(aS)) {
+ aSC=aMapSS.ChangeFromKey(aS);
+ aSC.Orientation(aS.Orientation());
+ return;
+ }
+ else {
+ aSC=aS.EmptyCopied();
+ aMapSS.Add(aS, aSC);
+ }
+ //
+ bFree=aSC.Free();
+ aSC.Free(Standard_True);
+ aIt.Initialize(aS);
+ for (; aIt.More(); aIt.Next()) {
+ TopoDS_Shape aSCx;
+ //
+ const TopoDS_Shape& aSx=aIt.Value();
+ //
+ CopySource (aSx, aMapSS, aSCx);
+ //
+ aSCx.Orientation(aSx.Orientation());
+ BB.Add(aSC, aSCx);
+ }
+ aSC.Free(bFree);
+}
+//=======================================================================
+// function: ComputeVV
+// purpose:
+//=======================================================================
+ Standard_Integer NMTDS_Tools::ComputeVV(const TopoDS_Vertex& aV1,
+ const TopoDS_Vertex& aV2)
+{
+ Standard_Real aTolV1, aTolV2, aTolSum, aTolSum2, aD2;
+ gp_Pnt aP1, aP2;
+ //
+ aTolV1=BRep_Tool::Tolerance(aV1);
+ aTolV2=BRep_Tool::Tolerance(aV2);
+ aTolSum=aTolV1+aTolV2;
+ aTolSum2=aTolSum*aTolSum;
+ //
+ aP1=BRep_Tool::Pnt(aV1);
+ aP2=BRep_Tool::Pnt(aV2);
+ //
+ aD2=aP1.SquareDistance(aP2);
+ if (aD2>aTolSum2) {
+ return -1;
+ }
+ return 0;
+}
+//=======================================================================
+// function: HasBRep
+// purpose:
+//=======================================================================
+ Standard_Boolean NMTDS_Tools::HasBRep(const TopAbs_ShapeEnum aTi)
+{
+ return (aTi==TopAbs_VERTEX || aTi==TopAbs_EDGE || aTi==TopAbs_FACE);
+}
+//=======================================================================
+//function : TypeToInteger
+//purpose :
+//=======================================================================
+ Standard_Integer NMTDS_Tools::TypeToInteger(const TopAbs_ShapeEnum aType1,
+ const TopAbs_ShapeEnum aType2)
+{
+ Standard_Integer iRet, iT1, iT2, iX;
+ //
+ iRet=-1;
+ iT1=(Standard_Integer)aType1;
+ iT2=(Standard_Integer)aType2;
+ //
+ iX=iT2*10+iT1;
+ switch (iX) {
+ case 77:
+ iRet=5; // VV
+ break;
+ case 76:
+ case 67:
+ iRet=4; // VE
+ break;
+ case 74:
+ case 47:
+ iRet=2; // VF
+ break;
+ case 66:
+ iRet=3; // EE
+ break;
+ case 64:
+ case 46:
+ iRet=1; // EF
+ break;
+ case 44:
+ iRet=0; // FF
+ break;
+ default:
+ break;
+ }
+ return iRet;
+}
--- /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
+
+#ifndef _NMTDS_Tools_HeaderFile
+#define _NMTDS_Tools_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _TopAbs_ShapeEnum_HeaderFile
+#include <TopAbs_ShapeEnum.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+class TopoDS_Vertex;
+class TopoDS_Shape;
+class TopTools_IndexedDataMapOfShapeShape;
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTDS_Tools {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT static Standard_Integer TypeToInteger(const TopAbs_ShapeEnum aT1,const TopAbs_ShapeEnum aT2) ;
+
+
+Standard_EXPORT static Standard_Boolean HasBRep(const TopAbs_ShapeEnum aT) ;
+
+
+Standard_EXPORT static Standard_Integer ComputeVV(const TopoDS_Vertex& aV1,const TopoDS_Vertex& aV2) ;
+
+
+Standard_EXPORT static void CopyShape(const TopoDS_Shape& aS,TopoDS_Shape& aSC) ;
+
+
+Standard_EXPORT static void CopyShape(const TopoDS_Shape& aS,TopoDS_Shape& aSC,TopTools_IndexedDataMapOfShapeShape& aMSS) ;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+ // Fields PROTECTED
+ //
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTDS_Tools.jxx>
+
+
+
+
--- /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
+
+#ifndef _TopoDS_Vertex_HeaderFile
+#include <TopoDS_Vertex.hxx>
+#endif
+#ifndef _TopoDS_Shape_HeaderFile
+#include <TopoDS_Shape.hxx>
+#endif
+#ifndef _TopTools_IndexedDataMapOfShapeShape_HeaderFile
+#include <TopTools_IndexedDataMapOfShapeShape.hxx>
+#endif
+#ifndef _NMTDS_Tools_HeaderFile
+#include <NMTDS_Tools.hxx>
+#endif
Handle_NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \
Handle_NMTTools_ListNodeOfListOfCommonBlock.hxx \
Handle_NMTTools_ListNodeOfListOfCoupleOfShape.hxx \
+ NMTTools_CheckerSI.hxx \
NMTTools_CommonBlockAPI.hxx \
NMTTools_CommonBlock.hxx \
NMTTools_CommonBlockPool.hxx \
NMTTools_CoupleOfShape.hxx \
NMTTools_DEProcessor.hxx \
- NMTTools_DSFiller.hxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger.hxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape.hxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock.hxx \
NMTTools_ListOfCommonBlock.hxx \
NMTTools_ListOfCoupleOfShape.hxx \
NMTTools_PaveFiller.hxx \
- NMTTools_PCurveMaker.hxx \
- NMTTools_PDSFiller.hxx \
NMTTools_PPaveFiller.hxx \
NMTTools_Tools.hxx \
Handle_NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock.hxx \
lib_LTLIBRARIES = libNMTTools.la
dist_libNMTTools_la_SOURCES = \
+ NMTTools_CheckerSI.cxx \
+ NMTTools_CheckerSI_1.cxx \
NMTTools_CommonBlockAPI.cxx \
NMTTools_CommonBlock.cxx \
NMTTools_CommonBlockPool_0.cxx \
NMTTools_CoupleOfShape.cxx \
NMTTools_DEProcessor.cxx \
- NMTTools_DSFiller.cxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfIndexedMapOfInteger_0.cxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapeIndexedMapOfShape_0.cxx \
NMTTools_IndexedDataMapNodeOfIndexedDataMapOfShapePaveBlock_0.cxx \
NMTTools_PaveFiller_8.cxx \
NMTTools_PaveFiller_9.cxx \
NMTTools_PaveFiller.cxx \
- NMTTools_PCurveMaker.cxx \
NMTTools_Tools.cxx \
NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock_0.cxx \
NMTTools_DataMapNodeOfDataMapOfIntegerListOfPaveBlock_0.cxx \
NMTDS
is
- class IteratorOfCoupleOfShape;
- class DSFiller;
+ --class IteratorOfCoupleOfShape;
+ --class DSFiller;
class PaveFiller;
class Tools;
class CommonBlock;
class CommonBlockAPI;
- class PCurveMaker;
+ --class PCurveMaker;
class DEProcessor;
- class CoupleOfShape;
-
+ class CoupleOfShape;
+ --modified by NIZNHY-PKV Mon Feb 19 11:39:24 2007f
+ class CheckerSI;
+ --modified by NIZNHY-PKV Mon Feb 19 11:39:27 2007t
+
pointer PPaveFiller to PaveFiller from NMTTools;
- pointer PDSFiller to DSFiller from NMTTools;
+ --pointer PDSFiller to DSFiller from NMTTools;
class ListOfCommonBlock instantiates
List from TCollection(CommonBlock from NMTTools);
--- /dev/null
+-- Copyright (C) 2006 SAMTECH
+--
+-- 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: NMTTools_CheckerSI.cdl
+-- Created: Mon Feb 19 11:23:55 2007
+-- Author: Peter KURNEV
+
+
+class CheckerSI from NMTTools
+ inherits PaveFiller from NMTTools
+ ---Purpose:
+
+uses
+ ShapeEnum from TopAbs
+
+--raises
+
+is
+
+ Create
+ returns CheckerSI from NMTTools;
+ ---C++: alias "Standard_EXPORT virtual ~NMTTools_CheckerSI();"
+
+ Perform (me:out)
+ is redefined;
+
+ Init (me:out)
+ is redefined protected;
+
+ Clear (me:out)
+ is redefined protected;
+
+ PreparePaveBlocks (me:out;
+ nE:Integer from Standard)
+ is redefined protected;
+
+ PreparePaveBlocks (me:out;
+ aType1: ShapeEnum from TopAbs;
+ aType2: ShapeEnum from TopAbs)
+ is redefined protected;
+
+ StopStatus(me)
+ returns Integer from Standard;
+
+
+fields
+ myStopStatus: Integer from Standard is protected;
+
+end CheckerSI;
--- /dev/null
+// Copyright (C) 2006 SAMTECH
+//
+// 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: NMTTools_CheckerSI.cxx
+// Created: Mon Feb 19 11:32:08 2007
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTTools_CheckerSI.ixx>
+
+#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_IteratorCheckerSI.hxx>
+#include <NMTDS_InterfPool.hxx>
+#include <NMTTools_DEProcessor.hxx>
+
+//=======================================================================
+//function :
+//purpose :
+//=======================================================================
+ NMTTools_CheckerSI::NMTTools_CheckerSI()
+:
+ NMTTools_PaveFiller()
+{
+ myStopStatus=0;
+}
+//=======================================================================
+//function : ~
+//purpose :
+//=======================================================================
+ NMTTools_CheckerSI::~NMTTools_CheckerSI()
+{
+}
+//=======================================================================
+//function : Clear
+//purpose :
+//=======================================================================
+ void NMTTools_CheckerSI::Clear()
+{
+ NMTTools_PaveFiller::Clear();
+}
+//=======================================================================
+//function : StopStatus
+//purpose :
+//=======================================================================
+ Standard_Integer NMTTools_CheckerSI::StopStatus()const
+{
+ return myStopStatus;
+}
+//=======================================================================
+//function : Init
+//purpose :
+//=======================================================================
+ void NMTTools_CheckerSI::Init()
+{
+ myIsDone=Standard_False;
+ if (myCompositeShape.IsNull()) {
+ return;
+ }
+ //
+ Clear();
+ // 1.
+ myDS=new NMTDS_ShapesDataStructure;
+ myDS->SetCompositeShape(myCompositeShape);
+ myDS->Init();
+ //
+ // 2.
+ myDSIt=new NMTDS_IteratorCheckerSI;
+ myDSIt->SetDS(myDS);
+ myDSIt->Prepare();
+ //
+ // 4.
+ myNbSources=myDS->NumberOfShapesOfTheObject()+
+ myDS->NumberOfShapesOfTheTool();
+ myNbEdges=myDS->NbEdges();
+ // 5
+ myIP=new NMTDS_InterfPool;
+}
+//=======================================================================
+//function : Perform
+//purpose :
+//=======================================================================
+ void NMTTools_CheckerSI::Perform()
+{
+ myIsDone=Standard_False;
+ myStopStatus=0;
+ //
+ Init();
+ //1.VV
+ //
+ PerformVV();
+ //
+ // 2.VE
+ myPavePool.Resize (myNbEdges);
+
+ PrepareEdges();
+ //
+ PerformVE();
+ //
+ // 3.VF
+ PerformVF();
+ //
+ // 4.EE
+ myCommonBlockPool.Resize (myNbEdges);
+ mySplitShapesPool.Resize (myNbEdges);
+ myPavePoolNew .Resize (myNbEdges);
+ //
+ PreparePaveBlocks(TopAbs_VERTEX, TopAbs_EDGE);
+ if (myStopStatus) {
+ return;
+ }
+ PreparePaveBlocks(TopAbs_EDGE, TopAbs_EDGE);
+ if (myStopStatus) {
+ return;
+ }
+ //
+ PerformEE();
+ //
+ RefinePavePool ();
+ if (myStopStatus) {
+ return;
+ }
+ //
+ myPavePoolNew.Destroy();
+ myPavePoolNew.Resize (myNbEdges);
+ //
+ // 5.EF
+ PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE);
+ if (myStopStatus) {
+ return;
+ }
+ //
+ PerformEF();
+ //
+ RefinePavePool();
+ if (myStopStatus) {
+ return;
+ }
+ //
+ myPavePoolNew.Destroy();
+ //
+ MakeSplitEdges();
+ //
+ UpdateCommonBlocks();
+ //
+ // 6. FF
+ PerformFF ();
+ //
+ MakeBlocks();
+ //
+ MakePCurves();
+ //
+ // 7. Postprocessing
+ UpdatePaveBlocks();
+ //
+ NMTTools_DEProcessor aDEP(*this);
+ aDEP.Do();
+ //
+ MakeAloneVertices();
+ //
+ myIsDone=Standard_True;
+}
--- /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
+
+#ifndef _NMTTools_CheckerSI_HeaderFile
+#define _NMTTools_CheckerSI_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _NMTTools_PaveFiller_HeaderFile
+#include <NMTTools_PaveFiller.hxx>
+#endif
+#ifndef _TopAbs_ShapeEnum_HeaderFile
+#include <TopAbs_ShapeEnum.hxx>
+#endif
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+
+class NMTTools_CheckerSI : public NMTTools_PaveFiller {
+
+public:
+
+ void* operator new(size_t,void* anAddress)
+ {
+ return anAddress;
+ }
+ void* operator new(size_t size)
+ {
+ return Standard::Allocate(size);
+ }
+ void operator delete(void *anAddress)
+ {
+ if (anAddress) Standard::Free((Standard_Address&)anAddress);
+ }
+ // Methods PUBLIC
+ //
+
+
+Standard_EXPORT NMTTools_CheckerSI();
+Standard_EXPORT virtual ~NMTTools_CheckerSI();
+
+
+Standard_EXPORT virtual void Perform() ;
+
+
+Standard_EXPORT Standard_Integer StopStatus() const;
+
+
+
+
+
+protected:
+
+ // Methods PROTECTED
+ //
+
+
+Standard_EXPORT virtual void Init() ;
+
+
+Standard_EXPORT virtual void Clear() ;
+
+
+Standard_EXPORT virtual void PreparePaveBlocks(const Standard_Integer nE) ;
+
+
+Standard_EXPORT virtual void PreparePaveBlocks(const TopAbs_ShapeEnum aType1,const TopAbs_ShapeEnum aType2) ;
+
+
+ // Fields PROTECTED
+ //
+Standard_Integer myStopStatus;
+
+
+private:
+
+ // Methods PRIVATE
+ //
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
--- /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
+
+#include <NMTTools_CheckerSI.jxx>
+
+
+
+
--- /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
+
+#ifndef _NMTTools_CheckerSI_HeaderFile
+#include <NMTTools_CheckerSI.hxx>
+#endif
--- /dev/null
+// Copyright (C) 2006 SAMTECH
+//
+// 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: NMTTools_CheckerSI.cxx
+// Created: Mon Feb 19 11:32:08 2007
+// Author: Peter KURNEV
+// <pkv@irinox>
+
+
+#include <NMTTools_CheckerSI.ixx>
+#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_IteratorCheckerSI.hxx>
+
+#include <NMTDS_InterfPool.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <BOPTools_ListOfPaveBlock.hxx>
+#include <TopoDS.hxx>
+#include <BRep_Tool.hxx>
+#include <BOPTools_PaveSet.hxx>
+#include <BOPTools_PaveBlockIterator.hxx>
+#include <BOPTools_PaveBlock.hxx>
+#include <IntTools_Range.hxx>
+#include <BOPTools_Pave.hxx>
+#include <IntTools_ShrunkRange.hxx>
+#include <BOPTColStd_Failure.hxx>
+#include <BOPTColStd_Dump.hxx>
+#include <Geom_Curve.hxx>
+#include <gp_Pnt.hxx>
+
+
+
+static
+ Standard_Boolean IsValid(const TopoDS_Edge& aE,
+ const TopoDS_Vertex& aV,
+ const Standard_Real aTV1,
+ const Standard_Real aTV2);
+
+//=======================================================================
+// function: PreparePaveBlocks
+// purpose:
+//=======================================================================
+ void NMTTools_CheckerSI::PreparePaveBlocks(const TopAbs_ShapeEnum aType1,
+ const TopAbs_ShapeEnum aType2)
+{
+ NMTTools_PaveFiller::PreparePaveBlocks(aType1, aType2);
+}
+//=======================================================================
+// function: PreparePaveBlocks
+// purpose:
+//=======================================================================
+ void NMTTools_CheckerSI::PreparePaveBlocks(const Standard_Integer nE)
+{
+ myIsDone=Standard_False;
+ //
+ char buf[32]={"SR"};
+ Standard_Boolean bIsValid;
+ Standard_Integer nV1, nV2, iErr;
+ Standard_Real aT1, aT2;
+ TopoDS_Edge aE;
+ TopoDS_Vertex aV1, aV2;
+ //
+ BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE));
+ // Edge
+ aE=TopoDS::Edge(myDS->Shape(nE));
+ if (BRep_Tool::Degenerated(aE)) {
+ myIsDone=Standard_True;
+ return;
+ }
+ //
+ BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE));
+
+ BOPTools_PaveBlockIterator aPBIt(nE, aPS);
+ for (; aPBIt.More(); aPBIt.Next()) {
+ BOPTools_PaveBlock& aPB=aPBIt.Value();
+ const IntTools_Range& aRange=aPB.Range();
+ //
+ const BOPTools_Pave& aPave1=aPB.Pave1();
+ nV1=aPave1.Index();
+ aV1=TopoDS::Vertex(myDS->Shape(nV1));
+ aT1=aPave1.Param();
+ //
+ const BOPTools_Pave& aPave2=aPB.Pave2();
+ nV2=aPave2.Index();
+ aV2=TopoDS::Vertex(myDS->Shape(nV2));
+ aT2=aPave2.Param();
+ //
+ bIsValid=Standard_True;
+ if (nV1==nV2) {
+ bIsValid=IsValid(aE, aV1, aT1, aT2);
+ if (!bIsValid) {
+ //printf(" pb SR: nV nE: %d nV1:( %d %15.10lf ) nV2:( %d %15.10lf )\n", nE, nV1, aT1, nV2, aT2);
+ myStopStatus=1;
+ }
+ }
+ //
+ IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext);
+ iErr=aSR.ErrorStatus();
+ if (!aSR.IsDone()) {
+ //printf(" pb SR: Done nE: %d nV1:( %d %15.10lf ) nV2:( %d %15.10lf )\n", nE, nV1, aT1, nV2, aT2);
+ aSR.SetShrunkRange(aRange);
+ //throw BOPTColStd_Failure(buf) ;
+ }
+ else if (iErr!=6) {
+ CorrectShrunkRanges (0, aPave1, aSR);
+ CorrectShrunkRanges (1, aPave2, aSR);
+ }
+ aPB.SetShrunkRange(aSR);
+ aLPB.Append(aPB);
+ } //for (; aPBIt.More(); aPBIt.Next())
+ myIsDone=Standard_True;
+}
+
+//=======================================================================
+//function : IsValid
+//purpose :
+//=======================================================================
+Standard_Boolean IsValid(const TopoDS_Edge& aE,
+ const TopoDS_Vertex& aV,
+ const Standard_Real aTV1,
+ const Standard_Real aTV2)
+{
+ Standard_Boolean bRet;
+ Standard_Integer i, aNbP, aNbP1;
+ Standard_Real aTolV2, aTC1, aTC2, dT, aTC, aD2;
+ Handle(Geom_Curve) aC;
+ gp_Pnt aPV, aPC;
+ //
+ bRet=Standard_False;
+ aTolV2=BRep_Tool::Tolerance(aV);
+ aTolV2=aTolV2*aTolV2;
+ aPV=BRep_Tool::Pnt(aV);
+ aC=BRep_Tool::Curve(aE, aTC1, aTC2);
+ aNbP=7;
+ aNbP1=aNbP-1;
+ dT=(aTV2-aTV1)/aNbP1;
+ //
+ for (i=1; i<aNbP-1 && !bRet ; ++i) {
+ aTC=aTV1+dT*i;
+ aC->D0(aTC, aPC);
+ aD2=aPV.SquareDistance(aPC);
+ bRet=aD2>aTolV2;
+ }
+ return bRet;
+}
#include <BOPTools_PavePool.hxx>
#include <BOPTools_PaveSet.hxx>
#include <BOPTools_Tools3D.hxx>
-#include <BOPTools_InterferencePool.hxx>
+
#include <BOPTools_CArray1OfSSInterference.hxx>
#include <BOPTools_SplitShapesPool.hxx>
#include <ElCLib.hxx>
#include <gp_Lin2d.hxx>
-
+#include <NMTDS_InterfPool.hxx>
//=======================================================================
// function: NMTTools_DEProcessor::NMTTools_DEProcessor
void NMTTools_DEProcessor::DoPaves()
{
- Standard_Integer i, aNbE, nED, nVD, nFD, aNbLPB;
+ Standard_Integer i, aNbE, nED, nVD, aNbLPB, nFD;
//
nFD=0;
aNbE=myDEMap.Extent();
TColStd_ListIteratorOfListOfInteger anIt(nLF);
for (; anIt.More(); anIt.Next()) {
nFD=anIt.Value();
- //
+
BOPTools_ListOfPaveBlock aLPB;
FindPaveBlocks(nED, nVD, nFD, aLPB);
- //modified by NIZNHY-PKV Fri Mar 23 10:35:27 2007f
- //
+ // xxf
aNbLPB=aLPB.Extent();
if (!aNbLPB) {
continue;
}
- //modified by NIZNHY-PKV Fri Mar 23 10:35:33 2007t
+ //xxt
FillPaveSet (nED, nVD, nFD, aLPB);
}
//
BOPTools_ListIteratorOfListOfPaveBlock anIt;
Standard_Integer i, aNb, nF2, nV;
//
- BOPTools_CArray1OfSSInterference& aFFs=(myFiller->InterfPool())->SSInterferences();
+ //BOPTools_CArray1OfSSInterference& aFFs=(myFiller->InterfPool())->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=(myFiller->IP())->SSInterferences();
//
aNb=aFFs.Extent();
for (i=1; i<=aNb; ++i) {
---Purpose:
uses
- -- Modified to add new definitions Thu Sep 14 14:35:18 2006
- -- Contribution of Samtech www.samcef.com BEGIN
- ListOfInteger from TColStd,
- -- Contribution of Samtech www.samcef.com END
DataMapOfIntegerInteger from TColStd,
Pnt from gp,
ShapeEnum from TopAbs,
Vertex from TopoDS,
Face from TopoDS,
+ Shape from TopoDS,
-- Modified to add new definitions Thu Sep 14 14:35:18 2006
-- Contribution of Samtech www.samcef.com BEGIN
Edge from TopoDS,
- ListOfShape from TopTools,
+ ListOfShape from TopTools,
+ DataMapOfShapeShape from TopTools,
+ ListOfInteger from TColStd,
-- Contribution of Samtech www.samcef.com END
Context from IntTools,
ShrunkRange from IntTools,
IndexedDataMapOfShapeInteger from BooleanOperations,
-
- InterferencePool from BOPTools,
- PInterferencePool from BOPTools,
+
PavePool from BOPTools,
PaveBlock from BOPTools,
ListOfPaveBlock from BOPTools,
CommonBlockPool from NMTTools,
CommonBlock from NMTTools,
ListOfCommonBlock from NMTTools,
- -- Modified to add new definitions Thu Sep 14 14:35:18 2006
- -- Contribution of Samtech www.samcef.com BEGIN
- IndexedDataMapOfIndexedMapOfInteger from NMTTools,
- -- Contribution of Samtech www.samcef.com END
+
ShapesDataStructure from NMTDS,
+
-- Modified to add new definitions Thu Sep 14 14:35:18 2006
-- Contribution of Samtech www.samcef.com BEGIN
PShapesDataStructure from NMTDS,
- Iterator from NMTDS
+ Iterator from NMTDS,
+ IndexedDataMapOfIndexedMapOfInteger from NMTTools,
-- Contribution of Samtech www.samcef.com END
+
+ PIterator from NMTDS,
+ PInterfPool from NMTDS
--raises
is
Create
- returns PaveFiller from NMTTools;
+ returns PaveFiller from NMTTools;
+ ---C++: alias "Standard_EXPORT virtual ~NMTTools_PaveFiller();"
- Create(aIP:InterferencePool from BOPTools)
- returns PaveFiller from NMTTools;
+
- Destroy (me: in out)
- is virtual;
- ---C++: alias "Standard_EXPORT virtual ~NMTTools_PaveFiller(){Destroy();}"
- --
- -- Selectors/Modifiers
- SetInterferencePool(me:out;
- aIP:InterferencePool from BOPTools);
-
- InterfPool(me:out)
- returns PInterferencePool from BOPTools;
+ SetCompositeShape (me:out;
+ aS: Shape from TopoDS);
+
+ CompositeShape(me)
+ returns Shape from TopoDS;
+ ---C++: return const&
+
+
+ DS(me:out)
+ returns PShapesDataStructure from NMTDS;
+
+ DSIt(me:out)
+ returns PIterator from NMTDS;
+
+ IP(me:out)
+ returns PInterfPool from NMTDS;
--
-- Perform the algo
-- Modified to add new method Thu Sep 14 14:35:18 2006
-- Contribution of Samtech www.samcef.com BEGIN
- Init (me:out);
+ Init (me:out)
+ is virtual protected;
-- Contribution of Samtech www.samcef.com END
+ Clear (me:out)
+ is virtual protected;
+
Perform (me:out)
is virtual;
PerformVV (me:out)
- is virtual ;
+ is virtual protected;
PerformVE (me:out)
is virtual protected;
PreparePaveBlocks (me:out;
anE:Integer from Standard)
is virtual protected;
-
- PerformNewVertices (me:out)
- is virtual ;
+
PrepareEdges (me:out)
is virtual protected;
- SortTypes (me;
- anInd1:in out Integer from Standard;
- anInd2:in out Integer from Standard)
- is protected;
-
- ExpectedPoolLength(me)
- returns Integer from Standard
- is protected;
--
-- Query section
IsDone(me)
returns Boolean from Standard;
- DS(me:out)
- returns PShapesDataStructure from NMTDS;
-
Context(me)
returns Context from IntTools;
---C++:return const &
nV: Integer from Standard)
returns Integer from Standard;
- IsSuccesstorsComputed (me;
+ IsSuccessorsComputed (me;
iF1:Integer from Standard;
iF2:Integer from Standard)
returns Boolean from Standard
RealPaveBlock(me:out;
aPB:PaveBlock from BOPTools)
returns PaveBlock from BOPTools;
- ---C++: return const &
+ ---C++: return const &
- -- Modified to add new method Thu Sep 14 14:35:18 2006
- -- Contribution of Samtech www.samcef.com BEGIN
+ --modified by NIZNHY-PKV Fri Nov 30 10:30:54 2007 f
RealPaveBlock(me:out;
aPB:PaveBlock from BOPTools;
- aLB:out ListOfInteger from TColStd)
+ aLB:out ListOfInteger from TColStd;
+ aIsCommonBlock:out Integer from Standard)
returns PaveBlock from BOPTools;
---C++: return const &
- -- Contribution of Samtech www.samcef.com END
+ --modified by NIZNHY-PKV Fri Nov 30 10:30:58 2007 t
RealSplitsFace (me:out;
nF2 :Integer from Standard;
aLSE :out ListOfShape from TopTools);
-- Contribution of Samtech www.samcef.com END
+ FuseVertices(me;
+ aC:Shape from TopoDS;
+ aDMVV: out DataMapOfShapeShape from TopTools);
+
fields
- myIntrPool : PInterferencePool from BOPTools is protected;
myDS : PShapesDataStructure from NMTDS is protected;
myIsDone : Boolean from Standard is protected;
myNbSources : Integer from Standard is protected;
myNbEdges : Integer from Standard is protected;
- -- Modified to add new field Thu Sep 14 14:35:18 2006
- -- Contribution of Samtech www.samcef.com BEGIN
- myDSIt : Iterator from NMTDS is protected;
- -- Contribution of Samtech www.samcef.com END
-
myPavePool : PavePool from BOPTools is protected;
myPavePoolNew : PavePool from BOPTools is protected;
myCommonBlockPool : CommonBlockPool from NMTTools is protected;
mySectionAttribute : SSIntersectionAttribute from BOPTools is protected;
myAloneVertices : IndexedDataMapOfIndexedMapOfInteger from NMTTools is protected;
--
- myVSD : DataMapOfIntegerInteger from TColStd is protected;
- --
+ myVSD : DataMapOfIntegerInteger from TColStd is protected;
+ myDSIt : PIterator from NMTDS is protected;
+ myCompositeShape : Shape from TopoDS is protected;
+ myIP : PInterfPool from NMTDS is protected;
+
end PaveFiller;
#include <BOPTColStd_Failure.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
#include <NMTTools_DEProcessor.hxx>
+#include <NMTDS_Iterator.hxx>
+#include <NMTDS_InterfPool.hxx>
-//
//=======================================================================
// function: NMTTools_PaveFiller::NMTTools_PaveFiller
// purpose:
//=======================================================================
NMTTools_PaveFiller::NMTTools_PaveFiller()
{
- myIntrPool=NULL;
myDS=NULL;
+ myDSIt=NULL;
myIsDone=Standard_False;
myNbSources=0;
myNbEdges=0;
+ myIP=NULL;
}
//=======================================================================
-// function:NMTTools_PaveFiller::NMTTools_PaveFiller
+// function: ~
// purpose:
//=======================================================================
- NMTTools_PaveFiller::NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP)
+ NMTTools_PaveFiller::~NMTTools_PaveFiller()
{
- SetInterferencePool(aIP);
+ Clear();
}
//=======================================================================
-// function: Destroy
+// function: Clear
// purpose:
//=======================================================================
- void NMTTools_PaveFiller::Destroy()
+ void NMTTools_PaveFiller::Clear()
{
+ if (myDSIt) {
+ delete myDSIt;
+ }
+ if (myDS) {
+ delete myDS;
+ }
+ myDSIt=NULL;
+ myDS=NULL;
+
+ if (myIP) {
+ delete myIP;
+ }
+ myIP=NULL;
}
//=======================================================================
-// function: SetInterferencePool
+// function: SetCompositeShape
// purpose:
//=======================================================================
- void NMTTools_PaveFiller::SetInterferencePool(const BOPTools_InterferencePool& aIP)
+ void NMTTools_PaveFiller::SetCompositeShape(const TopoDS_Shape& aS)
{
- myIsDone=Standard_False;
- //
- myIntrPool=(BOPTools_InterferencePool*)&aIP;
- myDS=(NMTDS_ShapesDataStructure*)myIntrPool->DS();
- myNbSources=myDS->NumberOfShapesOfTheObject()+myDS->NumberOfShapesOfTheTool();
- myNbEdges=myDS->NbEdges();
+ myCompositeShape=aS;
}
//=======================================================================
-// function: InterfPool
+// function: CompositeShape
// purpose:
//=======================================================================
- BOPTools_PInterferencePool NMTTools_PaveFiller::InterfPool()
+ const TopoDS_Shape& NMTTools_PaveFiller::CompositeShape()const
{
- return myIntrPool;
+ return myCompositeShape;
}
//=======================================================================
-// function:IsDone
+// function: DS
// purpose:
//=======================================================================
- Standard_Boolean NMTTools_PaveFiller::IsDone() const
+ NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS()
{
- return myIsDone;
+ return myDS;
}
//=======================================================================
-// function: DS
+// function: DSIt
// purpose:
//=======================================================================
- NMTDS_PShapesDataStructure NMTTools_PaveFiller::DS()
+ NMTDS_PIterator NMTTools_PaveFiller::DSIt()
{
- return myDS;
+ return myDSIt;
+}
+//=======================================================================
+// function: IP
+// purpose:
+//=======================================================================
+ NMTDS_PInterfPool NMTTools_PaveFiller::IP()
+{
+ return myIP;
+}
+//=======================================================================
+// function:IsDone
+// purpose:
+//=======================================================================
+ Standard_Boolean NMTTools_PaveFiller::IsDone() const
+{
+ return myIsDone;
}
//=======================================================================
// function: Context
{
return mySplitShapesPool;
}
-
//=======================================================================
// function: ChangeSplitShapesPool
// purpose:
//=======================================================================
void NMTTools_PaveFiller::Init()
{
- myDSIt.SetDS(myDS);
- // Modified Thu Sep 14 14:35:18 2006
- // Contribution of Samtech www.samcef.com BEGIN
- myDSIt.Prepare();
- // Contribution of Samtech www.samcef.com END
+ myIsDone=Standard_False;
+ if (myCompositeShape.IsNull()) {
+ return;
+ }
+ //
+ Clear();
+ // 1.
+ myDS=new NMTDS_ShapesDataStructure;
+ myDS->SetCompositeShape(myCompositeShape);
+ myDS->Init();
+ //
+ // 2.
+ myDSIt=new NMTDS_Iterator;
+ myDSIt->SetDS(myDS);
+ myDSIt->Prepare();
+ //
+ // 3.
+ myNbSources=myDS->NumberOfShapesOfTheObject()+
+ myDS->NumberOfShapesOfTheTool();
+ myNbEdges=myDS->NbEdges();
+ //
+ // 4
+ myIP=new NMTDS_InterfPool;
}
//=======================================================================
{
myIsDone=Standard_False;
//
+ //----------------
try {
// 0.
// Modified Thu Sep 14 14:35:18 2006
//1.VV
//
PerformVV();
- PerformNewVertices();
//
// 2.VE
myPavePool.Resize (myNbEdges);
//
// 5.EF
PreparePaveBlocks(TopAbs_EDGE, TopAbs_FACE);
-
PerformEF();
//
RefinePavePool();
-// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// File generated by CPPExt (Value)
//
-// 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.
+// Copyright (C) 1991 - 2000 by
+// Matra Datavision SA. All rights reserved.
+//
+// Copyright (C) 2001 - 2004 by
+// Open CASCADE SA. All rights reserved.
+//
+// This file is part of the Open CASCADE Technology software.
//
-// 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
+// This software may be distributed and/or modified under the terms and
+// conditions of the Open CASCADE Public License as defined by Open CASCADE SA
+// and appearing in the file LICENSE included in the packaging of this file.
+//
+// This software is distributed on an "AS IS" basis, without warranty of any
+// kind, and Open CASCADE SA hereby disclaims all such warranties,
+// including without limitation, any warranties of merchantability, fitness
+// for a particular purpose or non-infringement. Please see the License for
+// the specific terms and conditions governing rights and limitations under the
+// License.
#ifndef _NMTTools_PaveFiller_HeaderFile
#define _NMTTools_PaveFiller_HeaderFile
-#ifndef _BOPTools_PInterferencePool_HeaderFile
-#include <BOPTools_PInterferencePool.hxx>
-#endif
#ifndef _NMTDS_PShapesDataStructure_HeaderFile
#include <NMTDS_PShapesDataStructure.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
-#ifndef _NMTDS_Iterator_HeaderFile
-#include <NMTDS_Iterator.hxx>
-#endif
#ifndef _BOPTools_PavePool_HeaderFile
#include <BOPTools_PavePool.hxx>
#endif
#ifndef _TColStd_DataMapOfIntegerInteger_HeaderFile
#include <TColStd_DataMapOfIntegerInteger.hxx>
#endif
+#ifndef _NMTDS_PIterator_HeaderFile
+#include <NMTDS_PIterator.hxx>
+#endif
+#ifndef _TopoDS_Shape_HeaderFile
+#include <TopoDS_Shape.hxx>
+#endif
+#ifndef _NMTDS_PInterfPool_HeaderFile
+#include <NMTDS_PInterfPool.hxx>
+#endif
#ifndef _TopAbs_ShapeEnum_HeaderFile
#include <TopAbs_ShapeEnum.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
-class BOPTools_InterferencePool;
+class TopoDS_Shape;
class BOPTools_Pave;
class IntTools_ShrunkRange;
class IntTools_Context;
class NMTTools_IndexedDataMapOfIndexedMapOfInteger;
class TopTools_ListOfShape;
class TopoDS_Edge;
+class TopTools_DataMapOfShapeShape;
#ifndef _Standard_HeaderFile
Standard_EXPORT NMTTools_PaveFiller();
+Standard_EXPORT virtual ~NMTTools_PaveFiller();
-Standard_EXPORT NMTTools_PaveFiller(const BOPTools_InterferencePool& aIP);
+Standard_EXPORT void SetCompositeShape(const TopoDS_Shape& aS) ;
-Standard_EXPORT virtual void Destroy() ;
-Standard_EXPORT virtual ~NMTTools_PaveFiller(){Destroy();}
+Standard_EXPORT const TopoDS_Shape& CompositeShape() const;
-Standard_EXPORT void SetInterferencePool(const BOPTools_InterferencePool& aIP) ;
+Standard_EXPORT NMTDS_PShapesDataStructure DS() ;
-Standard_EXPORT BOPTools_PInterferencePool InterfPool() ;
+Standard_EXPORT NMTDS_PIterator DSIt() ;
-Standard_EXPORT void Init() ;
+Standard_EXPORT NMTDS_PInterfPool IP() ;
Standard_EXPORT virtual void Perform() ;
-Standard_EXPORT virtual void PerformVV() ;
-
-
-Standard_EXPORT virtual void PerformNewVertices() ;
-
-
Standard_EXPORT Standard_Boolean IsDone() const;
-Standard_EXPORT NMTDS_PShapesDataStructure DS() ;
-
-
Standard_EXPORT const IntTools_Context& Context() const;
Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB) ;
-Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB,TColStd_ListOfInteger& aLB) ;
+Standard_EXPORT const BOPTools_PaveBlock& RealPaveBlock(const BOPTools_PaveBlock& aPB,TColStd_ListOfInteger& aLB,Standard_Integer& aIsCommonBlock) ;
Standard_EXPORT void RealSplitsFace(const Standard_Integer nF2,BOPTools_ListOfPaveBlock& aLs) ;
Standard_EXPORT void SharedEdges(const Standard_Integer nF1,const Standard_Integer nF2,TColStd_ListOfInteger& aLNE,TopTools_ListOfShape& aLSE) ;
+Standard_EXPORT void FuseVertices(const TopoDS_Shape& aC,TopTools_DataMapOfShapeShape& aDMVV) const;
+
+
//
+Standard_EXPORT virtual void Init() ;
+
+
+Standard_EXPORT virtual void Clear() ;
+
+
+Standard_EXPORT virtual void PerformVV() ;
+
+
Standard_EXPORT virtual void PerformVE() ;
Standard_EXPORT virtual void PrepareEdges() ;
-Standard_EXPORT void SortTypes(Standard_Integer& anInd1,Standard_Integer& anInd2) const;
-
-
-Standard_EXPORT Standard_Integer ExpectedPoolLength() const;
-
-
-Standard_EXPORT Standard_Boolean IsSuccesstorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const;
+Standard_EXPORT Standard_Boolean IsSuccessorsComputed(const Standard_Integer iF1,const Standard_Integer iF2) const;
Standard_EXPORT Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) const;
// Fields PROTECTED
//
-BOPTools_PInterferencePool myIntrPool;
NMTDS_PShapesDataStructure myDS;
Standard_Boolean myIsDone;
Standard_Integer myNbSources;
Standard_Integer myNbEdges;
-NMTDS_Iterator myDSIt;
BOPTools_PavePool myPavePool;
BOPTools_PavePool myPavePoolNew;
NMTTools_CommonBlockPool myCommonBlockPool;
BOPTools_SSIntersectionAttribute mySectionAttribute;
NMTTools_IndexedDataMapOfIndexedMapOfInteger myAloneVertices;
TColStd_DataMapOfIntegerInteger myVSD;
+NMTDS_PIterator myDSIt;
+TopoDS_Shape myCompositeShape;
+NMTDS_PInterfPool myIP;
private:
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#ifndef _BOPTools_InterferencePool_HeaderFile
-#include <BOPTools_InterferencePool.hxx>
+#ifndef _TopoDS_Shape_HeaderFile
+#include <TopoDS_Shape.hxx>
#endif
#ifndef _BOPTools_Pave_HeaderFile
#include <BOPTools_Pave.hxx>
#ifndef _TopoDS_Edge_HeaderFile
#include <TopoDS_Edge.hxx>
#endif
+#ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+#include <TopTools_DataMapOfShapeShape.hxx>
+#endif
#ifndef _NMTTools_PaveFiller_HeaderFile
#include <NMTTools_PaveFiller.hxx>
#endif
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-// File: NMTTools_PaveFiller_1.cxx
-// Created: Mon Dec 8 11:47:55 2003
+// File: NMTTools_PaveFiller_0.cxx
+// Created: Mon Dec 8 11:45:51 2003
// Author: Peter KURNEV
// <pkv@irinox>
+
#include <NMTTools_PaveFiller.ixx>
+#include <TColStd_IndexedMapOfInteger.hxx>
#include <TopAbs_ShapeEnum.hxx>
-#include <BOPTools_ListOfCoupleOfInteger.hxx>
+
+#include <NMTDS_InterfPool.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
-#include <BooleanOperations_OnceExplorer.hxx>
+#include <NMTDS_Iterator.hxx>
//=======================================================================
-//function : SortTypes
-//purpose :
+// function:IsSuccesstorsComputed
+// purpose:
//=======================================================================
- void NMTTools_PaveFiller::SortTypes(Standard_Integer& theWhat,
- Standard_Integer& theWith)const
-{
- Standard_Boolean aReverseFlag=Standard_True;
-
- TopAbs_ShapeEnum aType1= myDS->GetShapeType(theWhat),
- aType2= myDS->GetShapeType(theWith);
-
- if (aType1==aType2)
- return;
-
- if (aType1==TopAbs_EDGE && aType2==TopAbs_FACE){
- aReverseFlag=Standard_False;
+ Standard_Boolean NMTTools_PaveFiller::IsSuccessorsComputed(const Standard_Integer aN1,
+ const Standard_Integer aN2)const
+{
+ Standard_Boolean bComputed;
+ Standard_Integer i, nSuc, n1, n2, ntmp, aNbS;
+ TopAbs_ShapeEnum aType;
+ TColStd_IndexedMapOfInteger aMSuc;
+ //
+ n1=aN1;
+ n2=aN2;
+ aType=myDS->GetShapeType(aN1);
+ if (aType!=TopAbs_VERTEX) {
+ ntmp=n1;
+ n1=n2;
+ n2=ntmp;
}
-
- if (aType1==TopAbs_VERTEX &&
- (aType2==TopAbs_FACE || aType2==TopAbs_EDGE)) {
- aReverseFlag=Standard_False;
+ //
+ myDS->GetAllSuccessors(n2, aMSuc);
+ aNbS=aMSuc.Extent();
+ for (i=1; i<=aNbS; ++i) {
+ nSuc=aMSuc(i);
+ bComputed=myIP->Contains(n1, nSuc);
+ if (bComputed) {
+ break;
+ }
}
-
- Standard_Integer aWhat, aWith;
- aWhat=(aReverseFlag) ? theWith : theWhat;
- aWith=(aReverseFlag) ? theWhat : theWith;
-
- theWhat=aWhat;
- theWith=aWith;
+ return bComputed;
}
+/*
//=======================================================================
// function: ExpectedPoolLength
// purpose:
// Contribution of Samtech www.samcef.com BEGIN
//const BOPTools_ListOfCoupleOfInteger& aLC=myDSIt.ListOfCouple();
//aNbIIs=aLC.Extent();
- aNbIIs=myDSIt.ExpectedLength();
+ aNbIIs=myDSIt->ExpectedLength();
// Contribution of Samtech www.samcef.com END
//
if (aNbIIs==1) {
return aNbIIs;
}
+*/
+/*
//=======================================================================
-// function:IsSuccesstorsComputed
-// purpose:
+//function : SortTypes
+//purpose :
//=======================================================================
- Standard_Boolean NMTTools_PaveFiller::IsSuccesstorsComputed(const Standard_Integer aN1,
- const Standard_Integer aN2)const
-{
- Standard_Integer nSuc, n1, n2;
-
- BooleanOperations_OnceExplorer aExp(*myDS);
- TopAbs_ShapeEnum aType=myDS->GetShapeType(aN1);
-
- n1=aN1;
- n2=aN2;
-
- if (aType!=TopAbs_VERTEX) {
- Standard_Integer ntmp=n1;
- n1=n2;
- n2=ntmp;
+ void NMTTools_PaveFiller::SortTypes(Standard_Integer& theWhat,
+ Standard_Integer& theWith)const
+{
+ Standard_Integer aWhat, aWith;
+ Standard_Boolean aReverseFlag;
+ TopAbs_ShapeEnum aType1, aType2;
+ //
+ aType1= myDS->GetShapeType(theWhat),
+ aType2= myDS->GetShapeType(theWith);
+ //
+ if (aType1==aType2) {
+ return;
}
-
- aType=myDS->GetShapeType(n2);
- if (aType==TopAbs_EDGE) {
- aExp.Init(n2, TopAbs_VERTEX);
- for (; aExp.More(); aExp.Next()) {
- nSuc=aExp.Current();
- if (myIntrPool->IsComputed(n1, nSuc)) {
- return Standard_True;
- }
- }
- return Standard_False;
+ //
+ aReverseFlag=Standard_True;
+ if (aType1==TopAbs_EDGE && aType2==TopAbs_FACE) {
+ aReverseFlag=Standard_False;
}
-
- else if (aType==TopAbs_FACE) {
- aExp.Init(n2, TopAbs_VERTEX);
- for (; aExp.More(); aExp.Next()) {
- nSuc=aExp.Current();
- if (myIntrPool->IsComputed(n1, nSuc)) {
- return Standard_True;
- }
- }
-
- aExp.Init(n2, TopAbs_EDGE);
- for (; aExp.More(); aExp.Next()) {
- nSuc=aExp.Current();
- if (myIntrPool->IsComputed(n1, nSuc)) {
- return Standard_True;
- }
- }
- return Standard_False;
+ if (aType1==TopAbs_VERTEX &&
+ (aType2==TopAbs_FACE || aType2==TopAbs_EDGE)) {
+ aReverseFlag=Standard_False;
}
-
- return Standard_False;
+ //
+ aWhat=(aReverseFlag) ? theWith : theWhat;
+ aWith=(aReverseFlag) ? theWhat : theWith;
+ //
+ theWhat=aWhat;
+ theWith=aWith;
}
+*/
// Created: Mon Dec 8 11:47:55 2003
// Author: Peter KURNEV
// <pkv@irinox>
+
#include <NMTTools_PaveFiller.ixx>
#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
#include <TColStd_ListOfInteger.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
-
+
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Vertex.hxx>
#include <TopTools_ListOfShape.hxx>
#include <IntTools_Tools.hxx>
+#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
#include <BOPTools_VVInterference.hxx>
#include <BOPTools_CArray1OfVVInterference.hxx>
-#include <BOPTools_VVInterference.hxx>
-#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
+#include <NMTDS_Iterator.hxx>
+#include <NMTDS_InterfPool.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
+
#include <NMTTools_Tools.hxx>
//=======================================================================
{
myIsDone=Standard_False;
//
- Standard_Integer anIndexIn, aWhat, aWith, aNbVVs, aBlockLength, aNbVSD;
- Standard_Integer nVnew;
+ Standard_Integer aNbVVs, aBL, aNbVSD, nVnew, i, j, n1, n2;
TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger aIt1;
- TColStd_ListIteratorOfListOfInteger aIt;
+ TColStd_ListIteratorOfListOfInteger aItX, aItY;
+ TColStd_ListOfInteger aLIX;
TopTools_ListOfShape aLV;
TopoDS_Vertex aVnew;
- TopoDS_Shape aS;
//
myVSD.Clear();
//
- BOPTools_CArray1OfVVInterference& aVVs=myIntrPool->VVInterferences();
- //
- // BlockLength correction
- aNbVVs=ExpectedPoolLength();
- aBlockLength=aVVs.BlockLength();
- if (aNbVVs > aBlockLength) {
- aVVs.SetBlockLength(aNbVVs);
- }
- //
- const TColStd_DataMapOfIntegerListOfInteger& aMVSD=myDSIt.SDVertices();
+ const TColStd_DataMapOfIntegerListOfInteger& aMVSD=myDSIt->SDVertices();
aNbVSD=aMVSD.Extent();
if (!aNbVSD) {
return;
}
//
+ BOPTools_CArray1OfVVInterference& aVVs=myIP->VVInterferences();
+ //
+ // BlockLength correction
+ myDSIt->Initialize(TopAbs_VERTEX, TopAbs_VERTEX);
+ aNbVVs=myDSIt->BlockLength();
+ aBL=aVVs.BlockLength();
+ if (aNbVVs > aBL) {
+ aVVs.SetBlockLength(aNbVVs);
+ }
+ //
aIt1.Initialize(aMVSD);
for (; aIt1.More(); aIt1.Next()) {
aLV.Clear();
//
- aWhat=aIt1.Key();
+ n1=aIt1.Key();
const TColStd_ListOfInteger& aLIV=aIt1.Value();
//
// new vertex
- aIt.Initialize(aLIV);
- for (; aIt.More(); aIt.Next()) {
- aWith=aIt.Value();
- aS=myDS->Shape(aWith);
- aLV.Append(aS);
+ const TopoDS_Shape& aS1=myDS->Shape(n1);
+ aLV.Append(aS1);
+ aItX.Initialize(aLIV);
+ for (; aItX.More(); aItX.Next()) {
+ n2=aItX.Value();
+ const TopoDS_Shape& aS2=myDS->Shape(n2);
+ aLV.Append(aS2);
}
- aS=myDS->Shape(aWhat);
- aLV.Append(aS);
//
NMTTools_Tools::MakeNewVertex(aLV, aVnew);
//
nVnew=myDS->NumberOfInsertedShapes();
myDS->SetState (nVnew, BooleanOperations_ON);
//
+ // myVSD, aLIX
+ aLIX.Clear();
+ aLIX.Append(n1);
+ myVSD.Bind(n1, nVnew);
+ //
+ aItX.Initialize(aLIV);
+ for (; aItX.More(); aItX.Next()) {
+ n2=aItX.Value();
+ aLIX.Append(n2);
+ myVSD.Bind(n2, nVnew);
+ }
+ //
// interferences
- aIt.Initialize(aLIV);
- for (; aIt.More(); aIt.Next()) {
- aWith=aIt.Value();
- BOPTools_VVInterference aVV(aWhat, aWith);
- aVV.SetNewShape(nVnew);
- anIndexIn=aVVs.Append(aVV);
- myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexVertex, anIndexIn);
- //
- // to find SD-Vertices
- myVSD.Bind(aWith, nVnew);
+ aItX.Initialize(aLIX);
+ for (i=0; aItX.More(); aItX.Next(), ++i) {
+ aItY.Initialize(aLIX);
+ for (j=0; aItY.More(); aItY.Next(), ++j) {
+ if (j>i) {
+ n1=aItX.Value();
+ n2=aItY.Value();
+ myIP->Add(n1, n2, Standard_True, NMTDS_TI_VV);
+ //
+ BOPTools_VVInterference aVV(n1, n2);
+ aVV.SetNewShape(nVnew);
+ aVVs.Append(aVV);
+ }
+ }
}
- myVSD.Bind(aWhat, nVnew);
}//for (; aIt1.More(); aIt1.Next()) {
myIsDone=Standard_True;
}
//=======================================================================
-// function: PerformNewVertices
-// purpose:
-//=======================================================================
- void NMTTools_PaveFiller::PerformNewVertices()
-{
-}
-//=======================================================================
// function: FindSDVertex
// purpose:
//=======================================================================
}
return nVSD;
}
+/*
+//=======================================================================
+// function: PerformNewVertices
+// purpose:
+//=======================================================================
+ void NMTTools_PaveFiller::PerformNewVertices()
+{
+}
+*/
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#include <BOPTools_VEInterference.hxx>
#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
-
+#include <NMTDS_Iterator.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_InterfPool.hxx>
//
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
#include <BOPTools_IndexedMapOfCoupleOfInteger.hxx>
#include <BOPTools_CoupleOfInteger.hxx>
#include <BooleanOperations_OnceExplorer.hxx>
-//
+
static
Standard_Boolean Contains(const TopoDS_Edge& aE,
const TopoDS_Vertex& aV);
// Contribution of Samtech www.samcef.com END
+
+//=======================================================================
+// function: PerformVE
+// purpose:
+//=======================================================================
+ void NMTTools_PaveFiller::PerformVE()
+{
+ myIsDone=Standard_False;
+ //
+ Standard_Boolean bJustAdd;
+ Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVEs, aBlockLength, iSDV, nV1;
+ Standard_Real aT;
+ TopoDS_Vertex aV1;
+ TopoDS_Edge aE2;
+ BOPTools_IndexedMapOfCoupleOfInteger aSnareMap;
+ BOPTools_CoupleOfInteger aCouple;
+ //
+ BOPTools_CArray1OfVEInterference& aVEs=myIP->VEInterferences();
+ //
+ myDSIt->Initialize (TopAbs_VERTEX, TopAbs_EDGE);
+ //
+ // BlockLength correction
+ aNbVEs=myDSIt->BlockLength();
+ aBlockLength=aVEs.BlockLength();
+ if (aNbVEs > aBlockLength) {
+ aVEs.SetBlockLength(aNbVEs);
+ }
+ //
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, bJustAdd);
+ if (!IsSuccessorsComputed(n1, n2)) {
+ anIndexIn=0;
+ aWhat=n1; // Vertex
+ aWith=n2; // Edge
+ if (myDS->GetShapeType(n1)==TopAbs_EDGE) {
+ aWhat=n2;
+ aWith=n1;
+ }
+ //
+ if(bJustAdd) {
+ //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn);
+ continue;
+ }
+ // Edge
+ aE2=TopoDS::Edge(myDS->Shape(aWith));
+ if (BRep_Tool::Degenerated(aE2)){
+ continue;
+ }
+ // Vertex
+ nV1=aWhat;
+ aV1=TopoDS::Vertex(myDS->Shape(aWhat));
+ //
+ iSDV=FindSDVertex(aWhat);
+ if (iSDV) {
+ nV1=iSDV;
+ aV1=TopoDS::Vertex(myDS->Shape(nV1));
+ // Modified to find same domain vertex Thu Sep 14 14:35:18 2006
+ // Contribution of Samtech www.samcef.com BEGIN
+ Standard_Integer nVE, iSDVE, iRet;
+ //
+ BooleanOperations_OnceExplorer aExp(*myDS);
+ iRet=0;
+ aExp.Init(aWith, TopAbs_VERTEX);
+ for (; aExp.More(); aExp.Next()) {
+ nVE=aExp.Current();
+ iSDVE=FindSDVertex(nVE);
+ if (iSDVE==iSDV) {
+ iRet=1;
+ break;
+ }
+ }
+ if (iRet) {
+ continue;
+ }
+ }
+ else {
+ if (Contains(aE2, aV1)) {
+ continue;
+ }
+ // Contribution of Samtech www.samcef.com END
+ }
+ //
+ aFlag=myContext.ComputeVE (aV1, aE2, aT);
+ //
+ if (!aFlag) {
+ // Add Interference to the Pool
+ BOPTools_VEInterference anInterf (aWhat, aWith, aT);
+ anIndexIn=aVEs.Append(anInterf);
+ //
+ // Add Pave to the Edge's myPavePool
+ aCouple.SetCouple(nV1, aWith);
+ if (!aSnareMap.Contains(aCouple)){
+ aSnareMap.Add(aCouple);
+ //
+ BOPTools_Pave aPave(nV1, aT, BooleanOperations_VertexEdge);
+ aPave.SetInterference(anIndexIn);
+ BOPTools_PaveSet& aPaveSet= myPavePool(myDS->RefEdge(aWith));
+ aPaveSet.Append(aPave);
+ }
+ //
+ // State for the Vertex in DS;
+ myDS->SetState (aWhat, BooleanOperations_ON);
+ // Insert Vertex in Interference Object
+ BOPTools_VEInterference& aVE=aVEs(anIndexIn);
+ aVE.SetNewShape(aWhat);
+ // qqf
+ {
+ myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_VE);
+ }
+ // qqt
+ }
+ //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn);
+ }
+ }
+ myIsDone=Standard_True;
+}
//=======================================================================
// function: PrepareEdges
// purpose:
}
}
}
-//=======================================================================
-// function: PerformVE
-// purpose:
-//=======================================================================
- void NMTTools_PaveFiller::PerformVE()
-{
- myIsDone=Standard_False;
- //
- Standard_Boolean bJustAddInterference;
- Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVEs, aBlockLength, iSDV, nV1;
- Standard_Real aT;
- TopoDS_Vertex aV1;
- TopoDS_Edge aE2;
- BOPTools_IndexedMapOfCoupleOfInteger aSnareMap;
- BOPTools_CoupleOfInteger aCouple;
- //
- BOPTools_CArray1OfVEInterference& aVEs=myIntrPool->VEInterferences();
- //
- myDSIt.Initialize (TopAbs_VERTEX, TopAbs_EDGE);
- //
- // BlockLength correction
- aNbVEs=ExpectedPoolLength();
- aBlockLength=aVEs.BlockLength();
- if (aNbVEs > aBlockLength) {
- aVEs.SetBlockLength(aNbVEs);
- }
- //
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, bJustAddInterference);
- //
- if (! myIntrPool->IsComputed(n1, n2)) {
- if (! IsSuccesstorsComputed(n1, n2)) {
- anIndexIn=0;
- aWhat=n1; // Vertex
- aWith=n2; // Edge
- SortTypes(aWhat, aWith);
- //
- if(bJustAddInterference) {
- myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn);
- continue;
- }
- // Edge
- aE2=TopoDS::Edge(myDS->Shape(aWith));
- if (BRep_Tool::Degenerated(aE2)){
- continue;
- }
- // Vertex
- nV1=aWhat;
- aV1=TopoDS::Vertex(myDS->Shape(aWhat));
- //
- iSDV=FindSDVertex(aWhat);
- if (iSDV) {
- nV1=iSDV;
- aV1=TopoDS::Vertex(myDS->Shape(nV1));
- // Modified to find same domain vertex Thu Sep 14 14:35:18 2006
- // Contribution of Samtech www.samcef.com BEGIN
- Standard_Integer nVE, iSDVE, iRet;
- //
- BooleanOperations_OnceExplorer aExp(*myDS);
- iRet=0;
- aExp.Init(aWith, TopAbs_VERTEX);
- for (; aExp.More(); aExp.Next()) {
- nVE=aExp.Current();
- iSDVE=FindSDVertex(nVE);
- if (iSDVE==iSDV) {
- iRet=1;
- break;
- }
- }
- if (iRet) {
- continue;
- }
- }
- else {
- if (Contains(aE2, aV1)) {
- continue;
- }
- // Contribution of Samtech www.samcef.com END
- }
- //
- aFlag=myContext.ComputeVE (aV1, aE2, aT);
- //
- if (!aFlag) {
- // Add Interference to the Pool
- BOPTools_VEInterference anInterf (aWhat, aWith, aT);
- anIndexIn=aVEs.Append(anInterf);
- //
- // Add Pave to the Edge's myPavePool
- aCouple.SetCouple(nV1, aWith);
- if (!aSnareMap.Contains(aCouple)){
- aSnareMap.Add(aCouple);
- //
- BOPTools_Pave aPave(nV1, aT, BooleanOperations_VertexEdge);
- aPave.SetInterference(anIndexIn);
- BOPTools_PaveSet& aPaveSet= myPavePool(myDS->RefEdge(aWith));
- aPaveSet.Append(aPave);
- }
- //
- // State for the Vertex in DS;
- myDS->SetState (aWhat, BooleanOperations_ON);
- // Insert Vertex in Interference Object
- BOPTools_VEInterference& aVE=aVEs(anIndexIn);
- aVE.SetNewShape(aWhat);
- }
- myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexEdge, anIndexIn);
- }
- }
- }
- myIsDone=Standard_True;
-}
+
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
//=======================================================================
// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Face.hxx>
+#include <TopExp_Explorer.hxx>
+
#include <BOPTools_VSInterference.hxx>
#include <BOPTools_CArray1OfVSInterference.hxx>
+#include <NMTDS_Iterator.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
-#include <TopExp_Explorer.hxx>
+#include <NMTDS_InterfPool.hxx>
+
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
{
myIsDone=Standard_False;
//
- Standard_Boolean aJustAddInterference;
+ Standard_Boolean aJustAdd;
Standard_Integer n1, n2, anIndexIn, aFlag, aWhat, aWith, aNbVSs, aBlockLength, iSDV;
Standard_Real aU, aV;
TopoDS_Vertex aV1;
TopoDS_Face aF2;
//
- BOPTools_CArray1OfVSInterference& aVSs=myIntrPool->VSInterferences();
+ BOPTools_CArray1OfVSInterference& aVSs=myIP->VSInterferences();
//
// V/E Interferences
- myDSIt.Initialize(TopAbs_VERTEX, TopAbs_FACE);
+ myDSIt->Initialize(TopAbs_VERTEX, TopAbs_FACE);
//
// BlockLength correction
- aNbVSs=ExpectedPoolLength();
+ aNbVSs=myDSIt->BlockLength();
aBlockLength=aVSs.BlockLength();
if (aNbVSs > aBlockLength) {
aVSs.SetBlockLength(aNbVSs);
}
//
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, aJustAddInterference);
- //
- if (! myIntrPool->IsComputed(n1, n2)) {
- if (! IsSuccesstorsComputed(n1, n2)) {
- anIndexIn=0;
- aWhat=n1; // Vertex
- aWith=n2; // Face
- SortTypes(aWhat, aWith);
- //
- iSDV=FindSDVertex(aWhat);
- //
- if(aJustAddInterference) {
- myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn);
- continue;
- }
- //
- aV1=TopoDS::Vertex(myDS->Shape(aWhat));
- if (iSDV) {
- aV1=TopoDS::Vertex(myDS->Shape(iSDV));
- }
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, aJustAdd);
+ if (! IsSuccessorsComputed(n1, n2)) {
+ anIndexIn=0;
+ aWhat=n1; // Vertex
+ aWith=n2; // Face
+ if (myDS->GetShapeType(n1)==TopAbs_FACE) {
+ aWhat=n2;
+ aWith=n1;
+ }
+ //
+ iSDV=FindSDVertex(aWhat);
//
- aF2=TopoDS::Face(myDS->Shape(aWith));
+ if(aJustAdd) {
+ //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn);
+ continue;
+ }
+ //
+ aV1=TopoDS::Vertex(myDS->Shape(aWhat));
+ if (iSDV) {
+ aV1=TopoDS::Vertex(myDS->Shape(iSDV));
+ }
//
- // Modified Thu Sep 14 14:35:18 2006
- // Contribution of Samtech www.samcef.com BEGIN
- if (Contains(aF2, aV1)) {
- continue;
- }
- // Contribution of Samtech www.samcef.com END
+ aF2=TopoDS::Face(myDS->Shape(aWith));
+ //
+ // Modified Thu Sep 14 14:35:18 2006
+ // Contribution of Samtech www.samcef.com BEGIN
+ if (Contains(aF2, aV1)) {
+ continue;
+ }
+ // Contribution of Samtech www.samcef.com END
+ //
+ aFlag=myContext.ComputeVS (aV1, aF2, aU, aV);
+ //
+ if (!aFlag) {
//
- aFlag=myContext.ComputeVS (aV1, aF2, aU, aV);
+ // Add Interference to the Pool
+ BOPTools_VSInterference anInterf (aWhat, aWith, aU, aV);
+ anIndexIn=aVSs.Append(anInterf);
//
- if (!aFlag) {
- //
- // Add Interference to the Pool
- BOPTools_VSInterference anInterf (aWhat, aWith, aU, aV);
- anIndexIn=aVSs.Append(anInterf);
- //
- // SetState for Vertex in DS;
- myDS->SetState (aWhat, BooleanOperations_ON);
- // Insert Vertex in Interference Object
- BOPTools_VSInterference& aVS=aVSs(anIndexIn);
- aVS.SetNewShape(aWhat);
+ // SetState for Vertex in DS;
+ myDS->SetState (aWhat, BooleanOperations_ON);
+ // Insert Vertex in Interference Object
+ BOPTools_VSInterference& aVS=aVSs(anIndexIn);
+ aVS.SetNewShape(aWhat);
+ // qqf
+ {
+ myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_VF);
}
- myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn);
+ // qqt
}
+ //myIntrPool->AddInterference(aWhat, aWith, BooleanOperations_VertexSurface, anIndexIn);
}
}
myIsDone=Standard_True;
#include <stdio.h>
#include <Precision.hxx>
+#include <gp_XYZ.hxx>
+#include <gp_Pnt.hxx>
+#include <Bnd_Box.hxx>
+
#include <TColStd_MapOfInteger.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TColStd_ListIteratorOfListOfInteger.hxx>
+#include <TColStd_MapIteratorOfMapOfInteger.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Compound.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+#include <TopTools_DataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_DataMapOfShapeShape.hxx>
#include <BRep_Tool.hxx>
#include <BRep_Builder.hxx>
+#include <BRepBndLib.hxx>
-#include <Bnd_Box.hxx>
+#include <BOPTColStd_Dump.hxx>
+#include <BOPTColStd_Failure.hxx>
#include <IntTools_ShrunkRange.hxx>
#include <IntTools_Range.hxx>
#include <BOPTools_ListIteratorOfListOfPave.hxx>
#include <BOPTools_SequenceOfPaveBlock.hxx>
-#include <BOPTColStd_Dump.hxx>
-#include <BOPTColStd_Failure.hxx>
-
#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
#include <BooleanOperations_IndexedDataMapOfShapeInteger.hxx>
#include <BooleanOperations_KindOfInterference.hxx>
+#include <NMTDS_Iterator.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_IndexedDataMapOfIntegerShape.hxx>
+#include <NMTDS_IndexedDataMapOfShapeBox.hxx>
+#include <NMTDS_BoxBndTree.hxx>
+#include <NCollection_UBTreeFiller.hxx>
+#include <NMTDS_InterfPool.hxx>
#include <NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx>
#include <NMTTools_ListOfCommonBlock.hxx>
#include <BOPTools_VSInterference.hxx>
// Contribution of Samtech www.samcef.com END
//
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <Bnd_HArray1OfBox.hxx>
-#include <Bnd_BoundSortBox.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
-#include <TopTools_DataMapOfShapeListOfShape.hxx>
-#include <NMTDS_IndexedDataMapOfIntegerShape.hxx>
-#include <NMTDS_IndexedDataMapOfShapeBox.hxx>
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <gp_XYZ.hxx>
-#include <gp_Pnt.hxx>
-#include <BRep_Builder.hxx>
-#include <BRep_Tool.hxx>
-#include <TColStd_MapOfInteger.hxx>
//
-#include <NMTDS_BoxBndTree.hxx>
-#include <NCollection_UBTreeFiller.hxx>
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_MapIteratorOfMapOfInteger.hxx>
static
BooleanOperations_IndexedDataMapOfShapeInteger aMapVI;
BOPTools_IDMapOfPaveBlockIMapOfPaveBlock aMapCB;
//
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
+ BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences();
+ //
+ myDSIt->Initialize(TopAbs_EDGE, TopAbs_EDGE);
//
// BlockLength correction
- aNbVEs=ExpectedPoolLength();
+ aNbVEs=myDSIt->BlockLength();
aBlockLength=aEEs.BlockLength();
if (aNbVEs > aBlockLength) {
aEEs.SetBlockLength(aNbVEs);
}
//
- myDSIt.Initialize(TopAbs_EDGE, TopAbs_EDGE);
- //
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, bJustAdd);
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, bJustAdd);
anIndexIn = 0;
//
- if (myIntrPool->IsComputed(n1, n2)) {
- continue;
- }
+ //if (myIntrPool->IsComputed(n1, n2)) {
+ // continue;
+ //}
//
nE1=n1;
nE2=n2;
- SortTypes(nE1, nE2);
//
if(bJustAdd) {
- myIntrPool->AddInterference (nE1, nE2, BooleanOperations_EdgeEdge, anIndexIn);
+ //myIntrPool->AddInterference (nE1, nE2, BooleanOperations_EdgeEdge, anIndexIn);
continue;
}
//
bIsOnPave2=IsOnPave(aT2, aR2, aTol);
//
if(bIsOnPave1 || bIsOnPave2) {
- myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
- continue;
+ continue;
}
//
BOPTools_Tools::MakeNewVertex(aEWhat, aT1, aEWith, aT2, aNewVertex);
//
+ //modified by NIZNHY-PKV Mon Jun 19 11:40:09 2007f
+ {
+ Standard_Integer nV11, nV12, nV21, nV22, nVS[2], k, j, iFound;
+ Standard_Real aTolVx, aTolVnew, aD2, aDT2;
+ TColStd_MapOfInteger aMV;
+ gp_Pnt aPnew, aPx;
+ //
+ iFound=0;
+ j=-1;
+ nV11=aPB1.Pave1().Index();
+ nV12=aPB1.Pave2().Index();
+ nV21=aPB2.Pave1().Index();
+ nV22=aPB2.Pave2().Index();
+ aMV.Add(nV11);
+ aMV.Add(nV12);
+ //
+ if (aMV.Contains(nV21)) {
+ ++j;
+ nVS[j]=nV21;
+ }
+ if (aMV.Contains(nV22)) {
+ ++j;
+ nVS[j]=nV22;
+ }
+ //
+ aTolVnew=BRep_Tool::Tolerance(aNewVertex);
+ aPnew=BRep_Tool::Pnt(aNewVertex);
+ //
+ for (k=0; k<=j; ++k) {
+ const TopoDS_Vertex& aVx=TopoDS::Vertex(myDS->Shape(nVS[k]));
+ aTolVx=BRep_Tool::Tolerance(aVx);
+ aPx=BRep_Tool::Pnt(aVx);
+ aD2=aPnew.SquareDistance(aPx);
+ //
+ aDT2=100.*(aTolVnew+aTolVx)*(aTolVnew+aTolVx);
+ //
+ if (aD2<aDT2) {
+ iFound=1;
+ break;
+ }
+ }
+ //
+ if (iFound) {
+ continue;
+ }
+ }
+ //modified by NIZNHY-PKV Mon Jun 19 11:40:16 2007t
+ //
// Add Interference to the Pool
BOPTools_EEInterference anInterf (aWhat, aWith, aCPart);
//
anIndexIn=aEEs.Append(anInterf);
- myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
+ // qqf
+ {
+ myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_EE);
+ }
+ // qqt
//
// Collect
aMapVI.Add(aNewVertex, anIndexIn);
aCoinsideFlag=IsBlocksCoinside(aPB1, aPB2);
//
if (aNbComPrt2>1 || !aCoinsideFlag) {
- myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
+ //myIntrPool->AddInterference (aWhat, aWith, BooleanOperations_EdgeEdge, anIndexIn);
break;
}
//
aMapPB.Add(aPB2);
aMapCB.Add(aPB2, aMapPB);
}
+ // qqf
+ {
+ myIP->Add(aWhat, aWith, Standard_True, NMTDS_TI_EE);
+ }
+ // qqt
}
break;
default:
TColStd_MapOfInteger aMFence;
BOPTools_Pave aPave;
//
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
+ BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences();
//
aNb=aMapVI.Extent();
if (!aNb) { // no new vertices, no new problems
//...
aNbIP=aMIPC.Extent();
if (!aNbIP) {
- //modified by NIZNHY-PKV Tue Jan 9 14:26:09 2007f
aMIPC.Add(i);
- //continue;
- //modified by NIZNHY-PKV Tue Jan 9 14:26:12 2007t
}
//
aIt1.Initialize(aMIPC);
BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
BOPTools_Pave aPave;
//
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
+ BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences();
//
// one new vertex case is treated in usual way
//
{
myIsDone=Standard_False;
//
- Standard_Boolean Ok1, Ok2, Ok3;
- Ok1= (aType1==TopAbs_VERTEX) && (aType2==TopAbs_EDGE) ;
- Ok2= (aType1==TopAbs_EDGE) && (aType2==TopAbs_EDGE) ;
- Ok3= (aType1==TopAbs_EDGE) && (aType2==TopAbs_FACE) ;
- if (!Ok1 && !Ok2 && !Ok3) {
- // error: Type mismatch
+ Standard_Boolean bOk1, bOk2, bOk3, bFlag;
+ Standard_Integer i, aNb, nE[2], n1, n2, aNbSplits;
+ TColStd_MapOfInteger aMap;
+
+ bOk1= (aType1==TopAbs_VERTEX) && (aType2==TopAbs_EDGE) ;
+ bOk2= (aType1==TopAbs_EDGE) && (aType2==TopAbs_EDGE) ;
+ bOk3= (aType1==TopAbs_EDGE) && (aType2==TopAbs_FACE) ;
+ if (!bOk1 && !bOk2 && !bOk3) {// error: Type mismatch
return;
}
//
- Standard_Boolean aFlag = Standard_False;
- Standard_Integer n1, n2, nE1, nE2, aNbSplits;
- TColStd_MapOfInteger aMap;
- //
- myDSIt.Initialize(aType1, aType2);
+ aNb=bOk2 ? 2 : 1;
//
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, aFlag);
- nE1=n1;
- nE2=n2;
- SortTypes(nE1, nE2);
+ myDSIt->Initialize(aType1, aType2);
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, bFlag);
//
- if (aType1==TopAbs_EDGE) {
- BOPTools_ListOfPaveBlock& aLPB1=mySplitShapesPool(myDS->RefEdge(nE1));
- aNbSplits=aLPB1.Extent();
- if (!aNbSplits) {
- if (!aMap.Contains(nE1)) {
- aMap.Add(nE1);
- PreparePaveBlocks(nE1);
- //
- if (!myIsDone) {
- return;
- }
- }
- }
+ nE[0]=n1;
+ nE[1]=n2;
+ if (myDS->GetShapeType(n1)!=TopAbs_EDGE) {
+ nE[0]=n2;
+ nE[1]=n1;
}
//
- if (aType2==TopAbs_EDGE) {
- BOPTools_ListOfPaveBlock& aLPB2=mySplitShapesPool(myDS->RefEdge(nE2));
- aNbSplits=aLPB2.Extent();
+ for (i=0; i<aNb; ++i) {
+ BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE[i]));
+ aNbSplits=aLPB.Extent();
if (!aNbSplits) {
- if (!aMap.Contains(nE2)) {
- aMap.Add(nE2);
- PreparePaveBlocks(nE2);
- //
+ if (aMap.Add(nE[i])) {
+ PreparePaveBlocks(nE[i]);
if (!myIsDone) {
return;
}
}
}
- }// if (aType2==TopAbs_EDGE)
+ }
}// for (; myDSIt.More(); myDSIt.Next())
-
myIsDone=Standard_True;
}
//=======================================================================
void NMTTools_PaveFiller::PreparePaveBlocks(const Standard_Integer nE)
{
myIsDone=Standard_False;
-
- Standard_Integer nV1, nV2;
-
+ //
+ char buf[512];
+ Standard_Integer nV1, nV2, iErr;
TopoDS_Edge aE;
TopoDS_Vertex aV1, aV2;
-
- // SplitShapesPool
+ //
BOPTools_ListOfPaveBlock& aLPB=mySplitShapesPool(myDS->RefEdge(nE));
// Edge
aE=TopoDS::Edge(myDS->Shape(nE));
+ if (BRep_Tool::Degenerated(aE)) {
+ myIsDone=Standard_True;
+ return;
+ }
//
- if (!BRep_Tool::Degenerated(aE)){
+ BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE));
+
+ BOPTools_PaveBlockIterator aPBIt(nE, aPS);
+ for (; aPBIt.More(); aPBIt.Next()) {
+ BOPTools_PaveBlock& aPB=aPBIt.Value();
+ const IntTools_Range& aRange=aPB.Range();
//
- BOPTools_PaveSet& aPS=myPavePool(myDS->RefEdge(nE));
-
- BOPTools_PaveBlockIterator aPBIt(nE, aPS);
- for (; aPBIt.More(); aPBIt.Next()) {
- BOPTools_PaveBlock& aPB=aPBIt.Value();
-
- const IntTools_Range& aRange=aPB.Range();
-
- const BOPTools_Pave& aPave1=aPB.Pave1();
- nV1=aPave1.Index();
- aV1=TopoDS::Vertex(myDS->GetShape(nV1));
-
- const BOPTools_Pave& aPave2=aPB.Pave2();
- nV2=aPave2.Index();
- aV2=TopoDS::Vertex(myDS->GetShape(nV2));
- //
- // ShrunkRange
- IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext);
- //
- Standard_Integer anErrorStatus;
- anErrorStatus=aSR.ErrorStatus();
-
- char buf[512];
- if (!aSR.IsDone()) {
- sprintf (buf, "Can not obtain ShrunkRange for Edge %d\n", nE);
- BOPTColStd_Dump::PrintMessage(buf);
- sprintf (buf, "Can not obtain ShrunkRange for Edge %d", nE);
- throw
- BOPTColStd_Failure(buf) ;
- }
- //
- if (anErrorStatus==6) {
- sprintf(buf,
- "Warning: [PreparePaveBlocks()] Max.Dummy Shrunk Range for Edge %d\n", nE);
- BOPTColStd_Dump::PrintMessage(buf);
- }
- else {
- // Check left paves and correct ShrunkRange if it is necessary
- CorrectShrunkRanges (0, aPave1, aSR);
- CorrectShrunkRanges (1, aPave2, aSR);
- }
- //
- aPB.SetShrunkRange(aSR);
- aLPB.Append(aPB);
- } //for (; aPBIt1.More(); aPBIt1.Next())
- }
+ const BOPTools_Pave& aPave1=aPB.Pave1();
+ nV1=aPave1.Index();
+ aV1=TopoDS::Vertex(myDS->GetShape(nV1));
+ //
+ const BOPTools_Pave& aPave2=aPB.Pave2();
+ nV2=aPave2.Index();
+ aV2=TopoDS::Vertex(myDS->GetShape(nV2));
+ //
+ // ShrunkRange
+ IntTools_ShrunkRange aSR (aE, aV1, aV2, aRange, myContext);
+ iErr=aSR.ErrorStatus();
+ if (!aSR.IsDone()) {
+ sprintf (buf, "Can not obtain ShrunkRange for Edge %d\n", nE);
+ BOPTColStd_Dump::PrintMessage(buf);
+ sprintf (buf, "Can not obtain ShrunkRange for Edge %d", nE);
+ throw
+ BOPTColStd_Failure(buf) ;
+ }
+ //
+ if (iErr==6) {
+ sprintf(buf,
+ "Warning: [PreparePaveBlocks()] Max.Dummy Shrunk Range for Edge %d\n", nE);
+ BOPTColStd_Dump::PrintMessage(buf);
+ }
+ else {
+ // Check left paves and correct ShrunkRange if it is necessary
+ CorrectShrunkRanges (0, aPave1, aSR);
+ CorrectShrunkRanges (1, aPave2, aSR);
+ }
+ //
+ aPB.SetShrunkRange(aSR);
+ aLPB.Append(aPB);
+ } //for (; aPBIt.More(); aPBIt.Next())
myIsDone=Standard_True;
}
//=======================================================================
return;
}
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
+ BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences();
const BOPTools_EEInterference& aEE=aEEs(anIndexInterf);
const IntTools_CommonPrt& aCP=aEE.CommonPrt();
const TopoDS_Edge& aE1=aCP.Edge1();
tNV=tV+aCoeff*(tNV-tV);
aNewRange.SetFirst(tNV);
aNewRange.SetLast (aSR.Last());
-
- if(aNewRange.First() > aNewRange.Last()) {
+ //modified by NIZNHY-PKV Tue Jan 23 14:07:55 2007f
+ //if(aNewRange.First() > aNewRange.Last()) {
+ if(aNewRange.First() < aNewRange.Last()) {
+ //modified by NIZNHY-PKV Tue Jan 23 14:08:02 2007t
aShrunkRange.SetShrunkRange(aNewRange);
}
}
TColStd_ListOfInteger aLFI;
TColStd_ListIteratorOfListOfInteger aItLFI;
//
- BOPTools_CArray1OfVSInterference& aVSs=myIntrPool->VSInterferences();
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
+ BOPTools_CArray1OfVSInterference& aVSs=myIP->VSInterferences();
+ BOPTools_CArray1OfEEInterference& aEEs=myIP->EEInterferences();
//
aNbS=myDS->NumberOfShapesOfTheObject();
for (i=1; i<=aNbS; ++i) {
}
}
// Contribution of Samtech www.samcef.com END
-/*
-//=======================================================================
-// function:EENewVertices
-// purpose:
-//=======================================================================
- void NMTTools_PaveFiller::EENewVertices (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI)
-{
- Standard_Integer aNb, i, j, aNewShape, aNbEdges, aNbIEE, aNbVV, aNbSimple;
- Standard_Integer aWhat, aWith, i1, i2, nE1, nE2, nE, nV, aFlag;
- Standard_Real aT;
- TopoDS_Compound aCompound;
- BRep_Builder aBB;
- NMTTools_IndexedDataMapOfIndexedMapOfInteger aMNVE, aMNVIEE;
- BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
- BOPTools_Pave aPave;
- TopoDS_Vertex aNewVertex;
- TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple;
- //
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
- //
- aNb=aMapVI.Extent();
- //
- if (!aNb) { // no new vertices, no new problems
- return;
- }
- //
- // 0.
- if (aNb==1) {
- aNewVertex=TopoDS::Vertex(aMapVI.FindKey(1));
- EENewVertices(aNewVertex, aMapVI);
- return;
- }
- //
- // 1. Make compound from new vertices
- aBB.MakeCompound(aCompound);
- for (i=1; i<=aNb; ++i) {
- const TopoDS_Shape& aV=aMapVI.FindKey(i);
- aBB.Add(aCompound, aV);
- }
- //
- // 2. VV intersection between these vertices
- // using the auxiliary Filler
- NMTDS_ShapesDataStructure tDS;
- //
- tDS.SetCompositeShape(aCompound);
- tDS.Init();
- //
- BOPTools_InterferencePool tInterfPool(tDS);
- NMTTools_PaveFiller tPaveFiller(tInterfPool);
- //
- tPaveFiller.Init();
- //
- tPaveFiller.PerformVV();
- tPaveFiller.PerformNewVertices();
- //
- const BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterfs();
- //
- // 3. Separate Comlex and Simple new vertices
- aNbVV=aVVInterfs.Extent();
- for (i=1; i<=aNbVV; ++i) {
- const BOPTools_VVInterference& aVV=aVVInterfs(i);
- aVV.Indices(aWhat, aWith);
- const TopoDS_Shape& aV1=tDS.Shape(aWhat);
- const TopoDS_Shape& aV2=tDS.Shape(aWith);
- aMNVComplex.Add(aV1);
- aMNVComplex.Add(aV2);
- }
- //
- for (i=1; i<=aNb; ++i) {
- const TopoDS_Shape& aV=aMapVI.FindKey(i);
- if (!aMNVComplex.Contains(aV)) {
- aMNVSimple.Add(aV);
- }
- }
- //
- // 4. Treat Simple new Vertices
- aNbSimple=aMNVSimple.Extent();
- for (i=1; i<=aNbSimple; ++i) {
- const TopoDS_Vertex& aV=TopoDS::Vertex(aMNVSimple(i));
- EENewVertices(aV, aMapVI);
- }
- //
- // 3. Fill Maps : NewVertex-edges (aMNVE)
- // NewVertex-interferences (aMNVIEE)
- for (i=1; i<=aNbVV; ++i) {
- const BOPTools_VVInterference& aVV=aVVInterfs(i);
- aNewShape=aVV.NewShape();
- if (!aNewShape) {
- continue;
- }
- //
- if (!aMNVE.Contains(aNewShape)) {
- TColStd_IndexedMapOfInteger aMx;
- aMNVE.Add(aNewShape, aMx);
- }
- if (!aMNVIEE.Contains(aNewShape)) {
- TColStd_IndexedMapOfInteger aMx;
- aMNVIEE.Add(aNewShape, aMx);
- }
- //
- TColStd_IndexedMapOfInteger& aME=aMNVE.ChangeFromKey(aNewShape);
- TColStd_IndexedMapOfInteger& aMIEE=aMNVIEE.ChangeFromKey(aNewShape);
- //
- aVV.Indices(aWhat, aWith);
- //aWhat
- const TopoDS_Shape& aV1=tDS.Shape(aWhat);
- i1=aMapVI.FindFromKey(aV1);
- const BOPTools_EEInterference& aEE1=aEEs(i1);
- aEE1.Indices(nE1, nE2);
- aME.Add(nE1);
- aME.Add(nE2);
- aMIEE.Add(i1);
- //aWith
- const TopoDS_Shape& aV2=tDS.Shape(aWith);
- i2=aMapVI.FindFromKey(aV2);
- const BOPTools_EEInterference& aEE2=aEEs(i2);
- aEE2.Indices(nE1, nE2);
- aME.Add(nE1);
- aME.Add(nE2);
- aMIEE.Add(i2);
- //
- //printf(" VV: (%d, %d) -> %d\n", aWhat, aWith, aNewShape);
- }
- //
- // 4. Process new vertices
- aNb=aMNVE.Extent();
- for (i=1; i<=aNb; ++i) { // xx
- //
- // new Vertex
- nV=aMNVE.FindKey(i);
- aNewVertex=TopoDS::Vertex(tDS.Shape(nV));
- //
- // Insert New Vertex in DS;
- myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq);
- aNewShape=myDS->NumberOfInsertedShapes();
- myDS->SetState (aNewShape, BooleanOperations_ON);
- //
- // Update index of NewShape in EE interferences
- const TColStd_IndexedMapOfInteger& aMIEE=aMNVIEE.FindFromKey(nV);//(i);
- aNbIEE=aMIEE.Extent();
- for (j=1; j<=aNbIEE; ++j) {
- i1=aMIEE(j);
- BOPTools_EEInterference& aEE1=aEEs(i1);
- aEE1.SetNewShape(aNewShape);
- }
- //
- // Update Paves on edges
- const TColStd_IndexedMapOfInteger& aME=aMNVE(i);
- aNbEdges=aME.Extent();
- for (j=1; j<=aNbEdges; ++j) {
- nE=aME(j);
- const TopoDS_Edge aE=TopoDS::Edge(myDS->Shape(nE));//mpv
- //
- aFlag=myContext.ComputeVE (aNewVertex, aE, aT);
- //
- if (!aFlag) {
- aPave.SetInterference(-1);
- aPave.SetType (BooleanOperations_EdgeEdge);
- aPave.SetIndex(aNewShape);
- aPave.SetParam(aT);
- //
- BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE));
- aPaveSet.Append(aPave);
- }
- }
- }// for (i=1; i<=aNb; ++i) {// xx
-}
-//=======================================================================
-// function:EENewVertices
-// purpose:
-//=======================================================================
- void NMTTools_PaveFiller::EENewVertices (const TopoDS_Vertex& aNewVertex,
- const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI)
-{
- Standard_Integer i, aNewShape, nE1, nE2;
- Standard_Real aT1, aT2;
- BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
- BOPTools_Pave aPave;
- //
- BOPTools_CArray1OfEEInterference& aEEs=myIntrPool->EEInterferences();
- //
- // one new vertex case is treated in usual way
- //
- // Insert New Vertex in DS;
- myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq);
- aNewShape=myDS->NumberOfInsertedShapes();
- myDS->SetState (aNewShape, BooleanOperations_ON);
- // Insert New Vertex in EE Interference
- i=aMapVI.FindFromKey(aNewVertex);
- BOPTools_EEInterference& aEEInterf= aEEs(i);
- aEEInterf.SetNewShape(aNewShape);
- // Extact interference info
- aEEInterf.Indices(nE1, nE2);
- const IntTools_CommonPrt& aCPart=aEEInterf.CommonPrt();
- VertexParameters(aCPart, aT1, aT2);
- //
- // Add Paves to the myPavePoolNew
- aPave.SetInterference(i);
- aPave.SetType (BooleanOperations_EdgeEdge);
- aPave.SetIndex(aNewShape);
- // Pave for edge nE1
- aPave.SetParam(aT1);
- BOPTools_PaveSet& aPaveSet1=myPavePoolNew(myDS->RefEdge(nE1));
- aPaveSet1.Append(aPave);
- // Pave for edge nE2
- aPave.SetParam(aT2);
- BOPTools_PaveSet& aPaveSet2=myPavePoolNew(myDS->RefEdge(nE2));
- aPaveSet2.Append(aPave);
-}
-*/
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Compound.hxx>
+#include <TopExp.hxx>
+
#include <TopTools_IndexedMapOfShape.hxx>
#include <IntTools_ShrunkRange.hxx>
#include <BOPTools_ListOfPaveBlock.hxx>
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
#include <BOPTools_ESInterference.hxx>
-#include <BOPTools_InterferencePool.hxx>
+
#include <BOPTools_CArray1OfVVInterference.hxx>
#include <BOPTools_CArray1OfESInterference.hxx>
#include <BOPTools_VVInterference.hxx>
#include <BOPTools_IMapOfPaveBlock.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_Iterator.hxx>
+#include <NMTDS_InterfPool.hxx>
#include <NMTTools_ListOfCommonBlock.hxx>
#include <NMTTools_CommonBlockAPI.hxx>
#include <NMTTools_IndexedDataMapOfIndexedMapOfInteger.hxx>
#include <NMTTools_CommonBlockAPI.hxx>
#include <NMTTools_ListOfCommonBlock.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopExp.hxx>
+
static
void VertexParameter(const IntTools_CommonPrt& aCPart,
BOPTools_IDMapOfPaveBlockIMapOfInteger aMapCB;
BOPTools_IMapOfPaveBlock aIMPBx;
//
- BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences();
+ BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences();
//
- myDSIt.Initialize(TopAbs_EDGE, TopAbs_FACE);
+ myDSIt->Initialize(TopAbs_EDGE, TopAbs_FACE);
//
// BlockLength correction
- aNbEFs=ExpectedPoolLength();
+ aNbEFs=myDSIt->BlockLength();
aBlockLength=aEFs.BlockLength();
if (aNbEFs > aBlockLength) {
aEFs.SetBlockLength(aNbEFs);
}
//
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, bJustAdd);
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, bJustAdd);
anIndexIn = 0;
//
- if (myIntrPool->IsComputed(n1, n2)) {
- continue;
- }
+ //if (myIntrPool->IsComputed(n1, n2)) {
+ // continue;
+ //}
//
nE=n1;
- nF=n2;
- SortTypes(nE, nF);
+ nF=n2;
+ if (myDS->GetShapeType(n2)==TopAbs_EDGE) {
+ nE=n2;
+ nF=n1;
+ }
+ //SortTypes(nE, nF);
//
// all Common Blocks for face nF
//XXX
NMTTools_CommonBlockAPI aCBAPIF(aLCBF);
//XXX
if(bJustAdd) {
- myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
+ //myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
continue;
}
// Edge
//
aMapVI.Add(aNewVertex, anIndexIn);
aIMPBx.Add(aPB);
+ // qqf
+ {
+ myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF);
+ }
+ // qqt
//
}// if (!nVF)
}// if (!bIsOnPave1 && !bIsOnPave2)
- myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
+ //myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
}// case TopAbs_VERTEX:
break;
//
//
aCoinsideFlag=BOPTools_Tools::IsBlockInOnFace(aPB, aF, myContext);
if (!aCoinsideFlag) {
- myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
+ //myIntrPool->AddInterference (nE, nF, BooleanOperations_EdgeSurface, anIndexIn);
break;
}
//
aMapF.Add(nF);
aMapCB.Add(aPB, aMapF);
}
- //modified by NIZNHY-PKV Fri Jan 23 14:13:08 2004 f
aIMPBx.Add(aPB);
- //modified by NIZNHY-PKV Fri Jan 23 14:13:10 2004 t
+ // qqf
+ {
+ myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF);
+ }
+ // qqt
}// case TopAbs_EDGE:
break;
void NMTTools_PaveFiller::EFNewVertices (const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI)
{
Standard_Integer i, j, aNb, aNewShape, aFlag, iX, aNbVV, aNbSimple;
- Standard_Integer aWhat, aWith, nE, nF, nV, aNbIEF, aNbEdges;
+ Standard_Integer aWhat, aWith, nE, nF, nV, aNbIEF, aNbEdges, iTmp;
Standard_Real aT;
TopoDS_Compound aCompound;
TopoDS_Vertex aNewVertex;
BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
TopTools_IndexedMapOfShape aMNVComplex, aMNVSimple;
//
- BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences();
+ BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences();
//
aNb=aMapVI.Extent();
//
//
// 2. VV intersection between these vertices
// using the auxiliary Filler
- NMTDS_ShapesDataStructure tDS;
- //
- tDS.SetCompositeShape(aCompound);
- tDS.Init();
- //
- BOPTools_InterferencePool tInterfPool(tDS);
- NMTTools_PaveFiller tPaveFiller(tInterfPool);
+ NMTTools_PaveFiller tPF;
//
- tPaveFiller.Init();
+ tPF.SetCompositeShape(aCompound);
//
- tPaveFiller.PerformVV();
- tPaveFiller.PerformNewVertices();
+ tPF.Init();
+ tPF.PerformVV();
+ //tPF.PerformNewVertices(); qq
//
- const BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterfs();
+ NMTDS_ShapesDataStructure& tDS=*(tPF.DS());
+ //const BOPTools_InterferencePool& tInterfPool=*(tPF.InterfPool());
+ NMTDS_InterfPool& tInterfPool=*(tPF.IP());
+ //const BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterfs();
+ BOPTools_CArray1OfVVInterference& aVVInterfs=tInterfPool.VVInterferences();
//
// 3. Separate Comlex and Simple new vertices
aNbVV=aVVInterfs.Extent();
iX=aMapVI.FindFromKey(aV1);
const BOPTools_ESInterference& aEF1=aEFs(iX);
aEF1.Indices(nE, nF);
- SortTypes(nE, nF);
+ //SortTypes(nE, nF);
+ if (myDS->GetShapeType(nF)==TopAbs_EDGE) {
+ iTmp=nE;
+ nE=nF;
+ nF=iTmp;
+ }
aME.Add(nE);
aMIEF.Add(iX);
//aWith
iX=aMapVI.FindFromKey(aV2);
const BOPTools_ESInterference& aEF2=aEFs(iX);
aEF2.Indices(nE, nF);
- SortTypes(nE, nF);
+ //SortTypes(nE, nF);
+ if (myDS->GetShapeType(nF)==TopAbs_EDGE) {
+ iTmp=nE;
+ nE=nF;
+ nF=iTmp;
+ }
aME.Add(nE);
aMIEF.Add(iX);
}
BOPTools_Pave aPave;
BooleanOperations_AncestorsSeqAndSuccessorsSeq anASSeq;
//
- BOPTools_CArray1OfESInterference& aEFs=myIntrPool->ESInterferences();
+ BOPTools_CArray1OfESInterference& aEFs=myIP->ESInterferences();
//
// Insert New Vertex in DS;
myDS->InsertShapeAndAncestorsSuccessors(aNewVertex, anASSeq);
aEFInterf.SetNewShape(aNewShape);
// Extract interference info
aEFInterf.Indices(nE, nF);
- SortTypes(nE, nF);
+ //SortTypes(nE, nF);
+ if (myDS->GetShapeType(nF)==TopAbs_EDGE) {
+ nE=nF;
+ }
const IntTools_CommonPrt& aCPart=aEFInterf.CommonPrt();
VertexParameter(aCPart, aT);
//
#include <TColStd_IndexedMapOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_MapIteratorOfMapOfInteger.hxx>
+#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
+#include <TColStd_ListOfInteger.hxx>
+#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
+#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <Geom2d_Curve.hxx>
#include <Geom_TrimmedCurve.hxx>
-
+#include <Geom2d_TrimmedCurve.hxx>
+#include <Geom2d_Curve.hxx>
#include <GeomAdaptor_Curve.hxx>
+
#include <BndLib_Add3dCurve.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Compound.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <TopoDS_Edge.hxx>
#include <TopExp.hxx>
+#include <BRepLib.hxx>
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
#include <BRepBndLib.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger.hxx>
#include <BOPTColStd_IndexedDataMapOfIntegerInteger.hxx>
#include <IntTools_SequenceOfCurves.hxx>
#include <IntTools_FaceFace.hxx>
#include <IntTools_Tools.hxx>
+#include <IntTools_ShrunkRange.hxx>
#include <BOPTools_CArray1OfSSInterference.hxx>
-#include <BOPTools_ListIteratorOfListOfInterference.hxx>
-#include <BOPTools_CArray1OfInterferenceLine.hxx>
-#include <BOPTools_InterferenceLine.hxx>
-#include <BOPTools_ListOfInterference.hxx>
-#include <BOPTools_Interference.hxx>
-#include <BOPTools_InterferencePool.hxx>
+//#include <BOPTools_ListIteratorOfListOfInterference.hxx>
+//#include <BOPTools_CArray1OfInterferenceLine.hxx>
+//#include <BOPTools_InterferenceLine.hxx>
+//#include <BOPTools_ListOfInterference.hxx>
+//#include <BOPTools_Interference.hxx>
+
#include <BOPTools_SSInterference.hxx>
#include <BOPTools_ListOfPaveBlock.hxx>
#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
#include <BOPTools_PaveBlockIterator.hxx>
#include <BOPTools_Tools2D.hxx>
+#include <NMTDS_Iterator.hxx>
#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_InterfPool.hxx>
+
+#include <NMTTools_Tools.hxx>
#include <NMTTools_IndexedDataMapOfShapePaveBlock.hxx>
#include <NMTTools_CommonBlockAPI.hxx>
-#include <Geom2d_Curve.hxx>
-#include <NMTTools_Tools.hxx>
-#include <BRepLib.hxx>
-#include <Geom2d_TrimmedCurve.hxx>
-//
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TColStd_ListOfInteger.hxx>
-////
#include <NMTTools_DataMapOfIntegerListOfPaveBlock.hxx>
#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
+
#include <NMTTools_DataMapIteratorOfDataMapOfIntegerListOfPaveBlock.hxx>
-#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_MapIteratorOfMapOfInteger.hxx>
-#include <TColStd_DataMapOfIntegerListOfInteger.hxx>
-#include <TColStd_ListOfInteger.hxx>
-#include <TColStd_DataMapIteratorOfDataMapOfIntegerListOfInteger.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <NMTTools_MapOfPaveBlock.hxx>
-//
-#include <IntTools_ShrunkRange.hxx>
-
-static
- Standard_Boolean IsPairFound(const Standard_Integer nF1,
- const Standard_Integer nF2,
- BOPTools_InterferencePool* myIntrPool,
- BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat,
- BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith);
-
-static
- void FMapWhat(const Standard_Integer nF,
- BOPTools_InterferencePool* myIntrPool,
- TColStd_IndexedMapOfInteger& aMapWhat);
-static
- void FMapWith(const Standard_Integer nF,
- BOPTools_InterferencePool* myIntrPool,
- TColStd_IndexedMapOfInteger& aMapWith);
-static
- Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat,
- const TColStd_IndexedMapOfInteger& aMapWith);
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
TopTools_ListOfShape& aLS);
// Contribution of Samtech www.samcef.com END
+//modified by NIZNHY-PKV Mon Dec 4 12:56:04 2006f
static
Standard_Boolean IsMicroEdge(const TopoDS_Edge& aE,
IntTools_Context& aCtx);
+//modified by NIZNHY-PKV Mon Dec 4 12:56:08 2006t
//=======================================================================
// function: PerformFF
{
myIsDone=Standard_False;
//
- Standard_Boolean bIsFound, bJustAdd, bIsComputed;
+ Standard_Boolean bJustAdd;//, bIsComputed, bIsFound;
Standard_Integer n1, n2, anIndexIn, nF1, nF2, aBlockLength, aNbFFs;
Standard_Boolean bToApproxC3d, bToApproxC2dOnS1, bToApproxC2dOnS2, bIsDone;
Standard_Integer aNbCurves, aNbPoints;
IntTools_SequenceOfCurves aCvs;
BooleanOperations_KindOfInterference aTypeFF=BooleanOperations_SurfaceSurface;
//
- BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
// F/F Interferences [BooleanOperations_SurfaceSurface]
- myDSIt.Initialize(TopAbs_FACE, TopAbs_FACE);
+ myDSIt->Initialize(TopAbs_FACE, TopAbs_FACE);
//
// BlockLength correction
- aNbFFs=ExpectedPoolLength();
+ aNbFFs=myDSIt->BlockLength();
aBlockLength=aFFs.BlockLength();
if (aNbFFs > aBlockLength) {
aFFs.SetBlockLength(aNbFFs);
}
//
- for (; myDSIt.More(); myDSIt.Next()) {
- myDSIt.Current(n1, n2, bJustAdd);
+ for (; myDSIt->More(); myDSIt->Next()) {
+ myDSIt->Current(n1, n2, bJustAdd);
//
- bIsComputed=myIntrPool->IsComputed(n1, n2);
- if (bIsComputed) {
- continue;
- }
+ //bIsComputed=myIntrPool->IsComputed(n1, n2);
+ //if (bIsComputed) {
+ // continue;
+ //}
//
nF1 = n2;
nF2 = n1;
aPnts.Clear();
aCvs.Clear();
//
+ /*
bIsFound=IsPairFound(nF1, nF2, myIntrPool, aMapWhat, aMapWith);
- //
if (bJustAdd) {
if (!bIsFound) {
myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
}
continue;
}
+ */
//
const TopoDS_Face aF1=TopoDS::Face(myDS->Shape(nF1));//mpv
const TopoDS_Face aF2=TopoDS::Face(myDS->Shape(nF2));//mpv
//
bIsDone=aFF.IsDone();
//
+
if (!bIsDone) {
+ /*
if (!bIsFound) {
myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
}
anIndexIn=aFFs.Append(anInterf);
myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
}
+ */
continue;
}
//
if (!aNbCurves && !aNbPoints) {
BOPTools_SSInterference anInterf (nF1, nF2, 1.e-07, 1.e-07, aCvs, aPnts);
anIndexIn=aFFs.Append(anInterf);
- myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
+ //myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
continue;
}
//
{
BOPTools_SSInterference anInterf (nF1, nF2, aTolR3D, aTolR2D, aCvsX, aPntsX);
anIndexIn=aFFs.Append(anInterf);
- myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
+ //myIntrPool->AddInterference (nF1, nF2, aTypeFF, anIndexIn);
}
//
}// for (; myDSIt.More(); myDSIt.Next())
Standard_Boolean bIsExistingPaveBlock, bIsValidIn2D, bIsCoincided;
// Contribution of Samtech www.samcef.com END
//
- Standard_Boolean bIsMicroEdge;
+ Standard_Boolean bIsMicroEdge, bHasES;
Standard_Integer i, aNbFFs, nF1, nF2, aBid=0;
Standard_Integer nV1, nV2, j, aNbCurves;
Standard_Real aTolR3D, aTol2D, aT1, aT2, aTolPPC=Precision::PConfusion();
BooleanOperations_IndexedDataMapOfShapeInteger aMapEI;
BOPTools_ListIteratorOfListOfPaveBlock anIt;
//
- BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
aNbFFs=aFFs.Extent();
//
//
// 1. Produce Section Edges from intersection curves
// between each pair of faces
- //
aNbFFs=aFFs.Extent();
//
for (i=1; i<=aNbFFs; ++i) {
-
BOPTools_SSInterference& aFFi=aFFs(i);
//
// Faces
}
//
// Pave Blocks on Curves
+ bHasES=Standard_False;
for (j=1; j<=aNbCurves; ++j) {
BOPTools_Curve& aBC=aSCvs(j);
const IntTools_Curve& aIC= aBC.Curve();
nV2=aPBNew.Pave2().Index();
aT1=aPBNew.Pave1().Param();
aT2=aPBNew.Pave2().Param();
- // ???
+ //
if((nV1==nV2) && (Abs(aT2 - aT1) < aTolPPC)) {
- continue;// mkk ft
+ continue;// mkk ft ???
}
//
// 1
-
bIsExistingPaveBlock=IsExistingPaveBlock(aPBNew, aLPB, aTolR3D);
if (bIsExistingPaveBlock) {
continue;
//
BOPTools_Tools::MakeSectEdge (aIC, aV1, aT1, aV2, aT2, aES);
//
- // use_01 f
- //
NMTTools_Tools::UpdateEdge (aES, aTolR3D);
bIsMicroEdge=IsMicroEdge(aES, myContext);
if (bIsMicroEdge) {
continue;
}
//
- //use_01 t
- //
- // SKL/PartC5 f
+
{
Handle(Geom2d_Curve) aC2D1, aC2D2;
//
//
NMTTools_Tools::MakePCurve(aES, aF1, aC2D1);
NMTTools_Tools::MakePCurve(aES, aF2, aC2D2);
- //SKL/PartC5 t
}
//
aMEPB.Add(aES, aPBNew);
aMapEI.Add(aES, i);
- }
-
+ //
+ bHasES=Standard_True;
+ }// for (; aPBIter.More(); aPBIter.Next())
} // end of for (j=1; j<=aNbCurves; ++j)
+ // qqf
+ if (bHasES) {
+ myIP->Add(nF1, nF2, Standard_True, NMTDS_TI_FF);
+ }
+ // qqt
}// for (i=1; i<=aNbFFs; ++i)
//=============================================================
//
//
//
// 2. Intersect SE using auxiliary Filler
- NMTDS_ShapesDataStructure tDS;
- //
- tDS.SetCompositeShape(aCompound);
- tDS.Init();
+ NMTTools_PaveFiller tPF;
//
- BOPTools_InterferencePool tIP(tDS);
- NMTTools_PaveFiller tPF(tIP);
+ tPF.SetCompositeShape(aCompound);
//
// 2.1.VV
tPF.Init();
tPF.PerformVV();
- tPF.PerformNewVertices();
+ //tPF.PerformNewVertices(); qq
//
// 2.2.VE
tPF.myPavePool.Resize (tPF.myNbEdges);
BOPTools_ListIteratorOfListOfPaveBlock aIt;
BOPTColStd_IndexedDataMapOfIntegerInteger aMNewOld;
//
+ const NMTDS_ShapesDataStructure& tDS=*(tPF.DS());
const BOPTools_SplitShapesPool& aSSP=tPF.mySplitShapesPool;
const NMTTools_CommonBlockPool& aCBP=tPF.myCommonBlockPool;
//
aF2FWD=aF2;
aF2FWD.Orientation(TopAbs_FORWARD);
//
- // SKL/PartC5 f
NMTTools_Tools::MakePCurve(aEx, aF1FWD, aC2D1);
NMTTools_Tools::MakePCurve(aEx, aF2FWD, aC2D2);
NMTTools_Tools::UpdateEdge (aEx, aTolEx);
- //SKL/PartC5 t
} //if (aCBAPI.IsCommonBlock(aPB))
//
// new SE
{
Standard_Integer i, aNb, nF1, nF2, nE;
Standard_Integer aNbCB, aNbF, nSp, nF;
+ TopAbs_ShapeEnum aType;
TopoDS_Face aF1FWD, aF2FWD;
TColStd_ListIteratorOfListOfInteger aItF;
BOPTools_ListIteratorOfListOfPaveBlock anIt;
NMTTools_ListIteratorOfListOfCommonBlock aItCB;
- TopAbs_ShapeEnum aType;
//
- BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
aNb=aFFs.Extent();
for (i=1; i<=aNb; i++) {
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD);
BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD);
}
- }
+ }
//
//modified by NIZNHY-PKV Fri Mar 23 10:35:02 2007f
// Check common blocks between edges and faces
}
}
/////////////
-//=======================================================================
-// function: IsPairFound
-// purpose:
-//=======================================================================
-Standard_Boolean IsPairFound(const Standard_Integer nF1,
- const Standard_Integer nF2,
- BOPTools_InterferencePool* myIntrPool,
- BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat,
- BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith)
-{
- Standard_Boolean bIsFound;
- //
- if (!aMapWhat.Contains(nF1)) {
- TColStd_IndexedMapOfInteger aMWhat;
- FMapWhat(nF1, myIntrPool, aMWhat);
- aMapWhat.Add(nF1, aMWhat);
- }
- //
- if (!aMapWith.Contains(nF2)) {
- TColStd_IndexedMapOfInteger aMWith;
- FMapWith(nF2, myIntrPool, aMWith);
- aMapWith.Add(nF2, aMWith);
- }
- //
- const TColStd_IndexedMapOfInteger& aMWht=aMapWhat.FindFromKey(nF1);
- const TColStd_IndexedMapOfInteger& aMWit=aMapWith.FindFromKey(nF2);
- //
- bIsFound=IsFound(aMWht, aMWit);
- //
- return bIsFound;
-}
-//=======================================================================
-// function: FMapWhat
-// purpose:
-//=======================================================================
-void FMapWhat(const Standard_Integer nF,
- BOPTools_InterferencePool* myIntrPool,
- TColStd_IndexedMapOfInteger& aMapWhat)
-
-{
- Standard_Integer nE, nV;
-
-
- BooleanOperations_ShapesDataStructure* myDS=myIntrPool->DS();
- BooleanOperations_OnceExplorer aExp(*myDS);
- //
- // What
- aMapWhat.Add(nF);
- aExp.Init(nF, TopAbs_VERTEX);
- for (; aExp.More(); aExp.Next()) {
- nV=aExp.Current();
- aMapWhat.Add(nV);
- }
- //
- aExp.Init(nF, TopAbs_EDGE);
- for (; aExp.More(); aExp.Next()) {
- nE=aExp.Current();
- aMapWhat.Add(nE);
- }
-}
-//=======================================================================
-// function: FMapWith
-// purpose:
-//=======================================================================
-void FMapWith(const Standard_Integer nF,
- BOPTools_InterferencePool* myIntrPool,
- TColStd_IndexedMapOfInteger& aMapWith)
-{
- TColStd_IndexedMapOfInteger aMapWhat;
-
- FMapWhat(nF, myIntrPool, aMapWhat);
- //
- // With
- Standard_Integer i, aNb, anIndex, aWhat, aWith;
- BOPTools_ListIteratorOfListOfInterference anIt;
-
- const BOPTools_CArray1OfInterferenceLine& anArrIL= myIntrPool->InterferenceTable();
- aNb=aMapWhat.Extent();
- for (i=1; i<=aNb; i++) {
- aWhat=aMapWhat(i);
-
- const BOPTools_InterferenceLine& aWithLine=anArrIL(aWhat);
-
- const BOPTools_ListOfInterference& aLI=aWithLine.List();
- anIt.Initialize(aLI);
- for (; anIt.More(); anIt.Next()) {
- const BOPTools_Interference& anIntf=anIt.Value();
- anIndex=anIntf.Index();
- if (anIndex) {
- aWith=anIntf.With();
- aMapWith.Add(aWith);
- }
- }
- }
-}
-//=======================================================================
-// function: IsFound
-// purpose:
-//=======================================================================
-Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat,
- const TColStd_IndexedMapOfInteger& aMapWith)
-{
- Standard_Boolean bFlag=Standard_False;
- Standard_Integer i, aNb, aWhat;
-
- aNb=aMapWhat.Extent();
- for (i=1; i<=aNb; i++) {
- aWhat=aMapWhat(i);
- if (aMapWith.Contains(aWhat)) {
- return !bFlag;
- }
- }
- return bFlag;
-}
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
//=======================================================================
//
// Contribution of Samtech www.samcef.com END
-// use_01 f
+//modified by NIZNHY-PKV Mon Dec 4 12:30:38 2006f use_01
//=======================================================================
//function : IsMicroEdge
//purpose :
//
return bRet;
}
-// use_01 t
+//modified by NIZNHY-PKV Mon Dec 4 12:55:50 2006t
+/*
+static
+ Standard_Boolean IsPairFound(const Standard_Integer nF1,
+ const Standard_Integer nF2,
+ BOPTools_InterferencePool* myIntrPool,
+ BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat,
+ BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith);
+
+static
+ void FMapWhat(const Standard_Integer nF,
+ BOPTools_InterferencePool* myIntrPool,
+ TColStd_IndexedMapOfInteger& aMapWhat);
+static
+ void FMapWith(const Standard_Integer nF,
+ BOPTools_InterferencePool* myIntrPool,
+ TColStd_IndexedMapOfInteger& aMapWith);
+static
+ Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat,
+ const TColStd_IndexedMapOfInteger& aMapWith);
+
+//=======================================================================
+// function: IsPairFound
+// purpose:
+//=======================================================================
+Standard_Boolean IsPairFound(const Standard_Integer nF1,
+ const Standard_Integer nF2,
+ BOPTools_InterferencePool* myIntrPool,
+ BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWhat,
+ BOPTColStd_IndexedDataMapOfIntegerIndexedMapOfInteger& aMapWith)
+{
+ Standard_Boolean bIsFound;
+ //
+ if (!aMapWhat.Contains(nF1)) {
+ TColStd_IndexedMapOfInteger aMWhat;
+ FMapWhat(nF1, myIntrPool, aMWhat);
+ aMapWhat.Add(nF1, aMWhat);
+ }
+ //
+ if (!aMapWith.Contains(nF2)) {
+ TColStd_IndexedMapOfInteger aMWith;
+ FMapWith(nF2, myIntrPool, aMWith);
+ aMapWith.Add(nF2, aMWith);
+ }
+ //
+ const TColStd_IndexedMapOfInteger& aMWht=aMapWhat.FindFromKey(nF1);
+ const TColStd_IndexedMapOfInteger& aMWit=aMapWith.FindFromKey(nF2);
+ //
+ bIsFound=IsFound(aMWht, aMWit);
+ //
+ return bIsFound;
+}
+//=======================================================================
+// function: FMapWhat
+// purpose:
+//=======================================================================
+void FMapWhat(const Standard_Integer nF,
+ BOPTools_InterferencePool* myIntrPool,
+ TColStd_IndexedMapOfInteger& aMapWhat)
+
+{
+ Standard_Integer nE, nV;
+ //
+ BooleanOperations_ShapesDataStructure* myDS=myIntrPool->DS();
+ BooleanOperations_OnceExplorer aExp(*myDS);
+ //
+ // What
+ aMapWhat.Add(nF);
+ aExp.Init(nF, TopAbs_VERTEX);
+ for (; aExp.More(); aExp.Next()) {
+ nV=aExp.Current();
+ aMapWhat.Add(nV);
+ }
+ //
+ aExp.Init(nF, TopAbs_EDGE);
+ for (; aExp.More(); aExp.Next()) {
+ nE=aExp.Current();
+ aMapWhat.Add(nE);
+ }
+}
+//=======================================================================
+// function: FMapWith
+// purpose:
+//=======================================================================
+void FMapWith(const Standard_Integer nF,
+ BOPTools_InterferencePool* myIntrPool,
+ TColStd_IndexedMapOfInteger& aMapWith)
+{
+ TColStd_IndexedMapOfInteger aMapWhat;
+
+ FMapWhat(nF, myIntrPool, aMapWhat);
+ //
+ // With
+ Standard_Integer i, aNb, anIndex, aWhat, aWith;
+ BOPTools_ListIteratorOfListOfInterference anIt;
+
+ const BOPTools_CArray1OfInterferenceLine& anArrIL= myIntrPool->InterferenceTable();
+
+ aNb=aMapWhat.Extent();
+ for (i=1; i<=aNb; i++) {
+ aWhat=aMapWhat(i);
+
+ const BOPTools_InterferenceLine& aWithLine=anArrIL(aWhat);
+
+ const BOPTools_ListOfInterference& aLI=aWithLine.List();
+ anIt.Initialize(aLI);
+ for (; anIt.More(); anIt.Next()) {
+ const BOPTools_Interference& anIntf=anIt.Value();
+ anIndex=anIntf.Index();
+ if (anIndex) {
+ aWith=anIntf.With();
+ aMapWith.Add(aWith);
+ }
+ }
+ }
+}
+//=======================================================================
+// function: IsFound
+// purpose:
+//=======================================================================
+Standard_Boolean IsFound(const TColStd_IndexedMapOfInteger& aMapWhat,
+ const TColStd_IndexedMapOfInteger& aMapWith)
+{
+ Standard_Boolean bFlag=Standard_False;
+ Standard_Integer i, aNb, aWhat;
+
+ aNb=aMapWhat.Extent();
+ for (i=1; i<=aNb; i++) {
+ aWhat=aMapWhat(i);
+ if (aMapWith.Contains(aWhat)) {
+ return !bFlag;
+ }
+ }
+ return bFlag;
+}
+*/
#include <NMTTools_PaveFiller.ixx>
+#include <Bnd_HArray1OfBox.hxx>
+#include <Bnd_BoundSortBox.hxx>
+#include <Bnd_Box.hxx>
+#include <BRepBndLib.hxx>
+
+#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_ListIteratorOfListOfInteger.hxx>
+#include <TopTools_DataMapOfShapeListOfInteger.hxx>
+#include <TColStd_ListOfInteger.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+
+#include <TopAbs_Orientation.hxx>
+
#include <TopoDS_Vertex.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Compound.hxx>
-#include <NMTDS_ShapesDataStructure.hxx>
-#include <TopAbs_Orientation.hxx>
-#include <BOPTools_ListOfPaveBlock.hxx>
-#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
-#include <BOPTools_PaveBlock.hxx>
-#include <BOPTools_Pave.hxx>
-#include <BOPTools_Tools.hxx>
-#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfIntegerShape.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeInteger.hxx>
+#include <TopTools_DataMapOfShapeInteger.hxx>
+#include <TopTools_DataMapOfShapeShape.hxx>
+#include <TopTools_DataMapOfShapeListOfInteger.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfInteger.hxx>
+#include <TopTools_DataMapOfIntegerShape.hxx>
+
+#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
-#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
-#include <BOPTools_SSInterference.hxx>
-#include <BOPTools_CArray1OfSSInterference.hxx>
+
#include <TopExp_Explorer.hxx>
-#include <TopoDS_Shape.hxx>
#include <TopExp.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
-
//
#include <IntTools_SequenceOfPntOn2Faces.hxx>
#include <IntTools_PntOnFace.hxx>
#include <IntTools_PntOn2Faces.hxx>
-#include <BOPTools_Tools.hxx>
-#include <TopTools_DataMapOfShapeListOfInteger.hxx>
-#include <TColStd_ListOfInteger.hxx>
-#include <TopoDS_Compound.hxx>
-#include <BRep_Builder.hxx>
+
+#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
+
+#include <BOPTools_SSInterference.hxx>
+#include <BOPTools_CArray1OfSSInterference.hxx>
#include <BOPTools_CArray1OfVVInterference.hxx>
#include <BOPTools_VVInterference.hxx>
-#include <TopTools_DataMapOfShapeShape.hxx>
-#include <TopTools_DataMapOfShapeListOfInteger.hxx>
-#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfInteger.hxx>
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <TopTools_DataMapOfIntegerShape.hxx>
-#include <Bnd_HArray1OfBox.hxx>
-#include <Bnd_BoundSortBox.hxx>
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <TopTools_DataMapIteratorOfDataMapOfIntegerShape.hxx>
-#include <TopTools_DataMapOfShapeInteger.hxx>
-#include <TopTools_DataMapIteratorOfDataMapOfShapeInteger.hxx>
-#include <TopTools_DataMapOfShapeInteger.hxx>
-#include <BooleanOperations_AncestorsSeqAndSuccessorsSeq.hxx>
+#include <BOPTools_Tools.hxx>
+#include <BOPTools_ListOfPaveBlock.hxx>
+#include <BOPTools_ListIteratorOfListOfPaveBlock.hxx>
+#include <BOPTools_PaveBlock.hxx>
+#include <BOPTools_Pave.hxx>
+#include <BOPTools_Tools.hxx>
+#include <NMTDS_Iterator.hxx>
+#include <NMTDS_ShapesDataStructure.hxx>
+#include <NMTDS_InterfPool.hxx>
+
+#include <NMTTools_ListIteratorOfListOfCommonBlock.hxx>
// Modified Thu Sep 14 14:35:18 2006
// Contribution of Samtech www.samcef.com BEGIN
static
BOPTools_Pave aPave1, aPave2;
BOPTools_PaveBlock aPB;
//
- BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
aNbFFs=aFFs.Extent();
for (i=1; i<=aNbFFs; ++i) {
//
myAloneVertices.Clear();
//
- BOPTools_CArray1OfSSInterference& aFFs=myIntrPool->SSInterferences();
+ BOPTools_CArray1OfSSInterference& aFFs=myIP->SSInterferences();
//
// 1. Collect alone vertices from FFs
aNbV=0;
}
}
}
+ // qqf
+ {
+ Standard_Integer aNbF, aNbAV, nF, k;
+ NMTTools_IndexedDataMapOfIndexedMapOfInteger aMAVF;
+ //
+ aNbF=myAloneVertices.Extent();
+ if (aNbF<2) {
+ return;
+ }
+ //
+ // 1. fill map Alone Vertex/Face -> aMAVF
+ for (i=1; i<=aNbF; ++i) {
+ nF=myAloneVertices.FindKey(i);
+ const TColStd_IndexedMapOfInteger& aMAV=myAloneVertices(i);
+ aNbAV=aMAV.Extent();
+ for(j=1; j<=aNbAV; ++j) {
+ nV=aMAV(j);
+ if (aMAVF.Contains(nV)) {
+ TColStd_IndexedMapOfInteger& aMF=aMAVF.ChangeFromKey(nV);
+ aMF.Add(nF);
+ }
+ else{
+ TColStd_IndexedMapOfInteger aMF;
+ aMF.Add(nF);
+ aMAVF.Add(nV, aMF);
+ }
+ }
+ }
+ //
+ // 2 Obtain pairs of faces
+ aNbAV=aMAVF.Extent();
+ for (i=1; i<=aNbAV; ++i) {
+ const TColStd_IndexedMapOfInteger& aMF=aMAVF(i);
+ aNbF=aMF.Extent();
+ for(j=1; j<aNbF; ++j) {
+ nF1=aMF(j);
+ for(k=j+1; k<=aNbF; ++k) {
+ nF2=aMF(k);
+ myIP->Add(nF1, nF2, Standard_True, NMTDS_TI_FF);
+ }
+ }
+ }
+ }
+ // qqt
}
//=======================================================================
// function: AloneVertices
// function: FuseVertices
// purpose:
//=======================================================================
-void FuseVertices(const TopoDS_Shape& aCompound,
- TopTools_DataMapOfShapeShape& aDMVV)
+ void NMTTools_PaveFiller::FuseVertices(const TopoDS_Shape& aCompound,
+ TopTools_DataMapOfShapeShape& aDMVV)const
{
Standard_Integer i, aNbVV, n1, n2, nX;
- NMTDS_ShapesDataStructure tDS;
- //
- tDS.SetCompositeShape(aCompound);
- tDS.Init();
+ NMTTools_PaveFiller tPF;
//
- BOPTools_InterferencePool tInterfPool(tDS);
- NMTTools_PaveFiller tPaveFiller(tInterfPool);
+ tPF.SetCompositeShape(aCompound);
//
- tPaveFiller.Init();
+ tPF.Init();
//
- tPaveFiller.PerformVV();
- tPaveFiller.PerformNewVertices();
+ tPF.PerformVV();
+ //tPF.PerformNewVertices(); //qq
//
- const BOPTools_CArray1OfVVInterference& aVVt=tInterfPool.VVInterfs();
+ NMTDS_ShapesDataStructure& tDS=*(tPF.DS());
+ NMTDS_InterfPool& tInterfPool=*(tPF.IP());
+ BOPTools_CArray1OfVVInterference& aVVt=tInterfPool.VVInterferences();
//
aNbVV=aVVt.Extent();
for (i=1; i<=aNbVV; ++i) {
// function: RealPaveBlock
// purpose:
//=======================================================================
- const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock(const BOPTools_PaveBlock& aPB,
- TColStd_ListOfInteger& aLB)
+ const BOPTools_PaveBlock& NMTTools_PaveFiller::RealPaveBlock
+ (const BOPTools_PaveBlock& aPB,
+ TColStd_ListOfInteger& aLB,
+ Standard_Integer& aIsCommonBlock)
{
Standard_Integer nE, nSpx;
BOPTools_ListIteratorOfListOfPaveBlock aItPBx;
//
+ aIsCommonBlock=0;
aLB.Clear();
nE=aPB.OriginalEdge();
const NMTTools_ListOfCommonBlock& aLCBE=myCommonBlockPool(myDS->RefEdge(nE));
if (aCBAPI.IsCommonBlock(aPB)) {
NMTTools_CommonBlock& aCB=aCBAPI.CommonBlock(aPB);
//
+ aIsCommonBlock=1;
+ //
const BOPTools_ListOfPaveBlock& aLPBx=aCB.PaveBlocks();
aItPBx.Initialize(aLPBx);
for (; aItPBx.More(); aItPBx.Next()) {
\class GEOM_Actor GEOM_Actor.h
\brief This class allows to display an OpenCASCADE CAD model in a VTK viewer.
*/
-
-#include "GEOM_Actor.h"
-
-#include <vtkObjectFactory.h>
-#include <vtkPolyData.h>
-#include <vtkPolyDataMapper.h>
-#include <vtkPolyDataNormals.h>
-
+#include "GEOM_Actor.h"
+
+#include "GEOM_DeviceActor.h"
+#include "GEOM_VertexSource.h"
+#include "GEOM_EdgeSource.h"
+#include "GEOM_WireframeFace.h"
+#include "GEOM_ShadingFace.h"
+#include "SVTK_Actor.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkRenderer.h>
+#include <vtkProperty.h>
+#include <vtkPointPicker.h>
+#include <vtkCellPicker.h>
+
+#include <TopAbs_ShapeEnum.hxx>
+#include <TopExp_Explorer.hxx>
+#include <Poly_Triangulation.hxx>
+#include <BRepMesh_IncrementalMesh.hxx>
+#include <Bnd_Box.hxx>
+#include <TopoDS.hxx>
+#include <BRep_Tool.hxx>
+#include <BRepBndLib.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopoDS_Iterator.hxx>
+#include <TopExp.hxx>
+
+#include <vtkPolyDataWriter.h>
+
+#include <vtkAppendPolyData.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
#include <vtkTransform.h>
#include <vtkMatrix4x4.h>
#include <vtkMath.h>
-
-#include <vtkProperty.h>
-#include <vtkRenderer.h>
#include <vtkCamera.h>
-// OpenCASCADE Includes
-#include "GEOM_OCCReader.h"
-#include <BRep_Tool.hxx>
+//vtkStandardNewMacro(GEOM_Actor);
+
+#ifndef MYDEBUG
+//#define MYDEBUG
+#endif
-using namespace std;
+GEOM_Actor::GEOM_Actor():
+ // myDisplayMode(eWireframe),
+ myIsSelected(false),
+
+ myVertexActor(GEOM_DeviceActor::New(),true),
+ myVertexSource(GEOM_VertexSource::New(),true),
+
+ myIsolatedEdgeActor(GEOM_DeviceActor::New(),true),
+ myIsolatedEdgeSource(GEOM_EdgeSource::New(),true),
+
+ myOneFaceEdgeActor(GEOM_DeviceActor::New(),true),
+ myOneFaceEdgeSource(GEOM_EdgeSource::New(),true),
+
+ mySharedEdgeActor(GEOM_DeviceActor::New(),true),
+ mySharedEdgeSource(GEOM_EdgeSource::New(),true),
+
+ myWireframeFaceActor(GEOM_DeviceActor::New(),true),
+ myWireframeFaceSource(GEOM_WireframeFace::New(),true),
+
+ myShadingFaceActor(GEOM_DeviceActor::New(),true),
+ myShadingFaceSource(GEOM_ShadingFace::New(),true),
+
+ myHighlightActor(GEOM_DeviceActor::New(),true),
+ myAppendFilter(vtkAppendPolyData::New(),true),
+ myPolyDataMapper(vtkPolyDataMapper::New(),true),
+
+ myHighlightProp(vtkProperty::New()),
+ myPreHighlightProp(vtkProperty::New()),
+ myShadingFaceProp(vtkProperty::New())
+
+{
+#ifdef MYDEBUG
+ cout <<this<< " GEOM_Actor::GEOM_Actor"<<endl;
+#endif
+
+ myPolyDataMapper->SetInput(myAppendFilter->GetOutput());
+ vtkProperty* aProperty;
+
+ myHighlightProp->SetAmbient(0.5);
+ myHighlightProp->SetDiffuse(0.3);
+ myHighlightProp->SetSpecular(0.2);
+ myHighlightProp->SetRepresentationToSurface();
+ myHighlightProp->SetAmbientColor(1, 1, 1);
+ myHighlightProp->SetDiffuseColor(1, 1, 1);
+ myHighlightProp->SetSpecularColor(0.5, 0.5, 0.5);
+ myHighlightActor->SetProperty(myHighlightProp.GetPointer());
+
+ this->myHighlightActor->SetInput(myAppendFilter->GetOutput(),false);
+
+ myPreHighlightProp->SetColor(0,1,1);
+ myPreHighlightProp->SetPointSize(SALOME_POINT_SIZE+2);
+ myPreHighlightProp->SetLineWidth(SALOME_LINE_WIDTH+1);
+ myPreHighlightProp->SetRepresentationToWireframe();
+
+ myAppendFilter->AddInput(myVertexSource->GetOutput());
+ myVertexActor->SetInput(myVertexSource->GetOutput(),false);
+ aProperty = myVertexActor->GetProperty();
+ aProperty->SetRepresentation(VTK_POINTS);
+ aProperty->SetPointSize(3);
+ aProperty->SetColor(1, 1, 0);
+
+ myAppendFilter->AddInput(myIsolatedEdgeSource->GetOutput());
+ myIsolatedEdgeActor->SetInput(myIsolatedEdgeSource->GetOutput(),false);
+ aProperty = myIsolatedEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(1, 0, 0);
+
+ myAppendFilter->AddInput(myOneFaceEdgeSource->GetOutput());
+ myOneFaceEdgeActor->SetInput(myOneFaceEdgeSource->GetOutput(),false);
+ aProperty = myOneFaceEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(0, 1, 0);
+
+ myAppendFilter->AddInput(mySharedEdgeSource->GetOutput());
+ mySharedEdgeActor->SetInput(mySharedEdgeSource->GetOutput(),false);
+ aProperty = mySharedEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(1, 1, 0);
+
+ myAppendFilter->AddInput(myWireframeFaceSource->GetOutput());
+ myWireframeFaceActor->SetInput(myWireframeFaceSource->GetOutput(),false);
+ aProperty = myWireframeFaceActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(0.5, 0.5, 0.5);
-//-------------------------------------------------------------
-// Main methods
-//-------------------------------------------------------------
+ myShadingFaceActor->SetInput(myShadingFaceSource->GetOutput(),true);
+ myShadingFaceProp->SetRepresentation(VTK_SURFACE);
+ myShadingFaceProp->SetInterpolationToGouraud();
+ myShadingFaceProp->SetAmbient(1.0);
+ myShadingFaceProp->SetDiffuse(1.0);
+ myShadingFaceProp->SetSpecular(0.4);
+ myShadingFaceProp->SetAmbientColor(0.329412, 0.223529, 0.027451);
+ myShadingFaceProp->SetDiffuseColor(0.780392, 0.568627, 0.113725);
+ myShadingFaceProp->SetSpecularColor(0.992157, 0.941176, 0.807843);
-GEOM_Actor* GEOM_Actor::New()
-{
- // First try to create the object from the vtkObjectFactory
- vtkObject* ret = vtkObjectFactory::CreateInstance("GEOM_Actor");
- if(ret)
- {
- return (GEOM_Actor*)ret;
- }
- // If the factory was unable to create the object, then create it here.
- return new GEOM_Actor;
-}
+ myShadingFaceActor->SetProperty(myShadingFaceProp.GetPointer());
+ // Toggle display mode
+ setDisplayMode(0); // WIRE FRAME
-GEOM_Actor::GEOM_Actor()
+}
+
+
+GEOM_Actor::~GEOM_Actor()
+{
+#ifdef MYDEBUG
+ cout <<this<< " ~GEOM_Actor::GEOM_Actor"<<endl;
+#endif
+ myHighlightProp->Delete();
+ myPreHighlightProp->Delete();
+ myShadingFaceProp->Delete();
+}
+
+GEOM_Actor*
+GEOM_Actor::
+New()
+{
+ GEOM_Actor* anObject = new GEOM_Actor();
+ anObject->SetMapper(anObject->myPolyDataMapper.Get());
+ return anObject;
+}
+
+
+void Write(vtkPolyData* theDataSet, const char* theFileName){
+ vtkPolyDataWriter* aWriter = vtkPolyDataWriter::New();
+ cout<<"Write - "<<theFileName<<"' : "<<theDataSet->GetNumberOfPoints()<<"; "<<theDataSet->GetNumberOfCells()<<endl;
+ aWriter->SetInput(theDataSet);
+ aWriter->SetFileName(theFileName);
+ //aWriter->Write();
+ aWriter->Delete();
+}
+
+void
+GEOM_Actor::
+SetModified()
+{
+ this->myVertexSource->Modified();
+ this->myIsolatedEdgeSource->Modified();
+ this->myOneFaceEdgeSource->Modified();
+ this->mySharedEdgeSource->Modified();
+ this->myWireframeFaceSource->Modified();
+ this->myShadingFaceSource->Modified();
+}
+
+void
+GEOM_Actor::
+SetMapper(vtkMapper* theMapper)
+{
+ SALOME_Actor::SetMapper(theMapper);
+}
+
+void
+GEOM_Actor::
+AddToRender(vtkRenderer* theRenderer)
{
- this->Device = vtkActor::New();
+ //SALOME_Actor::AddToRender(theRenderer);
+
+ theRenderer->AddActor(this);
+
+ this->myHighlightActor->AddToRender(theRenderer);
+
- this->WireframeMapper = NULL;
- this->ShadingMapper = NULL;
+ myShadingFaceActor->AddToRender(theRenderer);
+ myWireframeFaceActor->AddToRender(theRenderer);
+
+ mySharedEdgeActor->AddToRender(theRenderer);
+ myOneFaceEdgeActor->AddToRender(theRenderer);
+ myIsolatedEdgeActor->AddToRender(theRenderer);
+
+ myVertexActor->AddToRender(theRenderer);
+}
+
+void
+GEOM_Actor::
+RemoveFromRender(vtkRenderer* theRenderer)
+{
+ //SALOME_Actor::RemoveFromRender(theRenderer);
- this->ShadingProperty = NULL;
- this->WireframeProperty = NULL;
+
+ theRenderer->RemoveActor(this);
- this->deflection = 0;
- myDisplayMode = 0;
+ myHighlightActor->RemoveFromRender(theRenderer);
+ myShadingFaceActor->RemoveFromRender(theRenderer);
+ myWireframeFaceActor->RemoveFromRender(theRenderer);
+
+ mySharedEdgeActor->RemoveFromRender(theRenderer);
+ myOneFaceEdgeActor->RemoveFromRender(theRenderer);
+ myIsolatedEdgeActor->RemoveFromRender(theRenderer);
+
+ myVertexActor->RemoveFromRender(theRenderer);
+
+
+ SetSelected(false);
+ SetVisibility(false);
+}
- this->myIO = NULL;
- this->myName = "";
+void
+GEOM_Actor::
+setDisplayMode(int theMode)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SetDisplayMode = "<<theMode <<endl;
+#endif
+ VTKViewer_Actor::setDisplayMode(theMode);
+ SetVisibility(GetVisibility());
+}
+
+void
+GEOM_Actor::
+SetSelected(bool theIsSelected)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SetSelected = "<<theIsSelected <<endl;
+#endif
+
+ myIsSelected = theIsSelected;
+ SetVisibility(GetVisibility());
+}
+
+void
+GEOM_Actor::
+SetVisibility(int theVisibility)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SetVisibility = "<<theVisibility <<" myIsSelected="<< myIsSelected
+ << " theVisibility="<<theVisibility<<" myIsPreselected="<<myIsPreselected<<endl;
+#endif
+
+ SALOME_Actor::SetVisibility(theVisibility);
+
+ this->myHighlightActor->SetVisibility(theVisibility && (myIsSelected || myIsPreselected));
+
+ myShadingFaceActor->SetVisibility(theVisibility && (myDisplayMode == (int)eShading) && (!myIsSelected || !myIsPreselected));
+ myWireframeFaceActor->SetVisibility(theVisibility && (myDisplayMode ==(int)eWireframe) && !myIsSelected);
- this->HighlightProperty = NULL;
- this->myIsHighlighted = false;
+ mySharedEdgeActor->SetVisibility(theVisibility && myDisplayMode == (int)eWireframe && !myIsSelected);
+ myOneFaceEdgeActor->SetVisibility(theVisibility && myDisplayMode == (int)eWireframe && !myIsSelected);
+ myIsolatedEdgeActor->SetVisibility(theVisibility && !myIsSelected);
- this->subshape = false;
- this->myIsInfinite = false;
+ myVertexActor->SetVisibility(false);// must be added new mode points
}
+
-GEOM_Actor::~GEOM_Actor()
+void
+GEOM_Actor
+::SetNbIsos(const int theNb[2])
{
- if (WireframeMapper != NULL)
- WireframeMapper->Delete();
- if (ShadingMapper != NULL)
- ShadingMapper->Delete();
- if (ShadingProperty != NULL)
- ShadingProperty->Delete();
- if (WireframeProperty != NULL)
- WireframeProperty->Delete();
- if (HighlightProperty != NULL)
- HighlightProperty->Delete();
+ myNbIsos[0] = theNb[0];
+ myNbIsos[1] = theNb[1];
}
-
-void GEOM_Actor::ShallowCopy(vtkProp *prop)
+void
+GEOM_Actor
+::GetNbIsos(int &theNbU,int &theNbV)
{
- GEOM_Actor *f = GEOM_Actor::SafeDownCast(prop);
- if ( f != NULL )
- {
- this->setInputShape(f->getTopo(),f->getDeflection(),f->getDisplayMode(),f->isVector());
- this->setName( f->getName() );
- if ( f->hasIO() )
- this->setIO( f->getIO() );
- this->ShadingMapper = NULL;
- this->WireframeMapper = NULL;
- } else {
- this->myIO = NULL;
- this->myName = "";
- this->ShadingMapper = NULL;
- this->WireframeMapper = NULL;
- }
-
- // Now do superclass
- this->SALOME_Actor::ShallowCopy(prop);
+ theNbU = myNbIsos[0];
+ theNbV = myNbIsos[1];
}
-//-------------------------------------------------------------
-// Set parameters
-//-------------------------------------------------------------
-
-
-void GEOM_Actor::setDisplayMode(int thenewmode) {
- myDisplayMode = thenewmode;
- if ( thenewmode >=1 ) {
- if ((myShape.ShapeType() == TopAbs_WIRE) ||
- (myShape.ShapeType() == TopAbs_EDGE) ||
- (myShape.ShapeType() == TopAbs_VERTEX)) {
- if ( !subshape )
- CreateWireframeMapper();
- else
- return;
- } else
- CreateShadingMapper();
- } else
- CreateWireframeMapper();
+static
+void
+MeshShape(const TopoDS_Shape& theShape,
+ float& theDeflection,
+ bool theIsRelative)
+{
+ static Standard_Real RELATIVE_DEFLECTION = 0.0001;
+ Standard_Real aDeflection = theDeflection;
+
+ if(theDeflection <= 0) { // Compute default theDeflection
+ Bnd_Box B;
+ BRepBndLib::Add(theShape, B);
+ Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
+ B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
+ Standard_Real aDiagonal = (aXmax-aXmin)*(aXmax-aXmin) +
+ (aYmax-aYmin)*(aYmax-aYmin) +
+ (aZmax-aZmin)*(aZmax-aZmin);
+ aDiagonal = sqrt(aDiagonal);
+ aDeflection = aDiagonal*RELATIVE_DEFLECTION;
+
+ if(theIsRelative)
+ theDeflection = RELATIVE_DEFLECTION;
+ else
+ theDeflection = aDeflection;
+ }
+
+ BRepMesh_IncrementalMesh aMesh(theShape,aDeflection);
}
-void GEOM_Actor::setDeflection(double adef) {
- deflection = adef;
-}
+void
+GEOM_Actor::
+SetDeflection(float theDeflection, bool theIsRelative)
+{
+ myDeflection = theDeflection;
+ myIsRelative = theIsRelative;
+
+ MeshShape(myShape,myDeflection,myIsRelative);
+
+ SetModified();
+}
-void GEOM_Actor::setInputShape(const TopoDS_Shape& aShape, double adef,
- int imode, bool isVector)
+void GEOM_Actor::SetShape (const TopoDS_Shape& theShape,
+ float theDeflection,
+ bool theIsRelative,
+ bool theIsVector)
{
- myShape = aShape;
- deflection = adef;
- myIsVector = isVector;
- setDisplayMode(imode);
-}
+ myShape = theShape;
+
+ myVertexSource->Clear();
+ myIsolatedEdgeSource->Clear();
+ myOneFaceEdgeSource->Clear();
+ mySharedEdgeSource->Clear();
+ myWireframeFaceSource->Clear();
+ myShadingFaceSource->Clear();
+
+ TopExp_Explorer aVertexExp (theShape,TopAbs_VERTEX);
+ for (; aVertexExp.More(); aVertexExp.Next())
+ {
+ const TopoDS_Vertex& aVertex = TopoDS::Vertex(aVertexExp.Current());
+ myVertexSource->AddVertex(aVertex);
+ }
+ SetDeflection(theDeflection, theIsRelative);
-//-------------------------------------------------------------
-// Get parameters
-//-------------------------------------------------------------
+ // look if edges are free or shared
+ TopTools_IndexedDataMapOfShapeListOfShape anEdgeMap;
+ TopExp::MapShapesAndAncestors(theShape,TopAbs_EDGE,TopAbs_FACE,anEdgeMap);
-const TopoDS_Shape& GEOM_Actor::getTopo() {
- return myShape;
+ SetShape(theShape,anEdgeMap,theIsVector);
}
-double GEOM_Actor::getDeflection() {
- return deflection;
-}
+void GEOM_Actor::SetShape (const TopoDS_Shape& theShape,
+ const TopTools_IndexedDataMapOfShapeListOfShape& theEdgeMap,
+ bool theIsVector)
+{
+ if (theShape.ShapeType() == TopAbs_COMPOUND) {
+ TopoDS_Iterator anItr(theShape);
+ for (; anItr.More(); anItr.Next()) {
+ SetShape(anItr.Value(),theEdgeMap,theIsVector);
+ }
+ }
-void GEOM_Actor::SetWireframeProperty(vtkProperty* Prop) {
- this->WireframeProperty = Prop;
+ switch (theShape.ShapeType()) {
+ case TopAbs_WIRE: {
+ TopExp_Explorer anEdgeExp(theShape,TopAbs_EDGE);
+ for (; anEdgeExp.More(); anEdgeExp.Next()){
+ const TopoDS_Edge& anEdge = TopoDS::Edge(anEdgeExp.Current());
+ if (!BRep_Tool::Degenerated(anEdge))
+ myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
+ }
+ break;
+ }
+ case TopAbs_EDGE: {
+ const TopoDS_Edge& anEdge = TopoDS::Edge(theShape);
+ if (!BRep_Tool::Degenerated(anEdge))
+ myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
+ break;
+ }
+ case TopAbs_VERTEX: {
+ break;
+ }
+ default: {
+ TopExp_Explorer aFaceExp (theShape,TopAbs_FACE);
+ for(; aFaceExp.More(); aFaceExp.Next()) {
+ const TopoDS_Face& aFace = TopoDS::Face(aFaceExp.Current());
+ myWireframeFaceSource->AddFace(aFace);
+ myShadingFaceSource->AddFace(aFace);
+ TopExp_Explorer anEdgeExp(aFaceExp.Current(), TopAbs_EDGE);
+ for(; anEdgeExp.More(); anEdgeExp.Next()) {
+ const TopoDS_Edge& anEdge = TopoDS::Edge(anEdgeExp.Current());
+ if(!BRep_Tool::Degenerated(anEdge)){
+ // compute the number of faces
+ int aNbOfFaces = theEdgeMap.FindFromKey(anEdge).Extent();
+ switch(aNbOfFaces){
+ case 0: // isolated edge
+ myIsolatedEdgeSource->AddEdge(anEdge,theIsVector);
+ break;
+ case 1: // edge in only one face
+ myOneFaceEdgeSource->AddEdge(anEdge,theIsVector);
+ break;
+ default: // edge shared by at least two faces
+ mySharedEdgeSource->AddEdge(anEdge,theIsVector);
+ }
+ }
+ }
+ }
+ }
+ }
}
-void GEOM_Actor::SetShadingProperty(vtkProperty* Prop) {
- this->ShadingProperty = Prop;
+// OLD METHODS
+void GEOM_Actor::setDeflection(double adef) {
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::setDeflection"<<endl;
+#endif
+ SetDeflection((float)adef,GetIsRelative());
}
-//-------------------------------------------------------------
-// Mapper creating function
-//-------------------------------------------------------------
-void GEOM_Actor::CreateMapper(int theMode) {
- this->myIsInfinite = (bool)myShape.Infinite();
- if(myShape.ShapeType() == TopAbs_VERTEX) {
- gp_Pnt aPnt = BRep_Tool::Pnt(TopoDS::Vertex(myShape));
- this->SetPosition(aPnt.X(),aPnt.Y(),aPnt.Z());
- }
- GEOM_OCCReader* aread = GEOM_OCCReader::New();
- aread->setTopo(myShape, myIsVector);
- aread->setDisplayMode(theMode);
- aread->GetOutput()->ReleaseDataFlagOn();
-
- vtkPolyDataMapper* aMapper = vtkPolyDataMapper::New();
- if (theMode == 0) {
- aMapper->SetInput(aread->GetOutput());
- } else {
- vtkPolyDataNormals *normals = vtkPolyDataNormals::New();
- normals->SetInput(aread->GetOutput());
- aMapper->SetInput(normals->GetOutput());
- }
- aread->Delete();
- this->SetMapper(theMode == 0? WireframeMapper = aMapper : ShadingMapper = aMapper);
-}
+// warning! must be checked!
+// SetHighlightProperty
+// SetWireframeProperty
+// SetShadingProperty
-void GEOM_Actor::CreateShadingMapper() {
- CreateMapper(1);
+void GEOM_Actor::SetHighlightProperty(vtkProperty* Prop)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SetHighlightProperty"<<endl;
+#endif
+ this->myHighlightActor->GetProperty()->DeepCopy(Prop);
+
}
+void GEOM_Actor::SetWireframeProperty(vtkProperty* Prop)
+{
+#ifdef MYDEBUG
+ cout << this << " GEOM_Actor::SetWireframeProperty"<<endl;
+#endif
+ // must be filled
+ myWireframeFaceActor->SetProperty(Prop);
+}
-void GEOM_Actor::CreateWireframeMapper() {
- CreateMapper(0);
+void GEOM_Actor::SetShadingProperty(vtkProperty* Prop)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SetShadingProperty"<<endl;
+#endif
+ myShadingFaceProp->DeepCopy(Prop);
}
-//-------------------------------------------------------------
-// Render function
-//-------------------------------------------------------------
-void GEOM_Actor::Render(vtkRenderer *ren, vtkMapper *Mapper)
+void GEOM_Actor::Render(vtkRenderer *ren, vtkMapper *theMapper)
{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::Render"<<endl;
+#endif
+
+ if(!GetVisibility())
+ return;
+
/* render the property */
if (!this->Property) {
// force creation of a property
this->Property->SetSpecularColor(0.99,0.98,0.83);
}
- if(!myIsHighlighted) {
- if ( myIsPreselected )
- this->Property = PreviewProperty;
- else if(myDisplayMode >= 1) {
- // SHADING
- this->Property = ShadingProperty;
- }
- else {
- this->Property = WireframeProperty;
- }
+ switch(myDisplayMode){
+ case 0://wireframe
+ myPreHighlightProp->SetRepresentationToWireframe();
+ myHighlightProp->SetRepresentationToWireframe();
+ break;
+ case 1://shading
+ myPreHighlightProp->SetRepresentationToSurface();
+ myHighlightProp->SetRepresentationToSurface();
+ break;
+ }
+ if(!myIsSelected){
+ if(myIsPreselected){
+ this->myHighlightActor->SetProperty(myPreHighlightProp.GetPointer());
+ myShadingFaceActor->SetProperty(myPreHighlightProp.GetPointer());
+ } else {
+ this->myHighlightActor->SetProperty(myShadingFaceProp.GetPointer());
+ myShadingFaceActor->SetProperty(myShadingFaceProp.GetPointer());
+ }
+ }
+ else{
+ this->myHighlightActor->SetProperty(myHighlightProp.GetPointer());
+ myShadingFaceActor->SetProperty(myHighlightProp.GetPointer());
}
this->Property->Render(this, ren);
this->Device->SetBackfaceProperty(this->BackfaceProperty);
}
this->Device->SetProperty(this->Property);
- // Store information on time it takes to render.
- // We might want to estimate time from the number of polygons in mapper.
- if(myDisplayMode >= 1) {
- if((myShape.ShapeType() == TopAbs_WIRE) ||
- (myShape.ShapeType() == TopAbs_EDGE) ||
- (myShape.ShapeType() == TopAbs_VERTEX)) {
- if ( !subshape ) {
- if(WireframeMapper==NULL) CreateWireframeMapper();
- } else
- return;
- }
- else {
- if(ShadingMapper==NULL) CreateShadingMapper();
- }
- }
- else {
- if(WireframeMapper==NULL) CreateWireframeMapper();
- }
if(myShape.ShapeType() == TopAbs_VERTEX) {
if(ren){
//The parameter determine size of vertex actor relate to diagonal of RendererWindow
vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New();
this->GetMatrix(ren->GetActiveCamera(), aMatrix);
this->Device->SetUserMatrix(aMatrix);
- this->Device->Render(ren,this->Mapper);
+ this->Device->Render(ren,theMapper);
aMatrix->Delete();
} else
- this->Device->Render(ren, this->Mapper);
- if(WireframeMapper!=NULL) this->EstimatedRenderTime = WireframeMapper->GetTimeToDraw();
- else if(ShadingMapper!=NULL) this->EstimatedRenderTime = ShadingMapper->GetTimeToDraw();
+ this->Device->Render(ren, theMapper);
+
+}
+
+void GEOM_Actor::ReleaseGraphicsResources(vtkWindow *)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::ReleaseGraphicsResources"<<endl;
+#endif
+}
+
+
+
+void GEOM_Actor::ShallowCopy(vtkProp *prop)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::ShallowCopy"<<endl;
+#endif
+ GEOM_Actor *f = GEOM_Actor::SafeDownCast(prop);
+ if ( f != NULL )
+ {
+ this->SetShape(f->getTopo(),f->GetDeflection(),f->GetIsRelative());
+ }
+
+ // Now do superclass
+ this->SALOME_Actor::ShallowCopy(prop);
+}
+
+const TopoDS_Shape& GEOM_Actor::getTopo() {
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::getTopo"<<endl;
+#endif
+ return myShape;
+}
+
+void GEOM_Actor::setInputShape(const TopoDS_Shape& ashape, double adef1,
+ int imode, bool isVector)
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::setInputShape"<<endl;
+#endif
+}
+
+double GEOM_Actor::getDeflection()
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::getDeflection"<<endl;
+#endif
+ return (double) GetDeflection();
+}
+
+
+double GEOM_Actor::isVector()
+{
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::isVector"<<endl;
+#endif
+ return 0;
}
-// SubShape
void GEOM_Actor::SubShapeOn()
{
- subshape = true;
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SubShapeOn"<<endl;
+#endif
}
+
void GEOM_Actor::SubShapeOff()
{
- subshape = false;
+#ifdef MYDEBUG
+ cout << "GEOM_Actor::SubShapeOff"<<endl;
+#endif
}
-//-------------------------------------------------------------
-// Opacity methods
-//-------------------------------------------------------------
+void GEOM_Actor::highlight(bool highlight)
+{
+#ifdef MYDEBUG
+ cout << this << " GEOM_Actor::highlight highlight="<<highlight<<endl;
+#endif
+ SALOME_Actor::highlight(highlight);
+}
void GEOM_Actor::SetOpacity(vtkFloatingPointType opa)
{
- //HighlightProperty->SetOpacity(opa);
- SALOME_Actor::SetOpacity(opa);
- ShadingProperty->SetOpacity(opa);
+ // enk:tested OK
+ myShadingFaceProp->SetOpacity(opa);
+ myHighlightProp->SetOpacity(opa);
+ myPreHighlightProp->SetOpacity(opa);
}
-vtkFloatingPointType GEOM_Actor::GetOpacity() {
- return ShadingProperty->GetOpacity();
+vtkFloatingPointType GEOM_Actor::GetOpacity()
+{
+ // enk:tested OK
+ return myShadingFaceProp->GetOpacity();
}
-//-------------------------------------------------------------
-// Color methods
-//-------------------------------------------------------------
-void GEOM_Actor::SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b) {
- ShadingProperty->SetColor(r,g,b);
+void GEOM_Actor::SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b)
+{
+ // enk:tested OK
+ myShadingFaceProp->SetColor(r,g,b);
}
-void GEOM_Actor::GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b) {
- vtkFloatingPointType color[3];
- ShadingProperty->GetColor(color);
- r = color[0];
- g = color[1];
- b = color[2];
+void GEOM_Actor::GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b)
+{
+ // enk:tested OK
+ vtkFloatingPointType aRGB[3];
+ myShadingFaceProp->GetColor(aRGB);
+ r = aRGB[0];
+ g = aRGB[1];
+ b = aRGB[2];
}
-//-------------------------------------------------------------
-// Highlight methods
-//-------------------------------------------------------------
-
-void GEOM_Actor::highlight(bool highlight) {
-
- if(highlight && !myIsHighlighted) {
- myIsHighlighted=true;
- // build highlight property is necessary
- if(HighlightProperty==NULL) {
- HighlightProperty = vtkProperty::New();
- HighlightProperty->SetAmbient(0.5);
- HighlightProperty->SetDiffuse(0.3);
- HighlightProperty->SetSpecular(0.2);
- HighlightProperty->SetRepresentationToSurface();
- HighlightProperty->SetAmbientColor(1, 1, 1);
- HighlightProperty->SetDiffuseColor(1, 1, 1);
- HighlightProperty->SetSpecularColor(0.5, 0.5, 0.5);
- }
-
- this->Property = HighlightProperty;
-
- }
- else if (!highlight) {
- if(myIsHighlighted) {
- myIsHighlighted=false;
- if(myDisplayMode==1) {
- //unhilight in shading
- this->Property = ShadingProperty;
- }
- else {
- //unhilight in wireframe
- this->Property = WireframeProperty;
- }
- }
- }
+bool GEOM_Actor::IsInfinite()
+{
+ return (bool)(myShape.Infinite());
}
-void GEOM_Actor::SetHighlightProperty(vtkProperty* Prop) {
- this->HighlightProperty = Prop;
+/*!
+ To map current selection to VTK representation
+*/
+void
+GEOM_Actor
+::Highlight(bool theIsHighlight)
+{
+ myIsSelected = theIsHighlight;
+#ifdef MYDEBUG
+ cout << this << " GEOM_Actor::Highlight myIsSelected="<<myIsSelected<<endl;
+#endif
+
+ SALOME_Actor::Highlight(theIsHighlight); // this method call ::highlight(theIsHighlight) in the end
+ SetVisibility(GetVisibility());
}
-
-void GEOM_Actor::ReleaseGraphicsResources(vtkWindow *renWin)
+/*!
+ To process prehighlight (called from SVTK_InteractorStyle)
+*/
+bool
+GEOM_Actor
+::PreHighlight(vtkInteractorStyle *theInteractorStyle,
+ SVTK_SelectionEvent* theSelectionEvent,
+ bool theIsHighlight)
{
- vtkActor::ReleaseGraphicsResources(renWin);
+#ifdef MYDEBUG
+ cout << this<<" GEOM_Actor::PreHighlight (3) theIsHighlight="<<theIsHighlight<<endl;
+#endif
+
+ if ( !GetPickable() )
+ return false;
+
+ myPreHighlightActor->SetVisibility( false );
+ bool anIsPreselected = myIsPreselected;
- // broadcast the message down to the individual LOD mappers
+ Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode;
+ bool anIsChanged = (mySelectionMode != aSelectionMode);
+
+ if( !theIsHighlight ) {
+ SetPreSelected( false );
+ }else{
+ switch(aSelectionMode){
+ case ActorSelection :
+ {
+ if( !mySelector->IsSelected( myIO ) ) {
+ SetPreSelected( true );
+ }
+ }
+ default:
+ break;
+ }
+ }
- if(WireframeMapper) this->WireframeMapper->ReleaseGraphicsResources(renWin);
- if(ShadingMapper) this->ShadingMapper->ReleaseGraphicsResources(renWin);
+ mySelectionMode = aSelectionMode;
+ anIsChanged |= (anIsPreselected != myIsPreselected);
+
+ SetVisibility(GetVisibility());
+ return anIsChanged;
}
+/*!
+ To process highlight (called from SVTK_InteractorStyle)
+*/
+bool
+GEOM_Actor
+::Highlight(vtkInteractorStyle *theInteractorStyle,
+ SVTK_SelectionEvent* theSelectionEvent,
+ bool theIsHighlight)
+{
+ // define the selection of object
+#ifdef MYDEBUG
+ cout << endl << this << " GEOM_Actor::Highlight (3) myIsSelected="<<myIsSelected<<endl;
+#endif
+ bool aRet = SALOME_Actor::Highlight(theInteractorStyle,theSelectionEvent,theIsHighlight);
+ SetSelected(theIsHighlight);
+ if(theIsHighlight)
+ SetPreSelected(false);
+
+
+ return aRet;
+}
// Copy the follower's composite 4x4 matrix into the matrix provided.
void GEOM_Actor::GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result)
#define GEOM_ACTOR_H
#include "GEOM_OBJECT_defs.hxx"
+#include "GEOM_SmartPtr.h"
-#include "SALOME_Actor.h"
+#include <SALOME_Actor.h>
-//OpenCASCADE
#include <TopoDS_Shape.hxx>
-#include <TopoDS.hxx>
+#include <vtkSmartPointer.h>
class vtkCamera;
-class GEOM_OBJECT_EXPORT GEOM_Actor : public SALOME_Actor {
- public:
- vtkTypeMacro(GEOM_Actor,SALOME_Actor);
+class GEOM_VertexSource;
+typedef GEOM_SmartPtr<GEOM_VertexSource> PVertexSource;
+
+class GEOM_EdgeSource;
+typedef GEOM_SmartPtr<GEOM_EdgeSource> PEdgeSource;
+
+class GEOM_WireframeFace;
+typedef GEOM_SmartPtr<GEOM_WireframeFace> PWFaceSource;
+
+class GEOM_ShadingFace;
+typedef GEOM_SmartPtr<GEOM_ShadingFace> PSFaceSource;
+
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+class vtkRenderer;
+
+class vtkAppendPolyData;
+typedef GEOM_SmartPtr<vtkAppendPolyData> PAppendFilter;
+class GEOM_OBJECT_EXPORT GEOM_Actor: public SALOME_Actor
+{
+public:
+ vtkTypeMacro(GEOM_Actor,SALOME_Actor);
static GEOM_Actor* New();
+ void SetShape(const TopoDS_Shape& theShape,
+ float theDeflection,
+ bool theIsRelative,
+ bool theIsVector = false);
+
+ void SetDeflection(float theDeflection, bool theIsRelative);
+ float GetDeflection() const{ return myDeflection;}
+ bool GetIsRelative() const{ return myIsRelative;}
+
+ void AddToRender(vtkRenderer* theRenderer);
+ void RemoveFromRender(vtkRenderer* theRenderer);
+
+ enum EDisplayMode{ eWireframe, eShading};
+
+/* void SetDisplayMode(EDisplayMode theMode); */
+/* EDisplayMode GetDisplayMode() const { return myDisplayMode;} */
+
+ void SetSelected(bool theIsSelected);
+ bool IsSelected() const { return myIsSelected;}
+
+ // OLD METHODS
+ // Properties
+ void SetHighlightProperty(vtkProperty* Prop);
+ void SetWireframeProperty(vtkProperty* Prop);
+ void SetShadingProperty(vtkProperty* Prop);
+
+ void setDeflection(double adef);
+ virtual void setDisplayMode(int thenewmode);
+
// Description:
// This causes the actor to be rendered. It, in turn, will render the actor's
// property and then mapper.
virtual void Render(vtkRenderer *, vtkMapper *);
-
// Description:
// Release any graphics resources that are being consumed by this actor.
// The parameter window could be used to determine which graphic
// resources to release.
void ReleaseGraphicsResources(vtkWindow *);
-
const TopoDS_Shape& getTopo();
void setInputShape(const TopoDS_Shape& ashape, double adef1,
int imode, bool isVector = false);
-
double getDeflection();
- void setDeflection(double adefl);
-
- double isVector() { return myIsVector; }
+ double isVector();
// SubShape
void SubShapeOn();
void SubShapeOff();
-
- // Display Mode
- virtual void setDisplayMode(int);
// Highlight
virtual void highlight(bool theHighlight);
void ShallowCopy(vtkProp *prop);
- // Properties
- void SetHighlightProperty(vtkProperty* Prop);
- void SetWireframeProperty(vtkProperty* Prop);
- void SetShadingProperty(vtkProperty* Prop);
-
// Opacity
void SetOpacity(vtkFloatingPointType opa);
vtkFloatingPointType GetOpacity();
void SetColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
void GetColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
- virtual bool IsInfinite() {return myIsInfinite;}
- protected:
+ virtual bool IsInfinite();
+
+ // overloaded functions
+ //! To map current selection to VTK representation
+ virtual
+ void
+ Highlight(bool theHighlight);
+
+ //----------------------------------------------------------------------------
+ //! To process prehighlight (called from #SVTK_InteractorStyle)
+ virtual
+ bool
+ PreHighlight(vtkInteractorStyle* theInteractorStyle,
+ SVTK_SelectionEvent* theSelectionEvent,
+ bool theIsHighlight);
+
+ //! To process highlight (called from #SVTK_InteractorStyle)
+ virtual
+ bool
+ Highlight(vtkInteractorStyle* theInteractorStyle,
+ SVTK_SelectionEvent* theSelectionEvent,
+ bool theIsHighlight);
+
+ //! Visibility management
+ virtual
+ void
+ SetVisibility( int );
+
+ //! IsoLines management
+ // theNb[0] - number of U lines
+ // theNb[1] - number of V lines
+ virtual
+ void
+ SetNbIsos(const int theNb[2]);
+
+ virtual
+ void
+ GetNbIsos(int &theNbU,int &theNbV);
+
+protected:
+ void SetShape(const TopoDS_Shape& theShape,
+ const TopTools_IndexedDataMapOfShapeListOfShape& theEdgeMap,
+ bool theIsVector = false);
+
+ void SetModified();
+
+ void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result);
GEOM_Actor();
~GEOM_Actor();
- GEOM_Actor(const GEOM_Actor&) {};
- void operator=(const GEOM_Actor&) {};
- void CreateWireframeMapper();
- void CreateShadingMapper();
- void CreateMapper(int theMode);
- void GetMatrix(vtkCamera* theCam, vtkMatrix4x4 *result);
+private:
+ TopoDS_Shape myShape;
+ int myNbIsos[2];
+ float myDeflection;
+ bool myIsRelative;
+ bool myIsForced;
- private:
+ // EDisplayMode myDisplayMode;
+ bool myIsSelected;
- bool subshape;
- bool myIsInfinite;
+ PDeviceActor myVertexActor;
+ PVertexSource myVertexSource;
- TopoDS_Shape myShape;
- double deflection;
- bool myIsVector;
+ PDeviceActor myIsolatedEdgeActor;
+ PEdgeSource myIsolatedEdgeSource;
- vtkMapper* ShadingMapper;
- vtkMapper* WireframeMapper;
+ PDeviceActor myOneFaceEdgeActor;
+ PEdgeSource myOneFaceEdgeSource;
- vtkProperty* ShadingProperty;
- vtkProperty* WireframeProperty;
- vtkProperty* HighlightProperty;
-};
+ PDeviceActor mySharedEdgeActor;
+ PEdgeSource mySharedEdgeSource;
+ PDeviceActor myWireframeFaceActor;
+ PWFaceSource myWireframeFaceSource;
-#endif //GEOM_ACTOR_H
+ PDeviceActor myShadingFaceActor;
+ PSFaceSource myShadingFaceSource;
+
+ PDeviceActor myHighlightActor;
+ vtkSmartPointer<vtkProperty> myHighlightProp;
+ vtkSmartPointer<vtkProperty> myPreHighlightProp;
+ vtkSmartPointer<vtkProperty> myShadingFaceProp;
+ PAppendFilter myAppendFilter;
+ PPolyDataMapper myPolyDataMapper;
+
+ virtual void SetMapper(vtkMapper*);
+
+ GEOM_Actor(const GEOM_Actor&);
+ void operator=(const GEOM_Actor&);
+};
+
+#endif //GEOM_ACTOR_H
vtkProperty* VertexProp,
vtkProperty* IsoPVProp,
vtkProperty* EdgePVProp,
- vtkProperty* VertexPVProp)
+ vtkProperty* VertexPVProp)
{
// Shading like default OCC material
FaceProp->SetRepresentationToSurface();
// Compute default deflection
Bnd_Box B;
BRepBndLib::Add(myShape, B);
+ if ( B.IsVoid() ) return; // NPAL15983 (Bug when displaying empty groups)
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
B.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
deflection = MAX3( aXmax-aXmin , aYmax-aYmin , aZmax-aZmin) * 0.001 *4;
Standard_Boolean forced,
Standard_Boolean isVector)
{
+ /*
+ vtkProperty* IsoProp = vtkProperty::New();
+ vtkProperty* FaceProp = vtkProperty::New();
+ vtkProperty* EdgeFProp = vtkProperty::New();
+ vtkProperty* EdgeSProp = vtkProperty::New();
+ vtkProperty* EdgeIProp = vtkProperty::New();
+ vtkProperty* VertexProp = vtkProperty::New();
+ vtkProperty* IsoPVProp = vtkProperty::New();
+ vtkProperty* EdgePVProp = vtkProperty::New();
+ vtkProperty* VertexPVProp = vtkProperty::New();
+ InitProperties(IsoProp,FaceProp,EdgeFProp,EdgeSProp,EdgeIProp,VertexProp,IsoPVProp,EdgePVProp,VertexPVProp);
+ */
+
vtkActorCollection* AISActors = vtkActorCollection::New();
+ MeshShape(myShape,deflection,forced);
+ GEOM_Actor* aGeomActor = GEOM_Actor::New();
+ aGeomActor->SetShape(myShape,(float)deflection,false,isVector);
+ AISActors->AddItem(aGeomActor);
+ aGeomActor->Delete();
+
+ /*
if(myShape.ShapeType() == TopAbs_COMPOUND) {
TopoDS_Iterator anItr(myShape);
for(; anItr.More(); anItr.Next()) {
AISActors->AddItem(VertexActor);
}
+ */
+
return AISActors;
// Create a new vtkAssembly
vtkAssembly* myVTKShape = vtkAssembly::New();
-
-
+ /*
// Create graphics properties
vtkProperty* IsoProp = vtkProperty::New();
}
myVTKShape->AddPart(myFaceAssembly);
}
+
+ */
return myVTKShape;
--- /dev/null
+#include "GEOM_DeviceActor.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkPolyData.h>
+#include <vtkStripper.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyDataNormals.h>
+#include <vtkActor.h>
+
+#include <vtkRenderer.h>
+
+vtkStandardNewMacro(GEOM_DeviceActor);
+
+GEOM_DeviceActor::GEOM_DeviceActor():
+ myStripper(vtkStripper::New(),true),
+ myPolyDataMapper(vtkPolyDataMapper::New(),true),
+ myPolyDataNormals(vtkPolyDataNormals::New(),true),
+ myActor(vtkActor::New(),true)
+{
+ myStripper->SetInput(myPolyDataNormals->GetOutput());
+ myPolyDataMapper->SetInput(myStripper->GetOutput());
+
+ myActor->SetMapper(myPolyDataMapper.Get());
+ myActor->PickableOff();
+}
+
+GEOM_DeviceActor::~GEOM_DeviceActor()
+{
+}
+
+void
+GEOM_DeviceActor::
+SetInput(vtkPolyData* thePolyData, bool theUseStripper)
+{
+ if(theUseStripper)
+ myPolyDataNormals->SetInput(thePolyData);
+ else
+ myPolyDataMapper->SetInput(thePolyData);
+}
+
+void
+GEOM_DeviceActor::
+SetProperty(vtkProperty* theProperty)
+{
+ myActor->SetProperty(theProperty);
+}
+
+vtkProperty*
+GEOM_DeviceActor::
+GetProperty()
+{
+ return myActor->GetProperty();
+}
+
+void
+GEOM_DeviceActor::
+SetVisibility(int theVisibility)
+{
+ myActor->SetVisibility(theVisibility);
+}
+
+int
+GEOM_DeviceActor::
+GetVisibility()
+{
+ return myActor->GetVisibility();
+}
+
+void
+GEOM_DeviceActor::
+AddToRender(vtkRenderer* theRenderer)
+{
+ theRenderer->AddActor(myActor.GetPointer());
+}
+
+void
+GEOM_DeviceActor::
+RemoveFromRender(vtkRenderer* theRenderer)
+{
+ theRenderer->RemoveActor(myActor.GetPointer());
+}
--- /dev/null
+#ifndef GEOM_DEVICEACTOR_H
+#define GEOM_DEVICEACTOR_H
+
+#include "GEOM_SmartPtr.h"
+
+class vtkPoints;
+typedef GEOM_SmartPtr<vtkPoints> PPoints;
+
+class vtkPolyData;
+typedef GEOM_SmartPtr<vtkPolyData> PPolyData;
+
+class vtkStripper;
+typedef GEOM_SmartPtr<vtkStripper> PStripper;
+
+class vtkPolyDataNormals;
+typedef GEOM_SmartPtr<vtkPolyDataNormals> PPolyDataNormals;
+
+class vtkActor;
+typedef GEOM_SmartPtr<vtkActor> PActor;
+
+class vtkProperty;
+class vtkRenderer;
+
+#include <vtkObject.h>
+
+
+class VTK_EXPORT GEOM_DeviceActor: public vtkObject
+{
+public:
+ vtkTypeMacro(GEOM_DeviceActor,vtkObject);
+ static GEOM_DeviceActor* New();
+
+ void SetProperty(vtkProperty* theProperty);
+ vtkProperty* GetProperty();
+
+ void SetVisibility(int theVisibility);
+ int GetVisibility();
+
+ void SetInput(vtkPolyData* thePolyData, bool theUseStripper);
+
+ void AddToRender(vtkRenderer* theRenderer);
+ void RemoveFromRender(vtkRenderer* theRenderer);
+
+protected:
+ PPolyDataNormals myPolyDataNormals;
+ PPolyDataMapper myPolyDataMapper;
+ PStripper myStripper;
+ PActor myActor;
+
+ GEOM_DeviceActor();
+ ~GEOM_DeviceActor();
+
+private:
+ // Not implememnted
+ GEOM_DeviceActor(const GEOM_DeviceActor&);
+ void operator=(const GEOM_DeviceActor&);
+};
+
+
+#endif //GEOM_DEVICEACTOR_H
--- /dev/null
+#include "GEOM_EdgeSource.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+
+#include <BRep_Tool.hxx>
+#include <Poly_Polygon3D.hxx>
+#include <Poly_Triangulation.hxx>
+#include <TColStd_Array1OfInteger.hxx>
+#include <Poly_PolygonOnTriangulation.hxx>
+
+#include <vtkStripper.h>
+#include <vtkPolyData.h>
+
+vtkStandardNewMacro(GEOM_EdgeSource);
+
+GEOM_EdgeSource::GEOM_EdgeSource()
+{
+}
+
+GEOM_EdgeSource::~GEOM_EdgeSource()
+{
+}
+
+void GEOM_EdgeSource::AddEdge (const TopoDS_Edge& theEdge,
+ bool theIsVector)
+{
+ myEdgeSet.Add(theEdge);
+ myIsVector = theIsVector;
+}
+
+void
+GEOM_EdgeSource::
+Execute()
+{
+ vtkPolyData* aPolyData = GetOutput();
+ aPolyData->Allocate();
+ vtkPoints* aPts = vtkPoints::New();
+ aPolyData->SetPoints(aPts);
+ aPts->Delete();
+
+ TEdgeSet::Iterator anIter (myEdgeSet);
+ for (; anIter.More(); anIter.Next()) {
+ const TopoDS_Edge& anEdge = anIter.Value();
+ OCC2VTK(anEdge,aPolyData,aPts,myIsVector);
+ }
+}
+
+void GEOM_EdgeSource::OCC2VTK (const TopoDS_Edge& theEdge,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts,
+ bool theIsVector)
+{
+ Handle(Poly_PolygonOnTriangulation) aEdgePoly;
+ Standard_Integer i = 1;
+ Handle(Poly_Triangulation) T;
+ TopLoc_Location aEdgeLoc;
+ BRep_Tool::PolygonOnTriangulation(theEdge, aEdgePoly, T, aEdgeLoc, i);
+
+ Handle(Poly_Polygon3D) P;
+ if(aEdgePoly.IsNull())
+ P = BRep_Tool::Polygon3D(theEdge, aEdgeLoc);
+
+ if(P.IsNull() && aEdgePoly.IsNull())
+ return;
+
+ // Location edges
+ //---------------
+ gp_Trsf edgeTransf;
+ Standard_Boolean isidtrsf = true;
+ if(!aEdgeLoc.IsIdentity()) {
+ isidtrsf = false;
+ edgeTransf = aEdgeLoc.Transformation();
+ }
+
+ gp_Pnt aP1, aP2;
+
+ if (aEdgePoly.IsNull()) {
+ Standard_Integer aNbNodes = P->NbNodes();
+ const TColgp_Array1OfPnt& aNodesP = P->Nodes();
+
+ aP1 = aNodesP(1);
+ aP2 = aNodesP(aNbNodes);
+
+ for (int j = 1; j < aNbNodes; j++) {
+ gp_Pnt pt1 = aNodesP(j);
+ gp_Pnt pt2 = aNodesP(j+1);
+
+ if (!isidtrsf) {
+ // apply edge transformation
+ pt1.Transform(edgeTransf);
+ pt2.Transform(edgeTransf);
+ }
+
+ float aCoord1[3] = {pt1.X(), pt1.Y(), pt1.Z()};
+ vtkIdType anIds[2];
+ anIds[0] = thePts->InsertNextPoint(aCoord1);
+
+ float aCoord2[3] = {pt2.X(), pt2.Y(), pt2.Z()};
+ anIds[1] = thePts->InsertNextPoint(aCoord2);
+
+ thePolyData->InsertNextCell(VTK_LINE,2,anIds);
+ }
+ } else {
+ Standard_Integer aNbNodes = aEdgePoly->NbNodes();
+ const TColStd_Array1OfInteger& aNodeIds = aEdgePoly->Nodes();
+ const TColgp_Array1OfPnt& anId2Pnts = T->Nodes();
+
+ aP1 = anId2Pnts(1);
+ aP2 = anId2Pnts(aNbNodes);
+
+ for(int j = 1; j < aNbNodes; j++) {
+ Standard_Integer id1 = aNodeIds(j);
+ Standard_Integer id2 = aNodeIds(j+1);
+
+ gp_Pnt pt1 = anId2Pnts(id1);
+ gp_Pnt pt2 = anId2Pnts(id2);
+
+ if(!isidtrsf) {
+ // apply edge transformation
+ pt1.Transform(edgeTransf);
+ pt2.Transform(edgeTransf);
+ }
+
+ float aCoord1[3] = {pt1.X(), pt1.Y(), pt1.Z()};
+ vtkIdType anIds[2];
+ anIds[0] = thePts->InsertNextPoint(aCoord1);
+
+ float aCoord2[3] = {pt2.X(), pt2.Y(), pt2.Z()};
+ anIds[1] = thePts->InsertNextPoint(aCoord2);
+
+ thePolyData->InsertNextCell(VTK_LINE,2,anIds);
+ }
+ }
+
+ // vector representation has an arrow on its end
+ if (theIsVector)
+ {
+ if (!isidtrsf) {
+ // apply edge transformation
+ aP1.Transform(edgeTransf);
+ aP2.Transform(edgeTransf);
+ }
+
+ // draw an arrow
+ gp_Vec aDirVec (aP1, aP2);
+ Standard_Real aDist = aDirVec.Magnitude();
+ if (aDist < gp::Resolution()) return;
+ gp_Dir aDirection (aDirVec);
+
+ Standard_Real anAngle = PI/180.*5.;
+ Standard_Real aLength = aDist/10.;
+
+ Standard_Real dx,dy,dz;
+ aDirection.Coord(dx,dy,dz);
+
+ // Pointe de la fleche
+ Standard_Real xo,yo,zo;
+ aP2.Coord(xo,yo,zo);
+
+ // Centre du cercle base de la fleche
+ gp_XYZ aPc = aP2.XYZ() - aDirection.XYZ() * aLength;
+
+ // Construction d'un repere i,j pour le cercle
+ gp_Dir aDirN;
+ if (Abs(dx) <= Abs(dy) && Abs(dx) <= Abs(dz)) aDirN = gp::DX();
+ else if (Abs(dy) <= Abs(dz) && Abs(dy) <= Abs(dx)) aDirN = gp::DY();
+ else aDirN = gp::DZ();
+
+ gp_Dir aDirI = aDirection ^ aDirN;
+ gp_Dir aDirJ = aDirection ^ aDirI;
+
+ // Add points and segments, composing the arrow
+ Standard_Real cosinus, sinus, Tg = tan(anAngle);
+
+ float coord[3] = {xo, yo, zo};
+
+ vtkIdType ptLoc = thePts->InsertNextPoint(coord);
+ vtkIdType ptFirst = 0;
+ vtkIdType ptPrev = 0;
+ vtkIdType ptCur = 0;
+
+ vtkIdType pts[2];
+
+ int NbPoints = 15;
+ for (int i = 1; i <= NbPoints; i++, ptPrev = ptCur)
+ {
+ cosinus = cos(2. * PI / NbPoints * (i-1));
+ sinus = sin(2. * PI / NbPoints * (i-1));
+
+ gp_XYZ aP = aPc + (aDirI.XYZ() * cosinus + aDirJ.XYZ() * sinus) * aLength * Tg;
+ coord[0] = aP.X();
+ coord[1] = aP.Y();
+ coord[2] = aP.Z();
+
+ // insert pts
+ ptCur = thePts->InsertNextPoint(coord);
+ pts[0] = ptCur;
+
+ if (i == 1) {
+ ptFirst = ptCur;
+ }
+ else {
+ // insert line (ptCur,ptPrev)
+ pts[1] = ptPrev;
+ thePolyData->InsertNextCell(VTK_LINE,2,pts);
+ }
+
+ // insert line (ptCur,ptLoc)
+ pts[1] = ptLoc;
+ thePolyData->InsertNextCell(VTK_LINE,2,pts);
+ }
+
+ // insert line (ptCur,ptFirst)
+ pts[0] = ptCur;
+ pts[1] = ptFirst;
+ thePolyData->InsertNextCell(VTK_LINE,2,pts);
+ }
+}
--- /dev/null
+#ifndef GEOM_EDGESOURCE_H
+#define GEOM_EDGESOURCE_H
+
+#include "GEOM_DeviceActor.h"
+
+#include <TopoDS_Edge.hxx>
+#include <NCollection_Set.hxx>
+
+typedef NCollection_Set<TopoDS_Edge> TEdgeSet;
+
+#include <vtkPolyDataSource.h>
+
+
+class VTK_EXPORT GEOM_EdgeSource: public vtkPolyDataSource
+{
+public:
+ vtkTypeMacro(GEOM_EdgeSource,vtkPolyDataSource);
+ static GEOM_EdgeSource* New();
+
+ void AddEdge (const TopoDS_Edge& theEdge,
+ bool theIsVector = false);
+ void Clear(){ myEdgeSet.Clear();}
+
+ static
+ void OCC2VTK(const TopoDS_Edge& theEdge,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts,
+ bool theIsVector = false);
+
+protected:
+ TEdgeSet myEdgeSet;
+ // The <myIsVector> flag is common for all edges, because the shape,
+ // representing a vector, can have only one edge.
+ bool myIsVector;
+
+ void Execute();
+
+ GEOM_EdgeSource();
+ ~GEOM_EdgeSource();
+
+private:
+ // Not implememnted
+ GEOM_EdgeSource(const GEOM_EdgeSource&);
+ void operator=(const GEOM_EdgeSource&);
+};
+
+
+#endif //GEOM_EDGESOURCE_H
--- /dev/null
+#include "GEOM_FaceSource.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+
+GEOM_FaceSource::GEOM_FaceSource()
+{
+}
+
+GEOM_FaceSource::~GEOM_FaceSource()
+{
+}
+
+void
+GEOM_FaceSource::
+AddFace(const TopoDS_Face& theFace)
+{
+ myFaceSet.Add(theFace);
+}
+
+void
+GEOM_FaceSource::
+MoveTo(gp_Pnt thePnt,
+ vtkPoints* thePts)
+{
+ thePts->InsertNextPoint(thePnt.X(), thePnt.Y(), thePnt.Z());
+}
+
+void
+GEOM_FaceSource::
+DrawTo(gp_Pnt thePnt,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ vtkIdType anId =
+ thePts->InsertNextPoint(thePnt.X(), thePnt.Y(), thePnt.Z());
+ vtkIdType anIds[2] = {anId-1, anId};
+ thePolyData->InsertNextCell(VTK_LINE,2,anIds);
+}
--- /dev/null
+#ifndef GEOM_FACESOURCE_H
+#define GEOM_FACESOURCE_H
+
+#include "GEOM_DeviceActor.h"
+
+#include <gp_Pnt.hxx>
+#include <TopoDS_Face.hxx>
+#include <NCollection_Set.hxx>
+
+typedef NCollection_Set<TopoDS_Face> TFaceSet;
+
+#include <vtkPolyDataSource.h>
+
+class GEOM_FaceSource;
+typedef GEOM_SmartPtr<GEOM_FaceSource> PFaceSource;
+
+
+class VTK_EXPORT GEOM_FaceSource: public vtkPolyDataSource
+{
+public:
+ vtkTypeMacro(GEOM_FaceSource,vtkPolyDataSource);
+
+ void AddFace(const TopoDS_Face& theFace);
+ void Clear(){ myFaceSet.Clear();}
+
+protected:
+ TFaceSet myFaceSet;
+
+ static
+ void MoveTo(gp_Pnt thePnt,
+ vtkPoints* thePts);
+ static
+ void DrawTo(gp_Pnt thePnt,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts);
+
+ GEOM_FaceSource();
+ ~GEOM_FaceSource();
+
+private:
+ // Not implememnted
+ GEOM_FaceSource(const GEOM_FaceSource&);
+ void operator=(const GEOM_FaceSource&);
+};
+
+
+#endif //GEOM_FACESOURCE_H
--- /dev/null
+#include "GEOM_ShadingFace.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+
+#include <BRep_Tool.hxx>
+#include <Poly_Triangulation.hxx>
+
+
+vtkStandardNewMacro(GEOM_ShadingFace);
+
+GEOM_ShadingFace::GEOM_ShadingFace()
+{
+}
+
+GEOM_ShadingFace::~GEOM_ShadingFace()
+{
+}
+
+void
+GEOM_ShadingFace::
+Execute()
+{
+ vtkPolyData* aPolyData = GetOutput();
+ aPolyData->Allocate();
+ vtkPoints* aPts = vtkPoints::New();
+ aPolyData->SetPoints(aPts);
+ aPts->Delete();
+
+ TFaceSet::Iterator anIter(myFaceSet);
+ for(; anIter.More(); anIter.Next()){
+ const TopoDS_Face& aFace = anIter.Value();
+ OCC2VTK(aFace,aPolyData,aPts);
+ }
+}
+
+void
+GEOM_ShadingFace::
+OCC2VTK(const TopoDS_Face& theFace,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ TopLoc_Location aLoc;
+ Handle(Poly_Triangulation) aPoly = BRep_Tool::Triangulation(theFace,aLoc);
+ if(aPoly.IsNull())
+ return;
+ else{
+ gp_Trsf myTransf;
+ Standard_Boolean identity = true;
+ if(!aLoc.IsIdentity()){
+ identity = false;
+ myTransf = aLoc.Transformation();
+ }
+
+ Standard_Integer i;
+ int aNbOfNodes = thePts->GetNumberOfPoints();
+ const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
+ Standard_Integer nbNodesInFace = aPoly->NbNodes();
+ for(i = 1; i <= nbNodesInFace; i++) {
+ gp_Pnt P = Nodes(i);
+ if(!identity)
+ P.Transform(myTransf);
+ thePts->InsertNextPoint(P.X(),P.Y(),P.Z());
+ }
+
+ const Poly_Array1OfTriangle& Triangles = aPoly->Triangles();
+ Standard_Integer nbTriInFace = aPoly->NbTriangles();
+ for(i = 1; i <= nbTriInFace; i++){
+ // Get the triangle
+ Standard_Integer N1,N2,N3;
+ Triangles(i).Get(N1,N2,N3);
+ N1 += aNbOfNodes - 1;
+ N2 += aNbOfNodes - 1;
+ N3 += aNbOfNodes - 1;
+ vtkIdType anIds[3] = {N1, N2, N3};
+ thePolyData->InsertNextCell(VTK_TRIANGLE,3,anIds);
+ }
+ }
+}
--- /dev/null
+#ifndef GEOM_SHADINGFACE_H
+#define GEOM_SHADINGFACE_H
+
+#include "GEOM_FaceSource.h"
+
+
+class VTK_EXPORT GEOM_ShadingFace: public GEOM_FaceSource
+{
+public:
+ vtkTypeMacro(GEOM_ShadingFace,GEOM_FaceSource);
+ static GEOM_ShadingFace* New();
+
+ static
+ void OCC2VTK(const TopoDS_Face& theFace,
+ vtkPolyData* theCells,
+ vtkPoints* thePts);
+
+protected:
+ void Execute();
+
+ GEOM_ShadingFace();
+ ~GEOM_ShadingFace();
+
+private:
+ // Not implememnted
+ GEOM_ShadingFace(const GEOM_ShadingFace&);
+ void operator=(const GEOM_ShadingFace&);
+};
+
+
+#endif //GEOM_SHADINGFACE_H
--- /dev/null
+#ifndef GEOM_SMARTPTR_H
+#define GEOM_SMARTPTR_H
+
+#include <vtkSmartPointer.h>
+
+template <class T>
+class GEOM_SmartPtr: public vtkSmartPointer<T>
+{
+public:
+ GEOM_SmartPtr() {}
+ GEOM_SmartPtr(T* r, bool theIsOwner = false): vtkSmartPointer<T>(r) {
+ if(r && theIsOwner)
+ r->Delete();
+ }
+ GEOM_SmartPtr& operator()(T* r, bool theIsOwner = false){
+ vtkSmartPointer<T>::operator=(r);
+ if(r && theIsOwner)
+ r->Delete();
+ return *this;
+ }
+ GEOM_SmartPtr& operator=(T* r){ vtkSmartPointer<T>::operator=(r); return *this;}
+ T* Get() const { return this->GetPointer();}
+};
+
+
+class GEOM_DeviceActor;
+typedef GEOM_SmartPtr<GEOM_DeviceActor> PDeviceActor;
+
+class vtkPolyDataMapper;
+typedef GEOM_SmartPtr<vtkPolyDataMapper> PPolyDataMapper;
+
+
+#endif //GEOM_SMARTPTR_H
--- /dev/null
+#include "GEOM_VertexSource.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+#include <vtkPolyData.h>
+#include <vtkPolyDataMapper.h>
+
+#include <gp_Pnt.hxx>
+#include <BRep_Tool.hxx>
+
+vtkStandardNewMacro(GEOM_VertexSource);
+
+GEOM_VertexSource::GEOM_VertexSource()
+{
+}
+
+GEOM_VertexSource::~GEOM_VertexSource()
+{
+}
+
+void
+GEOM_VertexSource::
+AddVertex(const TopoDS_Vertex& theVertex)
+{
+ myVertexSet.Add(theVertex);
+}
+
+void
+GEOM_VertexSource::
+Execute()
+{
+ vtkPolyData* aPolyData = GetOutput();
+ aPolyData->Allocate();
+ vtkPoints* aPts = vtkPoints::New();
+ aPolyData->SetPoints(aPts);
+ aPts->Delete();
+
+ TVertexSet::Iterator anIter(myVertexSet);
+ for(; anIter.More(); anIter.Next()){
+ const TopoDS_Vertex& aVertex = anIter.Value();
+ OCC2VTK(aVertex,aPolyData,aPts);
+ }
+}
+
+void
+GEOM_VertexSource::
+OCC2VTK(const TopoDS_Vertex& theVertex,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ gp_Pnt aPnt = BRep_Tool::Pnt(theVertex);
+ vtkIdType anId = thePts->InsertNextPoint(aPnt.X(),aPnt.Y(),aPnt.Z());
+ thePolyData->InsertNextCell(VTK_VERTEX,1,&anId);
+}
--- /dev/null
+#ifndef GEOM_VERTEXSOURCE_H
+#define GEOM_VERTEXSOURCE_H
+
+#include "GEOM_DeviceActor.h"
+
+#include <TopoDS_Vertex.hxx>
+#include <NCollection_Set.hxx>
+
+typedef NCollection_Set<TopoDS_Vertex> TVertexSet;
+
+#include <vtkPolyDataSource.h>
+
+
+class VTK_EXPORT GEOM_VertexSource: public vtkPolyDataSource
+{
+public:
+ vtkTypeMacro(GEOM_VertexSource,vtkPolyDataSource);
+ static GEOM_VertexSource* New();
+
+ void AddVertex(const TopoDS_Vertex& theVertex);
+ void Clear(){ myVertexSet.Clear();}
+
+ static
+ void OCC2VTK(const TopoDS_Vertex& theVertex,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts);
+
+protected:
+ TVertexSet myVertexSet;
+
+ void Execute();
+
+ GEOM_VertexSource();
+ ~GEOM_VertexSource();
+
+private:
+ // Not implememnted
+ GEOM_VertexSource(const GEOM_VertexSource&);
+ void operator=(const GEOM_VertexSource&);
+};
+
+
+#endif //GEOM_VERTEXSOURCE_H
--- /dev/null
+#include "GEOM_WireframeFace.h"
+
+#include <vtkObjectFactory.h>
+
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+
+#include <Precision.hxx>
+#include <BRepTools.hxx>
+#include <TopExp_Explorer.hxx>
+#include <Geom2dHatch_Hatcher.hxx>
+#include <Geom2dHatch_Intersector.hxx>
+#include <TColStd_Array1OfReal.hxx>
+#include <TColStd_Array1OfInteger.hxx>
+
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <BRep_Tool.hxx>
+#include <Geom2d_TrimmedCurve.hxx>
+#include <Geom2d_Line.hxx>
+#include <gp_Dir2d.hxx>
+#include <gp_Pnt2d.hxx>
+
+#include <Geom2dHatch_Hatcher.hxx>
+#include <HatchGen_Domain.hxx>
+
+#include <Adaptor3d_HCurve.hxx>
+
+vtkStandardNewMacro(GEOM_WireframeFace);
+
+GEOM_WireframeFace::GEOM_WireframeFace():
+ NbIso(1),
+ Discret(15)
+{
+}
+
+GEOM_WireframeFace::~GEOM_WireframeFace()
+{
+}
+
+void
+GEOM_WireframeFace::
+Execute()
+{
+ vtkPolyData* aPolyData = GetOutput();
+ aPolyData->Allocate();
+ vtkPoints* aPts = vtkPoints::New();
+ aPolyData->SetPoints(aPts);
+ aPts->Delete();
+
+ TFaceSet::Iterator anIter(myFaceSet);
+ for(; anIter.More(); anIter.Next()){
+ const TopoDS_Face& aFace = anIter.Value();
+ OCC2VTK(aFace,aPolyData,aPts,NbIso,Discret);
+ }
+}
+
+void
+GEOM_WireframeFace::
+OCC2VTK(const TopoDS_Face& theFace,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts,
+ const int theNbIso,
+ const int theDiscret)
+{
+ TopoDS_Face aFace = theFace;
+ aFace.Orientation(TopAbs_FORWARD);
+ CreateIso(aFace,theNbIso,theDiscret,thePolyData,thePts);
+}
+
+void
+GEOM_WireframeFace::
+CreateIso(const TopoDS_Face& theFace,
+ const int theNbIso,
+ const int theDiscret,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ // Constants for iso building
+ static Standard_Real INTERSECTOR_CONFUSION = 1.e-10 ; // -8 ;
+ static Standard_Real INTERSECTOR_TANGENCY = 1.e-10 ; // -8 ;
+
+ static Standard_Real HATHCER_CONFUSION_2D = 1.e-8 ;
+ static Standard_Real HATHCER_CONFUSION_3D = 1.e-8 ;
+
+ Geom2dHatch_Hatcher
+ aHatcher(Geom2dHatch_Intersector(INTERSECTOR_CONFUSION,
+ INTERSECTOR_TANGENCY),
+ HATHCER_CONFUSION_2D,
+ HATHCER_CONFUSION_3D,
+ Standard_True,
+ Standard_False);
+
+ Standard_Real anUMin, anUMax, aVMin, aVMax;
+ TColStd_Array1OfReal anUPrm(1, theNbIso), aVPrm(1, theNbIso);
+ TColStd_Array1OfInteger anUInd(1, theNbIso), aVInd(1, theNbIso);
+
+ anUInd.Init(0);
+ aVInd.Init(0);
+
+ //-----------------------------------------------------------------------
+ // If the Min Max bounds are infinite, there are bounded to Infinite
+ // value.
+ //-----------------------------------------------------------------------
+ BRepTools::UVBounds(theFace, anUMin, anUMax, aVMin, aVMax) ;
+ Standard_Boolean InfiniteUMin = Precision::IsNegativeInfinite (anUMin) ;
+ Standard_Boolean InfiniteUMax = Precision::IsPositiveInfinite (anUMax) ;
+ Standard_Boolean InfiniteVMin = Precision::IsNegativeInfinite (aVMin) ;
+ Standard_Boolean InfiniteVMax = Precision::IsPositiveInfinite (aVMax) ;
+
+ static float VTKINFINITE = 1.0E38;
+ if(InfiniteUMin && InfiniteUMax){
+ anUMin = - VTKINFINITE ;
+ anUMax = VTKINFINITE ;
+ }else if(InfiniteUMin){
+ anUMin = anUMax - VTKINFINITE ;
+ }else if(InfiniteUMax){
+ anUMax = anUMin + VTKINFINITE ;
+ }
+
+ if(InfiniteVMin && InfiniteVMax){
+ aVMin = - VTKINFINITE ;
+ aVMax = VTKINFINITE ;
+ }else if(InfiniteVMin){
+ aVMin = aVMax - VTKINFINITE ;
+ }else if(InfiniteVMax){
+ aVMax = aVMin + VTKINFINITE ;
+ }
+
+ //-----------------------------------------------------------------------
+ // Retreiving the edges and loading them into the hatcher.
+ //-----------------------------------------------------------------------
+ TopExp_Explorer ExpEdges(theFace, TopAbs_EDGE);
+ for(; ExpEdges.More(); ExpEdges.Next()){
+ const TopoDS_Edge& anEdge = TopoDS::Edge(ExpEdges.Current());
+ Standard_Real U1, U2 ;
+ const Handle(Geom2d_Curve) PCurve =
+ BRep_Tool::CurveOnSurface(anEdge, theFace, U1, U2) ;
+
+ if(PCurve.IsNull() || U1 == U2)
+ return;
+
+ //-- Test if a TrimmedCurve is necessary
+ if(Abs(PCurve->FirstParameter()-U1) <= Precision::PConfusion() &&
+ Abs(PCurve->LastParameter()-U2) <= Precision::PConfusion())
+ {
+ aHatcher.AddElement(PCurve, anEdge.Orientation()) ;
+ }else{
+ if(!PCurve->IsPeriodic()){
+ Handle(Geom2d_TrimmedCurve) TrimPCurve =
+ Handle(Geom2d_TrimmedCurve)::DownCast(PCurve);
+ if(!TrimPCurve.IsNull()){
+ Handle_Geom2d_Curve aBasisCurve = TrimPCurve->BasisCurve();
+ if(aBasisCurve->FirstParameter()-U1 > Precision::PConfusion() ||
+ U2-aBasisCurve->LastParameter() > Precision::PConfusion())
+ {
+ aHatcher.AddElement(PCurve, anEdge.Orientation()) ;
+ return;
+ }
+ }else{
+ if(PCurve->FirstParameter()-U1 > Precision::PConfusion()){
+ U1=PCurve->FirstParameter();
+ }
+ if(U2-PCurve->LastParameter() > Precision::PConfusion()){
+ U2=PCurve->LastParameter();
+ }
+ }
+ }
+ Handle(Geom2d_TrimmedCurve) TrimPCurve =
+ new Geom2d_TrimmedCurve(PCurve, U1, U2);
+ aHatcher.AddElement(TrimPCurve, anEdge.Orientation());
+ }
+ }
+
+
+ //-----------------------------------------------------------------------
+ // Loading and trimming the hatchings.
+ //-----------------------------------------------------------------------
+ Standard_Integer IIso;
+ Standard_Real DeltaU = Abs(anUMax - anUMin) ;
+ Standard_Real DeltaV = Abs(aVMax - aVMin) ;
+ Standard_Real confusion = Min(DeltaU, DeltaV) * HATHCER_CONFUSION_3D ;
+ aHatcher.Confusion3d (confusion) ;
+
+ Standard_Real StepU = DeltaU / (Standard_Real)theNbIso;
+ if(StepU > confusion){
+ Standard_Real UPrm = anUMin + StepU / 2.;
+ gp_Dir2d Dir(0., 1.) ;
+ for(IIso = 1 ; IIso <= theNbIso ; IIso++) {
+ anUPrm(IIso) = UPrm ;
+ gp_Pnt2d Ori (UPrm, 0.) ;
+ Geom2dAdaptor_Curve HCur (new Geom2d_Line (Ori, Dir)) ;
+ anUInd(IIso) = aHatcher.AddHatching (HCur) ;
+ UPrm += StepU ;
+ }
+ }
+
+ Standard_Real StepV = DeltaV / (Standard_Real) theNbIso ;
+ if(StepV > confusion){
+ Standard_Real VPrm = aVMin + StepV / 2.;
+ gp_Dir2d Dir(1., 0.);
+ for(IIso = 1 ; IIso <= theNbIso ; IIso++){
+ aVPrm(IIso) = VPrm;
+ gp_Pnt2d Ori (0., VPrm);
+ Geom2dAdaptor_Curve HCur(new Geom2d_Line (Ori, Dir));
+ aVInd(IIso) = aHatcher.AddHatching (HCur) ;
+ VPrm += StepV ;
+ }
+ }
+
+ //-----------------------------------------------------------------------
+ // Computation.
+ //-----------------------------------------------------------------------
+ aHatcher.Trim() ;
+
+ Standard_Integer aNbDom = 0 ; // for debug purpose
+ for(IIso = 1 ; IIso <= theNbIso ; IIso++){
+ Standard_Integer Index ;
+
+ Index = anUInd(IIso) ;
+ if(Index != 0){
+ if(aHatcher.TrimDone(Index) && !aHatcher.TrimFailed(Index)){
+ aHatcher.ComputeDomains(Index);
+ if(aHatcher.IsDone (Index))
+ aNbDom = aHatcher.NbDomains (Index);
+ }
+ }
+
+ Index = aVInd(IIso);
+ if(Index != 0){
+ if(aHatcher.TrimDone (Index) && !aHatcher.TrimFailed(Index)){
+ aHatcher.ComputeDomains (Index);
+ if(aHatcher.IsDone (Index))
+ aNbDom = aHatcher.NbDomains (Index);
+ }
+ }
+ }
+
+ //-----------------------------------------------------------------------
+ // Push iso lines in vtk kernel
+ //-----------------------------------------------------------------------
+ for(Standard_Integer UIso = anUPrm.Lower() ; UIso <= anUPrm.Upper(); UIso++){
+ Standard_Integer UInd = anUInd.Value(UIso);
+ if(UInd != 0){
+ Standard_Real UPrm = anUPrm.Value(UIso);
+ if(aHatcher.IsDone(UInd)){
+ Standard_Integer NbDom = aHatcher.NbDomains(UInd);
+ for(Standard_Integer IDom = 1 ; IDom <= NbDom ; IDom++){
+ const HatchGen_Domain& Dom = aHatcher.Domain(UInd, IDom) ;
+ Standard_Real V1 = Dom.HasFirstPoint()? Dom.FirstPoint().Parameter(): aVMin - VTKINFINITE;
+ Standard_Real V2 = Dom.HasSecondPoint()? Dom.SecondPoint().Parameter(): aVMax + VTKINFINITE;
+ CreateIso_(theFace, GeomAbs_IsoU, UPrm, V1, V2, theDiscret, thePolyData, thePts);
+ }
+ }
+ }
+ }
+
+ for(Standard_Integer VIso = aVPrm.Lower() ; VIso <= aVPrm.Upper(); VIso++){
+ Standard_Integer VInd = aVInd.Value(VIso);
+ if(VInd != 0){
+ Standard_Real VPrm = aVPrm.Value(VIso);
+ if(aHatcher.IsDone (VInd)){
+ Standard_Integer NbDom = aHatcher.NbDomains(VInd);
+ for (Standard_Integer IDom = 1 ; IDom <= NbDom ; IDom++){
+ const HatchGen_Domain& Dom = aHatcher.Domain(VInd, IDom);
+ Standard_Real U1 = Dom.HasFirstPoint()? Dom.FirstPoint().Parameter(): aVMin - VTKINFINITE;
+ Standard_Real U2 = Dom.HasSecondPoint()? Dom.SecondPoint().Parameter(): aVMax + VTKINFINITE;
+ CreateIso_(theFace, GeomAbs_IsoV, VPrm, U1, U2, theDiscret, thePolyData, thePts);
+ }
+ }
+ }
+ }
+}
+
+
+
+void
+GEOM_WireframeFace::
+CreateIso_(const TopoDS_Face& theFace,
+ GeomAbs_IsoType theIsoType,
+ Standard_Real Par,
+ Standard_Real T1,
+ Standard_Real T2,
+ const int theDiscret,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ Standard_Real U1, U2, V1, V2, stepU=0., stepV=0.;
+ Standard_Integer j;
+ gp_Pnt P;
+
+ TopLoc_Location aLoc;
+ const Handle(Geom_Surface)& S = BRep_Tool::Surface(theFace,aLoc);
+
+ if(!S.IsNull()){
+ BRepAdaptor_Surface S(theFace,Standard_False);
+
+ GeomAbs_SurfaceType SurfType = S.GetType();
+
+ GeomAbs_CurveType CurvType = GeomAbs_OtherCurve;
+
+ Standard_Integer Intrv, nbIntv;
+ Standard_Integer nbUIntv = S.NbUIntervals(GeomAbs_CN);
+ Standard_Integer nbVIntv = S.NbVIntervals(GeomAbs_CN);
+ TColStd_Array1OfReal TI(1,Max(nbUIntv, nbVIntv)+1);
+
+ if(theIsoType == GeomAbs_IsoU){
+ S.VIntervals(TI, GeomAbs_CN);
+ V1 = Max(T1, TI(1));
+ V2 = Min(T2, TI(2));
+ U1 = Par;
+ U2 = Par;
+ stepU = 0;
+ nbIntv = nbVIntv;
+ }else{
+ S.UIntervals(TI, GeomAbs_CN);
+ U1 = Max(T1, TI(1));
+ U2 = Min(T2, TI(2));
+ V1 = Par;
+ V2 = Par;
+ stepV = 0;
+ nbIntv = nbUIntv;
+ }
+
+ S.D0(U1,V1,P);
+ MoveTo(P,thePts);
+
+ for(Intrv = 1; Intrv <= nbIntv; Intrv++){
+ if(TI(Intrv) <= T1 && TI(Intrv + 1) <= T1)
+ continue;
+ if(TI(Intrv) >= T2 && TI(Intrv + 1) >= T2)
+ continue;
+ if(theIsoType == GeomAbs_IsoU){
+ V1 = Max(T1, TI(Intrv));
+ V2 = Min(T2, TI(Intrv + 1));
+ stepV = (V2 - V1) / theDiscret;
+ }else{
+ U1 = Max(T1, TI(Intrv));
+ U2 = Min(T2, TI(Intrv + 1));
+ stepU = (U2 - U1) / theDiscret;
+ }
+
+ switch (SurfType) {
+ case GeomAbs_Plane :
+ break;
+ case GeomAbs_Cylinder :
+ case GeomAbs_Cone :
+ if(theIsoType == GeomAbs_IsoV){
+ for(j = 1; j < theDiscret; j++){
+ U1 += stepU;
+ V1 += stepV;
+ S.D0(U1,V1,P);
+ DrawTo(P,thePolyData,thePts);
+ }
+ }
+ break;
+ case GeomAbs_Sphere :
+ case GeomAbs_Torus :
+ case GeomAbs_OffsetSurface :
+ case GeomAbs_OtherSurface :
+ for(j = 1; j < theDiscret; j++){
+ U1 += stepU;
+ V1 += stepV;
+ S.D0(U1,V1,P);
+ DrawTo(P,thePolyData,thePts);
+ }
+ break;
+ case GeomAbs_BezierSurface :
+ case GeomAbs_BSplineSurface :
+ for(j = 1; j <= theDiscret/2; j++){
+ Standard_Real aStep = (theIsoType == GeomAbs_IsoV) ? stepU*2. : stepV*2.;
+ CreateIso__(S, theIsoType, U1, V1, aStep, thePolyData, thePts);
+ U1 += stepU*2.;
+ V1 += stepV*2.;
+ }
+ break;
+ case GeomAbs_SurfaceOfExtrusion :
+ case GeomAbs_SurfaceOfRevolution :
+ if((theIsoType == GeomAbs_IsoV && SurfType == GeomAbs_SurfaceOfRevolution) ||
+ (theIsoType == GeomAbs_IsoU && SurfType == GeomAbs_SurfaceOfExtrusion))
+ {
+ if(SurfType == GeomAbs_SurfaceOfExtrusion)
+ break;
+ for(j = 1; j < theDiscret; j++){
+ U1 += stepU;
+ V1 += stepV;
+ S.D0(U1,V1,P);
+ DrawTo(P,thePolyData,thePts);
+ }
+ }else{
+ CurvType = (S.BasisCurve())->GetType();
+ switch(CurvType){
+ case GeomAbs_Line :
+ break;
+ case GeomAbs_Circle :
+ case GeomAbs_Ellipse :
+ for (j = 1; j < theDiscret; j++) {
+ U1 += stepU;
+ V1 += stepV;
+ S.D0(U1,V1,P);
+ DrawTo(P,thePolyData,thePts);
+ }
+ break;
+ case GeomAbs_Parabola :
+ case GeomAbs_Hyperbola :
+ case GeomAbs_BezierCurve :
+ case GeomAbs_BSplineCurve :
+ case GeomAbs_OtherCurve :
+ for(j = 1; j <= theDiscret/2; j++){
+ Standard_Real aStep = (theIsoType == GeomAbs_IsoV) ? stepU*2. : stepV*2.;
+ CreateIso__(S, theIsoType, U1, V1, aStep, thePolyData, thePts);
+ U1 += stepU*2.;
+ V1 += stepV*2.;
+ }
+ break;
+ }
+ }
+ }
+ }
+ S.D0(U2,V2,P);
+ DrawTo(P,thePolyData,thePts);
+ }
+}
+
+
+
+
+void
+GEOM_WireframeFace::
+CreateIso__(const BRepAdaptor_Surface& theSurface,
+ GeomAbs_IsoType theIsoType,
+ Standard_Real& theU,
+ Standard_Real& theV,
+ Standard_Real theStep,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts)
+{
+ gp_Pnt Pl, Pr, Pm;
+ if (theIsoType == GeomAbs_IsoU) {
+ theSurface.D0(theU, theV, Pl);
+ theSurface.D0(theU, theV + theStep/2., Pm);
+ theSurface.D0(theU, theV + theStep, Pr);
+ } else {
+ theSurface.D0(theU, theV, Pl);
+ theSurface.D0(theU + theStep/2., theV, Pm);
+ theSurface.D0(theU + theStep, theV, Pr);
+ }
+
+ static Standard_Real ISO_RATIO = 1.001;
+ if (Pm.Distance(Pl) + Pm.Distance(Pr) <= ISO_RATIO*Pl.Distance(Pr)) {
+ DrawTo(Pr,thePolyData,thePts);
+ } else {
+ if (theIsoType == GeomAbs_IsoU) {
+ CreateIso__(theSurface, theIsoType, theU, theV, theStep/2, thePolyData, thePts);
+ Standard_Real aLocalV = theV + theStep/2 ;
+ CreateIso__(theSurface, theIsoType, theU, aLocalV , theStep/2, thePolyData, thePts);
+ } else {
+ CreateIso__(theSurface, theIsoType, theU, theV, theStep/2, thePolyData, thePts);
+ Standard_Real aLocalU = theU + theStep/2 ;
+ CreateIso__(theSurface, theIsoType, aLocalU , theV, theStep/2, thePolyData, thePts);
+ }
+ }
+}
--- /dev/null
+#ifndef GEOM_WIREFRAME_FACE_H
+#define GEOM_WIREFRAME_FACE_H
+
+#include "GEOM_FaceSource.h"
+
+#include <GeomAbs_IsoType.hxx>
+#include <BRepAdaptor_Surface.hxx>
+
+#include <vtkPolyDataSource.h>
+
+
+class VTK_EXPORT GEOM_WireframeFace: public GEOM_FaceSource
+{
+public:
+ vtkTypeMacro(GEOM_WireframeFace,GEOM_FaceSource);
+ static GEOM_WireframeFace* New();
+
+ vtkSetMacro(NbIso,int);
+ vtkGetMacro(NbIso,int);
+
+ vtkSetMacro(Discret,int);
+ vtkGetMacro(Discret,int);
+
+ static
+ void OCC2VTK(const TopoDS_Face& theFace,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts,
+ int theNbIso = 1,
+ int theDiscret = 15);
+
+protected:
+ int NbIso, Discret;
+
+ static
+ void
+ CreateIso(const TopoDS_Face& theFace,
+ const int theNbIso,
+ const int theDiscret,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts);
+
+ static
+ void
+ CreateIso_(const TopoDS_Face& theFace,
+ GeomAbs_IsoType theIsoType,
+ Standard_Real Par,
+ Standard_Real T1,
+ Standard_Real T2,
+ const int theDiscret,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts);
+
+ static
+ void
+ CreateIso__(const BRepAdaptor_Surface& theSurface,
+ GeomAbs_IsoType theIsoType,
+ Standard_Real& theU,
+ Standard_Real& theV,
+ Standard_Real theStep,
+ vtkPolyData* thePolyData,
+ vtkPoints* thePts);
+
+ void Execute();
+
+ GEOM_WireframeFace();
+ ~GEOM_WireframeFace();
+
+private:
+ // Not implememnted
+ GEOM_WireframeFace(const GEOM_WireframeFace&);
+ void operator=(const GEOM_WireframeFace&);
+};
+
+
+#endif //GEOM_WFACEACTOR_H
GEOM_AISTrihedron.hxx \
GEOM_VTKTrihedron.hxx \
GEOM_AISVector.hxx \
- GEOM_OBJECT_defs.hxx
+ GEOM_OBJECT_defs.hxx \
+ GEOM_SmartPtr.h \
+ GEOM_DeviceActor.h \
+ GEOM_EdgeSource.h \
+ GEOM_FaceSource.h \
+ GEOM_ShadingFace.h \
+ GEOM_VertexSource.h \
+ GEOM_WireframeFace.h
# Libraries targets
lib_LTLIBRARIES = libGEOMObject.la
GEOM_InteractiveObject.cxx \
GEOM_AISTrihedron.cxx \
GEOM_VTKTrihedron.cxx \
- GEOM_AISVector.cxx
+ GEOM_AISVector.cxx \
+ GEOM_DeviceActor.cxx \
+ GEOM_EdgeSource.cxx \
+ GEOM_FaceSource.cxx \
+ GEOM_ShadingFace.cxx \
+ GEOM_VertexSource.cxx \
+ GEOM_WireframeFace.cxx
libGEOMObject_la_CPPFLAGS = \
OperationGUI.h \
OperationGUI_ArchimedeDlg.h \
OperationGUI_PartitionDlg.h \
- OperationGUI_MaterialDlg.h \
OperationGUI_FilletDlg.h \
OperationGUI_ChamferDlg.h \
OperationGUI_ClippingDlg.h \
OperationGUI.cxx \
OperationGUI_ArchimedeDlg.cxx \
OperationGUI_PartitionDlg.cxx \
- OperationGUI_MaterialDlg.cxx \
OperationGUI_FilletDlg.cxx \
OperationGUI_ChamferDlg.cxx \
OperationGUI_ClippingDlg.cxx
MOC_FILES = \
OperationGUI_ArchimedeDlg_moc.cxx \
OperationGUI_PartitionDlg_moc.cxx \
- OperationGUI_MaterialDlg_moc.cxx \
OperationGUI_FilletDlg_moc.cxx \
OperationGUI_ChamferDlg_moc.cxx \
OperationGUI_ClippingDlg_moc.cxx
/***************************************************************/
- setHelpFileName( "archimede.htm" );
+ setHelpFileName( "archimede_page.html" );
/* Initialisations */
Init();
double SpecificStep1 = 0.1;
double SpecificStep2 = 0.01;
/* min, max, myStep and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, myStep, 3 );
- initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, SpecificStep1, 3 );
- initSpinBox( GroupPoints->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep2, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, myStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, SpecificStep1, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep2, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 100.0 );
GroupPoints->SpinBox_DY->setValue( 1.0 );
: GEOMBase_Skeleton( theGeometryGUI, parent, false )
{
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CHAMFER_ALL" ) ) );
- QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CHAMFER_EDGE" ) ) );
+ QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CHAMFER_EDGE_FROM_FACE" ) ) );
QPixmap image3( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CHAMFER_FACE" ) ) );
+ QPixmap image4( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_CHAMFER_EDGE" ) ) );
QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
setWindowTitle( tr( "GEOM_CHAMFER_TITLE" ) );
mainFrame()->RadioButton1->setIcon( image1 );
mainFrame()->RadioButton2->setIcon( image2 );
mainFrame()->RadioButton3->setIcon( image3 );
+ mainFrame()->RadioButton4->show();
+ mainFrame()->RadioButton4->setIcon( image4 );
// Create first group
createSelWg( tr( "FACE_1" ), iconSelect, myGrp2, aLayout, Face1 );
createSelWg( tr( "FACE_2" ), iconSelect, myGrp2, aLayout, Face2 );
- row = aLayout->rowCount();
+ createRadioWg( tr( "GEOM_D1" ), tr( "GEOM_D2" ), myGrp2, aLayout, RadioButton21, SpinBox21, SpinBox22 );
+ createRadioWg( tr( "GEOM_D" ), tr( "GEOM_ANGLE" ), myGrp2, aLayout, RadioButton22, SpinBox23, SpinBox24 );
- aLayout->addWidget( new QLabel( tr( "GEOM_D1" ), myGrp2 ), row, 0 );
- aLayout->addWidget( ( mySpinBox[ SpinBox21 ] = new QDoubleSpinBox( myGrp2 ) ), row++, 2 );
- aLayout->addWidget( new QLabel( tr( "GEOM_D2" ), myGrp2 ), row, 0 );
- aLayout->addWidget( ( mySpinBox[ SpinBox22 ] = new QDoubleSpinBox( myGrp2 ) ), row++, 2 );
- aLayout->setRowStretch( row, 10 );
+ aLayout->setRowStretch( aLayout->rowCount(), 10 );
// Create third group
createSelWg( tr( "GEOM_MAIN_OBJECT" ), iconSelect, myGrp3, aLayout, MainObj3 );
createSelWg( tr( "SELECTED_FACES" ), iconSelect, myGrp3, aLayout, Faces );
- row = aLayout->rowCount();
+ createRadioWg( tr( "GEOM_D1" ), tr( "GEOM_D2" ), myGrp3, aLayout, RadioButton31, SpinBox31, SpinBox32 );
+ createRadioWg( tr( "GEOM_D" ), tr( "GEOM_ANGLE" ), myGrp3, aLayout, RadioButton32, SpinBox33, SpinBox34 );
- aLayout->addWidget( new QLabel( tr( "GEOM_D1" ), myGrp3 ), row, 0 );
- aLayout->addWidget( ( mySpinBox[ SpinBox31 ] = new QDoubleSpinBox( myGrp3 ) ), row++, 2 );
- aLayout->addWidget( new QLabel( tr( "GEOM_D2" ), myGrp3 ), row, 0 );
- aLayout->addWidget( ( mySpinBox[ SpinBox32 ] = new QDoubleSpinBox( myGrp3 ) ), row++, 2 );
- aLayout->setRowStretch( row, 10 );
+ aLayout->setRowStretch( aLayout->rowCount(), 10 );
+
+ // Create fourth group
+
+ myGrp4 = new QGroupBox( tr( "GEOM_CHAMFER_EDGE" ), centralWidget() );
+
+ aLayout = new QGridLayout( myGrp4 );
+ aLayout->setMargin( 9 ); aLayout->setSpacing( 6 );
+
+ createSelWg( tr( "GEOM_MAIN_OBJECT" ), iconSelect, myGrp4, aLayout, MainObj4 );
+ createSelWg( tr( "SELECTED_EDGE" ), iconSelect, myGrp4, aLayout, Edges );
+
+ createRadioWg( tr( "GEOM_D1" ), tr( "GEOM_D2" ), myGrp4, aLayout, RadioButton41, SpinBox41, SpinBox42 );
+ createRadioWg( tr( "GEOM_D" ), tr( "GEOM_ANGLE" ), myGrp4, aLayout, RadioButton42, SpinBox43, SpinBox44 );
+
+ aLayout->setRowStretch( aLayout->rowCount(), 10 );
// Add groups to layout
layout->addWidget( myGrp1 );
layout->addWidget( myGrp2 );
layout->addWidget( myGrp3 );
+ layout->addWidget( myGrp4 );
// Set range of spinboxes
double SpecificStep = 10.0;
QMap< int, QDoubleSpinBox* >::iterator anIter;
- for ( anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter )
- initSpinBox( anIter.value(), 0.001, COORD_MAX, SpecificStep, 3 );
+ for ( anIter = mySpinBox.begin(); anIter != mySpinBox.end(); ++anIter ) {
+ if ( anIter.key() == SpinBox44 || anIter.key() == SpinBox34 || anIter.key() == SpinBox24 )
+ initSpinBox( anIter.value(), 0.001, 89.999, 5, 0 );
+ else
+ initSpinBox( anIter.value(), 0.001, COORD_MAX, SpecificStep, 3 );
+ }
- setHelpFileName( "chamfer.htm" );
+ setHelpFileName( "chamfer_operation_page.html" );
/* Initialisations */
Init();
+ myRadioButton[ RadioButton21 ]->click();
}
connect( anIterSpin.value(), SIGNAL( valueChanged( double ) ),
this, SLOT( ValueChangedInSpinBox( double ) ) );
+ // radio buttons
+ QMap< int, QRadioButton* >::iterator anIterRadio;
+ for ( anIterRadio = myRadioButton.begin(); anIterRadio != myRadioButton.end(); ++anIterRadio )
+ connect( anIterRadio.value(), SIGNAL( clicked() ),
+ this, SLOT( RadioButtonPressed() ) );
+
// selection
connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
return;
// Get values from previous widget
- double D1 = 5, D2 = 5;
+ double D1 = 5, D2 = 5, D = 5, Angle = 5;
if ( myConstructorId == 0 )
D1 = D2 = mySpinBox[ SpinBox1 ]->value();
else if ( myConstructorId == 1 ) {
D1 = mySpinBox[ SpinBox21 ]->value();
D2 = mySpinBox[ SpinBox22 ]->value();
+ D = mySpinBox[ SpinBox23 ]->value();
+ Angle = mySpinBox[ SpinBox24 ]->value();
}
else if ( myConstructorId == 2 ) {
D1 = mySpinBox[ SpinBox31 ]->value();
D2 = mySpinBox[ SpinBox32 ]->value();
+ D = mySpinBox[ SpinBox33 ]->value();
+ Angle = mySpinBox[ SpinBox34 ]->value();
+ }
+ else if ( myConstructorId == 3 ) {
+ D1 = mySpinBox[ SpinBox41 ]->value();
+ D2 = mySpinBox[ SpinBox42 ]->value();
+ D = mySpinBox[ SpinBox43 ]->value();
+ Angle = mySpinBox[ SpinBox44 ]->value();
}
myConstructorId = constructorId;
case 0:
myGrp2->hide();
myGrp3->hide();
+ myGrp4->hide();
myGrp1->show();
mySpinBox[ SpinBox1 ]->setValue( D1 );
break;
case 1:
myGrp1->hide();
myGrp3->hide();
+ myGrp4->hide();
myGrp2->show();
mySpinBox[ SpinBox21 ]->setValue( D1 );
mySpinBox[ SpinBox22 ]->setValue( D2 );
+ mySpinBox[ SpinBox23 ]->setValue( D );
+ mySpinBox[ SpinBox24 ]->setValue( Angle );
break;
case 2:
myGrp1->hide();
myGrp2->hide();
+ myGrp4->hide();
myGrp3->show();
mySpinBox[ SpinBox31 ]->setValue( D1 );
mySpinBox[ SpinBox32 ]->setValue( D2 );
+ mySpinBox[ SpinBox32 ]->setValue( D2 );
+ mySpinBox[ SpinBox33 ]->setValue( D );
+ mySpinBox[ SpinBox34 ]->setValue( Angle );
+ break;
+ case 3:
+ myGrp1->hide();
+ myGrp2->hide();
+ myGrp3->hide();
+ myGrp4->show();
+ mySpinBox[ SpinBox41 ]->setValue( D1 );
+ mySpinBox[ SpinBox42 ]->setValue( D2 );
+ mySpinBox[ SpinBox43 ]->setValue( D );
+ mySpinBox[ SpinBox44 ]->setValue( Angle );
break;
default:
break;
if ( constructorId == 0 ) myEditCurrentArgument = mySelName[ MainObj1 ];
else if ( constructorId == 1 ) myEditCurrentArgument = mySelName[ MainObj2 ];
- else myEditCurrentArgument = mySelName[ MainObj3 ];
+ else if ( constructorId == 2 ) myEditCurrentArgument = mySelName[ MainObj3 ];
+ else myEditCurrentArgument = mySelName[ MainObj4 ];
activateSelection();
enableWidgets();
}
// If selection of main object is activated
- if ( aCurrFocus == MainObj1 || aCurrFocus == MainObj2 || aCurrFocus == MainObj3 ) {
+ if ( aCurrFocus == MainObj1 || aCurrFocus == MainObj2 || aCurrFocus == MainObj3 || aCurrFocus == MainObj4) {
if ( IObjectCount() == 1 ) {
Standard_Boolean aResult = Standard_False;
GEOM::GEOM_Object_var anObj =
myFace[ aCurrFocus ] = -1;
}
- // If face selection of third tab is activated
- else if ( aCurrFocus == Faces ) {
+ // If face selection of third or fourth tab is activated
+ else if ( aCurrFocus == Faces || aCurrFocus == Edges ) {
if ( IObjectCount() == 1 ) {
Standard_Boolean aResult = Standard_False;
GEOM::GEOM_Object_var anObj =
( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), anIndexes );
if ( anIndexes.Extent() > 0 ) {
- QString aFaceName;
+ QString aName;
if ( anIndexes.Extent() == 1 ) {
int anIndex = anIndexes( 1 );
- aFaceName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex );
+ aName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex );
}
else {
- aFaceName = tr( "GEOM_MEN_POPUP_NAME" ).arg( anIndexes.Extent() );
+ aName = tr( "GEOM_MEN_POPUP_NAME" ).arg( anIndexes.Extent() );
}
- myEditCurrentArgument->setText( aFaceName );
- myFaces = anIndexes;
+ myEditCurrentArgument->setText( aName );
+ int aConstructorId = getConstructorId();
+ if ( aConstructorId == 2)
+ myFaces = anIndexes;
+ else if ( aConstructorId == 3 )
+ myEdges = anIndexes;
+
displayPreview();
return;
}
}
}
myFaces.Clear();
+ myEdges.Clear();
}
}
}
+//=================================================================================
+// function : RadioButtonPressed()
+// purpose :
+//=================================================================================
+void OperationGUI_ChamferDlg::RadioButtonPressed()
+{
+ const QObject* s = sender();
+ bool flag = s == myRadioButton[ RadioButton21 ] ||
+ s == myRadioButton[ RadioButton31 ] ||
+ s == myRadioButton[ RadioButton41 ];
+
+ myRadioButton[ RadioButton21 ]->blockSignals( true );
+ myRadioButton[ RadioButton22 ]->blockSignals( true );
+ myRadioButton[ RadioButton31 ]->blockSignals( true );
+ myRadioButton[ RadioButton32 ]->blockSignals( true );
+ myRadioButton[ RadioButton41 ]->blockSignals( true );
+ myRadioButton[ RadioButton42 ]->blockSignals( true );
+
+ myRadioButton[ RadioButton21 ]->setChecked( flag );
+ myRadioButton[ RadioButton31 ]->setChecked( flag );
+ myRadioButton[ RadioButton41 ]->setChecked( flag );
+ myRadioButton[ RadioButton22 ]->setChecked( !flag );
+ myRadioButton[ RadioButton32 ]->setChecked( !flag );
+ myRadioButton[ RadioButton42 ]->setChecked( !flag );
+ mySpinBox[ SpinBox21 ]->setEnabled( flag );
+ mySpinBox[ SpinBox22 ]->setEnabled( flag );
+ mySpinBox[ SpinBox31 ]->setEnabled( flag );
+ mySpinBox[ SpinBox32 ]->setEnabled( flag );
+ mySpinBox[ SpinBox41 ]->setEnabled( flag );
+ mySpinBox[ SpinBox42 ]->setEnabled( flag );
+ mySpinBox[ SpinBox23 ]->setEnabled( !flag );
+ mySpinBox[ SpinBox24 ]->setEnabled( !flag );
+ mySpinBox[ SpinBox33 ]->setEnabled( !flag );
+ mySpinBox[ SpinBox34 ]->setEnabled( !flag );
+ mySpinBox[ SpinBox43 ]->setEnabled( !flag );
+ mySpinBox[ SpinBox44 ]->setEnabled( !flag );
+
+ myRadioButton[ RadioButton21 ]->blockSignals( false );
+ myRadioButton[ RadioButton22 ]->blockSignals( false );
+ myRadioButton[ RadioButton31 ]->blockSignals( false );
+ myRadioButton[ RadioButton32 ]->blockSignals( false );
+ myRadioButton[ RadioButton41 ]->blockSignals( false );
+ myRadioButton[ RadioButton42 ]->blockSignals( false );
+
+ displayPreview();
+}
+
+
//=================================================================================
// function : SetEditCurrentArgument()
// purpose :
int row = theLayout->rowCount();
theLayout->addWidget( lab, row, 0 );
theLayout->addWidget( mySelBtn[ theId ], row, 1 );
- theLayout->addWidget( mySelName[ theId ], row, 2 );
+ theLayout->addWidget( mySelName[ theId ], row, 2, 1, 4 ); // take into account createRadioWg()
+}
+
+//=================================================================================
+// function : createRadioWg()
+// purpose :
+//=================================================================================
+void OperationGUI_ChamferDlg::createRadioWg( const QString& theLbl1,
+ const QString& theLbl2,
+ QWidget* theParent,
+ QGridLayout* theLayout,
+ const int theRbId,
+ const int theSpin1Id,
+ const int theSpin2Id )
+{
+ myRadioButton[ theRbId ] = new QRadioButton( theParent );
+ QLabel* lab1 = new QLabel( theLbl1, theParent );
+ QLabel* lab2 = new QLabel( theLbl2, theParent );
+ mySpinBox[ theSpin1Id ] = new QDoubleSpinBox( theParent );
+ mySpinBox[ theSpin2Id ] = new QDoubleSpinBox( theParent );
+ int row = theLayout->rowCount();
+ theLayout->addWidget( myRadioButton[ theRbId ], row, 0 );
+ theLayout->addWidget( lab1, row, 2 );
+ theLayout->addWidget( mySpinBox[ theSpin1Id ], row, 3 );
+ theLayout->addWidget( lab2, row, 4 );
+ theLayout->addWidget( mySpinBox[ theSpin2Id ], row, 5 );
}
//=================================================================================
if ( aConstructorId == 0 ) myEditCurrentArgument = mySelName[ MainObj1 ];
else if ( aConstructorId == 1 ) myEditCurrentArgument = mySelName[ MainObj2 ];
- else myEditCurrentArgument = mySelName[ MainObj3 ];
+ else if ( aConstructorId == 2 ) myEditCurrentArgument = mySelName[ MainObj3 ];
+ else myEditCurrentArgument = mySelName[ MainObj4 ];
myShape = GEOM::GEOM_Object::_nil();
myFaces.Clear();
+ myEdges.Clear();
myFace[ Face1 ] = -1;
myFace[ Face2 ] = -1;
if ( !myShape->_is_nil() &&
( myEditCurrentArgument == mySelName[ Face1 ] ||
myEditCurrentArgument == mySelName[ Face2 ] ||
- myEditCurrentArgument == mySelName[ Faces ] ) )
+ myEditCurrentArgument == mySelName[ Faces ] ) ) {
localSelection( myShape, TopAbs_FACE );
- else
- {
+ }
+ else if ( !myShape->_is_nil() && myEditCurrentArgument == mySelName[ Edges ] ) {
+ localSelection( myShape, TopAbs_EDGE );
+ }
+ else {
TColStd_MapOfInteger aMap;
aMap.Add( GEOM_SHELL );
aMap.Add( GEOM_SOLID );
else if ( anId == 2 )
{
mySelName[ Faces ]->setEnabled( toEnable );
-
- if ( !toEnable )
- myFaces.Clear();
+ if ( !toEnable ) {
+ mySelName[ Faces ]->setText( "" );
+ myFaces = -1;
+ }
+ }
+ else if ( anId == 3 ) {
+ mySelName[ Edges ]->setEnabled( toEnable );
+
+ if ( !toEnable ) {
+ mySelName[ Edges ]->setText( "" );
+ myEdges = -1;
+ }
}
}
case 0: return !myShape->_is_nil();
case 1: return !myShape->_is_nil() && myFace[ Face1 ] > 0 && myFace[ Face2 ] > 0;
case 2: return !myShape->_is_nil() && myFaces.Extent() > 0;
+ case 3: return !myShape->_is_nil() && myEdges.Extent() > 0;
default: return false;
}
}
bool OperationGUI_ChamferDlg::execute( ObjectList& objects )
{
GEOM::GEOM_Object_var anObj;
+ bool flag = ( myRadioButton[ RadioButton21 ]->isChecked() &&
+ myRadioButton[ RadioButton31 ]->isChecked() &&
+ myRadioButton[ RadioButton41 ]->isChecked() );
int anId = getConstructorId();
- if ( anId == 0 )
+ if ( anId == 0 ) {
anObj = GEOM::GEOM_ILocalOperations::_narrow(
getOperation() )->MakeChamferAll( myShape,
mySpinBox[ SpinBox1 ]->value() );
- else if ( anId == 1 )
- anObj = GEOM::GEOM_ILocalOperations::_narrow(
- getOperation() )->MakeChamferEdge( myShape,
- mySpinBox[ SpinBox21 ]->value(),
- mySpinBox[ SpinBox22 ]->value(),
- myFace[ Face1 ],
- myFace[ Face2 ] );
+ }
+ else if ( anId == 1 ) {
+ if ( flag ) {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeChamferEdge( myShape,
+ mySpinBox[ SpinBox21 ]->value(),
+ mySpinBox[ SpinBox22 ]->value(),
+ myFace[ Face1 ],
+ myFace[ Face2 ] );
+ }
+ else {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeChamferEdgeAD( myShape,
+ mySpinBox[ SpinBox23 ]->value(),
+ mySpinBox[ SpinBox24 ]->value() * PI180,
+ myFace[ Face1 ],
+ myFace[ Face2 ]);
+ }
+ }
else if ( anId == 2 )
{
GEOM::ListOfLong_var anArray = new GEOM::ListOfLong;
anArray->length( myFaces.Extent() );
-
for ( int i = 1, n = myFaces.Extent(); i <= n; i++ )
anArray[ i - 1 ] = myFaces( i );
+ if ( flag )
anObj = GEOM::GEOM_ILocalOperations::_narrow(
getOperation() )->MakeChamferFaces( myShape,
mySpinBox[ SpinBox31 ]->value(),
mySpinBox[ SpinBox32 ]->value(),
anArray );
+ else
+ anObj = GEOM::GEOM_ILocalOperations::_narrow(
+ getOperation() )->MakeChamferFacesAD( myShape,
+ mySpinBox[ SpinBox33 ]->value(),
+ mySpinBox[ SpinBox34 ]->value() * PI180,
+ anArray );
+ }
+ else if ( anId == 3 ) {
+ GEOM::ListOfLong_var anArray = new GEOM::ListOfLong;
+ anArray->length( myEdges.Extent() );
+ for ( int i = 1, n = myEdges.Extent(); i <= n; i++ )
+ anArray[ i - 1 ] = myEdges( i );
+ if ( flag ) {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeChamferEdges( myShape, mySpinBox[ SpinBox41 ]->value(),
+ mySpinBox[ SpinBox42 ]->value(), anArray );
+ }
+ else {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeChamferEdgesAD( myShape, mySpinBox[ SpinBox43 ]->value(),
+ mySpinBox[ SpinBox44 ]->value() * PI180, anArray );
+ }
}
-
if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() );
return true;
}
-
-
-
-
-
-
-
-
-
class QLineEdit;
class QDoubleSpinBox;
class QGridLayout;
+class QRadioButton;
//=================================================================================
// class : OperationGUI_ChamferDlg
{
Q_OBJECT
- enum { MainObj1, MainObj2, Face1, Face2, MainObj3, Faces };
- enum { SpinBox1, SpinBox21, SpinBox22, SpinBox31, SpinBox32 };
+ enum { MainObj1, MainObj2, Face1, Face2, MainObj3, Faces, MainObj4, Edges};
+ enum { SpinBox1,
+ SpinBox21, SpinBox22, SpinBox23, SpinBox24,
+ SpinBox31, SpinBox32, SpinBox33, SpinBox34,
+ SpinBox41, SpinBox42, SpinBox43, SpinBox44 };
+ enum { RadioButton21, RadioButton22,
+ RadioButton31, RadioButton32,
+ RadioButton41, RadioButton42 };
public:
OperationGUI_ChamferDlg( GeometryGUI*, QWidget* );
bool ClickOnApply();
void ActivateThisDialog();
void LineEditReturnPressed();
+ void RadioButtonPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
void ValueChangedInSpinBox( double );
void reset();
void createSelWg( const QString&, QPixmap&, QWidget*,
QGridLayout*, const int );
+ void createRadioWg( const QString&, const QString&, QWidget*,
+ QGridLayout*, const int, const int, const int );
void activateSelection();
void enableWidgets();
GEOM::GEOM_Object_var myShape;
QMap< int, int > myFace; // indexes of faces from second tab ( Face1,2 )
TColStd_IndexedMapOfInteger myFaces; // indexes of faces from first tab ( Faces )
+ TColStd_IndexedMapOfInteger myEdges; // indexes of edges from fourth tab (Edges)
QGroupBox* myGrp1;
QGroupBox* myGrp2;
QGroupBox* myGrp3;
+ QGroupBox* myGrp4;
QMap< int, QPushButton* > mySelBtn;
QMap< int, QLineEdit* > mySelName;
QMap< int, QDoubleSpinBox* > mySpinBox;
+ QMap< int, QRadioButton* > myRadioButton;
};
#endif // OPERATIONGUI_CHAMFERDLG_H
layout->addWidget( GroupArguments );
/* Initialisations */
- initSpinBox( SpinBox_Near, COORD_MIN, COORD_MAX, 10.0, 3 );
- initSpinBox( SpinBox_Far, COORD_MIN, COORD_MAX, 10.0, 3 );
+ initSpinBox( SpinBox_Near, COORD_MIN, COORD_MAX, 10.0, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( SpinBox_Far, COORD_MIN, COORD_MAX, 10.0, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
/* signals and slots connections */
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
this->setEnabled( true );
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void OperationGUI_ClippingDlg::closeEvent( QCloseEvent* e )
-{
- QDialog::closeEvent( e );
-}
-
//=================================================================================
// function : onReset()
// purpose :
private:
void Init();
- virtual void closeEvent( QCloseEvent* );
void enterEvent( QEvent* );
private:
Group1->PushButton1->setIcon( iconSelect );
Group1->LineEdit1->setReadOnly( true );
- Group2 = new DlgRef_2Sel1Spin( centralWidget() );
+ Group2 = new DlgRef_2Sel3Spin2Rb( centralWidget() );
Group2->GroupBox1->setTitle( tr( "GEOM_FILLET_EDGES" ) );
Group2->TextLabel1->setText( tr( "GEOM_MAIN_OBJECT" ) );
Group2->TextLabel2->setText( tr( "SELECTED_EDGES" ) );
Group2->TextLabel3->setText( tr( "GEOM_RADIUS" ) );
+ Group2->TextLabel4->setText( tr( "GEOM_R1" ) );
+ Group2->TextLabel5->setText( tr( "GEOM_R2" ) );
Group2->PushButton1->setIcon( iconSelect );
Group2->PushButton2->setIcon( iconSelect );
Group2->LineEdit1->setReadOnly( true );
Group2->LineEdit2->setReadOnly( true );
- Group3 = new DlgRef_2Sel1Spin( centralWidget() );
+ Group3 = new DlgRef_2Sel3Spin2Rb( centralWidget() );
Group3->GroupBox1->setTitle( tr( "GEOM_FILLET_FACES" ) );
Group3->TextLabel1->setText( tr( "GEOM_MAIN_OBJECT" ) );
Group3->TextLabel2->setText( tr( "SELECTED_FACES" ) );
Group3->TextLabel3->setText( tr( "GEOM_RADIUS" ) );
+ Group3->TextLabel4->setText( tr( "GEOM_R1" ) );
+ Group3->TextLabel5->setText( tr( "GEOM_R2" ) );
Group3->PushButton1->setIcon( iconSelect );
Group3->PushButton2->setIcon( iconSelect );
Group3->LineEdit1->setReadOnly( true );
/***************************************************************/
double SpecificStep = 10.0;
- initSpinBox( Group1->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 );
- initSpinBox( Group2->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 );
- initSpinBox( Group3->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 );
-
- setHelpFileName( "fillet.htm" );
+ initSpinBox( Group1->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2->SpinBox_DY, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group2->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3->SpinBox_DY, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( Group3->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+
+ setHelpFileName( "fillet_operation_page.html" );
/* Initialisations */
Init();
// spin boxes
connect( Group1->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
connect( Group2->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
+ connect( Group2->SpinBox_DY, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
+ connect( Group2->SpinBox_DZ, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
connect( Group3->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
+ connect( Group3->SpinBox_DY, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
+ connect( Group3->SpinBox_DZ, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
+
+ // radio buttons
+ connect( Group2->RadioButton1, SIGNAL( clicked() ), this, SLOT( RadioButtonClicked() ) );
+ connect( Group2->RadioButton2, SIGNAL( clicked() ), this, SLOT( RadioButtonClicked() ) );
+ connect( Group3->RadioButton1, SIGNAL( clicked() ), this, SLOT( RadioButtonClicked() ) );
+ connect( Group3->RadioButton2, SIGNAL( clicked() ), this, SLOT( RadioButtonClicked() ) );
- // selection
+ // selection
connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
return;
// Get radius from previous widget
- double R = 5;
- if ( myConstructorId == 0 ) R = Group1->SpinBox_DX->value();
- else if ( myConstructorId == 1 ) R = Group2->SpinBox_DX->value();
- else R = Group3->SpinBox_DX->value();
+ double R = 5, R1 = 5, R2 = 5;
+ if ( myConstructorId == 0 ) {
+ R = Group1->SpinBox_DX->value();
+ }
+ else if ( myConstructorId == 1 ) {
+ R = Group2->SpinBox_DX->value();
+ R1 = Group2->SpinBox_DY->value();
+ R2 = Group2->SpinBox_DZ->value();
+ }
+ else {
+ R = Group3->SpinBox_DX->value();
+ R1 = Group3->SpinBox_DY->value();
+ R2 = Group3->SpinBox_DZ->value();
+ }
myConstructorId = constructorId;
Group3->hide();
Group2->show();
Group2->SpinBox_DX->setValue( R );
+ Group2->SpinBox_DY->setValue( R1 );
+ Group2->SpinBox_DZ->setValue( R2 );
break;
case 2:
Group1->hide();
Group2->hide();
Group3->show();
Group3->SpinBox_DX->setValue( R );
+ Group3->SpinBox_DY->setValue( R1 );
+ Group3->SpinBox_DZ->setValue( R2 );
break;
default:
break;
// Set Initial values of spinboxes
Group1->SpinBox_DX->setValue( 5 );
Group2->SpinBox_DX->setValue( 5 );
+ Group2->SpinBox_DY->setValue( 5 );
+ Group2->SpinBox_DZ->setValue( 5 );
Group3->SpinBox_DX->setValue( 5 );
+ Group3->SpinBox_DY->setValue( 5 );
+ Group3->SpinBox_DZ->setValue( 5 );
Group1->LineEdit1->setText( "" );
Group2->LineEdit1->setText( "" );
int anId = getConstructorId();
if ( anId == 0 )
anObj = GEOM::GEOM_ILocalOperations::_narrow(
- getOperation() )->MakeFilletAll( myShape,
- getRadius() );
+ getOperation() )->MakeFilletAll( myShape, getRadius() );
else if ( anId == 1 ) {
GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
aList->length( myEdges.Extent() );
for ( int i = 1, n = myEdges.Extent(); i <= n; i++ )
aList[ i - 1 ] = myEdges( i );
- anObj = GEOM::GEOM_ILocalOperations::_narrow(
- getOperation() )->MakeFilletEdges( myShape, getRadius(), aList );
+ if ( Group2->RadioButton1->isChecked() )
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeFilletEdges( myShape, getRadius(), aList );
+ else
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeFilletEdgesR1R2( myShape,
+ Group2->SpinBox_DY->value(),
+ Group2->SpinBox_DZ->value(),
+ aList );
}
else if ( anId == 2 ) {
GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
for ( int i = 1, n = myFaces.Extent(); i <= n; i++ )
aList[ i - 1 ] = myFaces( i );
- anObj = GEOM::GEOM_ILocalOperations::_narrow(
- getOperation() )->MakeFilletFaces( myShape, getRadius(), aList );
+ if ( Group3->RadioButton1->isChecked() ) {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeFilletFaces( myShape, getRadius(), aList );
+ }
+ else {
+ anObj = GEOM::GEOM_ILocalOperations::_narrow( getOperation() )->
+ MakeFilletFacesR1R2( myShape,
+ Group3->SpinBox_DY->value(),
+ Group3->SpinBox_DZ->value(), aList );
+ }
}
if ( !anObj->_is_nil() )
else if ( anId == 1 ) return Group2->SpinBox_DX->value();
else return Group3->SpinBox_DX->value();
}
+
+//=================================================================================
+// function : RadiobuttonClicked
+// purpose :
+//=================================================================================
+
+void OperationGUI_FilletDlg::RadioButtonClicked()
+{
+ const QObject* s = sender();
+
+ bool flag = s == Group2->RadioButton1 || s == Group3->RadioButton1;
+
+ Group2->RadioButton1->blockSignals( true );
+ Group2->RadioButton2->blockSignals( true );
+ Group3->RadioButton1->blockSignals( true );
+ Group3->RadioButton2->blockSignals( true );
+
+ Group2->SpinBox_DX->setEnabled( flag );
+ Group2->SpinBox_DY->setEnabled( !flag );
+ Group2->SpinBox_DZ->setEnabled( !flag );
+ Group2->RadioButton1->setChecked( flag );
+ Group2->RadioButton2->setChecked( !flag );
+ Group3->SpinBox_DX->setEnabled( flag );
+ Group3->SpinBox_DY->setEnabled( !flag );
+ Group3->SpinBox_DZ->setEnabled( !flag );
+ Group3->RadioButton1->setChecked( flag );
+ Group3->RadioButton2->setChecked( !flag );
+
+ Group2->RadioButton1->blockSignals( false );
+ Group2->RadioButton2->blockSignals( false );
+ Group3->RadioButton1->blockSignals( false );
+ Group3->RadioButton2->blockSignals( false );
+
+ displayPreview();
+}
#include <TColStd_IndexedMapOfInteger.hxx>
class DlgRef_1Sel1Spin;
-class DlgRef_2Sel1Spin;
+class DlgRef_2Sel3Spin2Rb;
//=================================================================================
// class : OperationGUI_FilletDlg
void SetEditCurrentArgument();
void ValueChangedInSpinBox( double );
void ConstructorsClicked( int );
+ void RadioButtonClicked();
private:
void Init();
TColStd_IndexedMapOfInteger myFaces;
DlgRef_1Sel1Spin* Group1;
- DlgRef_2Sel1Spin* Group2;
- DlgRef_2Sel1Spin* Group3;
+ DlgRef_2Sel3Spin2Rb* Group2;
+ DlgRef_2Sel3Spin2Rb* Group3;
};
#endif // OPERATIONGUI_FILLETDLG_H
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "partition.htm" );
+ setHelpFileName("partition_page.html");
Init();
}
//
#include "OperationGUI_PartitionDlg.h"
-#include "OperationGUI_MaterialDlg.h"
#include <DlgRef.h>
#include <GeometryGUI.h>
mainFrame()->RadioButton3->close();
// Full partition (contains half-space partition)
- GroupPoints = new DlgRef_2Sel1List( centralWidget() );
+ GroupPoints = new DlgRef_2Sel1List1Check( centralWidget() );
GroupPoints->GroupBox1->setTitle( tr( "GEOM_PARTITION" ) );
GroupPoints->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
GroupPoints->TextLabel2->setText( tr( "GEOM_TOOL_OBJECT" ) );
GroupPoints->PushButton2->setIcon( image2 );
GroupPoints->LineEdit1->setReadOnly( true );
GroupPoints->LineEdit2->setReadOnly( true );
+ GroupPoints->CheckButton1->setText( tr( "GEOM_KEEP_NONLIMIT_SHAPES" ) );
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
layout->setMargin( 0 ); layout->setSpacing( 6 );
/***************************************************************/
- setHelpFileName( "partition.htm" );
+ setHelpFileName( "partition_page.html" );
Init();
}
GroupPoints->ComboBox1->addItem( tr( "GEOM_RECONSTRUCTION_LIMIT_WIRE" ) );
GroupPoints->ComboBox1->addItem( tr( "GEOM_RECONSTRUCTION_LIMIT_EDGE" ) );
GroupPoints->ComboBox1->addItem( tr( "GEOM_RECONSTRUCTION_LIMIT_VERTEX" ) );
+ GroupPoints->CheckButton1->setChecked( false );
/* signals and slots connections */
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
connect( GroupPoints->ComboBox1, SIGNAL( activated( int ) ), this, SLOT( ComboTextChanged() ) );
- connect( myGeomGUI->getApp()->selectionMgr(),
+ connect( GroupPoints->CheckButton1, SIGNAL( stateChanged( int ) ), this, SLOT( ReverseSense( int ) ) );
+
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_PARTITION" ) );
GroupPoints->TextLabel2->setText( tr( "GEOM_TOOL_OBJECT" ) );
GroupPoints->TextLabel3->show();
GroupPoints->ComboBox1->show();
-
GroupPoints->ComboBox1->setCurrentIndex( 0 );
+ GroupPoints->CheckButton1->show();
break;
case 1: /*Half-space partition */
GroupPoints->GroupBox1->setTitle( tr( "GEOM_PARTITION_HALFSPACE" ) );
GroupPoints->TextLabel3->hide();
GroupPoints->ComboBox1->hide();
GroupPoints->TextLabel2->setText( tr( "GEOM_PLANE" ) );
+ GroupPoints->CheckButton1->hide();
break;
}
int aLimit = GetLimit();
int aConstructorId = getConstructorId();
+ int aKeepNonlimitShapes = 0;
- if ( aConstructorId == 1 )
+ if ( aConstructorId == 1 ) {
aLimit = GEOM::SHAPE;
+ }
+ else {
+ if ( GroupPoints->CheckButton1->isChecked() ) {
+ aKeepNonlimitShapes = 1;
+ }
+ else {
+ aKeepNonlimitShapes = 0;
+ }
+ }
if ( isValid( msg ) ) {
- anObj = GEOM::GEOM_IBooleanOperations::_narrow(getOperation())->
- MakePartition(myListShapes, myListTools,
- myListKeepInside, myListRemoveInside,
- aLimit, false, myListMaterials);
+ anObj = GEOM::GEOM_IBooleanOperations::_narrow( getOperation() )->
+ MakePartition( myListShapes, myListTools,
+ myListKeepInside, myListRemoveInside,
+ aLimit, false, myListMaterials, aKeepNonlimitShapes );
res = true;
}
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void OperationGUI_PartitionDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=======================================================================
//function : ComboTextChanged
//purpose :
#include <GEOMBase_Skeleton.h>
-class DlgRef_2Sel1List;
+class DlgRef_2Sel1List1Check;
//=================================================================================
// class : OperationGUI_PartitionDlg
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
private:
void Init();
GEOM::ListOfGO myListRemoveInside;
GEOM::ListOfGO myListKeepInside;
- DlgRef_2Sel1List* GroupPoints;
+ DlgRef_2Sel1List1Check* GroupPoints;
private slots:
void ClickOnOk();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "box.htm" );
+ setHelpFileName( "create_box_page.html" );
Init();
}
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes */
- initSpinBox( GroupDimensions->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
double initValue = 200.0;
GroupDimensions->SpinBox_DX->setValue( initValue );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DZ, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_BOX" ) );
//=================================================================================
void PrimitiveGUI_BoxDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication( ) ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch ( constructorId ) {
case 0:
{
- globalSelection( GEOM_POINT );
+ //globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupDimensions->hide();
GroupPoints->show();
GroupPoints->LineEdit2->setText( "" );
myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break;
}
{
GroupPoints->hide();
GroupDimensions->show();
+ globalSelection(); // close local contexts, if any
break;
}
}
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+ TopoDS_Shape aShape;
+ QString aName = GEOMBase::GetName( aSelectedObject );
+ if (GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1) { // Local Selection
+ int anIndex = aMap( 1 );
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != TopAbs_VERTEX ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 )
myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
myPoint2 = aSelectedObject;
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
-
displayPreview();
}
else if ( send == GroupPoints->PushButton2 )
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_POINT );
+ // globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
myEditCurrentArgument->setFocus();
SelectionIntoArgument();
void PrimitiveGUI_BoxDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
}
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void PrimitiveGUI_BoxDlg::closeEvent( QCloseEvent* e )
+void PrimitiveGUI_BoxDlg::addSubshapesToStudy()
{
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+ if ( getConstructorId() == 0 ) {
+ objMap[GroupPoints->LineEdit1->text()] = myPoint1;
+ objMap[GroupPoints->LineEdit2->text()] = myPoint2;
+ addSubshapesToFather( objMap );
+ }
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "cone.htm" );
+ setHelpFileName( "create_cone_page.html" );
Init();
}
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, 0.000, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox_DY, 0.000, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DX, 0.000, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY, 0.000, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.000, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DY, 0.000, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DX, 0.000, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY, 0.000, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
double aRadius1( 100.0 ), aRadius2( 0.0 ), aHeight( 300.0 );
GroupPoints->SpinBox_DX->setValue( aRadius1 );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DZ, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_CONE" ) );
//=================================================================================
void PrimitiveGUI_ConeDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch( constructorId ) {
case 0 :
{
- globalSelection( GEOM_POINT );
+ //globalSelection( GEOM_POINT );
+ globalSelection(); // to break prvious local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+
GroupDimensions->hide();
GroupPoints->show();
GroupPoints->LineEdit2->setText( "" );
myPoint = myDir = GEOM::GEOM_Object::_nil();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break;
}
case 1 :
{
+ globalSelection(); // close local contexts, if any
+
GroupPoints->hide();
GroupDimensions->show();
-
+
break;
}
}
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+ TopoDS_Shape aShape;
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap(1);
+ if ( aNeedType == TopAbs_EDGE )
+ aName.append( ":edge_" + QString::number( anIndex ) );
+ else
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 )
myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
myDir = aSelectedObject;
-
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
displayPreview();
}
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ globalSelection( GEOM_POINT ); // to break prvious local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ globalSelection( GEOM_LINE );// to break prvious local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
void PrimitiveGUI_ConeDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void PrimitiveGUI_ConeDlg::closeEvent( QCloseEvent* e )
-{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : getRadius1()
return GroupDimensions->SpinBox_DZ->value();
return 0;
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void PrimitiveGUI_ConeDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit1->text()] = myPoint;
+ objMap[GroupPoints->LineEdit2->text()] = myDir;
+ break;
+ case 1:
+ return;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "cylinder.htm" );
+ setHelpFileName( "create_cylinder_page.html" );
Init();
}
/* min, max, step and decimals for spin boxes & initial values */
/* First constructor : radius */
- initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
/* First constructor : algebric height */
- initSpinBox( GroupPoints->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
/* Second constructor : radius */
- initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
/* Second constructor : algebric height */
- initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 100.0 );
GroupPoints->SpinBox_DY->setValue( 300.0 );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DY, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_CYLINDER" ) );
//=================================================================================
void PrimitiveGUI_CylinderDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch( constructorId ) {
case 0 :
{
- globalSelection( GEOM_POINT );
+ globalSelection( GEOM_POINT ); // to break previous local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupDimensions->hide();
GroupPoints->show();
GroupPoints->LineEdit2->setText( "" );
myPoint = myDir = GEOM::GEOM_Object::_nil();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break;
}
case 1 :
{
+ globalSelection(); // close local contexts, if any
+
GroupPoints->hide();
GroupDimensions->show();
break;
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+
+ QString aName = GEOMBase::GetName(aSelectedObject);
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName.append( ":edge_" + QString::number( anIndex ) );
+ else
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText(aName);
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 )
myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
myDir = aSelectedObject;
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
-
displayPreview();
}
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ globalSelection( GEOM_POINT ); // to break previous local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ globalSelection( GEOM_LINE ); // to break previous local selection
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
void PrimitiveGUI_CylinderDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void PrimitiveGUI_CylinderDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : getRadius()
return GroupDimensions->SpinBox_DY->value();
return 0;
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void PrimitiveGUI_CylinderDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit1->text()] = myPoint;
+ objMap[GroupPoints->LineEdit2->text()] = myDir;
+ break;
+ case 1:
+ return;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "sphere.htm" );
+ setHelpFileName( "create_sphere_page.html" );
Init();
}
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes */
- initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 100.0 );
GroupDimensions->SpinBox_DX->setValue( 100.0 );
connect(myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DX, SLOT( SetStep( double ) ) );
// <<-
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_SPHERE" ) );
//=================================================================================
void PrimitiveGUI_SphereDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch ( constructorId ) {
case 0:
{
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+
GroupDimensions->hide();
GroupPoints->show();
GroupPoints->LineEdit1->setText( "" );
myPoint = GEOM::GEOM_Object::_nil();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break;
}
case 1:
{
+ globalSelection(); // close local contexts, if any
+
GroupPoints->hide();
GroupDimensions->show();
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+ QString aName = GEOMBase::GetName( aSelectedObject );
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather(aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else { // Global Selection
+ if (aShape.ShapeType() != TopAbs_VERTEX) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
myPoint = aSelectedObject;
- myEditCurrentArgument->setText( GEOMBase::GetName( myPoint ) );
displayPreview();
}
if ( send == GroupPoints->PushButton1 ) {
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
SelectionIntoArgument();
}
}
void PrimitiveGUI_SphereDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void PrimitiveGUI_SphereDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : getRadius()
return GroupDimensions->SpinBox_DX->value();
return 0;
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void PrimitiveGUI_SphereDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit1->text()] = myPoint;
+ break;
+ case 1:
+ return;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
bool modal, Qt::WindowFlags fl )
: GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl )
{
- QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_TORUS_PV" ) ) );
- QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_TORUS_DXYZ" ) ) );
- QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_TORUS_PV" ) ) );
+ QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_TORUS_DXYZ" ) ) );
+ QPixmap image2( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
setWindowTitle( tr( "GEOM_TORUS_TITLE" ) );
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "turus.htm" );
+ setHelpFileName( "create_torus_page.html" );
Init();
}
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY, 0.001, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DY, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DX, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY, 0.001, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 300.0 );
GroupPoints->SpinBox_DY->setValue( 100.0 );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DX, SLOT( SetStep( double ) ) );
connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), GroupDimensions->SpinBox_DY, SLOT( SetStep( double ) ) );
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
- SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
+ this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_TORUS" ) );
//=================================================================================
void PrimitiveGUI_TorusDlg::ConstructorsClicked( int constructorId )
{
- disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 );
+ disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
switch( constructorId ) {
case 0 :
{
- globalSelection( GEOM_LINE );
+ globalSelection(); // close local contexts, if any
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
GroupDimensions->hide();
GroupPoints->show();
GroupPoints->LineEdit2->setText( "" );
myPoint = myDir = GEOM::GEOM_Object::_nil();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+ SelectionIntoArgument();
break;
}
case 1:
{
GroupPoints->hide();
GroupDimensions->show();
+ globalSelection(); // close local contexts, if any
break ;
}
return false;
initName();
- ConstructorsClicked( getConstructorId() );
+
return true;
}
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+
+ QString aName = GEOMBase::GetName(aSelectedObject);
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) { // Local Selection
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName.append( ":edge_" + QString::number( anIndex ) );
+ else
+ aName.append( ":vertex_" + QString::number( anIndex ) );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText(aName);
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 )
myPoint = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
myDir = aSelectedObject;
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
displayPreview();
}
void PrimitiveGUI_TorusDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection( GEOM_POINT ); // to break previous local selection
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ GEOM::GEOM_Object_var anObj;
+ localSelection( anObj, TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
void PrimitiveGUI_TorusDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
- connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
ConstructorsClicked( getConstructorId() );
}
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose : public slot to deactivate if active
-//=================================================================================
-void PrimitiveGUI_TorusDlg::DeactivateActiveDialog()
-{
- GEOMBase_Skeleton::DeactivateActiveDialog();
-}
-
-
//=================================================================================
// function : ValueChangedInSpinBox
// purpose :
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void PrimitiveGUI_TorusDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : getRadius1()
// purpose :
return GroupDimensions->SpinBox_DY->value();
return 0;
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void PrimitiveGUI_TorusDlg::addSubshapesToStudy()
+{
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit1->text()] = myPoint;
+ objMap[GroupPoints->LineEdit2->text()] = myDir;
+ break;
+ case 1:
+ return;
+ }
+ addSubshapesToFather( objMap );
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
void ClickOnOk();
bool ClickOnApply();
void ActivateThisDialog();
- void DeactivateActiveDialog();
void LineEditReturnPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
RepairGUI_FreeFacesDlg.h \
RepairGUI_ChangeOrientationDlg.h \
RepairGUI_GlueDlg.h \
+ RepairGUI_RemoveExtraEdgesDlg.h \
\
RepairGUI.cxx \
RepairGUI_SewingDlg.cxx \
RepairGUI_FreeBoundDlg.cxx \
RepairGUI_FreeFacesDlg.cxx \
RepairGUI_ChangeOrientationDlg.cxx \
- RepairGUI_GlueDlg.cxx
+ RepairGUI_GlueDlg.cxx \
+ RepairGUI_RemoveExtraEdgesDlg.cxx
MOC_FILES = \
RepairGUI_SewingDlg_moc.cxx \
RepairGUI_FreeBoundDlg_moc.cxx \
RepairGUI_FreeFacesDlg_moc.cxx \
RepairGUI_ChangeOrientationDlg_moc.cxx \
- RepairGUI_GlueDlg_moc.cxx
+ RepairGUI_GlueDlg_moc.cxx \
+ RepairGUI_RemoveExtraEdgesDlg_moc.cxx
nodist_libRepairGUI_la_SOURCES = \
$(MOC_FILES)
#include "RepairGUI_FreeFacesDlg.h" // Method FREE FACES
#include "RepairGUI_GlueDlg.h" // Method GLUE FACES
#include "RepairGUI_ChangeOrientationDlg.h" // Method CHANGE ORIENTATION
+#include "RepairGUI_RemoveExtraEdgesDlg.h" // Method REMOVE EXTRA EDGES
//=======================================================================
// function : RepairGUI()
case 609: aDlg = new RepairGUI_FreeBoundDlg ( getGeometryGUI(), parent ); break;
case 610: aDlg = new RepairGUI_FreeFacesDlg ( getGeometryGUI(), parent ); break;
case 611: aDlg = new RepairGUI_ChangeOrientationDlg ( getGeometryGUI(), parent ); break;
+ case 612: aDlg = new RepairGUI_RemoveExtraEdgesDlg ( getGeometryGUI(), parent ); break;
default:
app->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
break;
layout->setMargin( 0 ); layout->setSpacing( 6 );
layout->addWidget( GroupPoints );
- setHelpFileName( "change_orientation.htm" );
+ setHelpFileName( "change_orientation_operation_page.html" );
Init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_ChangeOrientationDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
private:
GEOM::GEOM_Object_var myObject;
/***************************************************************/
- setHelpFileName( "close_contour.htm" );
+ setHelpFileName( "close_contour_operation_page.html" );
Init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_CloseContourDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
bool getIsByVertex() const;
/***************************************************************/
- setHelpFileName( "add_point_on_edge.htm" );
+ setHelpFileName( "add_point_on_edge_operation_page.html" );
Init();
}
ActivateThisDialog();
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_DivideEdgeDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
bool getIsByParameter() const;
aLay->setMargin( MARGIN );
aLay->addWidget( aMainGrp );
aLay->addWidget( aFrame );
-
- myHelpFileName = "check_free_boundaries.htm";
+
+ myHelpFileName = "using_measurement_tools_page.html#boundaries_anchor";
connect( aCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) );
connect( aHelpBtn, SIGNAL( clicked() ), SLOT( onHelp() ) );
aLay->addWidget( aMainGrp );
aLay->addStretch();
aLay->addWidget( aFrame );
-
- myHelpFileName = "check_free_faces.htm";
+
+ myHelpFileName = "using_measurement_tools_page.html#faces_anchor";
connect( aCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) );
connect( aHelpBtn, SIGNAL( clicked() ), SLOT( onHelp() ) );
/***************************************************************/
- setHelpFileName( "glue_faces.htm" );
+ setHelpFileName( "glue_faces_operation_page.html" );
// Disable second way of gluing if OCC viewer is not active one
if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType()
ActivateThisDialog();
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_GlueDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
objects.clear();
switch ( getConstructorId() ) {
- case 0 :
+ case 0:
{
GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow
- ( getOperation() )->MakeGlueFaces( myObject, myTolEdt2->value() );
+ ( getOperation() )->MakeGlueFaces( myObject, myTolEdt2->value(), true );
aResult = !anObj->_is_nil();
if ( aResult )
- objects.push_back( anObj._retn() );
+ objects.push_back( anObj._retn() );
break;
}
- case 1 :
- if ( IsPreview() ) {
- // if this method is used for displaying preview then we must detect glue faces only
+ case 1:
+ {
+ if ( IsPreview() ) {
+ // if this method is used for displaying preview then we must detect glue faces only
+ ObjectList::iterator anIter;
+ for ( anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter )
+ objects.push_back( GEOM::GEOM_Object::_duplicate( *anIter ) );
+ return myTmpObjs.size() ? true : false;
+ } // IsPreview
+
+ // Make glue face by list.
+ // Iterate through myTmpObjs and verifies where each object is currently selected or not.
+ QMap<QString, char> selected;
+
+ // Get names of selected objects
+ SALOME_ListIteratorOfListIO it ( selectedIO() );
+ for ( ; it.More(); it.Next() )
+ selected.insert( it.Value()->getName(), 0 );
+
+ // Iterate through result and select objects with names from selection
+ // ObjectList toRemoveFromEnggine;
+ ObjectList toGlue;
ObjectList::iterator anIter;
- for (anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter)
- objects.push_back( GEOM::GEOM_Object::_duplicate( *anIter ) );
- return myTmpObjs.size() ? true : false;
- } // IsPreview
-
- // Make glue face by list.
- // Iterate through myTmpObjs and verifies where each object is currently selected or not.
- QMap<QString, char> selected;
-
- // Get names of selected objects
- SALOME_ListIteratorOfListIO it ( selectedIO() );
- for ( ; it.More(); it.Next() )
- selected.insert( it.Value()->getName(), 0 );
-
- // Iterate through result and select objects with names from selection
- // ObjectList toRemoveFromEnggine;
- ObjectList toGlue;
- ObjectList::iterator anIter;
- for ( anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter ) {
- if ( selected.contains( myGeomGUI->getApp()->orb()->object_to_string(*anIter) ) )
- toGlue.push_back(*anIter);
- }
-
- // make glue faces
- GEOM::ListOfGO_var aListForGlue = new GEOM::ListOfGO();
- aListForGlue->length( toGlue.size() );
- ObjectList::iterator anIter3 = toGlue.begin();
- for ( int i = 0; anIter3 != toGlue.end(); ++anIter3, ++i )
- aListForGlue[ i ] = *anIter3;
- GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow
- ( getOperation() )->MakeGlueFacesByList( myObject, myTolEdt2->value(), aListForGlue );
-
- aResult = !anObj->_is_nil();
-
- if ( aResult )
- objects.push_back( anObj._retn() );
-
- // Remove from engine useless objects
- clearTemporary();
-
- updateButtonState();
-
- break;
- } // case
+ for ( anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter ) {
+ if ( selected.contains( myGeomGUI->getApp()->orb()->object_to_string(*anIter) ) )
+ toGlue.push_back( *anIter );
+ }
+
+ // make glue faces
+ GEOM::ListOfGO_var aListForGlue = new GEOM::ListOfGO();
+ aListForGlue->length( toGlue.size() );
+ ObjectList::iterator anIter3 = toGlue.begin();
+ for ( int i = 0; anIter3 != toGlue.end(); ++anIter3, ++i )
+ aListForGlue[ i ] = *anIter3;
+ GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow
+ ( getOperation() )->MakeGlueFacesByList( myObject, myTolEdt2->value(), aListForGlue, true );
+
+ aResult = !anObj->_is_nil();
+
+ if ( aResult )
+ objects.push_back( anObj._retn() );
+
+ // Remove from engine useless objects
+ clearTemporary();
+
+ updateButtonState();
+
+ break;
+ } // case 1
+ } // switch
return aResult;
}
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
void clearTemporary();
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry component
+//
+// 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 : RepairGUI_RemoveExtraEdgesDlg.cxx
+// Author : Michael Zorin, Open CASCADE S.A.S.
+//
+
+#include "RepairGUI_RemoveExtraEdgesDlg.h"
+
+#include <DlgRef.h>
+#include <GeometryGUI.h>
+#include <GEOMBase.h>
+
+#include <SalomeApp_Application.h>
+#include <LightApp_SelectionMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_ResourceMgr.h>
+
+#include <GEOMImpl_Types.hxx>
+
+#include <TColStd_MapOfInteger.hxx>
+
+//=================================================================================
+// class : RepairGUI_RemoveExtraEdgesDlg()
+// purpose : Constructs a RepairGUI_RemoveExtraEdgesDlg which is a child of 'parent', with the
+// name 'name' and widget flags set to 'f'.
+// The dialog will by default be modeless, unless you set 'modal' to
+// TRUE to construct a modal dialog.
+//=================================================================================
+RepairGUI_RemoveExtraEdgesDlg::RepairGUI_RemoveExtraEdgesDlg( GeometryGUI* theGeometryGUI, QWidget* parent,
+ bool modal )
+ : GEOMBase_Skeleton( theGeometryGUI, parent, modal )
+{
+ QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_REMOVE_EXTRA_EDGES" ) ) );
+ QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
+
+ setWindowTitle( tr( "GEOM_REMOVE_EXTRA_EDGES_TITLE" ) );
+
+ /***************************************************************/
+ mainFrame()->GroupConstructors->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE"));
+ mainFrame()->RadioButton1->setIcon( image0 );
+ mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose );
+ mainFrame()->RadioButton2->close();
+ mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
+ mainFrame()->RadioButton3->close();
+
+ GroupPoints = new DlgRef_1Sel( centralWidget() );
+ GroupPoints->GroupBox1->setTitle( tr( "GEOM_REMOVE_EXTRA_EDGES" ) );
+ GroupPoints->TextLabel1->setText( tr( "GEOM_SELECTED_SHAPE" ) );
+ GroupPoints->PushButton1->setIcon( image1 );
+ GroupPoints->LineEdit1->setReadOnly( true );
+
+ QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
+ layout->setMargin( 0 ); layout->setSpacing( 6 );
+ layout->addWidget( GroupPoints );
+
+ /***************************************************************/
+
+ setHelpFileName( "remove_extra_edges_operation_page.html" );
+
+ Init();
+}
+
+
+//=================================================================================
+// function : ~RepairGUI_RemoveExtraEdgesDlg()
+// purpose : Destroys the object and frees any allocated resources
+//=================================================================================
+RepairGUI_RemoveExtraEdgesDlg::~RepairGUI_RemoveExtraEdgesDlg()
+{
+}
+
+
+//=================================================================================
+// function : Init()
+// purpose :
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::Init()
+{
+ /* init variables */
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+
+ myOkObject = false;
+
+ activateSelection();
+
+ /* signals and slots connections */
+ connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
+ connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
+
+ connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
+ connect( GroupPoints->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
+
+ connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+
+ initName( tr( "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME" ) );
+}
+
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose : Same than click on apply but close this dialog.
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::ClickOnOk()
+{
+ if ( ClickOnApply() )
+ ClickOnCancel();
+}
+
+//=================================================================================
+// function : ClickOnApply()
+// purpose :
+//=================================================================================
+bool RepairGUI_RemoveExtraEdgesDlg::ClickOnApply()
+{
+ if ( !onAccept() )
+ return false;
+
+ initName();
+
+ myEditCurrentArgument->setText( "" );
+ myObject = GEOM::GEOM_Object::_nil();
+
+ activateSelection();
+
+ return true;
+}
+
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose : Called when selection as changed or other case
+// : used only by SelectButtonC1A1 (LineEditC1A1)
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument()
+{
+ myEditCurrentArgument->setText( "" );
+ QString aName;
+
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+ if ( IObjectCount() != 1 ) {
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 )
+ myOkObject = false;
+ return;
+ }
+ }
+
+ // nbSel == 1
+ Standard_Boolean testResult = Standard_False;
+ GEOM::GEOM_Object_ptr aSelectedObject =
+ GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+
+ if ( !testResult )
+ return;
+
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+ myObject = aSelectedObject;
+ myOkObject = true;
+ }
+
+ myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+}
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose :
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::SetEditCurrentArgument()
+{
+ if( sender() == GroupPoints->PushButton1 ) {
+ GroupPoints->LineEdit1->setFocus();
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ }
+ SelectionIntoArgument();
+}
+
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose :
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::LineEditReturnPressed()
+{
+ if ( sender() == GroupPoints->LineEdit1 ) {
+ myEditCurrentArgument = GroupPoints->LineEdit1;
+ GEOMBase_Skeleton::LineEditReturnPressed();
+ }
+}
+
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose :
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::ActivateThisDialog()
+{
+ GEOMBase_Skeleton::ActivateThisDialog();
+ connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
+ SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
+
+ activateSelection();
+}
+
+
+//=================================================================================
+// function : enterEvent()
+// purpose : Mouse enter onto the dialog to activate it
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::enterEvent(QEvent* e)
+{
+ if ( !mainFrame()->GroupConstructors->isEnabled() )
+ ActivateThisDialog();
+}
+
+
+//=================================================================================
+// function : activateSelection
+// purpose : activate selection of solids and compounds
+//=================================================================================
+void RepairGUI_RemoveExtraEdgesDlg::activateSelection()
+{
+ TColStd_MapOfInteger aTypes;
+ aTypes.Add( GEOM_SOLID );
+ aTypes.Add( GEOM_COMPOUND );
+ globalSelection( aTypes );
+}
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr RepairGUI_RemoveExtraEdgesDlg::createOperation()
+{
+ return getGeomEngine()->GetIBlocksOperations( getStudyId() );
+}
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool RepairGUI_RemoveExtraEdgesDlg::isValid( QString& msg )
+{
+ return myOkObject;
+}
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool RepairGUI_RemoveExtraEdgesDlg::execute( ObjectList& objects )
+{
+ GEOM::GEOM_Object_var anObj;
+
+ anObj = GEOM::GEOM_IBlocksOperations::_narrow( getOperation() )->RemoveExtraEdges( myObject );
+
+ if ( !anObj->_is_nil() )
+ objects.push_back( anObj._retn() );
+
+ return true;
+}
--- /dev/null
+// GEOM GEOMGUI : GUI for Geometry 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 : RepairGUI_RemoveExtraEdgesDlg.h
+// Author : Michael ZORIN, Open CASCADE S.A.S.
+//
+
+#ifndef REPAIRGUI_REMOVEEXTRAEDGESDLG_H
+#define REPAIRGUI_REMOVEEXTRAEDGESDLG_H
+
+#include <GEOMBase_Skeleton.h>
+
+class DlgRef_1Sel;
+
+//=================================================================================
+// class : RepairGUI_RemoveExtraEdgesDlg
+// purpose : Remove all seam and degenerated edges from a given shape.
+//=================================================================================
+class RepairGUI_RemoveExtraEdgesDlg : public GEOMBase_Skeleton
+{
+ Q_OBJECT
+
+public:
+ RepairGUI_RemoveExtraEdgesDlg( GeometryGUI*, QWidget* = 0, bool = false );
+ ~RepairGUI_RemoveExtraEdgesDlg();
+
+protected:
+ // redefined from GEOMBase_Helper
+ virtual GEOM::GEOM_IOperations_ptr createOperation();
+ virtual bool isValid( QString& );
+ virtual bool execute( ObjectList& );
+
+private:
+ void Init();
+ void enterEvent( QEvent* );
+ void activateSelection();
+
+private:
+ GEOM::GEOM_Object_var myObject;
+ bool myOkObject;
+
+ DlgRef_1Sel* GroupPoints;
+
+private slots:
+ void ClickOnOk();
+ bool ClickOnApply();
+
+ void ActivateThisDialog();
+
+ void LineEditReturnPressed();
+ void SelectionIntoArgument();
+ void SetEditCurrentArgument();
+};
+
+#endif // REPAIRGUI_REMOVEEXTRAEDGESDLG_H
/***************************************************************/
- setHelpFileName( "suppress_holes.htm" );
+ setHelpFileName( "suppress_holes_operation_page.html" );
Init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_RemoveHolesDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
private:
/***************************************************************/
- setHelpFileName( "suppress_internal_wires.htm" );
+ setHelpFileName( "suppress_internal_wires_operation_page.html" );
Init();
}
ActivateThisDialog();
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_RemoveIntWiresDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
private:
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "sewing.htm" );
+ setHelpFileName( "sewing_operation_page.html" );
Init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_SewingDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void initSelection();
private:
bool modal )
: GEOMBase_Skeleton( theGeometryGUI, parent, modal )
{
- setHelpFileName( "shape_processing.htm" );
+ setHelpFileName( "shape_processing_operation_page.html" );
init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose : same than click on cancel button
-//=================================================================================
-void RepairGUI_ShapeProcessDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : reset()
// purpose : Completely reset the state of method including local context
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
- virtual void closeEvent( QCloseEvent* );
-
private:
void init();
void reset();
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "suppress_faces.htm" );
+ setHelpFileName( "suppress_faces_operation_page.html" );
Init();
}
}
-//=================================================================================
-// function : closeEvent()
-// purpose :
-//=================================================================================
-void RepairGUI_SuppressFacesDlg::closeEvent( QCloseEvent* e )
-{
- //myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : createOperation
// purpose :
private:
void Init();
void enterEvent( QEvent* );
- void closeEvent( QCloseEvent* );
void Convert( const TColStd_IndexedMapOfInteger&,
GEOM::short_array& );
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "mirror_image.htm" );
+ setHelpFileName( "mirror_operation_page.html" );
Init();
}
return;
}
Standard_Boolean testResult = Standard_False;
- myArgument = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ myArgument = aSelectedObject;
if ( !testResult || CORBA::is_nil( myArgument ) )
return;
- aName = GEOMBase::GetName( myArgument );
+
+ aName = GEOMBase::GetName( aSelectedObject );
+
+ if ( testResult && !aSelectedObject->_is_nil() ) {
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( getConstructorId() == 1 )
+ aNeedType = TopAbs_EDGE;
+ else if ( getConstructorId() == 2 )
+ aNeedType = TopAbs_FACE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_VERTEX )
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+ else
+ aName += QString( ":edge_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ myArgument = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ myArgument = aFindedObject; // get Object from study
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != aNeedType ) {
+ myArgument = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+ }
}
myEditCurrentArgument->setText( aName );
void TransformationGUI_MirrorDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection();
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection();
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
switch ( getConstructorId() ) {
case 0:
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
break;
case 1:
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
break;
case 2:
globalSelection( GEOM_PLANE );
}
//=================================================================================
-// function : closeEvent
+// function : CreateCopyModeChanged()
// purpose :
//=================================================================================
-void TransformationGUI_MirrorDlg::closeEvent( QCloseEvent* e )
+void TransformationGUI_MirrorDlg::CreateCopyModeChanged( bool isCreateCopy )
{
- GEOMBase_Skeleton::closeEvent( e );
+ mainFrame()->GroupBoxName->setEnabled( isCreateCopy );
}
-
//=================================================================================
-// function : CreateCopyModeChanged()
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void TransformationGUI_MirrorDlg::CreateCopyModeChanged( bool isCreateCopy )
+void TransformationGUI_MirrorDlg::addSubshapesToStudy()
{
- mainFrame()->GroupBoxName->setEnabled( isCreateCopy );
+ bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked();
+ if ( toCreateCopy ) {
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit2->text()] = myArgument;
+ break;
+ case 1:
+ objMap[GroupPoints->LineEdit2->text()] = myArgument;
+ break;
+ case 2:
+ return;
+ }
+ addSubshapesToFather( objMap );
+ }
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "multi_rotation.htm" );
+ setHelpFileName( "multi_rotation_operation_page.html" );
Init();
}
double SpecificStep1 = 5;
double SpecificStep2 = 1;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, 1.0, MAX_NUMBER, SpecificStep2, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, 1.0, MAX_NUMBER, SpecificStep2, 10 );
GroupPoints->SpinBox_DX->setValue( myNbTimes1 );
- initSpinBox( GroupDimensions->SpinBox_DX1, COORD_MIN, COORD_MAX, SpecificStep1, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY1, 1.0, MAX_NUMBER, SpecificStep2, 3 );
- initSpinBox( GroupDimensions->SpinBox_DX2, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY2, 1.0, MAX_NUMBER, SpecificStep2, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DX1, COORD_MIN, COORD_MAX, SpecificStep1, 10 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY1, 1.0, MAX_NUMBER, SpecificStep2, 10 );
+ initSpinBox( GroupDimensions->SpinBox_DX2, COORD_MIN, COORD_MAX, step, 10 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY2, 1.0, MAX_NUMBER, SpecificStep2, 10 );
GroupDimensions->SpinBox_DX1->setValue( myAng );
GroupDimensions->SpinBox_DY1->setValue( myNbTimes1 );
GroupDimensions->SpinBox_DX2->setValue( myStep );
connect( GroupDimensions->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( ReverseAngle() ) );
- connect( myGeomGUI->getApp()->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
initName( tr( "GEOM_MULTIROTATION" ) );
if ( !testResult || CORBA::is_nil( aSelectedObject) || !GEOMBase::IsShape( aSelectedObject ) )
return;
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
myEditCurrentArgument == GroupDimensions->LineEdit1 )
myBase = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ||
- myEditCurrentArgument == GroupDimensions->LineEdit2 )
- myVector = aSelectedObject;
-
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ myEditCurrentArgument == GroupDimensions->LineEdit2 ) {
+ if ( testResult && !aSelectedObject->_is_nil() ) {
+ TopoDS_Shape aShape;
+
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName += QString( ":edge_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ myVector = aShapesOp->GetSubShape(aSelectedObject, anIndex);
+ }
+ else {
+ myVector = aFindedObject; // get existing object
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != TopAbs_EDGE ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ myVector = aSelectedObject;
+ }
+ }
+ }
+ }
+ myEditCurrentArgument->setText( aName );
displayPreview();
}
void TransformationGUI_MultiRotationDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection( GEOM_ALLSHAPES );
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_ALLSHAPES );
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == GroupDimensions->PushButton1 ) {
myEditCurrentArgument = GroupDimensions->LineEdit1;
- globalSelection( GEOM_ALLSHAPES );
}
else if ( send == GroupDimensions->PushButton2 ) {
myEditCurrentArgument = GroupDimensions->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
return res;
}
-
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void TransformationGUI_MultiRotationDlg::closeEvent( QCloseEvent* e )
+void TransformationGUI_MultiRotationDlg::addSubshapesToStudy()
{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit2->text()] = myVector;
+ break;
+ case 1:
+ objMap[GroupDimensions->LineEdit2->text()] = myVector;
+ break;
+ }
+ addSubshapesToFather( objMap );
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupDimensions );
/***************************************************************/
- setHelpFileName( "multi_translation.htm" );
+ setHelpFileName( "multi_translation_operation_page.html" );
Init();
}
double SpecificStep = 1;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox_DY, 1.0, MAX_NUMBER, SpecificStep, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 10 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox_DY, 1.0, MAX_NUMBER, SpecificStep, 10 );
GroupPoints->SpinBox_DX->setValue( myStepU );
GroupPoints->SpinBox_DY->setValue( myNbTimesU );
- initSpinBox( GroupDimensions->SpinBox_DX1, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY1, 1.0, MAX_NUMBER, SpecificStep, 3 );
- initSpinBox( GroupDimensions->SpinBox_DX2, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupDimensions->SpinBox_DY2, 1.0, MAX_NUMBER, SpecificStep, 3 );
+ initSpinBox( GroupDimensions->SpinBox_DX1, COORD_MIN, COORD_MAX, step, 10 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY1, 1.0, MAX_NUMBER, SpecificStep, 10 );
+ initSpinBox( GroupDimensions->SpinBox_DX2, COORD_MIN, COORD_MAX, step, 10 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupDimensions->SpinBox_DY2, 1.0, MAX_NUMBER, SpecificStep, 10 );
GroupDimensions->SpinBox_DX1->setValue( myStepU );
GroupDimensions->SpinBox_DY1->setValue( myNbTimesU );
GroupDimensions->SpinBox_DX2->setValue( myStepV );
connect( GroupDimensions->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( ReverseStepU() ) );
connect( GroupDimensions->CheckButton2, SIGNAL( toggled( bool ) ), this, SLOT( ReverseStepV() ) );
- connect( myGeomGUI->getApp()->selectionMgr(),
+ connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
-
initName( tr( "GEOM_MULTITRANSLATION" ) );
if ( !testResult || CORBA::is_nil( aSelectedObject ) || !GEOMBase::IsShape( aSelectedObject ) )
return;
- if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
+ QString aName = GEOMBase::GetName( aSelectedObject );
+
+ if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
myEditCurrentArgument == GroupDimensions->LineEdit1 )
- myBase = aSelectedObject;
- else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ||
- myEditCurrentArgument == GroupDimensions->LineEdit2 )
- myVectorU = aSelectedObject;
- else if ( myEditCurrentArgument == GroupDimensions->LineEdit3 )
- myVectorV = aSelectedObject;
-
- myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+ myBase = aSelectedObject;
+ else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ||
+ myEditCurrentArgument == GroupDimensions->LineEdit2 ||
+ myEditCurrentArgument == GroupDimensions->LineEdit3 ) {
+ if ( testResult && !aSelectedObject->_is_nil() ) {
+ TopoDS_Shape aShape;
+
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName += QString( ":edge_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ if ( myEditCurrentArgument == GroupDimensions->LineEdit3 )
+ myVectorV = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ else
+ myVectorU = aShapesOp->GetSubShape(aSelectedObject, anIndex);
+ }
+ else {
+ if ( myEditCurrentArgument == GroupDimensions->LineEdit3 )
+ myVectorV = aFindedObject;
+ else
+ myVectorU = aFindedObject;
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != TopAbs_EDGE ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ if ( myEditCurrentArgument == GroupDimensions->LineEdit3 )
+ myVectorV = aSelectedObject;
+ else
+ myVectorU = aSelectedObject;
+ }
+ }
+ }
+ }
+
+ myEditCurrentArgument->setText( aName );
displayPreview();
}
void TransformationGUI_MultiTranslationDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
-
+ globalSelection( GEOM_ALLSHAPES );
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection( GEOM_ALLSHAPES );
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == GroupDimensions->PushButton1 ) {
myEditCurrentArgument = GroupDimensions->LineEdit1;
- globalSelection( GEOM_ALLSHAPES );
}
else if ( send == GroupDimensions->PushButton2 ) {
myEditCurrentArgument = GroupDimensions->LineEdit2;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == GroupDimensions->PushButton3 ) {
myEditCurrentArgument = GroupDimensions->LineEdit3;
- globalSelection( GEOM_LINE );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
myEditCurrentArgument->setFocus();
//=================================================================================
-// function : closeEvent
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void TransformationGUI_MultiTranslationDlg::closeEvent( QCloseEvent* e )
+void TransformationGUI_MultiTranslationDlg::addSubshapesToStudy()
{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit2->text()] = myVectorU;
+ break;
+ case 1:
+ objMap[GroupDimensions->LineEdit2->text()] = myVectorU;
+ objMap[GroupDimensions->LineEdit3->text()] = myVectorV;
+ break;
+ }
+ addSubshapesToFather( objMap );
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
/***************************************************************/
- setHelpFileName( "offset_surface.htm" );
+ setHelpFileName( "offset_operation_page.html" );
Init();
}
double step = 1;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 );
- GroupPoints->SpinBox_DX->setDecimals( 5 );
- //@ GroupPoints->SpinBox_DX->setDblPrecision(1e-05);
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( 1e-05 );
// Activate Create a Copy mode
initName( tr( "GEOM_OFFSET" ) );
globalSelection( GEOM_ALLSHAPES );
-
}
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void TransformationGUI_OffsetDlg::closeEvent( QCloseEvent* e )
-{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : GetOffset()
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
- virtual void closeEvent( QCloseEvent* );
-
private:
void Init();
void enterEvent( QEvent* );
/***************************************************************/
- setHelpFileName( "modify_the_location.htm" );
+ setHelpFileName( "modify_location_operation_page.html" );
Init();
}
return res;
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void TransformationGUI_PositionDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
//=================================================================================
// function : CreateCopyModeChanged()
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
double anAngle = 0;
double SpecificStep = 5;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( anAngle );
// Activate Create a Copy mode
connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- setHelpFileName( "rotation.htm" );
+ setHelpFileName( "rotation_operation_page.html" );
Init();
}
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
-
+
+ aName = GEOMBase::GetName( aSelectedObject );
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0 )
myAxis = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1 )
myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit5 )
myPoint2 = aSelectedObject;
-
- aName = GEOMBase::GetName( aSelectedObject );
}
myEditCurrentArgument->setText( aName );
void TransformationGUI_RotationDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection();
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection();
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- getConstructorId() == 0 ? globalSelection( GEOM_LINE ) :
- globalSelection( GEOM_POINT );
+ if ( getConstructorId() == 0 )
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+ else
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints->PushButton4 ) {
myEditCurrentArgument = GroupPoints->LineEdit4;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
else if ( send == GroupPoints->PushButton5 ) {
myEditCurrentArgument = GroupPoints->LineEdit5;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
myEditCurrentArgument->setFocus();
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void TransformationGUI_RotationDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : GetAngle()
// purpose :
double anOldValue = GroupPoints->SpinBox_DX->value();
GroupPoints->SpinBox_DX->setValue( -anOldValue );
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void TransformationGUI_RotationDlg::addSubshapesToStudy()
+{
+ bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked();
+ if ( toCreateCopy ) {
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+ switch ( getConstructorId() ) {
+ case 0:
+ objMap[GroupPoints->LineEdit2->text()] = myAxis;
+ break;
+ case 1:
+ objMap[GroupPoints->LineEdit2->text()] = myCentPoint;
+ objMap[GroupPoints->LineEdit4->text()] = myPoint1;
+ objMap[GroupPoints->LineEdit5->text()] = myPoint2;
+ break;
+ }
+ addSubshapesToFather( objMap );
+ }
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
double aFactor = 2.0;
double SpecificStep = 0.5;
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 );
+ initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, SpecificStep, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox_DX->setValue( aFactor );
// Activate Create a Copy mode
connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
- setHelpFileName( "scale_transform.htm" );
+ setHelpFileName( "scale_operation_page.html" );
Init();
}
return;
}
Standard_Boolean testResult = Standard_False;
- myPoint = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+ aName = GEOMBase::GetName( aSelectedObject );
+
+ TopoDS_Shape aShape;
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ aSelMgr->clearSelected();
+ }
+ else {
+ aSelectedObject = aFindedObject; // get Object from study
+ }
+ }
+ else {
+ if ( aShape.ShapeType() != TopAbs_VERTEX ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
+ myPoint = aSelectedObject;
+
if ( !testResult || CORBA::is_nil( myPoint ) )
return;
- aName = GEOMBase::GetName( myPoint );
}
myEditCurrentArgument->setText( aName );
void TransformationGUI_ScaleDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection();
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection();
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
myEditCurrentArgument->setFocus();
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
-void TransformationGUI_ScaleDlg::closeEvent( QCloseEvent* e )
-{
- GEOMBase_Skeleton::closeEvent( e );
-}
-
-
//=================================================================================
// function : GetFactor()
// purpose :
{
mainFrame()->GroupBoxName->setEnabled(isCreateCopy);
}
+
+//=================================================================================
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
+//=================================================================================
+void TransformationGUI_ScaleDlg::addSubshapesToStudy()
+{
+ bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked();
+ if ( toCreateCopy ) {
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ objMap[GroupPoints->LineEdit2->text()] = myPoint;
+
+ addSubshapesToFather( objMap );
+ }
+}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
#include <SalomeApp_Application.h>
#include <LightApp_SelectionMgr.h>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS.hxx>
+#include <TopExp.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+
#include <GEOMImpl_Types.hxx>
//=================================================================================
layout->addWidget( GroupPoints );
/***************************************************************/
- setHelpFileName( "translation.htm" );
+ setHelpFileName( "translation_operation_page.html" );
Init();
}
double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );
/* min, max, step and decimals for spin boxes & initial values */
- initSpinBox( GroupPoints->SpinBox1, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox2, COORD_MIN, COORD_MAX, step, 3 );
- initSpinBox( GroupPoints->SpinBox3, COORD_MIN, COORD_MAX, step, 3 );
+ initSpinBox( GroupPoints->SpinBox1, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox2, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
+ initSpinBox( GroupPoints->SpinBox3, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY
GroupPoints->SpinBox1->setValue( 0.0 );
GroupPoints->SpinBox2->setValue( 0.0 );
//=================================================================================
void TransformationGUI_TranslationDlg::ConstructorsClicked( int constructorId )
{
+ erasePreview();
disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
myEditCurrentArgument = GroupPoints->LineEdit1;
return false;
initName();
- ConstructorsClicked( getConstructorId() );
+
return true;
}
if ( !testResult || CORBA::is_nil( aSelectedObject ) )
return;
+ TopoDS_Shape aShape;
+ aName = GEOMBase::GetName( aSelectedObject );
+ if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
+ TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+ if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2 )
+ aNeedType = TopAbs_EDGE;
+
+ LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
+ TColStd_IndexedMapOfInteger aMap;
+ aSelMgr->GetIndexes( firstIObject(), aMap );
+ if ( aMap.Extent() == 1 ) {
+ int anIndex = aMap( 1 );
+ if ( aNeedType == TopAbs_EDGE )
+ aName += QString( ":edge_%1" ).arg( anIndex );
+ else
+ aName += QString( ":vertex_%1" ).arg( anIndex );
+
+ //Find SubShape Object in Father
+ GEOM::GEOM_Object_var aFindedObject = findObjectInFather( aSelectedObject, aName );
+
+ if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study
+ GEOM::GEOM_IShapesOperations_var aShapesOp =
+ getGeomEngine()->GetIShapesOperations( getStudyId() );
+ aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex );
+ }
+ else {
+ aSelectedObject = aFindedObject;
+ }
+ }
+ else { // Global Selection
+ if ( aShape.ShapeType() != aNeedType ) {
+ aSelectedObject = GEOM::GEOM_Object::_nil();
+ aName = "";
+ }
+ }
+ }
+
if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1 )
myPoint1 = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2 )
myVector = aSelectedObject;
else if ( myEditCurrentArgument == GroupPoints->LineEdit3 )
- myPoint2 = aSelectedObject;
-
- aName = GEOMBase::GetName( aSelectedObject );
+ myPoint2 = aSelectedObject;
}
myEditCurrentArgument->setText( aName );
void TransformationGUI_TranslationDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
+ globalSelection();
if ( send == GroupPoints->PushButton1 ) {
myEditCurrentArgument = GroupPoints->LineEdit1;
- globalSelection();
}
else if ( send == GroupPoints->PushButton2 ) {
myEditCurrentArgument = GroupPoints->LineEdit2;
- getConstructorId() == 1 ? globalSelection( GEOM_POINT ) :
- globalSelection( GEOM_LINE );
+ if ( getConstructorId() == 1 )
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+ else
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
}
else if ( send == GroupPoints->PushButton3 ) {
myEditCurrentArgument = GroupPoints->LineEdit3;
- globalSelection( GEOM_POINT );
+ localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
}
myEditCurrentArgument->setFocus();
void TransformationGUI_TranslationDlg::ActivateThisDialog()
{
GEOMBase_Skeleton::ActivateThisDialog();
+
connect( myGeomGUI->getApp()->selectionMgr(),
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
//=================================================================================
GEOM::GEOM_IOperations_ptr TransformationGUI_TranslationDlg::createOperation()
{
- return myGeomGUI->GetGeomGen()->GetITransformOperations( getStudyId() );
+ return getGeomEngine()->GetITransformOperations( getStudyId() );
}
//=================================================================================
-// function : closeEvent
+// function : CreateCopyModeChanged()
// purpose :
//=================================================================================
-void TransformationGUI_TranslationDlg::closeEvent( QCloseEvent* e )
+void TransformationGUI_TranslationDlg::CreateCopyModeChanged( bool isCreateCopy )
{
- // myGeomGUI->SetState( -1 );
- GEOMBase_Skeleton::closeEvent( e );
+ mainFrame()->GroupBoxName->setEnabled( isCreateCopy );
}
-
//=================================================================================
-// function : CreateCopyModeChanged()
-// purpose :
+// function : addSubshapeToStudy
+// purpose : virtual method to add new SubObjects if local selection
//=================================================================================
-void TransformationGUI_TranslationDlg::CreateCopyModeChanged( bool isCreateCopy )
+void TransformationGUI_TranslationDlg::addSubshapesToStudy()
{
- mainFrame()->GroupBoxName->setEnabled( isCreateCopy );
+ bool toCreateCopy = IsPreview() || GroupPoints->CheckBox1->isChecked();
+ if ( toCreateCopy ) {
+ QMap<QString, GEOM::GEOM_Object_var> objMap;
+
+ switch ( getConstructorId() ) {
+ case 0:
+ return;
+ case 1:
+ objMap[GroupPoints->LineEdit2->text()] = myPoint1;
+ objMap[GroupPoints->LineEdit3->text()] = myPoint2;
+ break;
+ case 2:
+ objMap[GroupPoints->LineEdit2->text()] = myVector;
+ break;
+ }
+ addSubshapesToFather( objMap );
+ }
}
virtual GEOM::GEOM_IOperations_ptr createOperation();
virtual bool isValid( QString& );
virtual bool execute( ObjectList& );
-
- virtual void closeEvent( QCloseEvent* );
+ virtual void addSubshapesToStudy();
private:
void Init();
void LineEditReturnPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
- void ValueChangedInSpinBox();
void ConstructorsClicked( int );
+ void ValueChangedInSpinBox();
void CreateCopyModeChanged( bool );
};