# common directories to put headerfiles
inc_builddir=$(top_builddir)/include/salome
+MODULE_NAME=@MODULE_NAME@
+
@SET_MAKE@
SHELL=/bin/sh
cp -f $< $@
# build resources file (icons and messages) : .qm file from .po file
-resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
# Make installation directories if they don't exist.
$(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir):
# generic rule to install .qm files :
install-qm: resources
- $(INSTALL) -d $(datadir)/resources
- @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \
+ $(INSTALL) -d $(datadir)/resources/$(MODULE_NAME)
+ @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm); do \
if test $$f != X; then \
- ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1); \
+ ($(INSTALL_DATA) $$f $(datadir)/resources/$(MODULE_NAME)/. || exit 1); \
fi; \
done
# Uninstall qm files
@for f in X $(PO_FILES:%.po=%.qm); do \
if test $$f != X; then \
- $(LT_UNINSTALL) $(datadir)/resources/$$f ; \
+ $(LT_UNINSTALL) $(datadir)/resources/$(MODULE_NAME)/$$f ; \
fi; \
done
#
distclean: clean
#remove qm file !
- -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+ -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
#remove include files
-$(RM) $(DEST_HEADERS)
-$(RM) $(DISTCLEAN) *.bak *.old *.new .dep*
%_wrap.cxx : %.i
$(SWIG) $(SWIG_FLAGS) -o $@ $<
-$(top_builddir)/share/salome/resources/%.qm: %.po
+$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm: %.po
$(MSG2QM) $< $@ ; \
#------------------------------------------------------------------------------
PACKAGE=salome
AC_SUBST(PACKAGE)
-VERSION=3.2.0
-XVERSION=0x030200
+VERSION=3.2.2
+XVERSION=0x030202
AC_SUBST(VERSION)
AC_SUBST(XVERSION)
+# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
+MODULE_NAME=smesh
+AC_SUBST(MODULE_NAME)
+
dnl
dnl Initialize source and build root directories
dnl
fi
# make other build directories
-for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources/${MODULE_NAME} idl
do
# if test ! -d $rep ; then
# eval mkdir $rep
The SALOME automatically locates XML files, searching them in the following directories:
- ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources
+ ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources/<plugin>
${SALOME_<PluginName>Resources}
${HOME}/.salome/resources
- ${KERNEL_ROOT_DIR}/share/salome/resources
+ ${KERNEL_ROOT_DIR}/share/salome/resources/kernel
where <PluginName> is a name of each mesher plugin package
4.2.2. Define environment variable SALOME_<MyResourceKey>Resources to point to the
directory where resources are situated.
- Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources
+ Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources/smesh
4.3. Implement your Hypothesis Creator and being exported method
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
<!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
-p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0px; margin-bottom:0px; }
-p.whs4 { margin-top:0px; margin-bottom:0px; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; }
+p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs4 { font-family:'Lucida Console' , monospace; margin-top:0px; margin-bottom:0px; }
p.whs5 { margin-top:0px; margin-bottom:0px; font-family:'Times New Roman' , serif; }
+p.whs6 { margin-top:0px; margin-bottom:0px; }
+p.whs7 { margin-top:0px; margin-bottom:0px; font-family:'Lucida Console' , monospace; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
</script>
<h1>Creating Meshes</h1>
-<h3><a name=bookmark>Construction of a Mesh</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
+<p class="whs1">First of all see <a href="smesh.py_introduction.htm">Example
+ of 3d mesh generation</a>, which is an example of good python script style
+ for Mesh module. </p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs1">Other examples of python
+ scripts will be also updated soon to use smesh package instead of direct
+ usage of idl interface. </p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<h3><a name=bookmark>Construction of a Mesh</a></h3>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs2">import smesh</p>
<p class="whs2"> </p>
-<p class="whs2"># create a box</p>
+<p class="whs3"># create a box</p>
-<p class="whs1">box = geompy.MakeBox(0.,
+<p class="whs2">box = geompy.MakeBox(0.,
0., 0., 100., 200., 300.)</p>
-<p class="whs2"> </p>
-
-<p class="whs2"># add box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
+<p class="whs2">idbox = geompy.addToStudy(box,
"box")</p>
<p class="whs2"> </p>
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">print "--------------------------
- create Hypothesis"</p>
-
-<p class="whs1">print "--------------------------
- NumberOfSegments"</p>
-
-<p class="whs1">numberOfSegments
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs1">print hypNbSeg.GetName()</p>
-
-<p class="whs1">print hypNbSeg.GetId()</p>
-
-<p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
- "NumberOfSegments_10")</p>
-
-<p class="whs1">print "--------------------------
- MaxElementArea"</p>
-
-<p class="whs1">maxElementArea =
- 800</p>
-
-<p class="whs1">hypArea = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>
+<p class="whs3"># create a mesh</p>
-<p class="whs1">print hypArea.GetName()</p>
-
-<p class="whs1">print hypArea.GetId()</p>
-
-<p class="whs1">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea),
- "MaxElementArea_500")</p>
-
-<p class="whs1">print "--------------------------
- MaxElementVolume"</p>
-
-<p class="whs1">maxElementVolume
- = 900</p>
-
-<p class="whs1">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs1">print hypVolume.GetName()</p>
-
-<p class="whs1">print hypVolume.GetId()</p>
-
-<p class="whs1">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume),
- "MaxElementVolume_500")</p>
+<p class="whs2">tetra = smesh.Mesh(box,
+ "MeshBox")</p>
<p class="whs2"> </p>
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">print "--------------------------
- create Algorithms"</p>
-
-<p class="whs1">print "--------------------------
- Regular_1D"</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs2">algo1D = tetra.Segment()</p>
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D),
- "Wire Discretisation")</p>
+<p class="whs2">algo1D.NumberOfSegments(7)</p>
-<p class="whs1">print "--------------------------
- MEFISTO_2D"</p>
+<p class="whs2"> </p>
-<p class="whs1">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs2">algo2D = tetra.Triangle()</p>
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D),
- "MEFISTO_2D")</p>
+<p class="whs2">algo2D.MaxElementArea(800.)</p>
<p class="whs2"> </p>
-<p class="whs2"># initialize a mesh with
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
+<p class="whs2">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh),
- "MeshBox")</p>
+<p class="whs2">algo3D.MaxElementVolume(900.)</p>
<p class="whs2"> </p>
-<p class="whs2"># add the hypothesis to
- the box</p>
+<p class="whs3"># compute the mesh</p>
-<p class="whs1">print "--------------------------
- add hypothesis to the box"</p>
+<p class="whs2">ret = tetra.Compute()</p>
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs2">if ret == 0:</p>
-<p class="whs1">mesh.AddHypothesis(box,hypArea)</p>
+<p class="whs2"> print
+ "problem when computing the mesh"</p>
-<p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>
+<p class="whs2">else:</p>
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs2"> print
+ "mesh computed"</p>
-<p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>
+<p class="whs2"> pass
+ </p>
<p class="whs2"> </p>
-<p class="whs2"># compute the mesh</p>
-
-<p class="whs1">print "--------------------------
- compute the mesh of the box"</p>
-
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
-
-<p class="whs1">print ret</p>
-
-<p class="whs1">if ret == 0:</p>
-
-<p class="whs1"> print
- "probleme when computing the mesh"</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
-
-<p class="whs1"> </p>
+<p class="whs2"> </p>
<h3><a name=bookmark1>Construction of a Submesh</a></h3>
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">from
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">from
geompy import *</span></p>
-<p class="whs3">import smesh</p>
+<p class="whs4">import smesh</p>
<p class="whs4"> </p>
-<p class="whs4"># create vertices</p>
-
-<p class="whs3">Point111 = MakeVertex( 0, 0,
- 0)</p>
-
-<p class="whs3">Point211 = MakeVertex(10, 0,
- 0)</p>
+<p class="whs5"># create a box</p>
-<p class="whs3">Point121 = MakeVertex( 0, 10, 0)</p>
+<p class="whs4">box = MakeBoxDXDYDZ(10., 10., 10.)</p>
-<p class="whs3">Point221 = MakeVertex(10, 10, 0)</p>
-
-<p class="whs3">Point112 = MakeVertex( 0, 0,
- 10)</p>
-
-<p class="whs3">Point212 = MakeVertex(10, 0,
- 10)</p>
-
-<p class="whs3">Point122 = MakeVertex( 0, 10, 10)</p>
-
-<p class="whs3">Point222 = MakeVertex(10, 10, 10)</p>
+<p class="whs4">addToStudy(box, "Box")</p>
<p class="whs4"> </p>
-<p class="whs4"># create edges</p>
-
-<p class="whs3">EdgeX111 = MakeEdge(Point111, Point211)</p>
-
-<p class="whs3">EdgeX121 = MakeEdge(Point121, Point221)</p>
-
-<p class="whs3">EdgeX112 = MakeEdge(Point112, Point212)</p>
-
-<p class="whs3">EdgeX122 = MakeEdge(Point122, Point222)</p>
-
-<p class="whs3">EdgeY11 = MakeEdge(Point111, Point121)</p>
+<p class="whs5"># select one edge of
+ the box for definition of a local hypothesis</p>
-<p class="whs3">EdgeY21 = MakeEdge(Point211, Point221)</p>
+<p class="whs4">p5 = MakeVertex(5., 0., 0.)</p>
-<p class="whs3">EdgeY12 = MakeEdge(Point112, Point122)</p>
+<p class="whs4">EdgeX = GetEdgeNearPoint(box, p5)</p>
-<p class="whs3">EdgeY22 = MakeEdge(Point212, Point222)</p>
-
-<p class="whs3">EdgeZ111 = MakeEdge(Point111, Point112)</p>
-
-<p class="whs3">EdgeZ211 = MakeEdge(Point211, Point212)</p>
-
-<p class="whs3">EdgeZ121 = MakeEdge(Point121, Point122)</p>
-
-<p class="whs3">EdgeZ221 = MakeEdge(Point221, Point222)</p>
+<p class="whs4">addToStudyInFather(box, EdgeX, "Edge
+ [0,0,0 - 10,0,0]")</p>
<p class="whs4"> </p>
-<p class="whs4"># create faces</p>
-
-<p class="whs3">FaceX11 = MakeQuad(EdgeY11, EdgeZ111,
- EdgeY12, EdgeZ121)</p>
+<p class="whs5"># create a hexahedral
+ mesh on the box</p>
-<p class="whs3">FaceX21 = MakeQuad(EdgeY21, EdgeZ211,
- EdgeY22, EdgeZ221)</p>
-
-<p class="whs3">FaceY111 = MakeQuad(EdgeX111, EdgeZ111,
- EdgeX112, EdgeZ211)</p>
-
-<p class="whs3">FaceY121 = MakeQuad(EdgeX121, EdgeZ121,
- EdgeX122, EdgeZ221)</p>
-
-<p class="whs3">FaceZ11 = MakeQuad(EdgeX111, EdgeY11,
- EdgeX121, EdgeY21)</p>
-
-<p class="whs3">FaceZ12 = MakeQuad(EdgeX112, EdgeY12,
- EdgeX122, EdgeY22)</p>
+<p class="whs4">quadra = smesh.Mesh(box, "Box : quadrangle
+ 2D mesh")</p>
<p class="whs4"> </p>
-<p class="whs4"># create a solid</p>
+<p class="whs5"># create a regular
+ 1D algorithm for the faces</p>
-<p class="whs3">Block = MakeHexa(FaceX11, FaceX21, FaceY111,
- FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs4">algo1D = quadra.Segment()</p>
<p class="whs4"> </p>
-<p class="whs4"># create a compound</p>
+<p class="whs5"># define "NumberOfSegments"
+ hypothesis to cut</p>
-<p class="whs3">box = MakeCompound([Block])</p>
+<p class="whs5"># all the edges in
+ a fixed number of segments</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># add in the study</p>
-
-<p class="whs3">box_id = addToStudy(box, "Box compound")</p>
+<p class="whs4">algo1D.NumberOfSegments(4)</p>
<p class="whs4"> </p>
-<p class="whs4"># create hexahedral mesh
- on the box</p>
-
-<p class="whs3">hexa = smesh.Mesh(box, "Box compound
- : hexahedrical mesh")</p>
+<p class="whs5"># create a quadrangle
+ 2D algorithm for the faces</p>
-<p class="whs3">algo = hexa.Segment()</p>
+<p class="whs4">quadra.Quadrangle()</p>
<p class="whs4"> </p>
-<p class="whs4"># define "NumberOfSegments"
- hypothesis to cut the edge in a fixed number of segments</p>
+<p class="whs5"># construct a submesh
+ on the edge with a local hypothesis</p>
-<p class="whs3">algo.NumberOfSegments(4)</p>
+<p class="whs4">algo_local = quadra.Segment(EdgeX)</p>
<p class="whs4"> </p>
-<p class="whs4"># creates a quadrangle
- 2D algorithm for the faces</p>
+<p class="whs5"># define "Arithmetic1D"
+ hypothesis to cut the edge<span style="margin-top: 0px;
+ margin-bottom: 0px;
+ font-family: 'Times New Roman', serif;">
+ in several segments with increasing arithmetic length</span></p>
-<p class="whs3">hexa.Quadrangle()</p>
+<p class="whs4">algo_local.Arithmetic1D(1, 4)</p>
<p class="whs4"> </p>
-<p class="whs4"># construct a submesh with
- a local hypothesis</p>
+<p class="whs5"># define "Propagation"
+ hypothesis that propagates all other hypotheses</p>
-<p class="whs3">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs5"># on all edges of the
+ opposite side in case of quadrangular faces</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing arithmetic
- length </p>
-
-<p class="whs3">algo.Arithmetic1D(1, 4)</p>
+<p class="whs4">algo_local.Propagation()</p>
<p class="whs4"> </p>
-<p class="whs4"># define "Propagation"
- hypothesis that propagates all other hypothesis on all edges on the opposite
- side in case of quadrangular faces</p>
+<p class="whs5"># compute the mesh</p>
-<p class="whs3">algo.Propagation()</p>
+<p class="whs4">quadra.Compute() </p>
<p class="whs4"> </p>
-<p class="whs4"># compute the mesh</p>
-
-<p class="whs3">hexa.Compute() </p>
-
-<p class="whs3"> </p>
-
<h3><a name=bookmark2>Editing of a mesh</a></h3>
-<p class="whs3"> </p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs3">import geompy</p>
-
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
-<p class="whs3">import StdMeshers</p>
+<p class="whs4">import smesh</p>
-<p class="whs3"> </p>
-
-<p class="whs3">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs4"> </p>
-<p class="whs3">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs4">def PrintMeshInfo(theMesh):</p>
-<p class="whs3"> </p>
+<p class="whs4"> aMesh
+ = theMesh.GetMesh()</p>
-<p class="whs3">box =
- geompy.MakeBox(0., 0., 0., 20., 20., 20.)</p>
+<p class="whs4"> print
+ "Information about mesh:"</p>
-<p class="whs3">idbox = geompy.addToStudy(box, "box")</p>
+<p class="whs4"> print
+ "Number of nodes :
+ ", aMesh.NbNodes()</p>
-<p class="whs3"> </p>
+<p class="whs4"> print
+ "Number of edges :
+ ", aMesh.NbEdges()</p>
-<p class="whs3">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["EDGE"])</p>
+<p class="whs4"> print
+ "Number of faces :
+ ", aMesh.NbFaces()</p>
-<p class="whs3">edge =
- subShapeList[0]</p>
+<p class="whs4"> print
+ "Number of volumes :
+ ", aMesh.NbVolumes()</p>
-<p class="whs3">name =
- geompy.SubShapeName(edge, box)</p>
+<p class="whs4"> pass</p>
-<p class="whs3">idedge = geompy.addToStudyInFather(box,
- edge, name)</p>
+<p class="whs4"> </p>
-<p class="whs3"> </p>
+<p class="whs5"># create a box</p>
-<p class="whs3">box =
- salome.IDToObject(idbox)</p>
+<p class="whs4">box = geompy.MakeBox(0., 0., 0., 20.,
+ 20., 20.)</p>
-<p class="whs3">edge = salome.IDToObject(idedge)</p>
+<p class="whs4">geompy.addToStudy(box, "box")</p>
-<p class="whs3"> </p>
+<p class="whs4"> </p>
-<p class="whs3">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs5"># select one edge of
+ the box for definition of a local hypothesis</p>
-<p class="whs3">hyp1.SetNumberOfSegments(3)</p>
+<p class="whs4">subShapeList = geompy.SubShapeAll(box,
+ geompy.ShapeType["EDGE"])</p>
-<p class="whs3">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">edge = subShapeList[0]</p>
-<p class="whs3">hyp2.SetMaxElementArea(10)</p>
+<p class="whs4">name = geompy.SubShapeName(edge, box)</p>
-<p class="whs3">hyp3 = smesh.CreateHypothesis("Arithmetic1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">geompy.addToStudyInFather(box, edge, name)</p>
-<p class="whs3">hyp3.SetLength(1,1)</p>
+<p class="whs4"> </p>
-<p class="whs3">hyp3.SetLength(6,0)</p>
+<p class="whs5"># create a mesh</p>
-<p class="whs3">hyp4 = smesh.CreateHypothesis("Propagation",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">tria = smesh.Mesh(box, "Mesh 2D")</p>
-<p class="whs3"> </p>
+<p class="whs4">algo1D = tria.Segment()</p>
-<p class="whs3">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">hyp1 = algo1D.NumberOfSegments(3)</p>
-<p class="whs3">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">algo2D = tria.Triangle()</p>
-<p class="whs3"> </p>
+<p class="whs4">hyp2 = algo2D.MaxElementArea(10.)</p>
-<p class="whs3">mesh = smesh.CreateMesh(box)</p>
+<p class="whs4"> </p>
-<p class="whs3">mesh.AddHypothesis(box,hyp1)</p>
+<p class="whs5"># create a sub-mesh</p>
-<p class="whs3">mesh.AddHypothesis(box,hyp2)</p>
+<p class="whs4">algo_local = tria.Segment(edge)</p>
-<p class="whs3">mesh.AddHypothesis(box,algo1)</p>
+<p class="whs4">hyp3 = algo_local.Arithmetic1D(1, 6)</p>
-<p class="whs3">mesh.AddHypothesis(box,algo2)</p>
+<p class="whs4">hyp4 = algo_local.Propagation()</p>
-<p class="whs3">mesh.AddHypothesis(edge,hyp3)</p>
+<p class="whs4"> </p>
-<p class="whs3">mesh.AddHypothesis(edge,hyp4)</p>
+<p class="whs5"># compute the mesh</p>
-<p class="whs3">mesh.AddHypothesis(edge,algo1)</p>
+<p class="whs4">tria.Compute()</p>
-<p class="whs3"> </p>
+<p class="whs4">PrintMeshInfo(tria)</p>
-<p class="whs3">smesh.Compute(mesh,box)</p>
+<p class="whs4"> </p>
-<p class="whs3">salome.sg.updateObjBrowser(1)</p>
+<p class="whs5"># remove a local hypothesis</p>
-<p class="whs3"> </p>
+<p class="whs4">mesh = tria.GetMesh()</p>
-<p class="whs5"># remove a hypothesis</p>
+<p class="whs4">mesh.RemoveHypothesis(edge, hyp4)</p>
-<p class="whs3">mesh.RemoveHypothesis(edge,hyp4)</p>
+<p class="whs4"> </p>
-<p class="whs3"> </p>
+<p class="whs5"># compute the mesh</p>
-<p class="whs3">smesh.Compute(mesh,box)</p>
+<p class="whs4">tria.Compute()</p>
-<p class="whs3">salome.sg.updateObjBrowser(1)</p>
+<p class="whs4">PrintMeshInfo(tria)</p>
-<p class="whs3"> </p>
+<p class="whs4"> </p>
<p class="whs5"># change the value
- of the hypothesis</p>
-
-<p class="whs3">hyp2.SetMaxElementArea(2)</p>
-
-<p class="whs3">mesh.AddHypothesis(box,hyp2)</p>
+ of the 2D hypothesis</p>
-<p class="whs3"> </p>
-
-<p class="whs3">smesh.Compute(mesh,box)</p>
-
-<p class="whs3">salome.sg.updateObjBrowser(1) </p>
+<p class="whs4">hyp2.SetMaxElementArea(2.)</p>
<p class="whs4"> </p>
-<h3><a name=bookmark3>Export of a Mesh</a></h3>
-
-<p class="whs4"> </p>
+<p class="whs5"># compute the mesh</p>
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
+<p class="whs4">tria.Compute()</p>
-<p class="whs1">import geompy</p>
+<p class="whs4">PrintMeshInfo(tria) </p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs6"> </p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<h3><a name=bookmark3>Export of a Mesh</a></h3>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs7">import geompy</p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs7">import smesh</p>
-<p class="whs2"> </p>
+<p class="whs6"> </p>
-<p class="whs2"># create a box</p>
+<p class="whs6"># create a box</p>
-<p class="whs1">box = geompy.MakeBox(0.,
+<p class="whs7">box = geompy.MakeBox(0.,
0., 0., 100., 200., 300.)</p>
-<p class="whs2"> </p>
-
-<p class="whs2"># add the box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
+<p class="whs7">idbox = geompy.addToStudy(box,
"box")</p>
-<p class="whs2"> </p>
-
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">print "--------------------------
- create Hypothesis"</p>
-
-<p class="whs1">print "--------------------------
- NumberOfSegments"</p>
-
-<p class="whs1">numberOfSegments
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs1">print hypNbSeg.GetName()</p>
-
-<p class="whs1">print hypNbSeg.GetId()</p>
+<p class="whs6"> </p>
-<p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>
+<p class="whs6"># create a mesh</p>
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
- "NumberOfSegments_10")</p>
-
-<p class="whs1">print "--------------------------
- MaxElementArea"</p>
-
-<p class="whs1">maxElementArea =
- 800</p>
-
-<p class="whs1">hypArea = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>
-
-<p class="whs1">print hypArea.GetName()</p>
-
-<p class="whs1">print hypArea.GetId()</p>
-
-<p class="whs1">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea),
- "MaxElementArea_500")</p>
-
-<p class="whs1">print "--------------------------
- MaxElementVolume"</p>
-
-<p class="whs1">maxElementVolume
- = 900</p>
-
-<p class="whs1">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs1">print hypVolume.GetName()</p>
-
-<p class="whs1">print hypVolume.GetId()</p>
-
-<p class="whs1">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume),
- "MaxElementVolume_500")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">print "--------------------------
- create Algorithms"</p>
-
-<p class="whs1">print "--------------------------
- Regular_1D"</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D),
- "Wire Discretisation")</p>
-
-<p class="whs1">print "--------------------------
- MEFISTO_2D"</p>
-
-<p class="whs1">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D),
- "MEFISTO_2D")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># initialize a mesh with
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh),
+<p class="whs7">tetra = smesh.Mesh(box,
"MeshBox")</p>
-<p class="whs1"> </p>
-
-<p class="whs2"># add the hypothesis to
- the box</p>
+<p class="whs6"> </p>
-<p class="whs1">print "--------------------------
- add hypothesis to the box"</p>
+<p class="whs7">algo1D = tetra.Segment()</p>
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs7">algo1D.NumberOfSegments(7)</p>
-<p class="whs1">mesh.AddHypothesis(box,hypArea)</p>
+<p class="whs7"> </p>
-<p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>
+<p class="whs7">algo2D = tetra.Triangle()</p>
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs7">algo2D.MaxElementArea(800.)</p>
-<p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>
-
-<p class="whs2"> </p>
+<p class="whs7"> </p>
-<p class="whs2"># compute the mesh</p>
+<p class="whs7">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-<p class="whs1">print "--------------------------
- compute the mesh of the box"</p>
+<p class="whs7">algo3D.MaxElementVolume(900.)</p>
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
+<p class="whs6"> </p>
-<p class="whs1">print ret</p>
+<p class="whs6"># compute the mesh</p>
-<p class="whs1">if ret == 0:</p>
+<p class="whs7">tetra.Compute()</p>
-<p class="whs1"> print
- "probleme when computing the mesh"</p>
+<p class="whs6"> </p>
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># export the mesh in a
+ MED file</p>
-<p class="whs1">mesh.ExportMED("/tmp/meshMED.med",0)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs4"> </p>
+<p class="whs7">tetra.ExportMED("/tmp/meshMED.med",
+ 0) </p>
<script type="text/javascript" language="javascript1.2">
<!--
<p> </p>
-<p class="whs2">from geompy import
- *</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
<p class="whs2">import smesh</p>
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10,
- 0, 0)</p>
-
-<p class="whs2">Point121 = MakeVertex(
- 0, 10, 0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10,
- 10, 0)</p>
-
-<p class="whs2">Point112 = MakeVertex(
- 0, 0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10,
- 0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex(
- 0, 10, 10)</p>
-
-<p class="whs2">Point222 = MakeVertex(10,
- 10, 10)</p>
-
-<p> </p>
-
-<p># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111,
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121,
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112,
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122,
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111,
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211,
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112,
- Point122)</p>
-
-<p class="whs2">EdgeY22 = MakeEdge(Point212,
- Point222)</p>
-
-<p class="whs2">EdgeZ111 = MakeEdge(Point111,
- Point112)</p>
-
-<p class="whs2">EdgeZ211 = MakeEdge(Point211,
- Point212)</p>
-
-<p class="whs2">EdgeZ121 = MakeEdge(Point121,
- Point122)</p>
-
-<p class="whs2">EdgeZ221 = MakeEdge(Point221,
- Point222)</p>
-
-<p> </p>
-
-<p># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11,
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21,
- EdgeZ211, EdgeY22, EdgeZ221)</p>
-
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111,
- EdgeZ111, EdgeX112, EdgeZ211)</p>
-
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121,
- EdgeZ121, EdgeX122, EdgeZ221)</p>
-
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
- EdgeY11, EdgeX121, EdgeY21)</p>
-
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
- EdgeY12, EdgeX122, EdgeY22)</p>
-
-<p> </p>
-
-<p># create a solid</p>
-
-<p class="whs2">Block = MakeHexa(FaceX11,
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
-
-<p> </p>
+<p class="whs2"> </p>
-<p># create a compound</p>
+<p class="whs3"># create a box</p>
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs2">box = geompy.MakeBoxDXDYDZ(10.,
+ 10., 10.)</p>
-<p> </p>
+<p class="whs2">geompy.addToStudy(box,
+ "Box")</p>
-<p># add in the study</p>
+<p class="whs2"> </p>
-<p class="whs2">box_id = addToStudy(box,
- "Box compound")</p>
+<p class="whs3"># create a hexahedral
+ mesh on the box</p>
-<p> </p>
+<p class="whs2">hexa = smesh.Mesh(box,
+ "Box : hexahedrical mesh")</p>
-<p># create a hexahedral mesh on the box</p>
+<p class="whs2"> </p>
-<p class="whs2">hexa = smesh.Mesh(box,
- "Box compound : hexahedrical mesh")</p>
+<p class="whs3"># create a Regular 1D
+ algorithm for edges</p>
-<p class="whs2">algo = hexa.Segment()</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
-<p> </p>
+<p class="whs2"> </p>
-<p># define "NumberOfSegments" hypothesis to cut an edge in a
- fixed number of segments</p>
+<p class="whs3"># define "Arithmetic1D"
+ hypothesis to cut all edges in several segments with increasing arithmetic
+ length </p>
-<p class="whs2">algo.NumberOfSegments(4)</p>
+<p class="whs2">algo1D.Arithmetic1D(1,
+ 4)</p>
-<p> </p>
+<p class="whs2"> </p>
-<p># create a quadrangle 2D algorithm for faces</p>
+<p class="whs3"># create a quadrangle
+ 2D algorithm for faces</p>
<p class="whs2">hexa.Quadrangle()</p>
-<p> </p>
+<p class="whs2"> </p>
-<p># create a hexahedron 3D algorithm for solids</p>
+<p class="whs3"># create a hexahedron
+ 3D algorithm for solids</p>
<p class="whs2">hexa.Hexahedron()</p>
-<p> </p>
-
-<p># create a local hypothesis</p>
-
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
-
-<p> </p>
-
-<p># define "Arithmetic1D" hypothesis to cut an edge in several
- segments with arithmetic length increasing</p>
-
-<p class="whs2">algo.Arithmetic1D(1,
- 4)</p>
-
-<p> </p>
-
-<p># define "Propagation" hypothesis that propagates all other
- hypothesis on all edges on the opposite side in case of quadrangular faces</p>
-
-<p class="whs2">algo.Propagation()</p>
-
-<p> </p>
+<p class="whs2"> </p>
-<p># compute the mesh</p>
+<p class="whs3"># compute the mesh</p>
<p class="whs2">hexa.Compute() </p>
<h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>
-<p class="whs2"> </p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
<p class="whs2">import smesh</p>
-<p class="whs2">import geompy</p>
-
-<p class="whs2">import salome</p>
-
-<p class="whs2">gg = salome.ImportComponentGUI("GEOM")</p>
-
<p class="whs2"> </p>
-<p class="whs3"># create vertices</p>
+<p class="whs3"># create a face from
+ arc and straight segment</p>
-<p class="whs2">px =
- geompy.MakeVertex(100., 0. ,
- 0. )</p>
+<p class="whs2">px = geompy.MakeVertex(100.,
+ 0. , 0.
+ )</p>
-<p class="whs2">py =
- geompy.MakeVertex(0. ,
- 100., 0. )</p>
+<p class="whs2">py = geompy.MakeVertex(0.
+ , 100.,
+ 0. )</p>
-<p class="whs2">pz =
- geompy.MakeVertex(0. ,
- 0. , 100.)</p>
+<p class="whs2">pz = geompy.MakeVertex(0.
+ , 0. ,
+ 100.)</p>
<p class="whs2"> </p>
-<p class="whs3"># create a vector from
- two points</p>
-
-<p class="whs2">vxy = geompy.MakeVector(px,
+<p class="whs2">exy = geompy.MakeEdge(px,
py)</p>
-<p class="whs2"> </p>
-
-<p class="whs3"># create an arc from
- three points</p>
-
<p class="whs2">arc = geompy.MakeArc(py,
pz, px)</p>
<p class="whs2"> </p>
-<p class="whs3"># create a wire</p>
-
-<p class="whs2">wire = geompy.MakeWire([vxy,
+<p class="whs2">wire = geompy.MakeWire([exy,
arc])</p>
-<p class="whs2">isPlanarFace = 1</p>
-
<p class="whs2"> </p>
-<p class="whs3"># create a face from
- the wire</p>
+<p class="whs2">isPlanarFace = 1</p>
<p class="whs2">face1 = geompy.MakeFace(wire,
isPlanarFace)</p>
-<p class="whs2"> </p>
-
-<p class="whs3"><span style="font-family: 'Times New Roman', serif;">#
- get edges from the face</span></p>
-
-<p class="whs2">vxy,arc = geompy.SubShapeAll(face1,geompy.ShapeType["EDGE"])</p>
-
-<p class="whs3"> </p>
-
-<p class="whs3"># add objects in the
- study</p>
-
-<p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
-
-<p class="whs2">id_arc = geompy.addToStudyInFather(face1,arc,"Arc
- Edge")</p>
+<p class="whs2">geompy.addToStudy(face1,"Face1")</p>
<p class="whs2"> </p>
-<p class="whs3"># display faces</p>
-
-<p class="whs2">gg.createAndDisplayGO(id_face1)</p>
+<p class="whs3"># get edges from the
+ face</p>
-<p class="whs2">gg.setDisplayMode(id_face1,1)</p>
+<p class="whs2">e_straight,e_arc =
+ geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])</p>
-<p class="whs2">gg.setTransparency(id_face1,0.2)</p>
+<p class="whs2">geompy.addToStudyInFather(face1,
+ e_arc, "Arc Edge")</p>
<p class="whs2"> </p>
<p class="whs3"># create hexahedral mesh</p>
<p class="whs2">hexa = smesh.Mesh(face1,
- "Face compound : hexahedrical mesh")</p>
-
-<p class="whs2">algo = hexa.Triangle()</p>
+ "Face : triangle mesh")</p>
<p class="whs2"> </p>
-<p class="whs3"># define "MaxElementArea"
- hypothesis</p>
-
-<p class="whs2">algo.MaxElementArea(30)</p>
-
-<p class="whs2"> </p>
+<p class="whs3"># define "NumberOfSegments"
+ hypothesis to cut a straight edge in a fixed number of segments</p>
-<p class="whs3"># create a local hypothesis
- on the wire</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
-<p class="whs2">algo = hexa.Segment(wire)</p>
+<p class="whs2">algo1D.NumberOfSegments(6)</p>
<p class="whs2"> </p>
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut a straight edge in a fixed number of segments</p>
+<p class="whs3"># define "MaxElementArea"
+ hypothesis</p>
-<p class="whs2">algo.NumberOfSegments(6)</p>
+<p class="whs2">algo2D = hexa.Triangle()</p>
+
+<p class="whs2">algo2D.MaxElementArea(70.0)</p>
<p class="whs2"> </p>
<p class="whs3"># define a local "Deflection1D"
hypothesis on the arc</p>
-<p class="whs2">algo = hexa.Segment(arc)</p>
-
-<p class="whs2">algo.Deflection1D(1)</p>
+<p class="whs2">algo_local = hexa.Segment(e_arc)</p>
-<p class="whs2"> </p>
+<p class="whs2">algo_local.Deflection1D(1.0)</p>
<p class="whs2"> </p>
<p class="whs2">hexa.Compute() </p>
-<p> </p>
-
<h4><a name=bookmark2>Start and End Length</a></h4>
-<p class="whs2">from geompy import
- *</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
+ geompy import *</span></p>
<p class="whs2">import smesh</p>
-<p> </p>
-
-<p># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10,
- 0, 0)</p>
-
-<p class="whs2">Point121 = MakeVertex(
- 0, 10, 0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10,
- 10, 0)</p>
-
-<p class="whs2">Point112 = MakeVertex(
- 0, 0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10,
- 0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex(
- 0, 10, 10)</p>
-
-<p class="whs2">Point222 = MakeVertex(10,
- 10, 10)</p>
-
-<p> </p>
-
-<p># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111,
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121,
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112,
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122,
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111,
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211,
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112,
- Point122)</p>
-
-<p class="whs2">EdgeY22 = MakeEdge(Point212,
- Point222)</p>
-
-<p class="whs2">EdgeZ111 = MakeEdge(Point111,
- Point112)</p>
-
-<p class="whs2">EdgeZ211 = MakeEdge(Point211,
- Point212)</p>
-
-<p class="whs2">EdgeZ121 = MakeEdge(Point121,
- Point122)</p>
-
-<p class="whs2">EdgeZ221 = MakeEdge(Point221,
- Point222)</p>
-
-<p> </p>
-
-<p># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11,
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21,
- EdgeZ211, EdgeY22, EdgeZ221)</p>
-
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111,
- EdgeZ111, EdgeX112, EdgeZ211)</p>
-
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121,
- EdgeZ121, EdgeX122, EdgeZ221)</p>
-
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
- EdgeY11, EdgeX121, EdgeY21)</p>
-
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
- EdgeY12, EdgeX122, EdgeY22)</p>
-
-<p> </p>
+<p class="whs2"> </p>
-<p># create a solid</p>
+<p class="whs3"># create a box</p>
-<p class="whs2">Block = MakeHexa(FaceX11,
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.,
+ 10., 10.)</p>
-<p> </p>
+<p class="whs2">addToStudy(box, "Box")</p>
-<p># create a compound</p>
+<p class="whs2"> </p>
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs3"># get one edge of the
+ box to put local hypothesis on</p>
-<p> </p>
+<p class="whs2">p5 = MakeVertex(5.,
+ 0., 0.)</p>
-<p># add in the study</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box,
+ p5)</p>
-<p class="whs2">box_id = addToStudy(box,
- "Box compound")</p>
+<p class="whs2">addToStudyInFather(box,
+ EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
-<p> </p>
+<p class="whs2"> </p>
-<p># create a hexahedral mesh on the box</p>
+<p class="whs3"># create a hexahedral
+ mesh on the box</p>
<p class="whs2">hexa = smesh.Mesh(box,
- "Box compound : hexahedrical mesh")</p>
-
-<p class="whs2">algo = hexa.Segment()</p>
-
-<p> </p>
-
-<p># define "NumberOfSegments" hypothesis to cut an edge in a
- fixed number of segments</p>
+ "Box : hexahedrical mesh")</p>
-<p class="whs2">algo.NumberOfSegments(4)</p>
+<p class="whs2"> </p>
-<p> </p>
+<p class="whs3"># set algorithms</p>
-<p># create a quadrangle 2D algorithm for faces</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
<p class="whs2">hexa.Quadrangle()</p>
-<p> </p>
-
-<p># create a hexahedron 3D algorithm for solids</p>
-
<p class="whs2">hexa.Hexahedron()</p>
-<p> </p>
-
-<p># create a local hypothesis</p>
-
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
-
-<p> </p>
-
-<p># define "StartEndLength" hypothesis to cut an edge in several
- segments with increasing geometric length </p>
-
-<p class="whs2">algo.StartEndLength(1,
- 6)</p>
-
-<p> </p>
-
-<p># define "Propagation" hypothesis that propagates all other
- hypothesis on all edges on the opposite side in case of quadrangular faces</p>
-
-<p class="whs2">algo.Propagation()</p>
-
-<p> </p>
-
-<p># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
<p class="whs2"> </p>
-<h4><a name=bookmark3>Average Length</a></h4>
-
-<p class="whs2">from geompy import
- *</p>
+<p class="whs3"># define "NumberOfSegments"
+ hypothesis to cut an edge in a fixed number of segments</p>
-<p class="whs2">import smesh</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
<p class="whs2"> </p>
-<p class="whs3"># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex(
- 0, 0, 0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10,
- 0, 0)</p>
-
-<p class="whs2">Point121 = MakeVertex(
- 0, 10, 0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10,
- 10, 0)</p>
-
-<p class="whs2">Point112 = MakeVertex(
- 0, 0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10,
- 0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex(
- 0, 10, 10)</p>
+<p class="whs3"># create a local hypothesis</p>
-<p class="whs2">Point222 = MakeVertex(10,
- 10, 10)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
<p class="whs2"> </p>
-<p class="whs3"># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111,
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121,
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112,
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122,
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111,
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211,
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112,
- Point122)</p>
+<p class="whs3"># define "StartEndLength"
+ hypothesis to cut an edge in several segments with increasing geometric
+ length</p>
-<p class="whs2">EdgeY22 = MakeEdge(Point212,
- Point222)</p>
+<p class="whs2">algo_local.StartEndLength(1,
+ 6)</p>
-<p class="whs2">EdgeZ111 = MakeEdge(Point111,
- Point112)</p>
+<p class="whs2"> </p>
-<p class="whs2">EdgeZ211 = MakeEdge(Point211,
- Point212)</p>
+<p class="whs3"># define "Propagation"
+ hypothesis that propagates all other hypothesis</p>
-<p class="whs2">EdgeZ121 = MakeEdge(Point121,
- Point122)</p>
+<p class="whs3"># on all edges on the
+ opposite side in case of quadrangular faces</p>
-<p class="whs2">EdgeZ221 = MakeEdge(Point221,
- Point222)</p>
+<p class="whs2">algo_local.Propagation()</p>
<p class="whs2"> </p>
-<p class="whs3"># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11,
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21,
- EdgeZ211, EdgeY22, EdgeZ221)</p>
+<p class="whs3"># compute the mesh</p>
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111,
- EdgeZ111, EdgeX112, EdgeZ211)</p>
+<p class="whs2">hexa.Compute() </p>
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121,
- EdgeZ121, EdgeX122, EdgeZ221)</p>
+<h4><a name=bookmark3>Average Length</a></h4>
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
- EdgeY11, EdgeX121, EdgeY21)</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
+ geompy import *</span></p>
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
- EdgeY12, EdgeX122, EdgeY22)</p>
+<p class="whs2">import smesh</p>
<p class="whs2"> </p>
-<p class="whs3"># create a solid</p>
+<p class="whs3"># create a box</p>
-<p class="whs2">Block = MakeHexa(FaceX11,
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.,
+ 10., 10.)</p>
-<p class="whs2"> </p>
+<p class="whs2">addToStudy(box, "Box")</p>
-<p class="whs3"># create a compound</p>
+<p class="whs2"> </p>
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs3"># get one edge of the
+ box to put local hypothesis on</p>
-<p class="whs2"> </p>
+<p class="whs2">p5 = MakeVertex(5.,
+ 0., 0.)</p>
-<p class="whs3"># add in the study</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box,
+ p5)</p>
-<p class="whs2">box_id = addToStudy(box,
- "Box compound")</p>
+<p class="whs2">addToStudyInFather(box,
+ EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
<p class="whs2"> </p>
mesh on the box</p>
<p class="whs2">hexa = smesh.Mesh(box,
- "Box compound : hexahedrical mesh")</p>
-
-<p class="whs2">algo = hexa.Segment()</p>
+ "Box : hexahedrical mesh")</p>
<p class="whs2"> </p>
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs2">algo.NumberOfSegments(4)</p>
-
-<p class="whs2"> </p>
+<p class="whs3"># set algorithms</p>
-<p class="whs3"># create a quadrangle
- 2D algorithm for faces</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
<p class="whs2">hexa.Quadrangle()</p>
+<p class="whs2">hexa.Hexahedron()</p>
+
<p class="whs2"> </p>
-<p class="whs3"># create a hexahedron
- 3D algorithm for solids</p>
+<p class="whs3"># define "NumberOfSegments"
+ hypothesis to cut all edges in a fixed number of segments</p>
-<p class="whs2">hexa.Hexahedron()</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
<p class="whs2"> </p>
-<p class="whs3"># create a local hypothesis</p>
+<p class="whs3"># create a sub-mesh</p>
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
<p class="whs2"> </p>
<p class="whs3"># define "LocalLength"
hypothesis to cut an edge in several segments with the same length</p>
-<p class="whs2">algo.LocalLength(2)</p>
+<p class="whs2">algo_local.LocalLength(2.)</p>
<p class="whs2"> </p>
<p class="whs3"># define "Propagation"
- hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;">
- the opposite side in case of quadrangular faces</span></p>
+ hypothesis that propagates all other hypothesis</p>
+
+<p class="whs3"># on all edges on the
+ opposite side in case of quadrangular faces</p>
-<p class="whs2">algo.Propagation()</p>
+<p class="whs2">algo_local.Propagation()</p>
<p class="whs2"> </p>
<p class="whs2">hexa.Compute() </p>
-<p class="whs2"> </p>
-
-<p class="whs2"> </p>
-
<h3>Defining 2D and 3D hypotheses</h3>
<h4><a name=bookmark4>Maximum Element Area</a></h4>
<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
smesh</span></p>
-<p class="whs4">import geompy</p>
-
<p class="whs4">import salome</p>
<p class="whs4"> </p>
<h4><a name=bookmark5>Maximum Element Volume</a></h4>
<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import StdMeshers</p>
+ geompy</span></p>
-<p class="whs4">import NETGENPlugin</p>
+<p class="whs4">import smesh</p>
<p class="whs4"> </p>
-<p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs5"># create a cylinder</p>
-<p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs4">cyl = geompy.MakeCylinderRH(30.,
+ 50.)</p>
-<p class="whs4">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs4">geompy.addToStudy(cyl,
+ "cyl")</p>
<p class="whs4"> </p>
-<p class="whs5"># create a box</p>
+<p class="whs5"># create a mesh on
+ the cylinder</p>
-<p class="whs4">box = geompy.MakeCylinderRH(30,
- 50) #MakeBox(0., 0., 0., </p>
-
-<p class="whs4">100., 200., 300.)</p>
+<p class="whs4">tetra = smesh.Mesh(cyl,
+ "Cylinder : tetrahedrical mesh")</p>
<p class="whs4"> </p>
-<p class="whs5"># add the box in the
- study</p>
-
-<p class="whs4">idbox = geompy.addToStudy(box,
- "box")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a set of hypotheses</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"># Number of Segments</p>
-
-<p class="whs4">numberOfSegments
- = 7</p>
-
-<p class="whs4">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs5"># assign algorithms</p>
-<p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
+<p class="whs4">algo1D = tetra.Segment()</p>
-<p class="whs4">print hypNbSeg.GetName()</p>
+<p class="whs4">algo2D = tetra.Triangle()</p>
-<p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg),
- "NumberOfSegments_7")</p>
+<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
<p class="whs4"> </p>
-<p class="whs5"># Max Element Area</p>
-
-<p class="whs4">maxElementArea =
- 800</p>
-
-<p class="whs4">hypArea = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs5"># assign 1D and 2D
+ hypotheses</p>
-<p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>
+<p class="whs4">algo1D.NumberOfSegments(7)</p>
-<p class="whs4">print hypArea.GetName()</p>
-
-<p class="whs4">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea),
- "MaxElementArea_800")</p>
+<p class="whs4">algo2D.MaxElementArea(150.)</p>
<p class="whs4"> </p>
-<p class="whs5"># Max Element Volume</p>
-
-<p class="whs4">maxElementVolume
- = 900</p>
-
-<p class="whs4">hypVolume = smesh.CreateHypothesis("MaxElementVolume",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs4">print hypVolume.GetName()</p>
-
-<p class="whs4">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume),
- "MaxElementVolume_900")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># create a set of algorithms</p>
-
-<p class="whs5"> </p>
-
-<p class="whs5"># Regular_1D</p>
-
-<p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
- "Wire Discretisation")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># MEFISTO_2D</p>
-
-<p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
- "MEFISTO_2D")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># NETGEN_3D (Tetrahedron
- meshing algorithm)</p>
-
-<p class="whs4">tetra3D = smesh.CreateHypothesis("NETGEN_3D",
- "libNETGENEngine.so")</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(tetra3D),
- "NETGEN_3D")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># initialize a mesh
- with the box</p>
-
-<p class="whs4">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh),
- "MeshBox")</p>
-
-<p class="whs4"> </p>
-
-<p class="whs5"># add hypotheses and
- algorithms to the box</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypArea)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,regular1D)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>
+<p class="whs5"># assign Max Element
+ Volume hypothesis</p>
-<p class="whs4">mesh.AddHypothesis(box,tetra3D)</p>
+<p class="whs4">algo3D.MaxElementVolume(200.)</p>
<p class="whs4"> </p>
<p class="whs5"># compute the mesh</p>
-<p class="whs4">ret = smesh.Compute(mesh,box)</p>
+<p class="whs4">ret = tetra.Compute()</p>
<p class="whs4">if ret == 0:</p>
<p class="whs4">else:</p>
<p class="whs4"> print
- "Computation succeded"</p>
-
-<p class="whs4">salome.sg.updateObjBrowser(1)
- </p>
-
-<p class="whs4"> </p>
+ "Computation succeded" </p>
<h4><a name=bookmark6>Length from Edges</a></h4>
<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs2">import geompy</p>
+ geompy</span></p>
<p class="whs2">import smesh</p>
<p class="whs2">sketcher2 = geompy.MakeSketcher("Sketcher:F
20 20:TT 50 20:TT 50 50:TT 20 50:WW")</p>
-<p class="whs2">isPlanarFace = 1</p>
-
<p class="whs2"> </p>
<p class="whs3"># create a face from
two wires</p>
-<p class="whs2">face1 = geompy.MakeFaces([sketcher1,
- sketcher2],isPlanarFace)</p>
-
-<p class="whs2"> </p>
+<p class="whs2">isPlanarFace = 1</p>
-<p class="whs3"># add object in the study</p>
+<p class="whs2">face1 = geompy.MakeFaces([sketcher1,
+ sketcher2], isPlanarFace)</p>
-<p class="whs2">id_face1 = geompy.addToStudy(face1,"Face1")</p>
+<p class="whs2">geompy.addToStudy(face1,
+ "Face1")</p>
<p class="whs2"> </p>
<p class="whs3"># Define 1D meshing</p>
-<p class="whs2">algo = tria.Segment()</p>
+<p class="whs2">algo1D = tria.Segment()</p>
-<p class="whs2">algo.NumberOfSegments(2)</p>
+<p class="whs2">algo1D.NumberOfSegments(2)</p>
<p class="whs2"> </p>
<p class="whs3"># create and assign the
algorithm for 2D meshing with triangles</p>
-<p class="whs2">algo = tria.Triangle()</p>
+<p class="whs2">algo2D = tria.Triangle()</p>
<p class="whs2"> </p>
<p class="whs3"># create and assign "LengthFromEdges"
- hypothesis to build triangles </p>
-
-<p class="whs3"># based on the length
- of the edges taken from the wire</p>
+ hypothesis to build triangles<span style="font-family: 'Times New Roman', serif;">
+ based on the length of the edges taken from the wire</span></p>
-<p class="whs2">algo.LengthFromEdges()</p>
+<p class="whs2">algo2D.LengthFromEdges()</p>
<p class="whs2"> </p>
<h4><a name=bookmark7>Propagation</a></h4>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from
- geompy import *</span></p>
+<p class="whs2">from geompy import
+ *</p>
<p class="whs2">import smesh</p>
<p class="whs2"> </p>
-<p class="whs3"># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex(
- 0, 0, 0)</p>
+<p class="whs3"># create a box</p>
-<p class="whs2">Point211 = MakeVertex(10,
- 0, 0)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.,
+ 10., 10.)</p>
-<p class="whs2">Point121 = MakeVertex(
- 0, 10, 0)</p>
+<p class="whs2">addToStudy(box, "Box")</p>
-<p class="whs2">Point221 = MakeVertex(10,
- 10, 0)</p>
+<p class="whs2"> </p>
-<p class="whs2">Point112 = MakeVertex(
- 0, 0, 10)</p>
+<p class="whs3"># get one edge of the
+ box to put local hypothesis on</p>
-<p class="whs2">Point212 = MakeVertex(10,
- 0, 10)</p>
+<p class="whs2">p5 = MakeVertex(5.,
+ 0., 0.)</p>
-<p class="whs2">Point122 = MakeVertex(
- 0, 10, 10)</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box,
+ p5)</p>
-<p class="whs2">Point222 = MakeVertex(10,
- 10, 10)</p>
+<p class="whs2">addToStudyInFather(box,
+ EdgeX, "Edge [0,0,0 - 10,0,0]")</p>
<p class="whs2"> </p>
-<p class="whs3"># create edges</p>
+<p class="whs3"># create a hexahedral
+ mesh on the box</p>
-<p class="whs2">EdgeX111 = MakeEdge(Point111,
- Point211)</p>
+<p class="whs2">hexa = smesh.Mesh(box,
+ "Box : hexahedrical mesh")</p>
-<p class="whs2">EdgeX121 = MakeEdge(Point121,
- Point221)</p>
+<p class="whs2"> </p>
-<p class="whs2">EdgeX112 = MakeEdge(Point112,
- Point212)</p>
+<p class="whs3"># set global algorithms
+ and hypotheses</p>
-<p class="whs2">EdgeX122 = MakeEdge(Point122,
- Point222)</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
-<p class="whs2">EdgeY11 = MakeEdge(Point111,
- Point121)</p>
+<p class="whs2">hexa.Quadrangle()</p>
-<p class="whs2">EdgeY21 = MakeEdge(Point211,
- Point221)</p>
+<p class="whs2">hexa.Hexahedron()</p>
-<p class="whs2">EdgeY12 = MakeEdge(Point112,
- Point122)</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
-<p class="whs2">EdgeY22 = MakeEdge(Point212,
- Point222)</p>
+<p class="whs2"> </p>
-<p class="whs2">EdgeZ111 = MakeEdge(Point111,
- Point112)</p>
+<p class="whs3"># create a sub-mesh with
+ local 1D hypothesis and propagation</p>
-<p class="whs2">EdgeZ211 = MakeEdge(Point211,
- Point212)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
-<p class="whs2">EdgeZ121 = MakeEdge(Point121,
- Point122)</p>
+<p class="whs2"> </p>
+
+<p class="whs3"># define "Arithmetic1D"
+ hypothesis to cut an edge in several segments with increasing length</p>
-<p class="whs2">EdgeZ221 = MakeEdge(Point221,
- Point222)</p>
+<p class="whs2">algo_local.Arithmetic1D(1,
+ 4)</p>
<p class="whs2"> </p>
-<p class="whs3"># create faces</p>
+<p class="whs3"># define "Propagation"
+ hypothesis that propagates all other 1D hypotheses</p>
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11,
- EdgeZ111, EdgeY12, EdgeZ121)</p>
+<p class="whs3"># from all edges on the
+ opposite side of a face in case of quadrangular faces</p>
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21,
- EdgeZ211, EdgeY22, EdgeZ221)</p>
+<p class="whs2">algo_local.Propagation()</p>
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111,
- EdgeZ111, EdgeX112, EdgeZ211)</p>
+<p class="whs2"> </p>
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121,
- EdgeZ121, EdgeX122, EdgeZ221)</p>
+<p class="whs3"># compute the mesh</p>
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111,
- EdgeY11, EdgeX121, EdgeY21)</p>
+<p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span>
+ </p>
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112,
- EdgeY12, EdgeX122, EdgeY22)</p>
+<h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
-<p class="whs2"> </p>
+<p class="whs4">import geompy</p>
-<p class="whs3"># create a solid</p>
+<p class="whs4">import smesh</p>
-<p class="whs2">box = MakeHexa(FaceX11,
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs6"> </p>
-<p class="whs2"> </p>
+<p class="whs6"># create a box</p>
-<p class="whs3"># add in the study</p>
+<p class="whs4">box = geompy.MakeBoxDXDYDZ(10.,
+ 10., 10.)</p>
-<p class="whs2">box_id = addToStudy(box,
+<p class="whs4">geompy.addToStudy(box,
"Box")</p>
-<p class="whs2"> </p>
+<p class="whs4"> </p>
-<p class="whs3"># create a hexahedral
+<p class="whs6"># 1. Create a hexahedral
mesh on the box</p>
-<p class="whs2">hexa = smesh.Mesh(box,
+<p class="whs4">hexa = smesh.Mesh(box,
"Box : hexahedrical mesh")</p>
-<p class="whs2"> </p>
+<p class="whs6"> </p>
-<p class="whs3"># create an 1D algorithm
+<p class="whs6"># create a Regular 1D algorithm
for edges</p>
-<p class="whs2">algo = hexa.Segment()</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs2">algo.NumberOfSegments(4)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs3"># create a quadrangle
- 2D algorithm for faces</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
+<p class="whs4">algo1D = hexa.Segment()</p>
-<p class="whs2"> </p>
+<p class="whs6"> </p>
-<p class="whs3"># create a hexahedron
- 3D algorithm for solids</p>
+<p class="whs6"># create a quadrangle 2D
+ algorithm for faces</p>
-<p class="whs2">hexa.Hexahedron()</p>
+<p class="whs4">algo2D = hexa.Quadrangle()</p>
-<p class="whs2"> </p>
+<p class="whs6"> </p>
-<p class="whs3"># create a local hypothesis</p>
+<p class="whs6"># create a hexahedron 3D
+ algorithm for solids</p>
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs4">algo3D = hexa.Hexahedron()</p>
-<p class="whs2"> </p>
+<p class="whs6"> </p>
-<p class="whs3"># define "Arithmetic1D"
- hypothesis to cut an edge<span style="font-family: 'Times New Roman', serif;">
- in several segments with increasing length</span></p>
+<p class="whs6"># define hypotheses</p>
-<p class="whs2">algo.Arithmetic1D(1,
+<p class="whs4">algo1D.Arithmetic1D(1,
4)</p>
-<p class="whs2"> </p>
-
-<p class="whs3"># define "Propagation"
- hypothesis that propagates all other 1D hypotheses</p>
-
-<p class="whs3"># from all edges on the
- opposite side of a face in case of quadrangular faces</p>
+<p class="whs6"> </p>
-<p class="whs2">algo.Propagation()</p>
+<p class="whs6"># compute the mesh</p>
-<p class="whs2"> </p>
+<p class="whs4">hexa.Compute()</p>
-<p class="whs3"># compute the mesh</p>
+<p class="whs6"> </p>
-<p class="whs2">hexa.Compute() </p>
+<p class="whs6"># 2. Create a tetrahedral
+ mesh on the box</p>
-<h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
+<p class="whs4">tetra = smesh.Mesh(box,
+ "Box : tetrahedrical mesh")</p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
-
-<p class="whs4">import StdMeshers</p>
+<p class="whs6"> </p>
-<p class="whs4">import NETGENPlugin</p>
+<p class="whs6"># create a Regular 1D algorithm
+ for edges</p>
-<p class="whs4"> </p>
+<p class="whs4">algo1D = tetra.Segment()</p>
-<p class="whs4">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs6"> </p>
-<p class="whs4">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs6"># create a Mefisto 2D algorithm
+ for faces</p>
-<p class="whs4">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs4">algo2D = tetra.Triangle()</p>
<p class="whs6"> </p>
-<p class="whs6"># create algorithms</p>
-
-<p class="whs4">print "--------------------------
- create Algorithms"</p>
+<p class="whs6"># create a Netgen 3D algorithm
+ for solids</p>
-<p class="whs4">print "--------------------------
- Regular_1D (Wire discretisation)"</p>
+<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-<p class="whs4">regular1D = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs6"> </p>
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D),
- "Wire Discretisation")</p>
+<p class="whs6"># define hypotheses</p>
-<p class="whs4"> </p>
+<p class="whs4">algo1D.Arithmetic1D(1,
+ 4)</p>
-<p class="whs4">print "--------------------------
- MEFISTO_2D (Triangle meshing algorithm)"</p>
+<p class="whs4">algo2D.LengthFromEdges()</p>
-<p class="whs4">mefisto2D = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs6"> </p>
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D),
- "MEFISTO_2D")</p>
+<p class="whs6"># compute the mesh</p>
-<p class="whs4"> </p>
+<p class="whs4">tetra.Compute()</p>
-<p class="whs4">print "--------------------------
- Quadrangle_2D (Quadrangle meshing algorithm)"</p>
+<p class="whs6"> </p>
-<p class="whs4">quad2D = smesh.CreateHypothesis(
- "Quadrangle_2D", "libStdMeshersEngine.so" )</p>
+<p class="whs6"># 3. Create a tetrahedral
+ mesh on the box with NETGEN_2D3D algorithm</p>
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D),
- "Quadrangle_2D")</p>
+<p class="whs4">tetraN = smesh.Mesh(box,
+ "Box : tetrahedrical mesh by NETGEN_2D3D")</p>
-<p class="whs4"> </p>
+<p class="whs6"> </p>
-<p class="whs4">print "--------------------------
- Hexa_3D (Hexahedron meshing algorithm)"</p>
+<p class="whs6"># create a Netgen_2D3D
+ algorithm for solids</p>
-<p class="whs4">hexa3D = smesh.CreateHypothesis("Hexa_3D",
- "libStdMeshersEngine.so")</p>
+<p class="whs4">is3D = 1</p>
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D),
- "HEXA_3D")</p>
+<p class="whs4">algo3D = tetraN.Netgen(is3D)</p>
-<p class="whs4"> </p>
+<p class="whs6"> </p>
-<p class="whs4">print "--------------------------
- NETGEN_3D (Tetrahedron meshing algorithm)"</p>
+<p class="whs6"># define hypotheses</p>
-<p class="whs4">netgen3D = smesh.CreateHypothesis("NETGEN_3D",
- "libNETGENEngine.so")</p>
+<p class="whs4">n23_params = algo3D.Parameters()</p>
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D),
- "NETGEN_3D")</p>
+<p class="whs6"> </p>
-<p class="whs4">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># compute the mesh</p>
-<p class="whs6"> </p>
+<p class="whs4">tetraN.Compute()
+ </p>
<script type="text/javascript" language="javascript1.2">
<!--
</script>
<style type="text/css">
<!--
-table.whs1 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs2 { width:50%; }
-tr.whs3 { x-cell-content-align:top; }
-td.whs4 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs5 { border:none; width:335px; height:323px; border-style:none; }
-td.whs6 { width:50%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs7 { border:none; width:350px; height:323px; border-style:none; }
-p.whs8 { margin-left:40px; }
-img_whs9 { border:none; width:27px; height:24px; border-style:none; }
-img_whs10 { border:none; width:434px; height:541px; float:none; border-style:none; }
-ul.whs11 { list-style:disc; }
-p.whs12 { margin-left:84px; }
-img_whs13 { border:none; width:26px; height:25px; border-style:none; }
-img_whs14 { border:none; width:29px; height:28px; border-style:none; }
+img_whs1 { border:none; width:27px; height:24px; border-style:none; }
+img_whs2 { border:none; width:387px; height:334px; float:none; border-style:none; }
+ul.whs3 { list-style:disc; }
+table.whs4 { x-cell-content-align:top; width:100%; border-spacing:0px; }
+col.whs5 { width:50%; }
+tr.whs6 { x-cell-content-align:top; }
+td.whs7 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
+p.whs8 { margin-left:0px; margin-right:53px; }
+img_whs9 { border:none; width:389px; height:334px; float:none; border-style:none; }
+td.whs10 { width:50%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
+p.whs11 { margin-left:0px; }
+p.whs12 { margin-left:40px; }
+col.whs13 { width:33.333%; }
+td.whs14 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
+td.whs15 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-top-style:none; }
+td.whs16 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
+td.whs17 { width:33.333%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
+td.whs18 { width:33.333%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
+td.whs19 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }
+p.whs20 { font-weight:bold; margin-left:0px; }
+p.whs21 { font-weight:bold; }
+img_whs22 { border:none; width:441px; height:541px; float:none; border-style:none; }
+p.whs23 { margin-left:84px; }
+p.whs24 { margin-left:156px; }
+p.whs25 { margin-left:156px; font-weight:bold; }
+img_whs26 { border:none; width:26px; height:25px; border-style:none; }
+img_whs27 { border:none; width:29px; height:28px; border-style:none; }
-->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
+</style><script type="text/javascript" language="JavaScript">
+<!--
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
+{
+ var strNSS = "<style type='text/css'>";
+ strNSS += "p.whs8 {margin-left:1pt; }";
+ strNSS += "p.whs11 {margin-left:1pt; }";
+ strNSS += "p.whs20 {margin-left:1pt; }";
+ strNSS +="</style>";
+ document.write(strNSS);
+}
+//-->
+</script>
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
<!--
function reDo() {
if (innerWidth != origWidth || innerHeight != origHeight)
writeIntopicBar(4);
//-->
</script>
-<h1>Extrusion along a path</h1>
+<h1><img src="image101.gif" width="27px" height="24px" border="0" class="img_whs1">Extrusion along a path</h1>
-<p>In principle, Extrusion along a path works in the same way as Extrusion,
+<p>In principle, <span style="font-weight: bold;"><B>Extrusion along a path</B></span>
+ works in the same way as <span style="font-weight: bold;"><B>Extrusion</B></span>,
the main difference is that we define not a vector, but a path of extrusion
- which must be a meshed edge or wire. To get an idea of how this algorithm
- works, let's see the left image, where we have a 1D circle edge and a
- 2D hexagon to be extruded along this path (in the picture they are angular
- because we show the wireframe of the mesh). And now let's see the right
- image, showing the result of the operation. </p>
+ which must be a meshed edge. To get an idea of how this algorithm works,
+ examine several examples, starting from the most simple case of extrusion
+ along a straight edge. In all examples the same mesh will be extruded
+ along different paths and with different parameters. This sample 2D mesh
+ has two quadrangle faces and seven edges. Look at the picture, where white
+ digits are the node numbers and green are the element numbers:</p>
+
+<p><span style="margin-left: 40px;"><img src="pics/mesh_for_extr_along_path.png" x-maintain-ratio="TRUE" width="387px" height="334px" border="0" class="img_whs2"> .</span></p>
<p> </p>
-<table x-use-null-cells cellspacing="0" width="100%" class="whs1">
-<col class="whs2">
-<col class="whs2">
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Extrusion along
+ a straight edge</B></span> (not using base point or angles)</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
-<tr valign="top" class="whs3">
-<td width="50%" class="whs4">
-<p><img src="image102.gif" width="335px" height="323px" border="0" class="img_whs5"></td>
-<td width="50%" class="whs6">
-<p><img src="image104.gif" width="350px" height="323px" border="0" class="img_whs7"></td></tr>
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p class="whs8"><img src="pics/straight_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p class="whs11"><img src="pics/straight_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
</table>
-<p> </p>
+<p class="whs12"> </p>
+
+<p class="whs12">The left image shows a 1D path mesh, built
+ on a linear edge, and the initial 2D mesh. The right image shows the result
+ of extrusion of two edges (#1 and #2) of the initial mesh along the path.
+ Node #1 of path mesh has been selected as <span style="font-weight: bold;"><B>Start
+ node</B></span>.</p>
+
+<p class="whs12"> </p>
+
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Extrusion along
+ a curvilinear edge</B></span> (with and without angles)</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs13">
+<col class="whs13">
+<col class="whs13">
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs14">
+<p><img src="pics/curvi_simple_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs15">
+<p><img src="pics/curvi_simple_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs16">
+<p><img src="pics/curvi_angles_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs17">
+<p>The left image shows a 1D path mesh, built on curvilinear edge, and
+ the initial 2D
+ mesh.</td>
+<td width="33.333%" class="whs18">
+<p>The central image shows the result of extrusion of one edge (#2) of
+ the initial mesh along the path. Node
+ #1 of path mesh has been selected as <span style="font-weight: bold;"><B>Start
+ node</B></span>.</td>
+<td width="33.333%" class="whs19">
+<p>The same, but using angles {45, 45, 45, 0, -45, -45, -45}</td></tr>
+</table>
+
+<p class="whs11"> </p>
+
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Extrusion
+ along a sub-mesh.</B></span></p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
+
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p><img src="pics/edge_wire_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p><img src="pics/edge_wire_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+</table>
-<p> </p>
+<p class="whs12"> </p>
+
+<p class="whs12">In this example the path mesh has been built
+ on a wire (polyline with six edges). The first edge of the wire was used
+ as <span style="font-weight: bold;"><B>Shape (edge)</B></span>, node #1 as <span
+ style="font-weight: bold;"><B>Start node</B></span>. The angles have been defined
+ as {10, 10, 10}. The middle edge (#4) of the initial mesh has been extruded.</p>
+
+<p class="whs12"> </p>
+
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p class="whs20">Extrusion
+ of 2d elements along a sub-mesh.</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
+
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p><img src="pics/edge_wire_3d_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p><img src="pics/edge_wire_3d_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+</table>
+
+<p class="whs12"> </p>
+
+<p class="whs12">This extrusion bases on the same path mesh
+ as in the previous example but the third edge of the wire was set as <span
+ style="font-weight: bold;"><B>Shape (edge)</B></span> and node #4 as <span style="font-weight: bold;"><B>Start
+ node</B></span>. Please note, that the extrusion has been done in direction
+ from node #4 to node #3, i.e. against the wire direction. In this example
+ both faces of the initial mesh have been extruded.</p>
+
+<p class="whs12"> </p>
+
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p class="whs21">Extrusion of 2d elements
+ along a closed path.</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs13">
+<col class="whs13">
+<col class="whs13">
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs14">
+<p><img src="pics/circle_simple_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs15">
+<p><img src="pics/circle_simple_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs16">
+<p><img src="pics/circle_angles_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs17">
+<p>The left image shows a path mesh built on a closed edge (circle).</td>
+<td width="33.333%" class="whs18">
+<p>The central image shows the result of extrusion of both faces of the
+ initial mesh. Note, that no sewing has been done, so, there are six coincident
+ nodes and two coincident faces in the resulting mesh.</td>
+<td width="33.333%" class="whs19">
+<p>The same, but using angles {45, -45, 45, -45, 45, -45, 45, -45}</td></tr>
+</table>
+
+<p class="whs12"> </p>
<p> </p>
<p class=TODO>To use Extrusion along a path:</p>
-<p class="whs8">1. From the <span style="font-weight: bold;"><B>Modification
+<p class="whs12">1. From the <span style="font-weight: bold;"><B>Modification
</B></span>menu choose the <span style="font-weight: bold;"><B>Extrusion along
- a path </B></span>item or click <img src="image101.gif" width="27px" height="24px" border="0" class="img_whs9"> button in the toolbar. The
+ a path </B></span>item or click <img src="image101.gif" width="27px" height="24px" border="0" class="img_whs1"> button in the toolbar. The
following dialog box will appear:</p>
-<p class="whs8"> </p>
+<p class="whs12"> </p>
<p class=TODO
- style="margin-left: 80px;"><img src="pics/a-extusionalongapath2.png" x-maintain-ratio="TRUE" width="434px" height="541px" border="0" class="img_whs10"></p>
+ style="margin-left: 80px;"><img src="pics/extrusion1.png" x-maintain-ratio="TRUE" width="441px" height="541px" border="0" class="img_whs22"></p>
-<p class="whs8"> </p>
+<p class="whs12"> </p>
-<p class="whs8">2. In the dialog box you should </p>
+<p class="whs12">2. In the dialog box you should </p>
-<ul type="disc" class="whs11">
+<ul type="disc" class="whs3">
- <li class=kadov-p><p class="whs12">select the type of
+ <li class=kadov-p><p class="whs23">select the type of
elements which will be extruded (1D or 2D),</p></li>
- <li class=kadov-p><p class="whs12">specify the IDs of
- the elements which will be extruded by selecting them in the 3D viewer
- or <span style="font-weight: bold;"><B>Select the whole mesh, submesh or
- grou</B></span>p,</p></li>
+ <li class=kadov-p><p class="whs23">specify the <span style="font-weight: bold;"><B>IDs
+ of the elements</B></span> which will be extruded by selecting them in the
+ 3D viewer or <span style="font-weight: bold;"><B>Select the whole mesh, submesh
+ or group</B></span>,</p></li>
+
+ <li class=kadov-p><p class="whs23">define the <span style="font-weight: bold;"><B>Path</B></span>
+ along which the elements will be extruded, </p></li>
+</ul>
+
+<p class="whs24">Path definition consists of several elements
+ </p>
+
+<ul type="disc" class="whs3">
+
+ <li class=kadov-p><p class="whs25">Mesh
+ - <span style="font-weight: normal;">containing a 1D sub-mesh on the edge,
+ along which proceeds the extrusion.</span></p></li>
+
+ <li class=kadov-p><p class="whs25">Shape
+ (edge) - <span style="font-weight: normal;">as the mesh can be complex,
+ the edge is used to define the sub-mesh for the path.</span></p></li>
- <li class=kadov-p><p class="whs12">specify the path along
- which the elements will be extruded, for this you should specify the <span
- style="font-weight: bold;"><B>Mesh</B></span>, the <span style="font-weight: bold;"><B>Shape</B></span>,
- and the <span style="font-weight: bold;"><B>Start point</B></span> for the extrusion.
- </p></li>
+ <li class=kadov-p><p class="whs25">Start
+ node - <span style="font-weight: normal;"> the
+ first or the last node on the edge. It is used to define the direction
+ of extrusion.</span></p></li>
</ul>
-<p class="whs8"> </p>
+<p class="whs12"> </p>
-<p class="whs8">3. There are two optional parameters, which
+<p class="whs12">3. There are two optional parameters, which
can be very useful.</p>
-<ul type="disc" class="whs11">
+<ul type="disc" class="whs3">
- <li class=kadov-p><p class="whs12">If the path of extrusion
+ <li class=kadov-p><p class="whs23">If the path of extrusion
is curvilinear, at each iteration the extruded shape is rotated to keep
its initial angularity to the curve. By default, the <span style="font-weight: bold;"><B>Base
- point</B></span> around which the shape is rotated is the mass center of the
+ Point</B></span> around which the shape is rotated is the mass center of the
shape, however, you can specify any point as the <span style="font-weight: bold;"><B>Base
Point</B></span> and the shape will be rotated with respect to this point.</p></li>
- <li class=kadov-p><p class="whs12">The shape can also
+ <li class=kadov-p><p class="whs23">The shape can also
be rotated around the path to get the resulting mesh in a helical fashion.
- At the picture above we see both "oblique-angled" and "right-angled"
- mesh elements because <span style="font-weight: bold;"><B>Rotation Angles</B></span>
- have not been set for all iterations. You set the values of the angles
- at the right and add them to the list of angles at the left by pressing
- the <img src="image105.gif" width="26px" height="25px" border="0" class="img_whs13"> button and remove the values from the list by pressing
- the <img src="image106.gif" width="29px" height="28px" border="0" class="img_whs14"> button. </p></li>
+ You can set the values of angles at the right, add them to the list of
+ angles at the left by pressing the <img src="image105.gif" width="26px" height="25px" border="0" class="img_whs26"> button and remove them
+ from the list by pressing the <img src="image106.gif" width="29px" height="28px" border="0" class="img_whs27"> button. </p></li>
</ul>
-<p class="whs8">4. Click the <span style="font-weight: bold;"><B>Apply
- </B></span>or <span style="font-weight: bold;"><B>OK </B></span>button.</p>
+<p class="whs12">4. Click the <span style="font-weight: bold;"><B>Apply
+ </B></span>or <span style="font-weight: bold;"><B>OK </B></span>button. Mesh edges
+ will be extruded into faces, faces into volumes. The external surface
+ of the resulting 3d mesh (if faces have been extruded) is covered with
+ faces, and corners with edges. If the path is closed, the resulting mesh
+ can contain duplicated nodes and faces, because no sewing is done.</p>
-<p class="whs8"> </p>
+<p class="whs12"> </p>
<p> <span style="font-weight: bold;"><B>See
Also</B></span> a sample TUI Script of an <a href="modifying_meshes.htm#bookmark10">Extrusion
<h1>Importing and exporting meshes</h1>
<p><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> In MESH there is a functionality allowing importation/exportation
- of meshes from <span style="font-weight: bold;"><B>MED</B></span>, <span style="font-weight: bold;"><B>UNV</B></span>
- format files. </p>
+ of meshes from <span style="font-weight: bold;"><B>MED</B></span> and <span style="font-weight: bold;"><B>UNV
+ </B></span>(I-DEAS 10) format files. </p>
<p> </p>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
<!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-img_whs3 { border:none; width:430px; height:391px; float:none; border-style:none; }
-img_whs4 { border:none; float:none; width:463px; height:417px; border-style:none; }
-img_whs5 { border:none; width:541px; height:417px; float:none; border-style:none; }
-img_whs6 { border:none; width:394px; height:425px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:368px; height:379px; border-style:none; }
-img_whs8 { border:none; float:none; width:344px; height:381px; border-style:none; }
-img_whs9 { border:none; width:314px; height:351px; float:none; border-style:none; }
-img_whs10 { border:none; float:none; width:319px; height:351px; border-style:none; }
-img_whs11 { border:none; float:none; width:304px; height:352px; border-style:none; }
-img_whs12 { border:none; width:318px; height:355px; float:none; border-style:none; }
-img_whs13 { border:none; float:none; width:318px; height:355px; border-style:none; }
-img_whs14 { border:none; float:none; width:320px; height:354px; border-style:none; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+img_whs5 { border:none; width:430px; height:391px; float:none; border-style:none; }
+p.whs6 { margin-top:0pt; margin-bottom:0pt; color:#ff0000; font-weight:bold; }
+img_whs7 { border:none; float:none; width:463px; height:417px; border-style:none; }
+img_whs8 { border:none; width:541px; height:417px; float:none; border-style:none; }
+img_whs9 { border:none; width:394px; height:425px; float:none; border-style:none; }
+img_whs10 { border:none; float:none; width:368px; height:379px; border-style:none; }
+img_whs11 { border:none; float:none; width:344px; height:381px; border-style:none; }
+img_whs12 { border:none; width:314px; height:351px; float:none; border-style:none; }
+img_whs13 { border:none; float:none; width:319px; height:351px; border-style:none; }
+img_whs14 { border:none; float:none; width:304px; height:352px; border-style:none; }
+img_whs15 { border:none; width:318px; height:355px; float:none; border-style:none; }
+img_whs16 { border:none; float:none; width:318px; height:355px; border-style:none; }
+img_whs17 { border:none; float:none; width:320px; height:354px; border-style:none; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
var strNSS = "<style type='text/css'>";
strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
<h3><a name=bookmark>Create a Standalone Group</a></h3>
-<p class="whs1"> </p>
+<p class="whs1"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to create a standalone group. </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1"> </p>
+<p class="whs2"> </p>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">smesh =
+<p class="whs3"> </p>
+
+<p class="whs3">smesh =
SMESH_mechanic.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic.mesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1"> </p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># Get ids of all faces
+ with area > 100 </p>
-<p class="whs2"># Criterion : AREA >
- 100</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate.SetNumFunctor(
+<p class="whs3">aPredicate.SetNumFunctor(
aFunctor )</p>
-<p class="whs1">aPredicate.SetMargin(
+<p class="whs3">aPredicate.SetMargin(
100 )</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aFilter.SetPredicate(
+<p class="whs3">aFilter.SetPredicate(
aPredicate )</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
+<p class="whs3">anIds = aFilter.GetElementsId(
mesh )</p>
<p class="whs2"> </p>
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print "Criterion:
- Area > 100 Nb = ", len( anIds )</p>
-
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
-
-<p class="whs1"> print
- anIds[ i ]</p>
-
-<p class="whs1"> </p>
+<p class="whs3"> </p>
<p class="whs2"># create a group consisting
of faces with area > 100</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
+<p class="whs3">aGroup = mesh.CreateGroup(
SMESH.FACE, "Area > 100" )</p>
-<p class="whs1">aGroup.Add( anIds
+<p class="whs3">aGroup.Add( anIds
)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
</p>
<p class="whs2"> </p>
-<p class="whs2"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs3"></p>
+<p class="whs2"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs5"></p>
<h3><a name=bookmark5>Create a Group on Geometry</a></h3>
-<p class="whs1">import salome</p>
+<p class="whs3">import salome</p>
-<p class="whs1">import geompy</p>
+<p class="whs3">import geompy</p>
-<p class="whs1"> </p>
+<p class="whs3">import smesh</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3"> </p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs4"># create a box</p>
-<p class="whs1"> </p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBox(0.,
+<p class="whs3">box = geompy.MakeBox(0.,
0., 0., 100., 100., 100.)</p>
-<p class="whs2"> </p>
-
-<p class="whs2"># add the box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box,
+<p class="whs3">geompy.addToStudy(box,
"box")</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># add the first face of
- the box to the study</p>
+<p class="whs4"># add the first face
+ of the box to the study</p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
+<p class="whs3">subShapeList = geompy.SubShapeAll(box,
geompy.ShapeType["FACE"])</p>
-<p class="whs1">face = subShapeList[0]</p>
+<p class="whs3">face = subShapeList[0]</p>
-<p class="whs1">name = geompy.SubShapeName(face,
- box)</p>
+<p class="whs3">geompy.addToStudyInFather(box,
+ face, "face 1")</p>
-<p class="whs1">idface = geompy.addToStudyInFather(box,
- face, name)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">numberOfSegments
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">quad2D = smesh.CreateHypothesis("Quadrangle_2D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs2"> </p>
-
-<p class="whs2"># initialize a mesh with
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># add hypotheses and algorithms
- to the box</p>
+<p class="whs4"># create group of edges
+ on the face</p>
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs3">aGeomGroupE = geompy.CreateGroup(face,
+ geompy.ShapeType["EDGE"])</p>
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE,
+ 3)</p>
-<p class="whs1">mesh.AddHypothesis(box,quad2D)</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE,
+ 6)</p>
-<p class="whs2"> </p>
+<p class="whs3">geompy.AddObject(aGeomGroupE,
+ 8)</p>
-<p class="whs2"># compute the mesh</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE,
+ 10)</p>
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
+<p class="whs3">geompy.addToStudyInFather(face,
+ aGeomGroupE, "Group of Edges")</p>
-<p class="whs1">if ret == 0:</p>
+<p class="whs3"> </p>
-<p class="whs1"> print
- "probleme when computing the mesh"</p>
+<p class="whs4"># create quadrangle
+ 2D mesh on the box</p>
-<p class="whs1">else:</p>
+<p class="whs3">quadra = smesh.Mesh(box,
+ "Box : quadrangle 2D mesh")</p>
-<p class="whs1"> print
- "Computation succeded"</p>
+<p class="whs3">algo1D = quadra.Segment()</p>
-<p class="whs2"> </p>
+<p class="whs3">quadra.Quadrangle()</p>
-<p class="whs2"># create geometry groups
- on the face</p>
+<p class="whs3">algo1D.NumberOfSegments(7)</p>
-<p class="whs1">aGeomGroup1 = geompy.CreateGroup(face,
- geompy.ShapeType["FACE"])</p>
-
-<p class="whs1">geompy.AddObject(aGeomGroup1,
- 1)</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
-
-<p class="whs1">aGeomGroup2 = geompy.CreateGroup(face,
- geompy.ShapeType["EDGE"])</p>
+<p class="whs4"># compute the mesh</p>
-<p class="whs1">geompy.AddObject(aGeomGroup2,
- 3)</p>
+<p class="whs3">quadra.Compute()</p>
-<p class="whs1">geompy.AddObject(aGeomGroup2,
- 6)</p>
+<p class="whs3"> </p>
-<p class="whs1">geompy.AddObject(aGeomGroup2,
- 8)</p>
+<p class="whs4"># create SMESH group
+ on the face with name "SMESHGroup1"</p>
-<p class="whs1">geompy.AddObject(aGeomGroup2,
- 10)</p>
+<p class="whs3">aSmeshGroup1 = quadra.Group(face,
+ "SMESHGroup1")</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">geompy.addToStudy(aGeomGroup1,
- "Group on Faces")</p>
+<p class="whs4"># create SMESH group
+ on <aGeomGroupE> with default name</p>
-<p class="whs1">geompy.addToStudy(aGeomGroup2,
- "Group on Edges")</p>
+<p class="whs3">aSmeshGroup2 = quadra.Group(aGeomGroupE)</p>
<p class="whs2"> </p>
-<p class="whs2"># create SMESH groups</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+ </p>
-<p class="whs1">aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE,
- "SMESHGroup1",</p>
+<h3><a name=bookmark1>Edit a Group</a></h3>
-<p class="whs1">aGeomGroup1)</p>
+<p class="whs6"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE,
- "SMESHGroup2", aGeomGroup2)</p>
+<p class="whs6"># For the moment smesh package doesn't
+ provide methods to edit a group. </p>
-<p class="whs1"> </p>
+<p class="whs6"># In the next SALOME version the scripts
+ will be updated to use only the commands from smesh package.</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">import SMESH</p>
-<h3><a name=bookmark1>Edit a Group</a></h3>
-
-<p class="whs1">import SMESH</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
+<p class="whs3">smesh =
SMESH_mechanic.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic.mesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Get ids of all faces
+ with area > 35</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs2"># Criterion : AREA >
- 20</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate.SetMargin(35.)</p>
-<p class="whs1">aPredicate.SetMargin(
- 30 )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Area > 35, Nb = ", len(anIds)</p>
-<p class="whs2"># create a group by adding
- elements with area > 20</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Area > 20" )</p>
+<p class="whs4"># create a group by
+ adding elements with area > 35</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Area > 35")</p>
-<p class="whs1"> </p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1">print "Criterion:
- Area > 20 Nb = ", len( anIds )</p>
+<p class="whs3"> </p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs4"># Get ids of all faces
+ with area > 40</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs2"># Criterion : AREA >
- 60</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs2"> </p>
+<p class="whs3">aPredicate.SetMargin(40.)</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aPredicate.SetMargin(
- 60 )</p>
+<p class="whs3">print "Criterion:
+ Area > 40, Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># create a group of
+ elements with area [35; 40] by removing elements with area > 40 from
+ group aGroup</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aGroup.Remove(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs4"># print the result</p>
-<p class="whs2"> </p>
+<p class="whs3">aGroupElemIDs =
+ aGroup.GetListOfID()</p>
-<p class="whs2"># create a group of elements
- with area [20; 60] by removing elements with area > 60 from group
- aGroup </p>
+<p class="whs3">print "Criterion:
+ 35 < Area < 40, Nb = ", len(aGroupElemIDs)</p>
-<p class="whs1">aGroup.Remove(anIds)</p>
+<p class="whs3">j = 1</p>
-<p class="whs2"> </p>
+<p class="whs3">for i in range(len(aGroupElemIDs)):</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">aGroupElemIDs =
- aGroup.GetListOfID()</p>
+<p class="whs3"> print
+ aGroupElemIDs[i],</p>
-<p class="whs1">print "Criterion:
- 20 < Area < 60 = ", len( aGroupElemIDs )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">for i in range(
- len( aGroupElemIDs ) ):</p>
+<p class="whs3"> pass</p>
-<p class="whs1"> print
- aGroupElemIDs[ i ]</p>
+<p class="whs3">print ""</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
<p class="whs2"> </p>
-<p class="whs2"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs4"> <img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs5"></p>
+<p class="whs2"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs7"> <img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs8"></p>
<h3><a name=bookmark2>Union of two groups</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to create a union of two groups. </p>
-<p class="whs1"> </p>
-
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH</span></p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># Criterion : AREA >
- 20</p>
-
-<p class="whs2"> </p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetMargin(
- 20 )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># Criterion : AREA
+ > 20</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
-<p class="whs2"># create a group by adding
- elements with area > 20</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup1 = mesh.CreateGroup(
- SMESH.FACE, "Area > 20" )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aGroup1.Add( anIds
- )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area > 20 Nb = ", len( anIds )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">print "Criterion:
+ Area > 20, Nb = ", len( anIds )</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># create a group by
+ adding elements with area > 20</p>
-<p class="whs2"># Criterion : AREA = 20</p>
+<p class="whs3">aGroup1 = mesh.CreateGroup(SMESH.FACE,
+ "Area > 20")</p>
-<p class="whs2"> </p>
+<p class="whs3">aGroup1.Add(anIds)</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs4"># Criterion : AREA
+ = 20</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1">aPredicate.SetMargin(
- 20 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a group by adding
- elements with area > 20</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroup2 = mesh.CreateGroup(
- SMESH.FACE, "Area = 20" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup2.Add( anIds
- )</p>
+<p class="whs3">print "Criterion:
+ Area = 20, Nb = ", len( anIds )</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area = 20 Nb = ", len( anIds )</p>
+<p class="whs4"># create a group by
+ adding elements with area = 20</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aGroup2 = mesh.CreateGroup(
+ SMESH.FACE, "Area = 20" )</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aGroup2.Add(anIds)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create union group :
- area >= 20</p>
+<p class="whs4"># create union group
+ : area >= 20</p>
-<p class="whs1">aGroup3 = mesh.UnionGroups(aGroup1,
+<p class="whs3">aGroup3 = mesh.UnionGroups(aGroup1,
aGroup2, "Area >= 20")</p>
-<p class="whs1">print "Criterion:
- Area >= 20 Nb = ", len( aGroup3.GetListOfID() )</p>
+<p class="whs3">print "Criterion:
+ Area >= 20, Nb = ", len(aGroup3.GetListOfID())</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># Criterion : AREA <
- 20</p>
+<p class="whs4"># Criterion : AREA
+ < 20</p>
-<p class="whs2"> </p>
-
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
-
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
-
-<p class="whs1">aPredicate.SetMargin(
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"># create a group by adding
- elements with area < 20</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup4 = mesh.CreateGroup(
- SMESH.FACE, "Area < 20" )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroup4.Add( anIds
- )</p>
+<p class="whs3">print "Criterion:
+ Area < 20, Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area < 20 Nb = ", len( anIds )</p>
+<p class="whs4"># create a group by
+ adding elements with area < 20</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aGroup4 = mesh.CreateGroup(SMESH.FACE,
+ "Area < 20")</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aGroup4.Add(anIds)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create union group :
- area >= 20 and area < 20</p>
+<p class="whs4"># create union group
+ : area >= 20 and area < 20</p>
-<p class="whs1">aGroup5 = mesh.UnionGroups(aGroup3,
+<p class="whs3">aGroup5 = mesh.UnionGroups(aGroup3,
aGroup4, "Any Area")</p>
-<p class="whs1">print "Criterion:
- Any Area Nb = ", len( aGroup5.GetListOfID() )</p>
+<p class="whs3">print "Criterion:
+ Any Area, Nb = ", len(aGroup5.GetListOfID())</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs6"></p>
+<p class="whs3"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs9"></p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs7"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs8"></p>
+<p class="whs3"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs10"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs11"></p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
<h3><a name=bookmark3>Intersection of two groups</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs6"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs6"># For the moment smesh package doesn't
+ provide methods to create an intersection of two groups. </p>
-<p class="whs1"> </p>
+<p class="whs6"># In the next SALOME version the scripts
+ will be updated to use only the commands from smesh package.</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3"> </p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1"> </p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs2"># Criterion : AREA >
- 20</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs4"># Criterion : AREA
+ > 20</p>
-<p class="whs1">aPredicate.SetMargin(
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"># create a group by adding
- elements with area > 20</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup1 = mesh.CreateGroup(
- SMESH.FACE, "Area > 20" )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroup1.Add( anIds
- )</p>
-
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area > 20 Nb = ", len( anIds )</p>
+<p class="whs3">print "Criterion:
+ Area > 20, Nb = ", len(anIds)</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3"> </p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs4"># create a group by
+ adding elements with area > 20</p>
-<p class="whs1"> </p>
+<p class="whs3">aGroup1 = mesh.CreateGroup(SMESH.FACE,
+ "Area > 20")</p>
-<p class="whs2"># Criterion : AREA <
- 60</p>
-
-<p class="whs2"> </p>
+<p class="whs3">aGroup1.Add(anIds)</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs4"># Criterion : AREA
+ < 60</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1">aPredicate.SetMargin(
- 60 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(60)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a group by adding
- elements with area < 60</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroup2 = mesh.CreateGroup(
- SMESH.FACE, "Area < 60" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup2.Add( anIds
- )</p>
+<p class="whs3">print "Criterion:
+ Area < 60, Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area < 60 Nb = ", len( anIds )</p>
+<p class="whs4"># create a group by
+ adding elements with area < 60</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aGroup2 = mesh.CreateGroup(SMESH.FACE,
+ "Area < 60")</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aGroup2.Add(anIds)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create an intersection
+<p class="whs4"># create an intersection
of groups : 20 < area < 60</p>
-<p class="whs1">aGroup3 = mesh.IntersectGroups(aGroup1,
+<p class="whs3">aGroup3 = mesh.IntersectGroups(aGroup1,
aGroup2, "20 < Area < 60")</p>
-<p class="whs1">print "Criterion:
- 20 < Area < 60 Nb = ", len( aGroup3.GetListOfID() )</p>
+<p class="whs3">print "Criterion:
+ 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
<p class="whs2"> </p>
-<p class="whs2"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs9"> <img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs10"> <img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs11"></p>
+<p class="whs2"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs12"> <img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs13"> <img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs14"></p>
<h3><a name=bookmark4>Cut of two groups</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to create a cut of two groups. </p>
-<p class="whs1"> </p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3"> </p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1"> </p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs2"># Criterion : AREA >
- 20</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs4"># Criterion : AREA
+ > 20</p>
-<p class="whs1">aPredicate.SetMargin(
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"># create a group by adding
- elements with area > 20</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroupMain = mesh.CreateGroup(
- SMESH.FACE, "Area > 20" )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroupMain.Add(
- anIds )</p>
+<p class="whs3">print "Criterion:
+ Area > 20, Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area > 20 Nb = ", len( anIds )</p>
+<p class="whs4"># create a group by
+ adding elements with area > 20</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aGroupMain = mesh.CreateGroup(SMESH.FACE,
+ "Area > 20")</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aGroupMain.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># Criterion : AREA <
- 60</p>
+<p class="whs4"># Criterion : AREA
+ < 60</p>
-<p class="whs2"> </p>
-
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
-
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1">aPredicate.SetMargin(
- 60 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(60.)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a group by adding
- elements with area < 60</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aGroupTool = mesh.CreateGroup(
- SMESH.FACE, "Area < 60" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroupTool.Add(
- anIds )</p>
+<p class="whs3">print "Criterion:
+ Area < 60, Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area < 60 Nb = ", len( anIds )</p>
+<p class="whs4"># create a group by
+ adding elements with area < 60</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aGroupTool = mesh.CreateGroup(SMESH.FACE,
+ "Area < 60")</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aGroupTool.Add(anIds)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create an intersection
- of groups : area >= 60</p>
+<p class="whs4"># create a cut of groups
+ : area >= 60</p>
-<p class="whs1">aGroupRes = mesh.CutGroups(aGroupMain,
+<p class="whs3">aGroupRes = mesh.CutGroups(aGroupMain,
aGroupTool, "Area >= 60")</p>
-<p class="whs1">print "Criterion:
- Area >= 60 Nb = ", len( aGroupRes.GetListOfID() )</p>
-
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Area >= 60, Nb = ", len(aGroupRes.GetListOfID())</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs12"> <img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs13"> <img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs14"></p>
+<p class="whs2"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs15"> <img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs16"> <img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs17"></p>
<script type="text/javascript" language="javascript1.2">
<!--
-->
</style><style type="text/css">
<!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
-h4.whs4 { margin-top:0pt; margin-bottom:0pt; }
-p.whs5 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
-p.whs6 { margin-top:0.5pt; margin-bottom:0pt; }
-p.whs7 { font-family:'Lucida Console' , monospace; }
-p.whs8 { font-family:'Times New Roman' , serif; }
-p.whs9 { margin-left:40px; font-family:'Lucida Console' , monospace; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+h4.whs5 { margin-top:0pt; margin-bottom:0pt; }
+p.whs6 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs7 { margin-top:0.5pt; margin-bottom:0pt; }
+p.whs8 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs9 { font-family:'Lucida Console' , monospace; }
+p.whs10 { font-family:'Times New Roman' , serif; }
+p.whs11 { margin-left:36px; font-family:'Lucida Console' , monospace; }
+p.whs12 { margin-left:36px; }
+p.whs13 { margin-left:192px; font-family:'Lucida Console' , monospace; }
+p.whs14 { font-family:'Lucida Console' , monospace; margin-left:0px; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "h4.whs4 {margin-top:1pt;margin-bottom:1pt; }";
- strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "h4.whs5 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs14 {margin-left:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
<h3><a name=bookmark>Adding Nodes and Elements</a></h3>
+<p class="whs1"># Attention! The scripts for Adding nodes
+ and Elements have
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</p>
+
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to add nodes and elements. </p>
+
+<p class="whs2"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ In the next SALOME version the scripts will be updated to use only the
+ commands from smesh package.</B></font></span></p>
+
<h4>Add Node</h4>
-<p class="whs1">import SMESH</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH</span></p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs4"># add node</p>
-<p class="whs2"># add node</p>
+<p class="whs3">new_id = aMeshEditor.AddNode(50,
+ 10, 0)</p>
+
+<p class="whs3">print ""</p>
+
+<p class="whs3">if new_id == 0:
+ print "KO node addition."</p>
+
+<p class="whs3">else: print
+ "New Node has been added with ID ", new_id </p>
+
+<p class="whs3"> </p>
+
+<h4>Add Edge</h4>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH</span></p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs3"> </p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print ""</p>
-<p class="whs1">else:</p>
+<p class="whs3"> </p>
+
+<p class="whs4"># add node</p>
-<p class="whs1"> print
+<p class="whs3">n1 = aMeshEditor.AddNode(50,
+ 10, 0)</p>
+
+<p class="whs3">if n1 == 0: print
"KO node addition."</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs4"># add edge</p>
-<p class="whs1"> </p>
+<p class="whs3">e1 = aMeshEditor.AddEdge([n1,
+ 38])</p>
-<h4>Add Edge</h4>
+<p class="whs3">if e1 == 0: print
+ "KO edge addition."</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">else: print
+ "New Edge has been added with ID ", e1 </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<h4>Add Triangle</h4>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH</span></p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3"> </p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print ""</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># add node</p>
+
+<p class="whs3">n1 = aMeshEditor.AddNode(50,
+ 10, 0)</p>
+
+<p class="whs3">if n1 == 0: print
+ "KO node addition."</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># add triangle</p>
+
+<p class="whs3">t1 = aMeshEditor.AddFace([n1,
+ 38, 39])</p>
+
+<p class="whs3">if t1 == 0: print
+ "KO triangle addition."</p>
+
+<p class="whs3">else: print
+ "New Triangle has been added with ID ", t1 </p>
+
+<h4>Add Quadrangle</h4>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print ""</p>
<p class="whs2"> </p>
<p class="whs2"># add node</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">n1 = aMeshEditor.AddNode(50,
+ 10, 0)</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs3">if n1 == 0: print
+ "KO node addition."</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs3"> </p>
-<p class="whs1">else:</p>
+<p class="whs3">n2 = aMeshEditor.AddNode(40,
+ 20, 0)</p>
-<p class="whs1"> print
+<p class="whs3">if n2 == 0: print
"KO node addition."</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># add edge</p>
+<p class="whs2"># add quadrangle</p>
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">q1 = aMeshEditor.AddFace([n2,
+ n1, 38, 39])</p>
-<p class="whs1">if aMeshEditor.AddEdge([LastNodeId,
- 38]) == 1:</p>
+<p class="whs3">if q1 == 0: print
+ "KO quadrangle addition."</p>
-<p class="whs1"> print
- "Edge addition is OK!"</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">else:
+ print
+ "New Quadrangle has been added with ID ", q1</span> </p>
-<p class="whs1">else:</p>
+<h4>Add Tetrahedron</h4>
-<p class="whs1"> print
- "KO edge addition."</p>
+<p class="whs3">import SMESH </p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
-<h4>Add Triangle</h4>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">print ""</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># add node</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3">n1 = aMeshEditor.AddNode(50,
+ 10, 0)</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">if n1 == 0: print
+ "KO node addition."</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># add tetrahedron</p>
-<p class="whs2"># add node</p>
+<p class="whs3">t1 = aMeshEditor.AddVolume([n1,
+ 38, 39, 246])</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">if t1 == 0: print
+ "KO tetrahedron addition."</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">else:
+ print
+ "New Tetrahedron has been added with ID ", t1</span> </p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<h4>Add Hexahedron</h4>
-<p class="whs1">else:</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH</span></p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
-<p class="whs2"> </p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print ""</p>
-<p class="whs2"># add triangle</p>
+<p class="whs3"> </p>
-<p class="whs1">if aMeshEditor.AddFace([LastNodeId,
- 38, 39]) == 1:</p>
+<p class="whs4"># add nodes</p>
-<p class="whs1"> print
- "Triangle addition is OK!"</p>
+<p class="whs3">nId1 = aMeshEditor.AddNode(50,
+ 10, 0)</p>
-<p class="whs1">else:</p>
+<p class="whs3">nId2 = aMeshEditor.AddNode(47,
+ 12, 0)</p>
-<p class="whs1"> print
- "KO triangle addition."</p>
+<p class="whs3">nId3 = aMeshEditor.AddNode(50,
+ 10, 10)</p>
+
+<p class="whs3">nId4 = aMeshEditor.AddNode(47,
+ 12, 10)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">if nId1 == 0 or
+ nId2 == 0 or nId3 == 0 or nId4 == 0: print "KO node addition."</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># add hexahedron</p>
+
+<p class="whs3">vId = aMeshEditor.AddVolume([nId2,
+ nId1, 38, 39, nId4, nId3, 245, 246])</p>
+
+<p class="whs3">if vId == 0: print
+ "KO Hexahedron addition."</p>
+
+<p class="whs3">else: print
+ "New Hexahedron has been added with ID ", vId </p>
+
+<p class="whs3"> </p>
+
+<h4>Add Polygon</h4>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ math</span></p>
+
+<p class="whs3">import salome</p>
+
+<p class="whs3">import smesh</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># create an empty mesh
+ structure</p>
+
+<p class="whs3">gen = smesh.smesh</p>
+
+<p class="whs3">mesh = gen.CreateEmptyMesh()</p>
+
+<p class="whs3">MeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># a method to build
+ a polygonal mesh element with <nb_vert> angles:</p>
+
+<p class="whs3">def MakePolygon
+ (a_mesh, x0, y0, z0, radius, nb_vert):</p>
+
+<p class="whs3"> al
+ = 2.0 * math.pi / nb_vert</p>
+
+<p class="whs3"> node_ids
+ = []</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"> #
+ Create nodes for a polygon</p>
+
+<p class="whs3"> for
+ ii in range(nb_vert):</p>
-<p class="whs1"> </p>
+<p class="whs3"> nid
+ = MeshEditor.AddNode(x0 + radius * math.cos(ii*al),</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
+<p class="whs3"> y0
+ + radius * math.sin(ii*al),</p>
+
+<p class="whs3"> z0)</p>
+
+<p class="whs3"> node_ids.append(nid)</p>
+
+<p class="whs3"> pass</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"> #
+ Create a polygon</p>
+
+<p class="whs3"> return
+ MeshEditor.AddPolygonalFace(node_ids)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># Create three polygons</p>
+
+<p class="whs3">f1 = MakePolygon(mesh,
+ 0, 0, 0,
+ 30, 13)</p>
+
+<p class="whs3">f2 = MakePolygon(mesh,
+ 0, 0, 10, 21, 9)</p>
+
+<p class="whs3">f3 = MakePolygon(mesh,
+ 0, 0, 20, 13, 6)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs1"> </p>
+<h4>Add Polyhedron</h4>
-<h4>Add Quadrangle</h4>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ salome</span></p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">import math</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import smesh</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs4"># create an empty mesh
+ structure</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">gen = smesh.smesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">mesh = gen.CreateEmptyMesh()</p>
-<p class="whs1"> </p>
+<p class="whs3">MeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs2"># add node</p>
+<p class="whs3"> </p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs4"># Create nodes for
+ 12-hedron with pentagonal faces</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs3">al = 2 * math.pi
+ / 5.0</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs3">cosal = math.cos(al)</p>
-<p class="whs1">else:</p>
+<p class="whs3">aa = 13</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs3">rr = aa / (2.0 *
+ math.sin(al/2.0))</p>
-<p class="whs1"> </p>
+<p class="whs3">dr = 2.0 * rr *
+ cosal</p>
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">r1 = rr + dr</p>
-<p class="whs2"> </p>
+<p class="whs3">dh = rr * math.sqrt(2.0
+ * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
-<p class="whs2"># add quadrangle</p>
+<p class="whs3">hh = 2.0 * dh -
+ dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
-<p class="whs1">if aMeshEditor.AddNode(40,
- 20, 0) == 1:</p>
+<p class="whs3"> </p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs3">dd = [] <span style="font-family: 'Times New Roman', serif;">#
+ top</span></p>
-<p class="whs1">else:</p>
+<p class="whs3">cc = [] <span style="font-family: 'Times New Roman', serif;">#
+ below top</span></p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs3">bb = [] <span style="font-family: 'Times New Roman', serif;">#
+ above bottom</span></p>
-<p class="whs1">if aMeshEditor.AddFace([mesh.NbNodes(),
- LastNodeId, 38, 39]) == 1:</p>
+<p class="whs3">aa = [] <span style="font-family: 'Times New Roman', serif;">#
+ bottom</span></p>
-<p class="whs1"> print
- "Quadrangle addition is OK!"</p>
+<p class="whs3"> </p>
-<p class="whs1">else:</p>
+<p class="whs3">for i in range(5):</p>
-<p class="whs1"> print
- "KO quadrangle addition."</p>
+<p class="whs3"> cos_bot
+ = math.cos(i*al)</p>
-<p class="whs1"> </p>
+<p class="whs3"> sin_bot
+ = math.sin(i*al)</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3"> </p>
+
+<p class="whs3"> <span
+ style="margin-top: 0pt;
+ margin-bottom: 0pt;
+ font-family: 'Lucida Console', monospace;">cos_top
+ = math.cos(i*al + al/2.0)</span></p>
+
+<p class="whs3"> sin_top
+ = math.sin(i*al + al/2.0)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3"> nd
+ = MeshEditor.AddNode(rr * cos_top, rr * sin_top, hh )
+ <span style="font-family: 'Times New Roman', serif;"># top</span></p>
+
+<p class="whs3"> nc
+ = MeshEditor.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) <span style="font-family: 'Times New Roman', serif;">#
+ below top</span></p>
+
+<p class="whs3"> nb
+ = MeshEditor.AddNode(r1 * cos_bot, r1 * sin_bot, dh)
+ <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
+
+<p class="whs3"> na
+ = MeshEditor.AddNode(rr * cos_bot, rr * sin_bot, 0)
+ <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
+
+<p class="whs3"> dd.append(nd)
+ <span style="font-family: 'Times New Roman', serif;"># top</span></p>
+
+<p class="whs3"> cc.append(nc)
+ <span style="font-family: 'Times New Roman', serif;"># below top</span></p>
+
+<p class="whs3"> bb.append(nb)
+ <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
+
+<p class="whs3"> aa.append(na)
+ <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
+
+<p class="whs3"> </p>
+
+<p class="whs3"> pass</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># Create a polyhedral
+ volume (12-hedron with pentagonal faces)</p>
+
+<p class="whs3">MeshEditor.AddPolyhedralVolume([dd[0],
+ dd[1], dd[2], dd[3], dd[4], <span style="font-family: 'Times New Roman', serif;">#
+ top</span></p>
+
+<p class="whs3"> dd[0],
+ cc[0], bb[1], cc[1], dd[1], #
+ -</p>
+
+<p class="whs3"> dd[1],
+ cc[1], bb[2], cc[2], dd[2], #
+ -</p>
+
+<p class="whs3"> dd[2],
+ cc[2], bb[3], cc[3], dd[3], <span style="font-family: 'Times New Roman', serif;">#
+ - below top</span></p>
+
+<p class="whs3"> dd[3],
+ cc[3], bb[4], cc[4], dd[4], #
+ -</p>
+
+<p class="whs3"> dd[4],
+ cc[4], bb[0], cc[0], dd[0], #
+ -</p>
+
+<p class="whs3"> aa[4],
+ bb[4], cc[4], bb[0], aa[0], #
+ .</p>
+
+<p class="whs3"> aa[3],
+ bb[3], cc[3], bb[4], aa[4], #
+ .</p>
+
+<p class="whs3"> aa[2],
+ bb[2], cc[2], bb[3], aa[3], <span style="font-family: 'Times New Roman', serif;">#
+ . above bottom</span></p>
+
+<p class="whs3"> aa[1],
+ bb[1], cc[1], bb[2], aa[2], #
+ .</p>
+
+<p class="whs3"> aa[0],
+ bb[0], cc[0], bb[1], aa[1], #
+ .</p>
+
+<p class="whs3"> aa[0],
+ aa[1], aa[2], aa[3], aa[4]], <span style="font-family: 'Times New Roman', serif;">#
+ bottom</span></p>
+
+<p class="whs3"> [5,5,5,5,5,5,5,5,5,5,5,5])</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<h4>Add Tetrahedron</h4>
+<h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to remove nodes and elements. </p>
-<p class="whs1"> </p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<h4 class="whs5"> </h4>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<h4 class="whs5">Removing Nodes</h4>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs2"> </p>
-<p class="whs1"> </p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH_mechanic</span></p>
-<p class="whs2"># add node</p>
+<p class="whs3"> </p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs3"> </p>
-<p class="whs1">else:</p>
+<p class="whs4"># remove nodes #246
+ and #255</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs3">res = aMeshEditor.RemoveNodes([246,
+ 255])</p>
-<p class="whs1"> </p>
+<p class="whs3">if res == 1: print
+ "Nodes removing is OK!"</p>
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">else: print
+ "KO nodes removing." </p>
<p class="whs2"> </p>
-<p class="whs2"># add tetrahedron</p>
+<h4>Removing Elements</h4>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import
+ SMESH_mechanic</span></p>
-<p class="whs1">if aMeshEditor.AddVolume([LastNodeId,
- 38, 39, 246]) == 1:</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
-<p class="whs1"> print
- "Tetrahedron addition is OK!"</p>
+<p class="whs3"> </p>
-<p class="whs1">else:</p>
+<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
-<p class="whs1"> print
- "KO tetrahedron addition."</p>
+<p class="whs3"> </p>
+
+<p class="whs4"># remove three elements:
+ #850, #859 and #814</p>
+
+<p class="whs3">res = anEditor.RemoveElements([850,
+ 859, 814])</p>
-<p class="whs1"> </p>
+<p class="whs3">if res == 1: print
+ "Elements removing is OK!"</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3">else: print
+ "KO Elements removing." </p>
+
+<p class="whs3"> </p>
+
+<h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
+
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to renumber nodes and elements. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs6"> </p>
+
+<p class="whs6">import SMESH_mechanic</p>
+
+<p class="whs6"> </p>
+
+<p class="whs6">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs6">anEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs7"> </p>
+
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">anEditor.RenumberNodes()</span>
</p>
+<h3><a name=bookmark3>Moving Nodes</a></h3>
+
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to move nodes. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
<p class="whs2"> </p>
-<h4>Add Hexahedron</h4>
+<p class="whs2"># move node #38</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">aMeshEditor.MoveNode(38,
+ 20., 10., 0.) </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs2"> </p>
-<p class="whs1"> </p>
+<h3><a name=bookmark4>Diagonal Inversion</a></h3>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to produce a diagonal inversion. </p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1"> </p>
+<p class="whs7"> </p>
-<p class="whs2"># add nodes</p>
+<p class="whs6">import salome</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs6">import smesh</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 0) == 1:</p>
+<p class="whs6"> </p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs8"># create an empty mesh
+ structure</p>
-<p class="whs1">else:</p>
+<p class="whs6">gen = smesh.smesh</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs6">mesh = gen.CreateEmptyMesh()</p>
-<p class="whs1">aNodeId1 = mesh.NbNodes()</p>
+<p class="whs6">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs1"> </p>
+<p class="whs6"> </p>
-<p class="whs1">if aMeshEditor.AddNode(47,
- 12, 0) == 1:</p>
+<p class="whs8"># create the following
+ mesh:</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs6"># .----.----.----.</p>
-<p class="whs1">else:</p>
+<p class="whs6"># | /|
+ /|
+ /|</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs6"># | /
+ | / | /
+ |</p>
-<p class="whs1">aNodeId2 = mesh.NbNodes()</p>
+<p class="whs6"># | / |
+ / | / |</p>
-<p class="whs1"> </p>
+<p class="whs6"># |/ |/
+ |/
+ |</p>
-<p class="whs1">if aMeshEditor.AddNode(50,
- 10, 10) == 1:</p>
+<p class="whs6"># .----.----.----.</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs6"> </p>
-<p class="whs1">else:</p>
+<p class="whs6">bb = [0, 0, 0, 0]</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs6">tt = [0, 0, 0, 0]</p>
-<p class="whs1">aNodeId3 = mesh.NbNodes()</p>
+<p class="whs6">ff = [0, 0, 0, 0,
+ 0, 0]</p>
-<p class="whs1"> </p>
+<p class="whs6"> </p>
-<p class="whs1">if aMeshEditor.AddNode(47,
- 12, 10) == 1:</p>
+<p class="whs6">bb[0] = aMeshEditor.AddNode(
+ 0., 0., 0.)</p>
-<p class="whs1"> print
- "Node addition is OK!"</p>
+<p class="whs6">bb[1] = aMeshEditor.AddNode(10.,
+ 0., 0.)</p>
-<p class="whs1">else:</p>
+<p class="whs6">bb[2] = aMeshEditor.AddNode(20.,
+ 0., 0.)</p>
-<p class="whs1"> print
- "KO node addition."</p>
+<p class="whs6">bb[3] = aMeshEditor.AddNode(30.,
+ 0., 0.)</p>
-<p class="whs1">aNodeId4 = mesh.NbNodes()</p>
+<p class="whs6"> </p>
-<p class="whs1"> </p>
+<p class="whs6">tt[0] = aMeshEditor.AddNode(
+ 0., 15., 0.)</p>
-<p class="whs2"># add hexahedron</p>
+<p class="whs6">tt[1] = aMeshEditor.AddNode(10.,
+ 15., 0.)</p>
-<p class="whs1">if aMeshEditor.AddVolume([aNodeId2,
- aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:</p>
+<p class="whs6">tt[2] = aMeshEditor.AddNode(20.,
+ 15., 0.)</p>
-<p class="whs1"> print
- "Hexahedron addition is OK!"</p>
+<p class="whs6">tt[3] = aMeshEditor.AddNode(30.,
+ 15., 0.)</p>
-<p class="whs1">else:</p>
+<p class="whs6"> </p>
-<p class="whs1"> print
- "KO Hexahedron addition."</p>
+<p class="whs6">ff[0] = aMeshEditor.AddFace([bb[0],
+ bb[1], tt[1]])</p>
+
+<p class="whs6">ff[1] = aMeshEditor.AddFace([bb[0],
+ tt[1], tt[0]])</p>
+
+<p class="whs6">ff[2] = aMeshEditor.AddFace([bb[1],
+ bb[2], tt[2]])</p>
+
+<p class="whs6">ff[3] = aMeshEditor.AddFace([bb[1],
+ tt[2], tt[1]])</p>
+
+<p class="whs6">ff[4] = aMeshEditor.AddFace([bb[2],
+ bb[3], tt[3]])</p>
+
+<p class="whs6">ff[5] = aMeshEditor.AddFace([bb[2],
+ tt[3], tt[2]])</p>
+
+<p class="whs6"> </p>
-<p class="whs1"> </p>
+<p class="whs8"># inverse the diagonal
+ bb[1] - tt[2]</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs6">print "\nDiagonal
+ inversion ... ",</p>
+
+<p class="whs6">res = aMeshEditor.InverseDiag(bb[1],
+ tt[2])</p>
+
+<p class="whs6">if not res: print
+ "failed!"</p>
+
+<p class="whs6">else: print
+ "done."</p>
+
+<p class="whs7"> </p>
+
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
</p>
-<p class="whs2"> </p>
+<h3><a name=bookmark5>Uniting two Triangles</a></h3>
-<h4>Add Polygon</h4>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">import salome</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to unite two triangles. </p>
-<p class="whs1">import geompy</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">import math</p>
+<p> </p>
-<p class="whs1"> </p>
+<p class="whs9">import salome</p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs9">import smesh</p>
-<p class="whs1"> </p>
+<p> </p>
-<p class="whs2"># GEOM module </p>
+<p># create an empty mesh structure</p>
-<p class="whs1">shape_mesh = geompy.MakeCylinderRH(13,
- 77)</p>
+<p class="whs9">gen = smesh.smesh</p>
-<p class="whs1">geompy.addToStudy(shape_mesh,
- "cylinder")</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
-<p class="whs1"> </p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs2"># SMESH module</p>
+<p> </p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p># create the following mesh:</p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs9"># .----.----.----.</p>
-<p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
+<p class="whs9"># | /|
+ /|
+ /|</p>
-<p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9"># | /
+ | / | /
+ |</p>
-<p class="whs1"> </p>
+<p class="whs9"># | / |
+ / | / |</p>
-<p class="whs2"># a method to build a polygonal
- mesh element with nb_vert angles:</p>
+<p class="whs9"># |/ |/
+ |/
+ |</p>
-<p class="whs1">def MakePolygon
- (a_mesh, x0, y0, z0, radius, nb_vert):</p>
+<p class="whs9"># .----.----.----.</p>
-<p class="whs1"> node_start_id
- = a_mesh.NbNodes() + 1</p>
+<p> </p>
-<p class="whs1"> al
- = 2.0 * math.pi / nb_vert</p>
+<p class="whs9">bb = [0, 0, 0, 0]</p>
-<p class="whs1"> node_ids
- = []</p>
+<p class="whs9">tt = [0, 0, 0, 0]</p>
-<p class="whs2"> </p>
+<p class="whs9">ff = [0, 0, 0, 0,
+ 0, 0]</p>
-<p class="whs2"># Create nodes for a polyhedron</p>
+<p class="whs9"> </p>
-<p class="whs1"> for
- ii in range(nb_vert):</p>
+<p class="whs9">bb[0] = aMeshEditor.AddNode(
+ 0., 0., 0.)</p>
-<p class="whs1"> MeshEditor.AddNode(x0
- + radius * math.cos(ii*al),</p>
+<p class="whs9">bb[1] = aMeshEditor.AddNode(10.,
+ 0., 0.)</p>
-<p class="whs1"> y0
- + radius * math.sin(ii*al),</p>
+<p class="whs9">bb[2] = aMeshEditor.AddNode(20.,
+ 0., 0.)</p>
-<p class="whs1"> z0)</p>
+<p class="whs9">bb[3] = aMeshEditor.AddNode(30.,
+ 0., 0.)</p>
-<p class="whs1"> node_ids.append(node_start_id
- + ii)</p>
+<p class="whs9"> </p>
-<p class="whs1"> pass</p>
+<p class="whs9">tt[0] = aMeshEditor.AddNode(
+ 0., 15., 0.)</p>
-<p class="whs2"> </p>
+<p class="whs9">tt[1] = aMeshEditor.AddNode(10.,
+ 15., 0.)</p>
-<p class="whs2"># Create a polygon</p>
+<p class="whs9">tt[2] = aMeshEditor.AddNode(20.,
+ 15., 0.)</p>
-<p class="whs1"> MeshEditor.AddPolygonalFace(node_ids)</p>
+<p class="whs9">tt[3] = aMeshEditor.AddNode(30.,
+ 15., 0.)</p>
-<p class="whs1"> return
- 0</p>
+<p class="whs9"> </p>
-<p class="whs1"> </p>
+<p class="whs9">ff[0] = aMeshEditor.AddFace([bb[0],
+ bb[1], tt[1]])</p>
-<p class="whs2"># Create three polygons</p>
+<p class="whs9">ff[1] = aMeshEditor.AddFace([bb[0],
+ tt[1], tt[0]])</p>
-<p class="whs1">MakePolygon(mesh,
- 0, 0, 0,
- 30, 13)</p>
+<p class="whs9">ff[2] = aMeshEditor.AddFace([bb[1],
+ bb[2], tt[2]])</p>
-<p class="whs1">MakePolygon(mesh,
- 0, 0, 10, 21, 9)</p>
+<p class="whs9">ff[3] = aMeshEditor.AddFace([bb[1],
+ tt[2], tt[1]])</p>
-<p class="whs1">MakePolygon(mesh,
- 0, 0, 20, 13, 6)</p>
+<p class="whs9">ff[4] = aMeshEditor.AddFace([bb[2],
+ bb[3], tt[3]])</p>
-<p class="whs1"> </p>
+<p class="whs9">ff[5] = aMeshEditor.AddFace([bb[2],
+ tt[3], tt[2]])</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p> </p>
-<p class="whs1"> </p>
+<p># delete the diagonal bb[1] - tt[2]</p>
-<h4>Add polyhedron</h4>
+<p class="whs9">print "\nUnite
+ two triangles ... ",</p>
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
+<p class="whs9">res = aMeshEditor.DeleteDiag(bb[1],
+ tt[2])</p>
-<p class="whs1">import geompy</p>
+<p class="whs9">if not res: print
+ "failed!"</p>
-<p class="whs1">import math</p>
+<p class="whs9">else: print
+ "done."</p>
-<p class="whs1"> </p>
+<p class="whs9"> </p>
-<p class="whs1">#import SMESH</p>
+<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+ </p>
-<p class="whs1">import StdMeshers</p>
+<h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
-<p class="whs1"> </p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs3"># GEOM</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to unite a set of triangles. </p>
-<p class="whs1">shape_mesh = geompy.MakeCylinderRH(13,
- 77)</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">geompy.addToStudy(shape_mesh,
- "cylinder")</p>
+<p class="whs10"> </p>
-<p class="whs1"> </p>
+<p class="whs9">import salome</p>
-<p class="whs3"># SMESH</p>
+<p class="whs9">import smesh</p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs9"> </p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs10"># create an empty mesh
+ structure</p>
-<p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
+<p class="whs9">gen = smesh.smesh</p>
-<p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
-<p class="whs1"> </p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs3"># Now we are going
- to create a 12-hedron:</p>
+<p class="whs9"> </p>
-<p class="whs3"> </p>
+<p class="whs10"># create the following
+ mesh:</p>
-<p class="whs3"># Create nodes for
- polyhedron</p>
+<p class="whs9"># .----.----.----.</p>
-<p class="whs1">al = 2 * math.pi
- / 5.0</p>
+<p class="whs9"># | /|
+ /|
+ /|</p>
-<p class="whs1">cosal = math.cos(al)</p>
+<p class="whs9"># | /
+ | / | /
+ |</p>
-<p class="whs1"> </p>
+<p class="whs9"># | / |
+ / | / |</p>
-<p class="whs1">aa = 13</p>
+<p class="whs9"># |/ |/
+ |/
+ |</p>
-<p class="whs1">rr = aa / (2.0 *
- math.sin(al/2.0))</p>
+<p class="whs9"># .----.----.----.</p>
-<p class="whs1">dr = 2.0 * rr *
- cosal</p>
+<p class="whs9"> </p>
-<p class="whs1">r1 = rr + dr</p>
+<p class="whs9">bb = [0, 0, 0, 0]</p>
-<p class="whs1">dh = rr * math.sqrt(2.0
- * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
+<p class="whs9">tt = [0, 0, 0, 0]</p>
-<p class="whs1">hh = 2.0 * dh -
- dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
+<p class="whs9">ff = [0, 0, 0, 0,
+ 0, 0]</p>
-<p class="whs1"> </p>
+<p class="whs9"> </p>
-<p class="whs1">for i in range(5):</p>
+<p class="whs9">bb[0] = aMeshEditor.AddNode(
+ 0., 0., 0.)</p>
-<p class="whs1"> MeshEditor.AddNode(rr*math.cos(i*al),
- rr*math.sin(i*al), 0)
- <span style="font-family: 'Times New Roman', serif;"># 1,3,5,7, 9 # bottom</span></p>
+<p class="whs9">bb[1] = aMeshEditor.AddNode(10.,
+ 0., 0.)</p>
-<p class="whs1"> MeshEditor.AddNode(r1*math.cos(i*al),
- r1*math.sin(i*al), dh) <span style="font-family: 'Times New Roman', serif;">#
- 2,4,6,8,10 # above bottom</span></p>
+<p class="whs9">bb[2] = aMeshEditor.AddNode(20.,
+ 0., 0.)</p>
-<p class="whs1"> </p>
+<p class="whs9">bb[3] = aMeshEditor.AddNode(30.,
+ 0., 0.)</p>
-<p class="whs1">for i in range(5):</p>
+<p class="whs9"> </p>
-<p class="whs1"> MeshEditor.AddNode(rr*math.cos(i*al
- + al/2.0),</p>
+<p class="whs9">tt[0] = aMeshEditor.AddNode(
+ 0., 15., 0.)</p>
-<p class="whs1"> rr*math.sin(i*al
- + al/2.0), hh) # 11,13,15,17,19 <span style="font-family: 'Times New Roman', serif;">#
- top</span></p>
+<p class="whs9">tt[1] = aMeshEditor.AddNode(10.,
+ 15., 0.)</p>
-<p class="whs1"> MeshEditor.AddNode(r1*math.cos(i*al
- + al/2.0),</p>
+<p class="whs9">tt[2] = aMeshEditor.AddNode(20.,
+ 15., 0.)</p>
-<p class="whs1"> r1*math.sin(i*al
- + al/2.0), hh - dh) # 12,14,16,18,20 <span style="font-family: 'Times New Roman', serif;">#
- below top</span></p>
+<p class="whs9">tt[3] = aMeshEditor.AddNode(30.,
+ 15., 0.)</p>
-<p class="whs1"> </p>
+<p class="whs9"> </p>
-<p class="whs3"># Create a polyhedral
- volume</p>
+<p class="whs9">ff[0] = aMeshEditor.AddFace([bb[0],
+ bb[1], tt[1]])</p>
-<p class="whs1">MeshEditor.AddPolyhedralVolume([
- 1, 3, 5,
- 7, 9,
- <span style="font-family: 'Times New Roman', serif;">#
- bottom</span></p>
+<p class="whs9">ff[1] = aMeshEditor.AddFace([bb[0],
+ tt[1], tt[0]])</p>
-<p class="whs1"> 1,
- 2, 12,
- 4, 3,
- <span style="font-family: 'Times New Roman', serif;">#
- .</span></p>
-
-<p class="whs1"> 3,
- 4, 14,
- 6, 5,
- <span style="font-family: 'Times New Roman', serif;">#
- .</span></p>
-
-<p class="whs1"> 5,
- 6, 16,
- 8, 7,
- <span style="font-family: 'Times New Roman', serif;">#
- . above bottom</span></p>
+<p class="whs9">ff[2] = aMeshEditor.AddFace([bb[1],
+ bb[2], tt[2]])</p>
-<p class="whs1"> 7,
- 8, 18,
- 10, 9,
- <span style="font-family: 'Times New Roman', serif;">#
- .</span></p>
-
-<p class="whs1"> 9,
- 10, 20, 2,
- 1, <span
- style="font-family: 'Times New Roman', serif;">#
- .</span></p>
-
-<p class="whs1"> 11,
- 12, 4,
- 14, 13, <span style="font-family: 'Times New Roman', serif;">#
- -</span></p>
-
-<p class="whs1"> 13,
- 14, 6,
- 16, 15, <span style="font-family: 'Times New Roman', serif;">#
- -</span></p>
-
-<p class="whs1"> 15,
- 16, 8,
- 18, 17, <span style="font-family: 'Times New Roman', serif;">#
- - below top</span></p>
+<p class="whs9">ff[3] = aMeshEditor.AddFace([bb[1],
+ tt[2], tt[1]])</p>
-<p class="whs1"> 17,
- 18, 10, 20, 19, <span style="font-family: 'Times New Roman', serif;">#
- -</span></p>
+<p class="whs9">ff[4] = aMeshEditor.AddFace([bb[2],
+ bb[3], tt[3]])</p>
-<p class="whs1"> 19,
- 20, 2,
- 12, 11, <span style="font-family: 'Times New Roman', serif;">#
- -</span></p>
+<p class="whs9">ff[5] = aMeshEditor.AddFace([bb[2],
+ tt[3], tt[2]])</p>
-<p class="whs1"> 11,
- 13, 15, 17, 19], <span style="font-family: 'Times New Roman', serif;">#
- top</span></p>
+<p class="whs9"> </p>
-<p class="whs1"> [5,5,5,5,5,5,5,5,5,5,5,5])</p>
+<p class="whs10"># unite a set of triangles</p>
-<p class="whs1"> </p>
+<p class="whs9">aFilterMgr = smesh.smesh.CreateFilterManager()</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs9">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
-<p class="whs1"> </p>
+<p class="whs9">print "\nUnite
+ a set of triangles ... ",</p>
-<h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
+<p class="whs9">res = aMeshEditor.TriToQuad([ff[2],
+ ff[3], ff[4], ff[5]], aFunctor, 60.)</p>
-<h4 class="whs4">Removing Nodes</h4>
+<p class="whs9">if not res: print
+ "failed!"</p>
-<p class="whs2"> </p>
+<p class="whs9">else: print
+ "done."</p>
-<p class="whs1">import SMESH</p>
+<p class="whs9"> </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs9">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1"> </p>
+<h3><a name=bookmark12>Orientation</a></h3>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to change orientation. </p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs2"> </p>
+<p class="whs9"> </p>
-<p class="whs2"># add node</p>
+<p class="whs9">import salome</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">import smesh</p>
-<p class="whs1">if aMeshEditor.RemoveNodes([246,
- 255]) == 1:</p>
+<p class="whs9"> </p>
-<p class="whs1"> print
- "Node removing is OK!"</p>
+<p class="whs10"># SMESH module</p>
-<p class="whs1">else:</p>
+<p class="whs9">gen = smesh.smesh</p>
-<p class="whs1"> print
- "KO node removing."</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
-<p class="whs1"> </p>
+<p class="whs9">MeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs9"> </p>
-<p class="whs2"> </p>
+<p class="whs10"># build five quadrangles:</p>
-<h4>Removing Elements</h4>
+<p class="whs9">dx = 10</p>
-<p class="whs1">import SMESH</p>
+<p class="whs9">dy = 20</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs9"> </p>
-<p class="whs1"> </p>
+<p class="whs9">n1 =
+ MeshEditor.AddNode(0.0 * dx, 0, 0)</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9">n2 =
+ MeshEditor.AddNode(1.0 * dx, 0, 0)</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">n3 =
+ MeshEditor.AddNode(2.0 * dx, 0, 0)</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9">n4 =
+ MeshEditor.AddNode(3.0 * dx, 0, 0)</p>
-<p class="whs1"> </p>
+<p class="whs9">n5 =
+ MeshEditor.AddNode(4.0 * dx, 0, 0)</p>
-<p class="whs1">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">n6 =
+ MeshEditor.AddNode(5.0 * dx, 0, 0)</p>
-<p class="whs1">anEditor.RemoveElements([850,
- 859, 814])</p>
+<p class="whs9">n7 =
+ MeshEditor.AddNode(0.0 * dx, dy, 0)</p>
-<p class="whs1"> </p>
+<p class="whs9">n8 =
+ MeshEditor.AddNode(1.0 * dx, dy, 0)</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs9">n9 =
+ MeshEditor.AddNode(2.0 * dx, dy, 0)</p>
-<p class="whs1"> </p>
+<p class="whs9">n10 = MeshEditor.AddNode(3.0
+ * dx, dy, 0)</p>
-<h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
+<p class="whs9">n11 = MeshEditor.AddNode(4.0
+ * dx, dy, 0)</p>
-<p class="whs5">import SMESH</p>
+<p class="whs9">n12 = MeshEditor.AddNode(5.0
+ * dx, dy, 0)</p>
-<p class="whs5">import SMESH_mechanic</p>
+<p class="whs9"> </p>
-<p class="whs5"> </p>
+<p class="whs9">f1 = MeshEditor.AddFace([n1,
+ n2, n8 , n7 ])</p>
-<p class="whs5">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">f2 = MeshEditor.AddFace([n2,
+ n3, n9 , n8 ])</p>
-<p class="whs5">salome = SMESH_mechanic.salome</p>
+<p class="whs9">f3 = MeshEditor.AddFace([n3,
+ n4, n10, n9 ])</p>
-<p class="whs5"> </p>
+<p class="whs9">f4 = MeshEditor.AddFace([n4,
+ n5, n11, n10])</p>
-<p class="whs5">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">f5 = MeshEditor.AddFace([n5,
+ n6, n12, n11])</p>
-<p class="whs5">anEditor.RenumberNodes()</p>
+<p class="whs9"> </p>
-<p class="whs5"> </p>
+<p class="whs10"># Change the orientation
+ of the second and the fourth faces.</p>
-<p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs9">MeshEditor.Reorient([2,
+ 4])</p>
+
+<p class="whs9"> </p>
+
+<p class="whs9">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs6"> </p>
+<p class="whs9"> </p>
-<p> </p>
+<h3><a name=bookmark7>Cutting Quadrangles</a></h3>
-<h3><a name=bookmark3>Moving Nodes</a></h3>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to cut quadrangles. </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1"> </p>
+<p class="whs9"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9">import SMESH</p>
-<p class="whs1">mesh =
+<p class="whs9">import SMESH_mechanic</p>
+
+<p class="whs9"> </p>
+
+<p class="whs9">smesh = SMESH_mechanic.smesh</p>
+
+<p class="whs9">mesh =
SMESH_mechanic.mesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9"> </p>
-<p class="whs1"> </p>
+<p class="whs10"># cut two quadrangles:
+ 405 and 406</p>
-<p class="whs2"># move node</p>
+<p class="whs9">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
-<p class="whs1">aMeshEditor.MoveNode(38,
- 20, 10, 0)</p>
+<p class="whs9"> </p>
-<p class="whs1"> </p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs9">aMeshEditor.QuadToTri([405,
+ 406], aFunctor) </p>
-<p class="whs2"> </p>
+<p class="whs10"> </p>
-<h3><a name=bookmark4>Diagonal Inversion</a></h3>
+<h3><a name=bookmark8>Smoothing</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to perform smoothing. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
<p class="whs1"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9">import salome</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">import geompy</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9"> </p>
-<p class="whs1"> </p>
+<p class="whs9">import SMESH</p>
-<p class="whs2"># inverse diagonal</p>
+<p class="whs9">import SMESH_mechanic</p>
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9"> </p>
-<p class="whs1">aMeshEditor.InverseDiag(700,
- 642)</p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
-<p class="whs1"> </p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs9"> </p>
-<p class="whs2"> </p>
+<p class="whs10"># select the top face</p>
-<h3><a name=bookmark5>Uniting two Triangles</a></h3>
+<p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs7">import SMESH</p>
+<p class="whs9">face = faces[3]</p>
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh,
+ face, "face planar with hole")</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs10"># create a group of faces
+ to be smoothed</p>
-<p class="whs7">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">GroupSmooth = mesh.CreateGroupFromGEOM(SMESH.FACE,
+ "Group of faces (smooth)", face)</p>
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># perform smoothing</p>
-<p># delete diagonal</p>
+<p class="whs10"># boolean SmoothObject(Object,
+ IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method)</p>
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">res = aMeshEditor.SmoothObject(GroupSmooth,
+ [], 20, 2., SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
-<p class="whs7">aMeshEditor.DeleteDiag(700,
- 642)</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs9">print "\nSmoothing
+ ... ",</p>
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs9">if not res: print
+ "failed!"</p>
+
+<p class="whs9">else: print
+ "done."</p>
+
+<p class="whs9"> </p>
+
+<p class="whs9">salome.sg.updateObjBrowser(1)
</p>
-<p> </p>
+<p class="whs9"> </p>
-<h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
+<h3><a name=bookmark9>Extrusion</a></h3>
-<p class="whs7">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to perform extrusion. </p>
-<p class="whs7"> </p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs7">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9"> </p>
-<p class="whs7">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">import salome</p>
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">import geompy</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p># unite a set of triangles</p>
+<p class="whs9">import SMESH</p>
-<p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs9">import SMESH_mechanic</p>
-<p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs7">aMeshEditor.TriToQuad([1145,
- 1147, 1159, 1135], aFunctor, 60)</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># select the top face</p>
-<p class="whs7">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs7"> </p>
+<p class="whs9">face = faces[7]</p>
-<h3><a name=bookmark12>Orientation</a></h3>
+<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh,
+ face, "face circular top")</p>
-<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">import
- salome</span></p>
+<p class="whs9"> </p>
-<p class="whs7">import geompy</p>
+<p class="whs10"># create a vector for
+ extrusion</p>
-<p class="whs7"> </p>
+<p class="whs9">point = SMESH.PointStruct(0.,
+ 0., 5.)</p>
-<p class="whs7">import StdMeshers</p>
+<p class="whs9">vector = SMESH.DirStruct(point)</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs8"># GEOM module</p>
+<p class="whs10"># create a group to be
+ extruded</p>
-<p class="whs7">shape_mesh = geompy.MakeCylinderRH(13,
- 77)</p>
+<p class="whs9">GroupTri = mesh.CreateGroupFromGEOM(SMESH.FACE,
+ "Group of faces (extrusion)", face)</p>
-<p class="whs7">geompy.addToStudy(shape_mesh,
- "cylinder")</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># perform extrusion of
+ the group</p>
-<p class="whs8"># SMESH module</p>
+<p class="whs9">aMeshEditor.ExtrusionSweepObject(GroupTri,
+ vector, 5)</p>
-<p class="whs7">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs10"> </p>
-<p class="whs7">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs10"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+ </p>
-<p class="whs7">mesh = smesh.CreateMesh(shape_mesh)</p>
+<h3><a name=bookmark10>Extrusion along a Path</a></h3>
-<p class="whs7">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs7"> </p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to perform extrusion along a path. </p>
-<p class="whs8"># build five quadrangles:</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs7">node_start_id = mesh.NbNodes()
- + 1</p>
+<p class="whs9"> </p>
-<p class="whs7">dx = 10</p>
+<p class="whs9">import math</p>
-<p class="whs7">dy = 20</p>
+<p class="whs9">import salome</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">MeshEditor.AddNode(0.0
- * dx, 0, 0) # 1</p>
+<p class="whs10"># Geometry</p>
-<p class="whs7">MeshEditor.AddNode(1.0
- * dx, 0, 0) # 2</p>
+<p class="whs9">import geompy</p>
-<p class="whs7">MeshEditor.AddNode(2.0
- * dx, 0, 0) # 3</p>
+<p class="whs10"> </p>
-<p class="whs7">MeshEditor.AddNode(3.0
- * dx, 0, 0) # 4</p>
+<p class="whs10"># 1. Create points</p>
-<p class="whs7">MeshEditor.AddNode(4.0
- * dx, 0, 0) # 5</p>
+<p class="whs9">points = [[0, 0],
+ [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]</p>
-<p class="whs7">MeshEditor.AddNode(5.0
- * dx, 0, 0) # 6</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs9">iv = 1</p>
-<p class="whs7">MeshEditor.AddNode(0.0
- * dx, dy, 0) # 7</p>
+<p class="whs9">vertices = []</p>
-<p class="whs7">MeshEditor.AddNode(1.0
- * dx, dy, 0) # 8</p>
+<p class="whs9">for point in points:</p>
-<p class="whs7">MeshEditor.AddNode(2.0
- * dx, dy, 0) # 9</p>
+<p class="whs11">vert
+ = geompy.MakeVertex(point[0], point[1], 0)</p>
-<p class="whs7">MeshEditor.AddNode(3.0
- * dx, dy, 0) # 10</p>
+<p class="whs11">geompy.addToStudy(vert,
+ "Vertex_" + `iv`)</p>
-<p class="whs7">MeshEditor.AddNode(4.0
- * dx, dy, 0) # 11</p>
+<p class="whs11">vertices.append(vert)</p>
-<p class="whs7">MeshEditor.AddNode(5.0
- * dx, dy, 0) # 12</p>
+<p class="whs11">iv
+ += 1</p>
-<p class="whs7"> </p>
+<p class="whs11">pass</p>
-<p class="whs7">MeshEditor.AddFace([1,
- 2, 8, 7])</p>
+<p class="whs10"> </p>
-<p class="whs7">MeshEditor.AddFace([2,
- 3, 9, 8])</p>
+<p class="whs10"># 2. Create edges and
+ wires</p>
-<p class="whs7">MeshEditor.AddFace([3,
- 4, 10, 9])</p>
+<p class="whs9">Edge_straight = geompy.MakeEdge(vertices[0],
+ vertices[4])</p>
-<p class="whs7">MeshEditor.AddFace([4,
- 5, 11, 10])</p>
+<p class="whs9">Edge_bezierrr = geompy.MakeBezier(vertices)</p>
-<p class="whs7">MeshEditor.AddFace([5,
- 6, 12, 11])</p>
+<p class="whs9">Wire_polyline = geompy.MakePolyline(vertices)</p>
-<p class="whs7"> </p>
+<p class="whs9">Edge_Circle =
+ geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])</p>
-<p class="whs8"># Change orientation
- of the second and the fourth faces.</p>
+<p class="whs9"> </p>
-<p class="whs7">MeshEditor.Reorient([2,
- 4])</p>
+<p class="whs9">geompy.addToStudy(Edge_straight,
+ "Edge_straight")</p>
-<p class="whs7"> </p>
+<p class="whs9">geompy.addToStudy(Edge_bezierrr,
+ "Edge_bezierrr")</p>
-<p class="whs7">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs9">geompy.addToStudy(Wire_polyline,
+ "Wire_polyline")</p>
-<p class="whs7"> </p>
+<p class="whs9">geompy.addToStudy(Edge_Circle
+ , "Edge_Circle")</p>
-<h3><a name=bookmark7>Cutting Quadrangles</a></h3>
+<p class="whs10"> </p>
-<p class="whs7">import SMESH</p>
+<p class="whs10"># 3. Explode wire on
+ edges, as they will be used for mesh extrusion</p>
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">Wire_polyline_edges
+ = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType["EDGE"])</p>
-<p class="whs7"> </p>
+<p class="whs9">for ii in range(len(Wire_polyline_edges)):</p>
-<p class="whs7">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs11">geompy.addToStudyInFather(Wire_polyline,
+ Wire_polyline_edges[ii], "Edge_" + `ii + 1`)</p>
-<p class="whs7">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs11">pass</p>
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs12"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># Mesh</p>
-<p class="whs8"># unite a set of triangles</p>
+<p class="whs9">import smesh</p>
-<p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs9">import SMESH</p>
-<p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs9">gen = smesh.smesh</p>
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9"> </p>
-<p class="whs7">aMeshEditor.QuadToTri([405,
- 406], aFunctor)</p>
+<p class="whs9">smeshgui = salome.ImportComponentGUI("SMESH")</p>
-<p class="whs7"> </p>
+<p class="whs9">smeshgui.Init(salome.myStudyId)</p>
-<p class="whs7">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs10"> </p>
-<p class="whs8"> </p>
+<p class="whs10"># 1D algorithm and three
+ 1D hypotheses</p>
-<h3><a name=bookmark8>Smoothing</a></h3>
+<p class="whs9">Wire_discretisation
+ = gen.CreateHypothesis('Regular_1D', 'libStdMeshersEngine.so')</p>
-<p class="whs7">import SMESH</p>
+<p class="whs9"> </p>
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">Nb_Segments_3 = gen.CreateHypothesis('NumberOfSegments',
+ 'libStdMeshersEngine.so')</p>
-<p class="whs7"> </p>
+<p class="whs9">Nb_Segments_7 = gen.CreateHypothesis('NumberOfSegments',
+ 'libStdMeshersEngine.so')</p>
-<p class="whs7">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9">Nb_Segments_8 = gen.CreateHypothesis('NumberOfSegments',
+ 'libStdMeshersEngine.so')</p>
-<p class="whs7">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9"> </p>
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">Nb_Segments_3.SetNumberOfSegments(3)</p>
-<p class="whs7"> </p>
+<p class="whs9">Nb_Segments_7.SetNumberOfSegments(7)</p>
-<p class="whs8"># smooth</p>
+<p class="whs9">Nb_Segments_8.SetNumberOfSegments(8)</p>
-<p class="whs7">FacesSmooth = [911,
- 931, 950, 864, 932]</p>
+<p class="whs10"> </p>
-<p class="whs7">GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group
- of faces (smooth)")</p>
+<p class="whs10"># Mesh given shape with
+ given 1d hypothesis</p>
-<p class="whs7">GroupSmooth.Add(FacesSmooth)</p>
+<p class="whs9">def Mesh1D(shape1d,
+ hyp1d, name):</p>
-<p class="whs7"> </p>
+<p class="whs11">mesh1d_tool
+ = smesh.Mesh(shape1d)</p>
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs11">mesh1d
+ = mesh1d_tool.GetMesh()</p>
-<p class="whs7">aMeshEditor.SmoothObject(GroupSmooth,
- [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
+<p class="whs11">status
+ = mesh1d.AddHypothesis(shape1d, hyp1d)</p>
-<p class="whs7"> </p>
+<p class="whs11">status
+ = mesh1d.AddHypothesis(shape1d, Wire_discretisation)</p>
-<p class="whs7">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs11">isDone
+ = mesh1d_tool.Compute()</p>
-<p class="whs7"> </p>
+<p class="whs11">if
+ not isDone: print 'Mesh ', name, ': computation failed'</p>
-<p class="whs7"> </p>
+<p class="whs11">return
+ mesh1d</p>
-<h3><a name=bookmark9>Extrusion</a></h3>
+<p class="whs9"> </p>
-<p class="whs8">import SMESH</p>
+<p class="whs10"># Create a mesh with
+ six nodes, seven edges and two quadrangle faces</p>
-<p class="whs8">import SMESH_mechanic</p>
+<p class="whs9">def MakeQuadMesh2(mesh_name):</p>
-<p class="whs8"> </p>
+<p class="whs11">quad_1
+ = gen.CreateEmptyMesh()</p>
-<p class="whs8">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs11">smeshgui.SetName(salome.ObjectToID(quad_1),
+ mesh_name)</p>
-<p class="whs8">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs11">editor_1
+ = quad_1.GetMeshEditor()</p>
-<p class="whs8">salome = SMESH_mechanic.salome</p>
+<p class="whs12"> </p>
-<p class="whs7"> </p>
+<p class="whs12"># six nodes</p>
-<p class="whs8"># extrusion of the group</p>
+<p class="whs11">n1
+ = editor_1.AddNode(0, 20, 10)</p>
-<p class="whs8">point = SMESH.PointStruct(0,
- 0, 5)</p>
+<p class="whs11">n2
+ = editor_1.AddNode(0, 40, 10)</p>
-<p class="whs8">vector = SMESH.DirStruct(point)</p>
+<p class="whs11">n3
+ = editor_1.AddNode(0, 40, 30)</p>
-<p class="whs8">FacesTriToQuad = [2381,
- 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393,
- 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405,
- 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417,
- 2418, 2419, 2420, 2421, 2422]</p>
+<p class="whs11">n4
+ = editor_1.AddNode(0, 20, 30)</p>
-<p class="whs8"> </p>
+<p class="whs11">n5
+ = editor_1.AddNode(0, 0,
+ 30)</p>
-<p class="whs8">GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group
- of faces (quad)")</p>
+<p class="whs11">n6
+ = editor_1.AddNode(0, 0,
+ 10)</p>
-<p class="whs8">GroupTriToQuad.Add(FacesTriToQuad)</p>
+<p class="whs12"> </p>
-<p class="whs8"> </p>
+<p class="whs12"># seven edges</p>
-<p class="whs8">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs11">editor_1.AddEdge([n1,
+ n2]) # 1</p>
-<p class="whs8">aMeshEditor.ExtrusionSweepObject(GroupTriToQuad,
- vector, 5)</p>
+<p class="whs11">editor_1.AddEdge([n2,
+ n3]) # 2</p>
-<p class="whs8"> </p>
+<p class="whs11">editor_1.AddEdge([n3,
+ n4]) # 3</p>
-<p class="whs8">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs11">editor_1.AddEdge([n4,
+ n1]) # 4</p>
-<p class="whs8"> </p>
+<p class="whs11">editor_1.AddEdge([n4,
+ n5]) # 5</p>
-<h3><a name=bookmark10>Extrusion along a Path</a></h3>
+<p class="whs11">editor_1.AddEdge([n5,
+ n6]) # 6</p>
-<p class="whs7">import geompy</p>
+<p class="whs11">editor_1.AddEdge([n6,
+ n1]) # 7</p>
-<p class="whs7">import smesh</p>
+<p class="whs12"> </p>
-<p class="whs7">import salome</p>
+<p class="whs12"># two quadrangle faces</p>
-<p class="whs7">import SMESH</p>
+<p class="whs11">editor_1.AddFace([n1,
+ n2, n3, n4]) # 8</p>
-<p class="whs7"> </p>
+<p class="whs11">editor_1.AddFace([n1,
+ n4, n5, n6]) # 9</p>
-<p class="whs8"># create a face to be
- meshed</p>
+<p class="whs11">return
+ [quad_1, editor_1, [1,2,3,4,5,6,7], [8,9]]</p>
-<p class="whs7">px = geompy.MakeVertex(100.,
- 0. , 0.
- )</p>
+<p class="whs10"> </p>
-<p class="whs7">py = geompy.MakeVertex(0.
- , 100.,
- 0. )</p>
+<p class="whs10"># Path meshes</p>
-<p class="whs7">pz = geompy.MakeVertex(0.
- , 0. ,
- 100.)</p>
+<p class="whs9">Edge_straight_mesh
+ = Mesh1D(Edge_straight, Nb_Segments_7, "Edge_straight")</p>
-<p class="whs7"> </p>
+<p class="whs9">Edge_bezierrr_mesh
+ = Mesh1D(Edge_bezierrr, Nb_Segments_7, "Edge_bezierrr")</p>
-<p class="whs7">vxy = geompy.MakeVector(px,
- py)</p>
+<p class="whs9">Wire_polyline_mesh
+ = Mesh1D(Wire_polyline, Nb_Segments_3, "Wire_polyline")</p>
-<p class="whs7">arc = geompy.MakeArc(py,
- pz, px)</p>
+<p class="whs9">Edge_Circle_mesh =
+ Mesh1D(Edge_Circle ,
+ Nb_Segments_8, "Edge_Circle")</p>
-<p class="whs7"> </p>
+<p class="whs10"> </p>
-<p class="whs7">wire = geompy.MakeWire([vxy,
- arc])</p>
+<p class="whs10"># Initial meshes (to
+ be extruded)</p>
-<p class="whs7">isPlanarFace = 1</p>
+<p class="whs9">[quad_1, editor_1,
+ ee_1, ff_1] = MakeQuadMesh2("quad_1")</p>
-<p class="whs7"> </p>
+<p class="whs9">[quad_2, editor_2,
+ ee_2, ff_2] = MakeQuadMesh2("quad_2")</p>
-<p class="whs7">face1 = geompy.MakeFace(wire,
- isPlanarFace)</p>
+<p class="whs9">[quad_3, editor_3,
+ ee_3, ff_3] = MakeQuadMesh2("quad_3")</p>
-<p class="whs7">id_face1 = geompy.addToStudy(face1,
- "Face1")</p>
+<p class="whs9">[quad_4, editor_4,
+ ee_4, ff_4] = MakeQuadMesh2("quad_4")</p>
-<p class="whs7"> </p>
+<p class="whs9">[quad_5, editor_5,
+ ee_5, ff_5] = MakeQuadMesh2("quad_5")</p>
-<p class="whs8"># create a 2D mesh on
- the face</p>
+<p class="whs9">[quad_6, editor_6,
+ ee_6, ff_6] = MakeQuadMesh2("quad_6")</p>
-<p class="whs7">trias = smesh.Mesh(face1,
- "Face : 2D mesh")</p>
+<p class="whs9">[quad_7, editor_7,
+ ee_7, ff_7] = MakeQuadMesh2("quad_7")</p>
-<p class="whs7"> </p>
+<p class="whs10"> </p>
-<p class="whs7">algo = trias.Segment()</p>
+<p class="whs10"># ExtrusionAlongPath</p>
-<p class="whs7">algo.NumberOfSegments(6)</p>
+<p class="whs10"># IDsOfElements, PathMesh,
+ PathShape, NodeStart,</p>
-<p class="whs7"> </p>
+<p class="whs10"># HasAngles, Angles,
+ HasRefPoint, RefPoint</p>
-<p class="whs7">algo = trias.Triangle()</p>
+<p class="whs10"> </p>
-<p class="whs7">algo.LengthFromEdges()</p>
+<p class="whs9">refPoint = SMESH.PointStruct(0,
+ 0, 0)</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">trias.Compute()</p>
+<p class="whs9">a10 = 10.0*math.pi/180.0</p>
-<p class="whs7"> </p>
+<p class="whs9">a45 = 45.0*math.pi/180.0</p>
-<p class="whs8"># create a path mesh</p>
+<p class="whs10"> </p>
-<p class="whs7">px1 = geompy.MakeVertex(100.,
- 100. ,
- 0. )</p>
+<p class="whs10"># 1. Extrusion of two
+ mesh edges along a straight path</p>
-<p class="whs7">py1 = geompy.MakeVertex(-100.
- , -100.,
- 0. )</p>
+<p class="whs9">error = editor_1.ExtrusionAlongPath([1,2],
+ Edge_straight_mesh, Edge_straight, 1,</p>
-<p class="whs7">pz1 = geompy.MakeVertex(0.
- , 0. ,
- 50.)</p>
+<p class="whs13"> 0,
+ [], 0, refPoint)</p>
-<p class="whs7"> </p>
+<p class="whs10"> </p>
-<p class="whs7">circle = geompy.MakeCircleThreePnt(py1,
- pz1, px1)</p>
+<p class="whs10"># 2. Extrusion of one
+ mesh edge along a curved path</p>
-<p class="whs7">id_circle = geompy.addToStudy(circle,
- "Path")</p>
+<p class="whs9">error = editor_2.ExtrusionAlongPath([2],
+ Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
-<p class="whs7"> </p>
+<p class="whs13"> 0,
+ [], 0, refPoint)</p>
-<p class="whs7">circlemesh = smesh.Mesh(circle,
- "Path mesh")</p>
+<p class="whs10"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># 3. Extrusion of one
+ mesh edge along a curved path with usage of angles </p>
-<p class="whs7">algo = circlemesh.Segment()</p>
+<p class="whs9">error = editor_3.ExtrusionAlongPath([2],
+ Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
-<p class="whs7">algo.NumberOfSegments(10)</p>
+<p class="whs13"> 1,
+ [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)</p>
-<p class="whs7"> </p>
+<p class="whs10"> </p>
-<p class="whs7">circlemesh.Compute()</p>
+<p class="whs10"># 4. Extrusion of one
+ mesh edge along the path, which is a part of a meshed wire</p>
-<p class="whs7"> </p>
+<p class="whs9">error = editor_4.ExtrusionAlongPath([4],
+ Wire_polyline_mesh, Wire_polyline_edges[0], 1,</p>
-<p class="whs8"># extrusion of the mesh</p>
+<p class="whs13"> 1,
+ [a10, a10, a10], 0, refPoint)</p>
-<p class="whs8"># The mesh "trias"
- will be extruded along another mesh, which is a sub-mesh of "circlemesh",</p>
+<p class="whs10"> </p>
-<p class="whs8"><span style="font-family: 'Times New Roman', serif;">#
- corresponding to geometry "circle". In this particular case
- the path mesh will be the whole "circlemesh"</span></p>
+<p class="whs10"># 5. Extrusion of two
+ mesh faces along the path, which is a part of a meshed wire</p>
-<p class="whs8"> </p>
+<p class="whs9">error = editor_5.ExtrusionAlongPath(ff_5
+ , Wire_polyline_mesh, Wire_polyline_edges[2], 4,</p>
-<p class="whs7">aMeshEditor = trias.GetMesh().GetMeshEditor()</p>
+<p class="whs13"> 0,
+ [], 0, refPoint)</p>
-<p class="whs7">aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(),
- circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
+<p class="whs10"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># 6. Extrusion of two
+ mesh faces along a closed path</p>
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs9">error = editor_6.ExtrusionAlongPath(ff_6
+ , Edge_Circle_mesh, Edge_Circle, 1,</p>
+
+<p class="whs13"> 0,
+ [], 0, refPoint)</p>
+
+<p class="whs10"> </p>
+
+<p class="whs10"># 7. Extrusion of two
+ mesh faces along a closed path with usage of angles </p>
+
+<p class="whs9">error = editor_7.ExtrusionAlongPath(ff_7,
+ Edge_Circle_mesh, Edge_Circle, 1,</p>
+
+<p class="whs13"> 1,
+ [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint</p>
+
+<p class="whs13"> </p>
+
+<p class="whs14">salome.sg.updateObjBrowser(1)</p>
<h3><a name=bookmark11>Revolution</a></h3>
-<p class="whs7">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to perform revolution. </p>
-<p class="whs7">import math</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs7"> </p>
+<p class="whs1"> </p>
-<p class="whs7">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs9">import math</p>
-<p class="whs7">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs9">import SMESH</p>
+
+<p class="whs9">import SMESH_mechanic</p>
+
+<p class="whs9"> </p>
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
-<p class="whs8"> </p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs8"># rotate a sweep object</p>
+<p class="whs9"> </p>
-<p class="whs7">FacesRotate = [492,
+<p class="whs10"># create a group of faces
+ to be revolved</p>
+
+<p class="whs9">FacesRotate = [492,
493, 502, 503]</p>
-<p class="whs7">GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group
+<p class="whs9">GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group
of faces (rotate)")</p>
-<p class="whs7">GroupRotate.Add(FacesRotate)</p>
+<p class="whs9">GroupRotate.Add(FacesRotate)</p>
-<p class="whs7">angle45 = 45*math.pi/180</p>
+<p class="whs10"> </p>
-<p class="whs7">axisXYZ = SMESH.AxisStruct(-38.3128,
- -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
+<p class="whs10"># define revolution angle
+ and axis</p>
-<p class="whs7"> </p>
+<p class="whs9">angle45 = 45 * math.pi
+ / 180</p>
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">axisXYZ = SMESH.AxisStruct(-38.3128,
+ -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
-<p class="whs7">aMeshEditor.RotationSweepObject(GroupRotate,
- axisXYZ, angle45, 4, 1e-5)</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
+<p class="whs10"># perform revolution
+ of an object</p>
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs9">aMeshEditor.RotationSweepObject(GroupRotate,
+ axisXYZ, angle45, 4, 1e-5) </p>
-<p class="whs8"> </p>
+<p class="whs10"> </p>
<h3><a name=bookmark13>Pattern Mapping</a></h3>
-<p class="whs7">import salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs7">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to perform pattern mapping. </p>
-<p class="whs7">import SMESH, smesh</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">geompy.init_geom(salome.myStudy)</p>
+<p class="whs9">import geompy</p>
-<p class="whs7">smesh.smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs9">import smesh</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs8"># define geometry</p>
+<p class="whs10"># define the geometry</p>
-<p class="whs7">Box_1 = geompy.MakeBoxDXDYDZ(200,
- 200, 200)</p>
+<p class="whs9">Box_1 = geompy.MakeBoxDXDYDZ(200.,
+ 200., 200.)</p>
-<p class="whs7">geompy.addToStudy(Box_1,
+<p class="whs9">geompy.addToStudy(Box_1,
"Box_1")</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">faces = geompy.SubShapeAll(Box_1,
+<p class="whs9">faces = geompy.SubShapeAll(Box_1,
geompy.ShapeType["FACE"])</p>
-<p class="whs7">Face_1 = faces[0]</p>
+<p class="whs9">Face_1 = faces[0]</p>
-<p class="whs7">Face_2 = faces[1]</p>
+<p class="whs9">Face_2 = faces[1]</p>
-<p class="whs7">geompy.addToStudyInFather(Box_1,
+<p class="whs9">geompy.addToStudyInFather(Box_1,
Face_1, "Face_1")</p>
-<p class="whs7">geompy.addToStudyInFather(Box_1,
+<p class="whs9">geompy.addToStudyInFather(Box_1,
Face_2, "Face_2")</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs8"># build quadrangle mesh
- 3x3 on Face_1</p>
+<p class="whs10"># build a quadrangle
+ mesh 3x3 on Face_1</p>
-<p class="whs7">Mesh_1 = smesh.Mesh(Face_1)</p>
+<p class="whs9">Mesh_1 = smesh.Mesh(Face_1)</p>
-<p class="whs7">Wire_discretisation
- = Mesh_1.Segment()</p>
+<p class="whs9">algo1D = Mesh_1.Segment()</p>
-<p class="whs7">Wire_discretisation.NumberOfSegments(3)</p>
+<p class="whs9">algo1D.NumberOfSegments(3)</p>
-<p class="whs7">Mesh_1.Quadrangle()</p>
+<p class="whs9">Mesh_1.Quadrangle()</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs7">isDone = Mesh_1.Compute()</p>
+<p class="whs9">isDone = Mesh_1.Compute()</p>
-<p class="whs7">if not isDone: print
+<p class="whs9">if not isDone: print
'Mesh Mesh_1 : computation failed'</p>
-<p class="whs7"> </p>
-
-<p class="whs8"># pattern the mesh</p>
-
-<p class="whs7">Mesh_2 = smesh.Mesh(Face_2)</p>
+<p class="whs9"> </p>
-<p class="whs7">Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments',
- 'libStdMeshersEngine.so')</p>
+<p class="whs10"># build a triangle mesh
+ on Face_2</p>
-<p class="whs7">Nb_Segments_1.SetNumberOfSegments(1)</p>
+<p class="whs9">Mesh_2 = smesh.Mesh(Face_2)</p>
-<p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2,
- Nb_Segments_1)</p>
+<p class="whs9">algo1D = Mesh_2.Segment()</p>
-<p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2,
- Wire_discretisation.GetAlgorithm())</p>
+<p class="whs9">algo1D.NumberOfSegments(1)</p>
-<p class="whs7">Triangle_Mefisto =
- Mesh_2.Triangle()</p>
+<p class="whs9">algo2D = Mesh_2.Triangle()</p>
-<p class="whs7">Max_Element_Area =
- Triangle_Mefisto.MaxElementArea(240)</p>
+<p class="whs9">algo2D.MaxElementArea(240)</p>
-<p class="whs7"> </p>
+<p class="whs9">isDone = Mesh_2.Compute()</p>
-<p class="whs7">isDone = Mesh_2.Compute()</p>
-
-<p class="whs7">if not isDone: print
+<p class="whs9">if not isDone: print
'Mesh Mesh_2 : computation failed'</p>
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs8"># create a pattern</p>
+<p class="whs10"># create a pattern</p>
-<p class="whs7">pattern = smesh.smesh.GetPattern()</p>
+<p class="whs9">pattern = smesh.smesh.GetPattern()</p>
-<p class="whs7">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(),
+<p class="whs9">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(),
Face_2, 0)</p>
-<p class="whs7">if (isDone != 1):</p>
+<p class="whs9">if (isDone != 1):
+ print 'LoadFromFace :', pattern.GetErrorCode()</p>
-<p class="whs9">print
- 'LoadFromFace :', pattern.GetErrorCode()</p>
-
-<p class="whs7"> </p>
+<p class="whs9"> </p>
-<p class="whs8"># apply the pattern to
+<p class="whs10"># apply the pattern to
a face of the first mesh</p>
-<p class="whs7">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(),
+<p class="whs9">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(),
[17], 0, 0)</p>
-<p class="whs7">isDone = pattern.MakeMesh(Mesh_1.GetMesh(),
+<p class="whs9">isDone = pattern.MakeMesh(Mesh_1.GetMesh(),
0, 0)</p>
-<p class="whs7">if (isDone != 1):</p>
+<p class="whs9">if (isDone != 1):
+ print 'MakeMesh :', pattern.GetErrorCode() </p>
-<p class="whs9">print
- 'MakeMesh :', pattern.GetErrorCode()</p>
+<p class="whs9"> </p>
-<p class="whs7"> </p>
-
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs10"> </p>
<script type="text/javascript" language="javascript1.2">
<!--
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
<!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
<h3><a name=bookmark>Free Borders</a></h3>
-<p class="whs1">import salome</p>
+<p class="whs1"># Attention! This script has been written
+ using the old approach basing on direct usage of SMESH idl interface.</p>
-<p class="whs1">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check free borders. </p>
-<p class="whs1">import SMESH</p>
-
-<p class="whs1">import StdMeshers</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
-
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
<p class="whs2"> </p>
-<p class="whs2"># create a box without
- one plane</p>
+<p class="whs3">import salome</p>
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
+<p class="whs3">import geompy</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">FaceList =
- []</p>
+<p class="whs3">import smesh</p>
-<p class="whs1">for i in range(
- 5 ):</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> FaceList.append(
- subShapeList[ i ] )</p>
+<p class="whs2"> </p>
-<p class="whs1"> </p>
+<p class="whs2"># create open shell: a
+ box without one plane</p>
-<p class="whs1">aComp = geompy.MakeCompound(
- FaceList )</p>
+<p class="whs3">box = geompy.MakeBox(0.,
+ 0., 0., 20., 20., 15.)</p>
-<p class="whs1">aBox = geompy.Sew(
- aComp, 1. )</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs1">idbox = geompy.addToStudy(
- aBox, "box" )</p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
-<p class="whs1"> </p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
-<p class="whs1">aBox =
- salome.IDToObject( idbox )</p>
+<p class="whs3">idbox = geompy.addToStudy(box,
+ "box")</p>
-<p class="whs1"> </p>
+<p class="whs2"> </p>
<p class="whs2"># create a mesh</p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">tria = smesh.Mesh(box,
+ "Mesh_free_borders")</p>
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">algo = tria.Segment()</p>
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
-<p class="whs1"> </p>
+<p class="whs3">algo = tria.Triangle()</p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">tria.Compute()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">gen = smesh.smesh</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
-
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
-
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs2"> </p>
-<p class="whs1"> </p>
+<p class="whs2"># criterion : free borders</p>
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateFreeBorders()</p>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">smeshgui.SetName(
- salome.ObjectToID( mesh ), "Mesh_freebord" );</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
<p class="whs2"> </p>
-<p class="whs2"># criterion : free borders</p>
-
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateFreeBorders()</p>
+<p class="whs2"># print the result</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">print "Criterion:
+ Free borders Nb = ", len(anIds)</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">j = 1</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"> </p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">print "Criterion:
- Free borders Nb = ", len( anIds )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3"> pass</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">print ""</p>
<p class="whs2"> </p>
<p class="whs2"># create a group</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.EDGE, "Free borders" )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE,
+ "Free borders")</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> </p>
<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
</p>
-<p class="whs2"> </p>
-
<h3><a name=bookmark1>Borders at Multiconnection</a></h3>
-<p class="whs1">import salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check borders at multiconnection. </p>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">import salome</p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs3">import geompy</p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">import smesh</p>
-<p class="whs2"># create a box without
- one plane</p>
+<p class="whs3">import SMESH</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
+
+<p class="whs4"># create open shell:
+ a box without one plane</p>
-<p class="whs1">box = geompy.MakeBox(0.,
+<p class="whs3">box = geompy.MakeBox(0.,
0., 0., 20., 20., 15.)</p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
+<p class="whs3">FaceList = geompy.SubShapeAll(box,
geompy.ShapeType["FACE"])</p>
-<p class="whs1"> </p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
-<p class="whs1">FaceList =
- []</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
-<p class="whs1">for i in range(
- 5 ):</p>
+<p class="whs3">idbox = geompy.addToStudy(box,
+ "box")</p>
-<p class="whs1"> FaceList.append(
- subShapeList[ i ] )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># create a mesh</p>
-<p class="whs1">aComp = geompy.MakeCompound(
- FaceList )</p>
+<p class="whs3">tria = smesh.Mesh(box,
+ "Mesh_borders_at_multi-connections")</p>
-<p class="whs1">aBox = geompy.Sew(
- aComp, 1. )</p>
+<p class="whs3">algo = tria.Segment()</p>
-<p class="whs1">idbox = geompy.addToStudy(
- aBox, "box" )</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
-<p class="whs1"> </p>
+<p class="whs3">algo = tria.Triangle()</p>
-<p class="whs1">aBox =
- salome.IDToObject( idbox )</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
-<p class="whs1"> </p>
+<p class="whs3">tria.Compute()</p>
-<p class="whs2"># create a mesh</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
-<p class="whs2"> </p>
+<p class="whs3">gen = smesh.smesh</p>
+
+<p class="whs3"> </p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs4"># Criterion : Borders
+ at multi-connection</p>
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">nb_conn = 2</p>
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> </p>
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMultiConnection()</p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> </p>
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3">aPredicate.SetMargin(nb_conn)</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3"> </p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># print the result</p>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs3">print "Criterion:
+ Borders at multi-connections Nb = ", len(anIds)</p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">j = 1</p>
-<p class="whs1">smeshgui.SetName(
- salome.ObjectToID( mesh ), "Mesh_borders_at_multi-connections"
- );</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1"> </p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs2"># Criterion : Borders at
- multi-connection</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection()</p>
+<p class="whs3"> pass</p>
-<p class="whs1"> </p>
+<p class="whs3">print ""</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs4"># create a group</p>
-<p class="whs1">aPredicate.SetMargin(
- 2 )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE,
+ "Borders at multi-connections")</p>
-<p class="whs1"> </p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<h3><a name=bookmark2>Length 1D</a></h3>
-<p class="whs1"> </p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check length 1D. </p>
-<p class="whs1"> </p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs2"># print the result</p>
+<p class="whs2"> </p>
-<p class="whs1">print "Criterion:
- Borders at multi-connections Nb = ", len( anIds )</p>
+<p class="whs3">import salome</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">import geompy</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3"> </p>
+
+<p class="whs3">import smesh</p>
+
+<p class="whs3">import SMESH</p>
<p class="whs2"> </p>
-<p class="whs2"># create a group</p>
+<p class="whs2"># create open shell: a
+ box without one plane</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.EDGE, "Borders at multi-connections" )</p>
+<p class="whs3">box = geompy.MakeBox(0.,
+ 0., 0., 20., 20., 15.)</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
-<p class="whs2"> </p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
-<h3><a name=bookmark2>Length 1D</a></h3>
+<p class="whs3">idbox = geompy.addToStudy(box,
+ "box")</p>
<p class="whs2"> </p>
-<p class="whs1">import salome</p>
+<p class="whs2"># create a mesh</p>
-<p class="whs1">import geompy</p>
+<p class="whs3">tria = smesh.Mesh(box,
+ "Mesh_Length_1D")</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">algo = tria.Segment()</p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
-<p class="whs1"> </p>
+<p class="whs3">algo = tria.Triangle()</p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">tria.Compute()</p>
-<p class="whs2"> </p>
+<p class="whs3">mesh = tria.GetMesh()</p>
-<p class="whs2"># create a box without
- one plane</p>
+<p class="whs3">gen = smesh.smesh</p>
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
+<p class="whs2"> </p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
+<p class="whs2"># Criterion : Length >
+ 3.</p>
-<p class="whs1"> </p>
+<p class="whs3">length_margin =
+ 3.</p>
-<p class="whs1">FaceList =
- []</p>
+<p class="whs3"> </p>
-<p class="whs1">for i in range(
- 5 ):</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
-<p class="whs1"> FaceList.append(
- subShapeList[ i ] )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateLength()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aComp = geompy.MakeCompound(
- FaceList )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aBox = geompy.Sew(
- aComp, 1. )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">idbox = geompy.addToStudy(
- aBox, "box" )</p>
+<p class="whs3">aPredicate.SetMargin(length_margin)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aBox =
- salome.IDToObject( idbox )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"># create a mesh</p>
+<p class="whs3"> </p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs2"> </p>
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs2"># print the result</p>
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">print "Criterion:
+ Edges length > ", length_margin, " Nb = ", len(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3">j = 1</p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1"> </p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3"> pass</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">print ""</p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs2"> </p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs2"># create a group</p>
-<p class="whs1"> </p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE,
+ "Edges with length > " + `length_margin`)</p>
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+ </p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<h3><a name=bookmark3>Free Edges</a></h3>
-<p class="whs1">smeshgui.SetName(
- salome.ObjectToID( mesh ), "Mesh" );</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs1"> </p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check free edges. </p>
-<p class="whs2"># Criterion : Length >
- 3</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFunctor = aFilterMgr.CreateLength()</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1">aPredicate.SetMargin(
- 3 )</p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1"> </p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs4"># Remove some elements
+ to obtain free edges</p>
-<p class="whs2"> </p>
+<p class="whs4"># Criterion : AREA
+ > 95.</p>
-<p class="whs2"># print the result</p>
+<p class="whs3">area_margin = 95.</p>
-<p class="whs1">print "Criterion:
- Edges length > 3 Nb = ", len( anIds )</p>
+<p class="whs3"> </p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs2"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs2"># create a group</p>
+<p class="whs3">aPredicate.SetMargin(area_margin)</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.EDGE, "Edges with legth > 3" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<h3><a name=bookmark3>Free Edges</a></h3>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">anEditor.RemoveElements(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs4"># Criterion : Free
+ Edges</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateFreeEdges()</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">aPredicate.SetMesh(mesh)</p>
-<p class="whs1"> </p>
+<p class="whs3">aBorders = aPredicate.GetBorders()</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># create groups</p>
-<p class="whs2"># Criterion : AREA >
- 30</p>
+<p class="whs3">aGroupF = mesh.CreateGroup(SMESH.FACE,
+ "Faces with free edges")</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aGroupN = mesh.CreateGroup(SMESH.NODE,
+ "Nodes on free edges")</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs4"># fill groups with
+ elements, corresponding to the criterion</p>
-<p class="whs1">aPredicate.SetMargin(
- 95 )</p>
+<p class="whs3">print ""</p>
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Free edges Nb = ", len(aBorders)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">for i in range(len(aBorders)):</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3"> aBorder
+ = aBorders[i]</p>
-<p class="whs1"> </p>
+<p class="whs3"> print
+ "Face # ", aBorder.myElemId, " : Edge between nodes (",</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> print
+ aBorder.myPnt1, ", ", aBorder.myPnt2, ")"</p>
-<p class="whs1">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs3"> </p>
-<p class="whs1">anEditor.RemoveElements(anIds)</p>
+<p class="whs3"> <span
+ style="margin-top: 0pt;
+ margin-bottom: 0pt;
+ font-family: 'Lucida Console', monospace;">aGroupF.Add([aBorder.myElemId])</span></p>
-<p class="whs2"> </p>
+<p class="whs3"> aGroupN.Add([aBorder.myPnt1,
+ aBorder.myPnt2])</p>
-<p class="whs2"># Criterion : Free Edges</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateFreeEdges()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetMesh(
- mesh )</p>
+<h3><a name=bookmark4>Length 2D</a></h3>
-<p class="whs1">aBorders = aPredicate.GetBorders()</p>
+<p class="whs1"><span><font color=red ><B><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></B></font></span></p>
-<p class="whs2"> </p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check length 2D. </p>
-<p class="whs2"># create groups</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">aGroupF = mesh.CreateGroup(
- SMESH.FACE, "Faces with free edges" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroupN = mesh.CreateGroup(
- SMESH.NODE, "Nodes on free edges" )</p>
+<p class="whs3">import salome</p>
-<p class="whs2"> </p>
+<p class="whs3">import geompy</p>
-<p class="whs2"># fill groups with elements,
- corresponding to the criterion</p>
+<p class="whs3"> </p>
-<p class="whs1">print ""</p>
+<p class="whs3">import smesh</p>
-<p class="whs1">print "Criterion:
- Free edges Nb = ", len( aBorders )</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1">for i in range(
- len( aBorders ) ):</p>
+<p class="whs3"> </p>
-<p class="whs1"> aBorder
- = aBorders[ i ]</p>
+<p class="whs4"># create open shell:
+ a box without one plane</p>
-<p class="whs1"> print
- "Face # ", aBorder.myElemId, " : Edge between nodes (",</p>
+<p class="whs3">box = geompy.MakeBox(0.,
+ 0., 0., 20., 20., 15.)</p>
-<p class="whs1"> print
- aBorder.myPnt1, ", ", aBorder.myPnt2, ")"</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs1"> </p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
-<p class="whs1"> aGroupF.Add(
- [aBorder.myElemId] )</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
-<p class="whs1"> aGroupN.Add(
- [aBorder.myPnt1, aBorder.myPnt2] )</p>
+<p class="whs3">idbox = geompy.addToStudy(box,
+ "box")</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs4"># create a mesh</p>
-<p class="whs2"> </p>
+<p class="whs3">tria = smesh.Mesh(box,
+ "Mesh_Length_2D")</p>
-<h3><a name=bookmark4>Length 2D</a></h3>
+<p class="whs3">algo = tria.Segment()</p>
-<p class="whs1">import salome</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
-<p class="whs1">import geompy</p>
+<p class="whs3">algo = tria.Triangle()</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">tria.Compute()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">gen = smesh.smesh</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a box without
- one plane</p>
+<p class="whs4"># Criterion : Length
+ 2D > 5.7</p>
-<p class="whs2"> </p>
+<p class="whs3">length_margin =
+ 5.7</p>
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
+<p class="whs3"> </p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateLength2D()</p>
-<p class="whs1">FaceList =
- []</p>
+<p class="whs3"> </p>
-<p class="whs1">for i in range(
- 5 ):</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1"> FaceList.append(
- subShapeList[ i ] )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(length_margin)</p>
-<p class="whs1">aComp = geompy.MakeCompound(
- FaceList )</p>
+<p class="whs3"> </p>
-<p class="whs1">aBox = geompy.Sew(
- aComp, 1. )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">idbox = geompy.addToStudy(
- aBox, "box" )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aBox =
- salome.IDToObject( idbox )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a mesh</p>
+<p class="whs4"># print the result</p>
-<p class="whs2"> </p>
+<p class="whs3">print "Criterion:
+ Edges length 2D > ", length_margin, " Nb = ", len(anIds)</p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">j = 1</p>
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1"> </p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> pass</p>
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">print ""</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs4"># create a group</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Faces with length 2D > " + `length_margin`)</p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs3"> </p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1"> </p>
+<p class="whs2"> </p>
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
-<p class="whs1"> </p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check borders at multiconnection 2D. </p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">smeshgui.SetName(
- salome.ObjectToID( mesh ), "Mesh" );</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">import salome</p>
-<p class="whs2"># Criterion : Length 2D
- > 5</p>
+<p class="whs3">import geompy</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFunctor = aFilterMgr.CreateLength2D()</p>
+<p class="whs3">import smesh</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs4"># create a compound
+ of two glued boxes</p>
-<p class="whs1">aPredicate.SetMargin(
- 5 )</p>
+<p class="whs3">box1 = geompy.MakeBox(0.,
+ 0., 0., 20., 20., 15.)</p>
-<p class="whs1"> </p>
+<p class="whs3">box2 = geompy.MakeTranslation(box1,
+ 0., 20., 0)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">comp = geompy.MakeCompound([box1,
+ box2])</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">box = geompy.MakeGlueFaces(comp,
+ 0.000001)</p>
-<p class="whs1"> </p>
+<p class="whs3">idbox = geompy.addToStudy(box,
+ "box")</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs4"># create a mesh</p>
-<p class="whs2"># print the result</p>
+<p class="whs3">tria = smesh.Mesh(box,
+ "Box compound : 2D triangle mesh")</p>
-<p class="whs1">print "Criterion:
- Edges length 2D > 5 Nb = ", len( anIds )</p>
+<p class="whs3">algo = tria.Segment()</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">algo = tria.Triangle()</p>
-<p class="whs2"> </p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
-<p class="whs2"># create a group</p>
+<p class="whs3">tria.Compute()</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Edges with legth 2D > 5" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3">gen = smesh.smesh</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
+<p class="whs4"># Criterion : MULTI-CONNECTION
+ 2D = 3</p>
-<p class="whs1">import salome</p>
+<p class="whs3">nb_conn = 3</p>
-<p class="whs1">import geompy</p>
+<p class="whs3"> </p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(nb_conn)</p>
-<p class="whs2"># create a box without
- one plane</p>
+<p class="whs3"> </p>
-<p class="whs1">box = geompy.MakeBox(0.,
- 0., 0., 20., 20., 15.)</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["FACE"])</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">FaceList =
- []</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">for i in range(
- 5 ):</p>
+<p class="whs3"> </p>
-<p class="whs1"> FaceList.append(
- subShapeList[ i ] )</p>
+<p class="whs4"># print the result</p>
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Borders at multi-connection 2D = ", nb_conn, " Nb = ",
+ len(anIds)</p>
-<p class="whs1">aComp = geompy.MakeCompound(
- FaceList )</p>
+<p class="whs3">j = 1</p>
-<p class="whs1">aBox = geompy.Sew(
- aComp, 1. )</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1">idbox = geompy.addToStudy(
- aBox, "box" )</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1"> </p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aBox =
- salome.IDToObject( idbox )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs2"> </p>
+<p class="whs3"> pass</p>
-<p class="whs2"># create a mesh</p>
+<p class="whs3">print ""</p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> </p>
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs4"># create a group</p>
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Borders at multi-connection 2D = " + `nb_conn`)</p>
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<h3><a name=bookmark6>Area</a></h3>
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check area. </p>
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs2"> </p>
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3"> </p>
-<p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1">smeshgui.SetName(
- salome.ObjectToID( mesh ), "Mesh" );</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
<p class="whs2"> </p>
-<p class="whs2"># Criterion : MULTI-CONNECTION
- 2D = 2</p>
+<p class="whs2"># Criterion : AREA >
+ 100.</p>
+
+<p class="whs3">area_margin = 100.</p>
+
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aPredicate.SetMargin(
- 2 )</p>
+<p class="whs3">aPredicate.SetMargin(area_margin)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
+
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
<p class="whs2"> </p>
<p class="whs2"># print the result</p>
-<p class="whs1">print "Criterion:
- Borders at multi-connection 2D = 2 Nb = ", len( anIds )</p>
+<p class="whs3">print "Criterion:
+ Area > ", area_margin, " Nb = ", len(anIds)</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">j = 1</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"> </p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
+
+<p class="whs3"> print
+ anIds[i],</p>
+
+<p class="whs3"> j
+ = j + 1</p>
+
+<p class="whs3"> pass</p>
+
+<p class="whs3">print ""</p>
+
+<p class="whs3"> </p>
<p class="whs2"># create a group</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Borders at multi-connection 2D = 2" )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Area > " + `area_margin`)</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3"> </p>
<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
</p>
-<p class="whs2"> </p>
+<h3><a name=bookmark7>Taper</a></h3>
-<h3><a name=bookmark6>Area</a></h3>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check taper. </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh =
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">smesh =
SMESH_mechanic.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic.mesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : Taper
+ > 3e-20</p>
-<p class="whs1"> </p>
+<p class="whs3">taper_margin = 3e-20</p>
-<p class="whs2"># Criterion : AREA >
- 100</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateTaper()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate.SetMargin(
- 100 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(taper_margin)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Area > 100 Nb = ", len( anIds )</p>
+<p class="whs4"># print the result</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">print "Criterion:
+ Taper > ", taper_margin, " Nb = ", len(anIds)</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
-<p class="whs2"> </p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"># create a group</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Area > 100" )</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1"> </p>
+<p class="whs3"> pass</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3">print ""</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<h3><a name=bookmark7>Taper</a></h3>
+<p class="whs4"># create a group</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Taper > " + `taper_margin`)</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<h3><a name=bookmark8>Aspect Ratio</a></h3>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1"> </p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check aspect ratio. </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># Criterion : Taper >
- 3e-20</p>
+<p class="whs3">import SMESH</p>
-<p class="whs2"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateTaper()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1">aPredicate.SetMargin(
- 3e-20 )</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># Criterion : ASPECT
+ RATIO > 1.8</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">ar_margin = 1.8</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs2"> </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateAspectRatio()</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Taper > 3e-20 Nb = ", len( anIds )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">aPredicate.SetMargin(ar_margin)</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a group</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Taper > 3e-20" )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs4"># print the result</p>
-<h3><a name=bookmark8>Aspect Ratio</a></h3>
+<p class="whs3">print "Criterion:
+ Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">j = 1</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1"> </p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3"> pass</p>
-<p class="whs1"> </p>
+<p class="whs3">print ""</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># create a group</p>
-<p class="whs2"># Criterion : ASPECT RATIO
- > 1.4</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Aspect Ratio > " + `ar_margin`)</p>
-<p class="whs2"> </p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetMargin(
- 1.4 )</p>
+<h3><a name=bookmark9>Minimum Angle</a></h3>
-<p class="whs1"> </p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check minimum angle. </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Aspect Ratio > 1.4 Nb = ", len( anIds )</p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
-<p class="whs2"># create a group</p>
+<p class="whs4"># Criterion : MINIMUM
+ ANGLE < 35.</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Aspect Ratio > 1.4" )</p>
+<p class="whs3">min_angle = 35.</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<h3><a name=bookmark9>Minimum Angle</a></h3>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">aPredicate.SetMargin(min_angle)</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3"> </p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># print the result</p>
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Minimum Angle < ", min_angle, " Nb = ", len(anIds)</p>
-<p class="whs3"># Criterion : MINIMUM
- ANGLE < 70</p>
+<p class="whs3">j = 1</p>
-<p class="whs1"> </p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1">aPredicate.SetMargin(
- 70 )</p>
+<p class="whs3"> pass</p>
-<p class="whs1"> </p>
+<p class="whs3">print ""</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs4"># create a group</p>
-<p class="whs1"> </p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Minimum Angle < " + `min_angle`)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs3"># print the result</p>
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
-<p class="whs1">print "Criterion:
- Minimum Angle < 70 Nb = ", len( anIds )</p>
+<p class="whs3"> </p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<h3><a name=bookmark10>Warping</a></h3>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1"> </p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check warping. </p>
-<p class="whs3"># create a group</p>
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Minimum Angle < 70" )</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">salome.sg.updateObjBrowser(1)
- </p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">smesh =
+ SMESH_mechanic.smesh</p>
-<h3><a name=bookmark10>Warping</a></h3>
+<p class="whs3">mesh =
+ SMESH_mechanic.mesh</p>
-<p class="whs1">import SMESH</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs4"># Criterion : WARP
+ ANGLE > 1e-15</p>
-<p class="whs1">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs3">wa_margin = 1e-15</p>
-<p class="whs1">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3"> </p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateWarping()</p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs2"># Criterion : WARP ANGLE
- > 1e-15</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs2"> </p>
+<p class="whs3">aPredicate.SetMargin(wa_margin)</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateWarping()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">aPredicate.SetMargin(
- 1e-15 )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs4"># print the result</p>
-<p class="whs1"> </p>
+<p class="whs3">print "Criterion:
+ Warp > ", wa_margin, " Nb = ", len(anIds)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">j = 1</p>
-<p class="whs2"> </p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">print "Criterion:
- Warp > 1e-15 Nb = ", len( anIds )</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3"> pass</p>
-<p class="whs2"> </p>
+<p class="whs3">print ""</p>
-<p class="whs2"># create a group</p>
+<p class="whs3"> </p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Warp > 1e-15" )</p>
+<p class="whs4"># create a group</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Warp > " + `wa_margin`)</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
<h3><a name=bookmark12>Skew</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check skew. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3"> </p>
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs1">smesh =
+<p class="whs3"> </p>
+
+<p class="whs3">smesh =
SMESH_mechanic.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic.mesh</p>
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : Skew
+ > 38.</p>
-<p class="whs1"> </p>
+<p class="whs3">skew_margin = 38.</p>
-<p class="whs2"># Criterion : Skew >
- 18</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateSkew()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateSkew()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate.SetMargin(
- 18 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(skew_margin)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
-<p class="whs1"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Skew > 18 Nb = ", len( anIds )</p>
+<p class="whs4"># print the result</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">print "Criterion:
+ Skew > ", skew_margin, " Nb = ", len(anIds)</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
-<p class="whs2"> </p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"># create a group</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.FACE, "Skew > 18" )</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1"> </p>
+<p class="whs3"> pass</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs3">print ""</p>
+
+<p class="whs3"> </p>
+
+<p class="whs4"># create a group</p>
+
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE,
+ "Skew > " + `skew_margin`)</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1)
</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
<h3><a name=bookmark11>Aspect Ratio 3D</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check aspect ratio 3D. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3"> </p>
-<p class="whs1">import SMESH_mechanic_tetra</p>
+<p class="whs3">import SMESH</p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH_mechanic_tetra</p>
-<p class="whs1">smesh =
+<p class="whs3"> </p>
+
+<p class="whs3">smesh =
SMESH_mechanic_tetra.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic_tetra.mesh</p>
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
+<p class="whs3">salome = SMESH_mechanic_tetra.salome</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : ASPECT
+ RATIO 3D > 4.5</p>
-<p class="whs1"> </p>
+<p class="whs3">ar_margin = 4.5</p>
-<p class="whs2"># Criterion : ASPECT RATIO
- 3D > 2.2</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
-<p class="whs1">aPredicate.SetMargin(
- 2.2 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1"> </p>
+<p class="whs3">aPredicate.SetMargin(ar_margin)</p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1"> </p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs2"># print the result</p>
+<p class="whs3"> </p>
-<p class="whs1">print "Criterion:
- Aspect Ratio 3D > 2.2 Nb = ", len( anIds )</p>
+<p class="whs4"># print the result</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3">print "Criterion:
+ Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
-<p class="whs2"> </p>
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs2"># create a group</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.VOLUME, "Aspect Ratio 3D > 2.2" )</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1"> </p>
+<p class="whs3"> pass</p>
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs3">print ""</p>
-<p class="whs2"> </p>
+<p class="whs3"> </p>
+
+<p class="whs4"># create a group</p>
+
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.VOLUME,
+ "Aspect Ratio 3D > " + `ar_margin`)</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1)
+ </p>
<h3><a name=Volume>Volume</a></h3>
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has
+ been written using the old approach basing on direct usage of SMESH idl
+ interface.</B></font></span></B></font></span></p>
-<p class="whs1">import SMESH_mechanic_tetra</p>
+<p class="whs1"># For the moment smesh package doesn't provide
+ methods to check volume. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs2"> </p>
-<p class="whs1"> </p>
+<p class="whs3">import SMESH</p>
-<p class="whs1">smesh =
+<p class="whs3">import SMESH_mechanic_tetra</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">smesh =
SMESH_mechanic_tetra.smesh</p>
-<p class="whs1">mesh =
+<p class="whs3">mesh =
SMESH_mechanic_tetra.mesh</p>
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
+<p class="whs3">salome = SMESH_mechanic_tetra.salome</p>
-<p class="whs1"> </p>
+<p class="whs2"> </p>
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs2"># Criterion : VOLUME <
+ 7.</p>
-<p class="whs1"> </p>
+<p class="whs3">volume_margin =
+ 7.</p>
-<p class="whs2"># Criterion : VOLUME <
- 7</p>
+<p class="whs3"> </p>
-<p class="whs2"> </p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
+
+<p class="whs3">aFunctor = aFilterMgr.CreateVolume3D()</p>
-<p class="whs1">aFunctor = aFilterMgr.CreateVolume3D()</p>
+<p class="whs3"> </p>
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
-<p class="whs1">aPredicate.SetNumFunctor(
- aFunctor )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
-<p class="whs1">aPredicate.SetMargin(
- 7 )</p>
+<p class="whs3">aPredicate.SetMargin(volume_margin)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
-<p class="whs1">aFilter.SetPredicate(
- aPredicate )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
-<p class="whs1">anIds = aFilter.GetElementsId(
- mesh )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
-<p class="whs1"> </p>
+<p class="whs2"> </p>
<p class="whs2"># print the result</p>
-<p class="whs1">print ""</p>
+<p class="whs3">print ""</p>
+
+<p class="whs3">print "Criterion:
+ Volume < ", volume_margin, " Nb = ", len(anIds)</p>
+
+<p class="whs3">j = 1</p>
+
+<p class="whs3">for i in range(len(anIds)):</p>
-<p class="whs1">print "Criterion:
- Volume < 7 Nb = ", len( anIds )</p>
+<p class="whs3"> if
+ j > 20: j = 1; print ""</p>
-<p class="whs1">for i in range(
- len( anIds ) ):</p>
+<p class="whs3"> print
+ anIds[i],</p>
-<p class="whs1"> print
- anIds[ i ]</p>
+<p class="whs3"> j
+ = j + 1</p>
-<p class="whs1"> </p>
+<p class="whs3"> pass</p>
+
+<p class="whs3">print ""</p>
+
+<p class="whs2"> </p>
<p class="whs2"># create a group</p>
-<p class="whs1">aGroup = mesh.CreateGroup(
- SMESH.VOLUME, "Volume < 7" )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.VOLUME,
+ "Volume < " + `volume_margin`)</p>
-<p class="whs1">aGroup.Add( anIds
- )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
-<p class="whs1"> </p>
+<p class="whs3"> </p>
<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
</p>
borders_at_multiconnection_2d.htm
clipping.htm
constructing_meshes.htm
+convert_to_from_quadratic_mesh.htm
defining_hypotheses_tui.htm
deleting_groups.htm
display_entity.htm
merge_elements.htm
mesh.htm
modifying_meshes.htm
+namespacesmesh.html
+netgen_2d_and_3d_hypotheses.htm
pattern_mapping.htm
presentation.htm
quality_controls.htm
revolution.htm
selection_filter_library.htm
+smesh.py_introduction.htm
transforming_meshes.htm
transparency.htm
viewing_meshes.htm
image92.gif
image51.jpg
image70.gif
+pics\netgen2d.png
+pics\circle_simple_after.png
+pics\curvi_simple_after.png
pics\image138.gif
pics\create_group.png
pics\edit_mesh_change_value_hyp.png
image82.gif
image71.gif
image30.jpg
+pics\extrusion1.png
pics\distributionwithanalyticdensity.png
pics\image139.gif
pics\rotation1.png
image94.gif
image83.gif
image31.jpg
+pics\circle_angles_after.png
+pics\circle_simple_before.png
+pics\curvi_angles_after.png
pics\graduatedaxes1.png
pics\image107.gif
pics\automaticlength.png
image84.gif
image32.jpg
image40.gif
+pics\curvi_simple_before.png
pics\image108.gif
pics\aqt.png
pics\distributionwithtabledensity.png
image63.gif
image22.jpg
image41.gif
+pics\edge_wire_3d_before.png
pics\image109.gif
pics\meshimportmesh.png
pics\deletegroups.png
image78.jpg
image64.gif
image23.jpg
+pics\edge_wire_after.png
+pics\edge_wire_before.png
image151.gif
pics\cut_groups1.png
pics\editing_groups2.png
pics\cut_groups2.png
image130.gif
pics\max_el_area.png
-pics\a-extusionalongapath2.png
pics\a-viewgeneral.png
pics\revolution1.png
pics\addtriangle.png
image33.gif
image25.jpg
i_blue.jpg
+image153.gif
image15.jpg
image142.gif
pics\cut_groups3.png
image37.jpg
image67.gif
image34.gif
+pics\convert.png
+image154.gif
image143.gif
image132.gif
pics\edit_mesh1.png
image35.gif
image27.jpg
image24.gif
+image155.gif
+pics\mesh_for_extr_along_path.png
pics\createmesh-inv2.png
image144.gif
pics\intersect_groups1.png
image36.gif
image25.gif
note1.gif
+image156.gif
+pics\edge_wire_3d_after.png
pics\createmesh-inv3.png
image145.gif
pics\intersect_groups2.png
image123.gif
image101.gif
image37.gif
+pics\straight_after.png
pics\image96.gif
image146.gif
pics\intersect_groups3.png
pics\patternmapping1.png
image90.jpg
image124.gif
-image102.gif
image49.gif
image38.gif
pics\image100.gif
pics\creategroup.png
image92.jpg
image126.gif
-image104.gif
image18.gif
image70.jpg
+pics\straight_before.png
pics\createmesh-inv.png
pics\image102.gif
pics\image99.gif
whgdata\whlstf11.htm
whgdata\whlstf12.htm
whgdata\whlstf13.htm
+whgdata\whlstf14.htm
whgdata\whlstg0.htm
index.htm
index_csh.htm
--- /dev/null
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>smesh.py_introduction</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">\r
+<!--\r
+p.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
+p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript">\r
+<!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
+{\r
+ var strNSS = "<style type='text/css'>";\r
+ strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
+ strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
+ strNSS +="</style>";\r
+ document.write(strNSS);\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+ if (innerWidth != origWidth || innerHeight != origHeight)\r
+ location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+ origWidth = innerWidth;\r
+ origHeight = innerHeight;\r
+ onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+p.WebHelpNavBar { text-align:right; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+ if (window.setRelStartPage)\r
+ {\r
+ addTocInfo("MESH module\nIntroduction to MESH module python interface");\r
+addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
+addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
+\r
+ }\r
+\r
+\r
+ if (window.setRelStartPage)\r
+ {\r
+ setRelStartPage("index.htm");\r
+\r
+ autoSync(1);\r
+ sendSyncInfo();\r
+ sendAveInfoOut();\r
+ }\r
+\r
+}\r
+else\r
+ if (window.gbIE4)\r
+ document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+ writeIntopicBar(4);\r
+//-->\r
+</script>\r
+<h1>Introduction to MESH module python interface</h1>\r
+\r
+<p class="whs1">Package smesh provides \r
+ a standard API for creation and edition of meshes . </p>\r
+\r
+<p class="whs1">Below you can see an example \r
+ of usage of the package smesh for 3d mesh generation. </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1">Example of 3d mesh generation \r
+ with NETGEN</p>\r
+\r
+<p class="whs1">from geompy import * </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
+ smesh</span> </p>\r
+\r
+<p class="whs1"># Geometry </p>\r
+\r
+<p class="whs1"># an assembly of a box, \r
+ a cylinder and a truncated cone meshed with tetrahedral. </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Define values </p>\r
+\r
+<p class="whs2">name = "ex21_lamp" \r
+ </p>\r
+\r
+<p class="whs2">cote = 60 </p>\r
+\r
+<p class="whs2">section = 20 </p>\r
+\r
+<p class="whs2">size = 200 </p>\r
+\r
+<p class="whs2">radius_1 = 80 </p>\r
+\r
+<p class="whs2">radius_2 = 40 </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">height \r
+ = 100</span> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Build a box </p>\r
+\r
+<p class="whs2">box = MakeBox(-cote, \r
+ -cote, -cote, +cote, +cote, +cote) </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Build a cylinder </p>\r
+\r
+<p class="whs2">pt1 = MakeVertex(0, \r
+ 0, cote/3) </p>\r
+\r
+<p class="whs2">di1 = MakeVectorDXDYDZ(0, \r
+ 0, 1) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cyl \r
+ = MakeCylinder(pt1, di1, section, size)</span> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Build a truncated cone \r
+ </p>\r
+\r
+<p class="whs2">pt2 = MakeVertex(0, \r
+ 0, size) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cone \r
+ = MakeCone(pt2, di1, radius_1, radius_2, height)</span> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Fuse </p>\r
+\r
+<p class="whs2">box_cyl = MakeFuse(box, \r
+ cyl) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">piece \r
+ = MakeFuse(box_cyl, cone)</span> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Add in study </p>\r
+\r
+<p class="whs2">addToStudy(piece, \r
+ name) </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Create a group of faces \r
+ </p>\r
+\r
+<p class="whs2">group = CreateGroup(piece, \r
+ ShapeType["FACE"]) </p>\r
+\r
+<p class="whs2">group_name = name \r
+ + "_grp" </p>\r
+\r
+<p class="whs2">addToStudy(group, \r
+ group_name) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">group.SetName(group_name)</span> \r
+ </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Add faces in the group \r
+ </p>\r
+\r
+<p class="whs2">faces = SubShapeAllIDs(piece, \r
+ ShapeType["FACE"]) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">UnionIDs(group, \r
+ faces)</span> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Create a mesh </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Define a mesh on a geometry \r
+ </p>\r
+\r
+<p class="whs2">tetra = smesh.Mesh(piece, \r
+ name) </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Define 1D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo1d = tetra.Segment() \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo1d.LocalLength(10)</span> \r
+ </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Define 2D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo2d = tetra.Triangle() \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo2d.LengthFromEdges()</span> \r
+ </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Define 3D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo3d = tetra.Tetrahedron(smesh.NETGEN) \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo3d.MaxElementVolume(100)</span> \r
+ </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Compute the mesh </p>\r
+\r
+<p class="whs2">tetra.Compute() \r
+ </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"># Create a groupe of faces \r
+ </p>\r
+\r
+<p class="whs2">tetra.Group(group) \r
+ </p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+ writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
<!-- Generated by Doxygen 1.4.6 -->
<h1>Package smesh</h1>
<p>
+Python package smesh defines several classes, destined for easy and clear mesh creation and edition.
+<p class="whs2"><a href="../smesh.py_introduction.htm">Example.</a></p>
+<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
h3.whs1 { margin-top:0pt; margin-bottom:0pt; }
h4.whs2 { margin-top:0pt; margin-bottom:0pt; }
p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }
-p.whs4 { margin-top:0pt; margin-bottom:0pt; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs6 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs7 { margin-top:0pt; margin-bottom:0pt; }
-->
</style><script type="text/javascript" language="JavaScript">
<!--
strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
strNSS +="</style>";
document.write(strNSS);
}
<p class="whs3"> </p>
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to translate meshes. </p>
-<p class="whs3"> </p>
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs3">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs5"> </p>
+
+<p class="whs5">import SMESH</p>
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs5">import SMESH_mechanic</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># translate a mesh</p>
+<p class="whs5">mesh = SMESH_mechanic.mesh</p>
-<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs5">anEditor = mesh.GetMeshEditor()</p>
-<p class="whs3">point = SMESH.PointStruct(-150, -150,
- 0)</p>
+<p class="whs5"> </p>
-<p class="whs3">vector = SMESH.DirStruct(point) </p>
+<p class="whs6"># define translation
+ vector</p>
-<p class="whs3">anEditor.TranslateObject(mesh, vector,
- 1)</p>
+<p class="whs5">point = SMESH.PointStruct(-150.,
+ -150., 0.)</p>
-<p class="whs4"> </p>
+<p class="whs5">vector = SMESH.DirStruct(point)</p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs6"># translate a mesh</p>
+
+<p class="whs5">doCopy = 1</p>
+
+<p class="whs5">anEditor.TranslateObject(mesh,
+ vector, doCopy) </p>
+
+<p class="whs7"> </p>
<h4 class="whs2"><a name=bookmark1>Rotation</a></h4>
<p class="whs3"> </p>
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to rotate meshes. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
<p class="whs3"> </p>
<p class="whs3">import math</p>
-<p class="whs3">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs4"> </p>
+<p class="whs3"> </p>
-<p class="whs4"># rotate a mesh </p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
-<p class="whs3">axisXYZ = SMESH.AxisStruct(0, 0, 0, 5,
- 5, 20)</p>
+<p class="whs3"> </p>
+
+<p class="whs6"># define rotation axis
+ and angle</p>
-<p class="whs3">angle180 = 1.5*math.pi</p>
+<p class="whs3">axisXYZ = SMESH.AxisStruct(0., 0., 0.,
+ 5., 5., 20.)</p>
-<p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle180,
- 1)</p>
+<p class="whs3">angle270 = 1.5 * math.pi</p>
<p class="whs3"> </p>
-<p class="whs5">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># rotate a mesh</p>
-<p class="whs4"> </p>
+<p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle270,
+ 1) </p>
-<p class="whs4"> </p>
+<p class="whs7"> </p>
<h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>
<p class="whs3"> </p>
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to create symmetrical copies of meshes. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
<p class="whs3"> </p>
<p class="whs3">import math</p>
-<p class="whs3">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
-<p class="whs4"> </p>
+<p class="whs3"> </p>
-<p class="whs4"># create a symmetrical
- copy of the mesh mirrored through a point</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
-<p class="whs3">anEditor.MirrorObject(mesh, SMESH.AxisStruct(0,
- 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1) </p>
-
<p class="whs3"> </p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs6"># create a symmetrical
+ copy of the mesh mirrored through a point</p>
-<p class="whs4"> </p>
+<p class="whs3">axis = SMESH.AxisStruct(0, 0, 0, 0, 0,
+ 0)</p>
+
+<p class="whs3">anEditor.MirrorObject(mesh, axis, SMESH.SMESH_MeshEditor.POINT,
+ 1) </p>
-<p class="whs4"> </p>
+<p class="whs7"> </p>
<h4 class="whs2"><a name=bookmark3>Merging
Nodes</a></h4>
<p class="whs3"> </p>
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs3">import SMESH_mechanic</p>
-
-<p class="whs3"> </p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to merge nodes. </p>
-<p class="whs3">smesh =
- SMESH_mechanic.smesh</p>
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs3">mesh =
- SMESH_mechanic.mesh</p>
+<p class="whs6"> </p>
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs5">import SMESH_mechanic</p>
-<p class="whs4"> </p>
+<p class="whs5">mesh = SMESH_mechanic.mesh</p>
-<p class="whs4"># merge nodes</p>
+<p class="whs5"> </p>
-<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs5">aMeshEditor = mesh.GetMeshEditor()</p>
-<p class="whs3">Tolerance = 25.0</p>
+<p class="whs5"> </p>
-<p class="whs3"> </p>
+<p class="whs6"># merge nodes</p>
-<p class="whs3">GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)</p>
+<p class="whs5">Tolerance = 25.0</p>
-<p class="whs3">aMeshEditor.MergeNodes(GroupsOfNodes)</p>
+<p class="whs5"> </p>
-<p class="whs3"> </p>
+<p class="whs5">GroupsOfNodes =
+ aMeshEditor.FindCoincidentNodes(Tolerance)</p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">aMeshEditor.MergeNodes(GroupsOfNodes)</span>
</p>
-<p class="whs4"> </p>
+<p class="whs7"> </p>
<h4><a name=bookmark8>Merging Elements</a></h4>
-<p class="whs5">import geompy</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs5">import smesh</p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to merge elements. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs6"> </p>
<p class="whs5">import salome</p>
+<p class="whs5">import geompy</p>
+
+<p class="whs5">import smesh</p>
+
<p class="whs5">import SMESH</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create a face to be meshed</p>
+<p class="whs6"># create a face to
+ be meshed</p>
<p class="whs5">px = geompy.MakeVertex(100.,
0. , 0.
<p class="whs5">id_face1 = geompy.addToStudy(face1,
"Face1")</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># create a 2D mesh on the
- face</p>
+<p class="whs5"> </p>
-<p class="whs5">trias = smesh.Mesh(face1,
- "Face : 2D mesh")</p>
+<p class="whs6"># create a circle to
+ be an extrusion path</p>
-<p class="whs5"> </p>
+<p class="whs5">px1 = geompy.MakeVertex(
+ 100., 100.,
+ 0.)</p>
-<p class="whs5">algo = trias.Segment()</p>
+<p class="whs5">py1 = geompy.MakeVertex(-100.,
+ -100., 0.)</p>
-<p class="whs5">algo.NumberOfSegments(6)</p>
+<p class="whs5">pz1 = geompy.MakeVertex(
+ 0.,
+ 0.,
+ 50.)</p>
<p class="whs5"> </p>
-<p class="whs5">algo = trias.Triangle()</p>
+<p class="whs5">circle = geompy.MakeCircleThreePnt(py1,
+ pz1, px1)</p>
-<p class="whs5">algo.LengthFromEdges()</p>
+<p class="whs5">id_circle = geompy.addToStudy(circle,
+ "Path")</p>
<p class="whs5"> </p>
-<p class="whs5">trias.Compute()</p>
-
-<p class="whs5"> </p>
+<p class="whs6"># create a 2D mesh
+ on the face</p>
-<p class="whs5">tri_mesh = trias.GetMesh()</p>
+<p class="whs5">trias = smesh.Mesh(face1,
+ "Face : 2D mesh")</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create a path mesh</p>
+<p class="whs5">algo1D = trias.Segment()</p>
-<p class="whs5">px1 = geompy.MakeVertex(100.,
- 100. ,
- 0. )</p>
+<p class="whs5">algo1D.NumberOfSegments(6)</p>
-<p class="whs5">py1 = geompy.MakeVertex(-100.
- , -100.,
- 0. )</p>
+<p class="whs5">algo2D = trias.Triangle()</p>
-<p class="whs5">pz1 = geompy.MakeVertex(0.
- , 0. ,
- 50.)</p>
+<p class="whs5">algo2D.LengthFromEdges()</p>
<p class="whs5"> </p>
-<p class="whs5">circle = geompy.MakeCircleThreePnt(py1,
- pz1, px1)</p>
+<p class="whs5">trias.Compute()</p>
-<p class="whs5">id_circle = geompy.addToStudy(circle,
- "Path")</p>
+<p class="whs5">tri_mesh = trias.GetMesh()</p>
-<p class="whs5"> </p>
+<p class="whs6"> </p>
+
+<p class="whs6"># create a path mesh</p>
<p class="whs5">circlemesh = smesh.Mesh(circle,
"Path mesh")</p>
-<p class="whs5"> </p>
-
<p class="whs5">algo = circlemesh.Segment()</p>
<p class="whs5">algo.NumberOfSegments(10)</p>
-<p class="whs5"> </p>
-
<p class="whs5">circlemesh.Compute()</p>
-<p class="whs4"> </p>
+<p class="whs6"> </p>
-<p class="whs4"># extrusion of the mesh</p>
+<p class="whs6"># extrusion of the
+ mesh</p>
<p class="whs5">aMeshEditor = tri_mesh.GetMeshEditor()</p>
<p class="whs5">aMeshEditor.ExtrusionAlongPathObject(tri_mesh,
- circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
+ circlemesh.GetMesh(), circle,</p>
-<p class="whs4"> </p>
+<p class="whs5"> 1,
+ 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
-<p class="whs4"># merge nodes</p>
+<p class="whs6"># merge nodes</p>
<p class="whs5">print "Number
of nodes before MergeNodes:", tri_mesh.NbNodes()</p>
:
", tri_mesh.NbVolumes()</p>
-<p class="whs4"> </p>
+<p class="whs6"> </p>
-<p class="whs4"># merge elements</p>
+<p class="whs6"># merge elements</p>
<p class="whs5">aMeshEditor.MergeEqualElements()</p>
<p class="whs5"> </p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
+<p class="whs5">salome.sg.updateObjBrowser(1)
</p>
+<p class="whs5"> </p>
+
<h3>Sewing Meshes</h3>
<h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to sew meshes border to border. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs7"> </p>
<p class="whs5">import geompy</p>
<p class="whs5">import smesh</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create two faces of a
- box</p>
+<p class="whs6"># create two faces
+ of a box</p>
<p class="whs5">box1 = geompy.MakeBox(0.,
0., -10., 30., 20., 25.)</p>
-<p class="whs5">subShapeList1 =
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
<p class="whs5"> </p>
<p class="whs5">box2 = geompy.MakeBox(0.,
5., 0., 20., 20., 15.)</p>
-<p class="whs5">subShapeList2 =
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
- 1 ], geompy.ShapeType["EDGE"])</p>
+<p class="whs5">face2 = facesList2[1]</p>
<p class="whs5"> </p>
-<p class="whs5">aComp = geompy.MakeCompound(
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy(
- aComp, "Two faces" )</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
-<p class="whs5">aCompobj =
- salome.IDToObject( idComp )</p>
+<p class="whs5">edge1 = edgesList[2]</p>
<p class="whs5"> </p>
-<p class="whs4"># create a mesh on two
- faces</p>
-
-<p class="whs4"> </p>
+<p class="whs5">aComp = geompy.MakeCompound([face1,
+ face2])</p>
-<p class="whs5">mesh = smesh.Mesh(aCompobj,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs5">algo = mesh.Segment()</p>
+<p class="whs5">geompy.addToStudy(aComp,
+ "Two faces")</p>
<p class="whs5"> </p>
-<p class="whs4"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs6"># create a mesh on
+ two faces</p>
+
+<p class="whs5">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
-<p class="whs5">algo.NumberOfSegments(9)</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs5">algo1D = mesh.Segment()</p>
-<p class="whs4"># create a quadrangle 2D
- algorithm for faces</p>
+<p class="whs5">algo1D.NumberOfSegments(9)</p>
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo_local.Arithmetic1D(1,
+ 4)</p>
-<p class="whs4"> </p>
+<p class="whs5">algo_local.Propagation()</p>
-<p class="whs4"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing arithmetic
- length </p>
+<p class="whs5"> </p>
-<p class="whs5">algo.Arithmetic1D(1,
- 4)</p>
+<p class="whs5">mesh.Compute()</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># define "Propagation"
- hypothesis that propagates all other hypothesis on all edges on the opposite
- side in case of quadrangular faces</p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5"> </p>
-<p class="whs5">mesh.Compute()</p>
+<p class="whs6"># sew border to side</p>
-<p class="whs4"> </p>
+<p class="whs6"># FirstNodeIDOnFreeBorder,
+ SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,</p>
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># FirstNodeIDOnSide,
+ LastNodeIDOnSide,</p>
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># CreatePolygons, CreatePolyedrs</p>
<p class="whs5">anEditor.SewBorderToSide(5,
- 45, 6, 113, 109, 0, 0)</p>
+ 45, 6, 113, 109, 0, 0) </p>
-<p class="whs5"> </p>
+<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
-<p class="whs4"> </p>
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to sew conform free borders. </p>
-<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
-<p class="whs5">import salome</p>
+<p class="whs5"> </p>
<p class="whs5">import geompy</p>
<p class="whs5">import smesh</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create two faces of the
- box</p>
+<p class="whs6"># create two faces
+ of the box</p>
<p class="whs5">box1 = geompy.MakeBox(0.,
0., -10., 20., 20., 15.)</p>
-<p class="whs5">subShapeList1 =
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
<p class="whs5"> </p>
<p class="whs5">box2 = geompy.MakeBox(0.,
5., 0., 20., 20., 15.)</p>
-<p class="whs5">subShapeList2 =
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
- 1 ], geompy.ShapeType["EDGE"])</p>
+<p class="whs5">face2 = facesList2[1]</p>
<p class="whs5"> </p>
-<p class="whs5">aComp = geompy.MakeCompound(
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy(
- aComp, "Two faces" )</p>
-
-<p class="whs5">aCompobj =
- salome.IDToObject( idComp )</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"># create a mesh on two
- faces</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
-<p class="whs5">mesh = smesh.Mesh(aCompobj,
- "Two faces : quadrangle mesh")</p>
+<p class="whs5">edge1 = edgesList[2]</p>
-<p class="whs5">algo = mesh.Segment()</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs5">aComp = geompy.MakeCompound([face1,
+ face2])</p>
-<p class="whs4"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs5">geompy.addToStudy(aComp,
+ "Two faces")</p>
-<p class="whs5">algo.NumberOfSegments(9)</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs6"># create a mesh on
+ two faces</p>
-<p class="whs4"># create a quadrangle 2D
- algorithm for faces</p>
+<p class="whs5">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs5">algo1D = mesh.Segment()</p>
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo1D.NumberOfSegments(9)</p>
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing arithmetic
- length </p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
-<p class="whs5">algo.Arithmetic1D(1,
+<p class="whs5">algo_local.Arithmetic1D(1,
4)</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># define "Propagation"
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;">
- the opposite side in case of quadrangular faces</span></p>
+<p class="whs5">algo_local.Propagation()</p>
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5"> </p>
<p class="whs5">mesh.Compute()</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># sew free borders</p>
+<p class="whs5"> </p>
<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
-<p class="whs5">anEditor.SewConformFreeBorders(5,
- 45, 6, 3, 24)</p>
+<p class="whs5"> </p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs6"># sew conform free
+ borders</p>
-<p class="whs4"> </p>
+<p class="whs6"># FirstNodeID1, SecondNodeID1,
+ LastNodeID1, FirstNodeID2, SecondNodeID2</p>
+
+<p class="whs5">anEditor.SewConformFreeBorders(5,
+ 45, 6, 3, 24) </p>
<h4><a name=bookmark6>Sew Free Borders</a></h4>
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to sew free borders. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs7"> </p>
<p class="whs5">import geompy</p>
<p class="whs5">import smesh</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create two faces of the
- box</p>
+<p class="whs6"># create two faces
+ of the box</p>
<p class="whs5">box1 = geompy.MakeBox(0.,
0., 0., 20., 20., 15.)</p>
-<p class="whs5">subShapeList1 =
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
<p class="whs5">box2 = geompy.MakeBox(0.,
5., 0., 20., 20., 15.)</p>
-<p class="whs5">subShapeList2 =
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
- 1 ], geompy.ShapeType["EDGE"])</p>
+<p class="whs5">face2 = facesList2[1]</p>
<p class="whs5"> </p>
-<p class="whs5">aComp = geompy.MakeCompound(
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy(
- aComp, "Two faces" )</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
-<p class="whs5">aCompobj =
- salome.IDToObject( idComp )</p>
+<p class="whs5">edge1 = edgesList[2]</p>
<p class="whs5"> </p>
-<p class="whs4"># create a mesh on two
- faces</p>
-
-<p class="whs5">mesh = smesh.Mesh(aCompobj,
- "Two faces : quadrangle mesh")</p>
-
-<p class="whs5">algo = mesh.Segment()</p>
-
-<p class="whs4"> </p>
+<p class="whs5">aComp = geompy.MakeCompound([face1,
+ face2])</p>
-<p class="whs4"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs5">geompy.addToStudy(aComp,
+ "Two faces")</p>
-<p class="whs5">algo.NumberOfSegments(4)</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs6"># create a mesh on
+ two faces</p>
-<p class="whs4"># creates a quadrangle
- 2D algorithm for faces</p>
+<p class="whs5">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs5">algo1D = mesh.Segment()</p>
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo1D.NumberOfSegments(4)</p>
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing
- arithmetic length</p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
-<p class="whs5">algo.Arithmetic1D(1,
+<p class="whs5">algo_local.Arithmetic1D(1,
4)</p>
-<p class="whs4"> </p>
-
-<p class="whs4"># define "Propagation"
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;">
- the opposite side in case of quadrangular faces</span></p>
+<p class="whs5">algo_local.Propagation()</p>
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5"> </p>
<p class="whs5">mesh.Compute()</p>
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># sew free borders</p>
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># FirstNodeID1, SecondNodeID1,
+ LastNodeID1,</p>
-<p class="whs5">anEditor.SewFreeBorders(6,
- 21, 5, 1, 12, 3, 0, 0)</p>
+<p class="whs6"># FirstNodeID2, SecondNodeID2,
+ LastNodeID2, CreatePolygons, CreatePolyedrs</p>
-<p class="whs5"> </p>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
-<p class="whs4"> </p>
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">anEditor.SewFreeBorders(6,
+ 21, 5, 1, 12, 3, 0, 0)</span> </p>
<h4><a name=bookmark7>Sew Side Elements</a></h4>
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B>#
+ Attention! This script has been written using the old approach basing
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide
+ methods to sew side elements. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will
+ be updated to use only the commands from smesh package.</p>
<p class="whs5">import geompy</p>
<p class="whs5"> </p>
-<p class="whs4"># create two faces of the
- box</p>
+<p class="whs6"># create two boxes</p>
<p class="whs5">box1 = geompy.MakeBox(0.,
0., 0.,
<p class="whs5">box2 = geompy.MakeBox(0.,
15., 0., 20., 25., 10.)</p>
+<p class="whs5"> </p>
+
<p class="whs5">EdgesList = geompy.SubShapeAll(box2,
geompy.ShapeType["EDGE"])</p>
-<p class="whs4"> </p>
-
-<p class="whs5">aComp = geompy.MakeCompound(
- [box1, box2] )</p>
+<p class="whs5"> </p>
-<p class="whs5">idComp = geompy.addToStudy(
- aComp, "Two faces" )</p>
+<p class="whs5">aComp = geompy.MakeCompound([box1,
+ box2])</p>
-<p class="whs5">aCompobj =
- salome.IDToObject( idComp )</p>
+<p class="whs5">geompy.addToStudy(aComp,
+ "Two boxes")</p>
<p class="whs5"> </p>
-<p class="whs4"># create a mesh on two
- faces</p>
+<p class="whs6"># create a mesh on
+ two boxes</p>
-<p class="whs5">mesh = smesh.Mesh(aCompobj,
+<p class="whs5">mesh = smesh.Mesh(aComp,
"Two faces : quadrangle mesh")</p>
-<p class="whs5">algo = mesh.Segment()</p>
-
-<p class="whs4"> </p>
-
-<p class="whs4"># define "NumberOfSegments"
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs5">algo.NumberOfSegments(2)</p>
-
-<p class="whs4"> </p>
+<p class="whs5"> </p>
-<p class="whs4"># create a quadrangle 2D
- algorithm for faces</p>
+<p class="whs5">algo1D = mesh.Segment()</p>
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">algo1D.NumberOfSegments(2)</p>
-<p class="whs4"> </p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5"> </p>
-<p class="whs5">algo = mesh.Segment(EdgesList[8])</p>
+<p class="whs5">algo_local = mesh.Segment(EdgesList[8])</p>
-<p class="whs4"> </p>
+<p class="whs5">algo_local.NumberOfSegments(4)</p>
-<p class="whs4"># define "Arithmetic1D"
- hypothesis to cut an edge in several segments with increasing arithmetic
- length </p>
+<p class="whs5">algo_local.Propagation()</p>
-<p class="whs5">algo.NumberOfSegments(4)</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs5">mesh.Compute()</p>
-<p class="whs4"># define "Propagation"
- hypothesis that propagates all other hypothesis on all edges on <span
- style="margin-top: 0pt; margin-bottom: 0pt;">the opposite side in case
- of quadrangular faces</span></p>
+<p class="whs5"> </p>
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
-<p class="whs5">mesh.Compute()</p>
+<p class="whs5"> </p>
-<p class="whs4"> </p>
+<p class="whs6"># sew side elements</p>
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># IDsOfSide1Elements,
+ IDsOfSide2Elements,</p>
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># NodeID1OfSide1ToMerge,
+ NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge</p>
<p class="whs5">anEditor.SewSideElements([69,
70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)</p>
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
- </p>
-
<script type="text/javascript" language="javascript1.2">
<!--
if (window.writeIntopicBar)
<h3>Viewing Mesh Infos</h3>
-<p class="whs1">import salome</p>
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
+ geompy</span></p>
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import SMESH</p>
-
-<p class="whs1">import StdMeshers</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
- "SMESH")</p>
-
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
-
-<p class="whs1"> </p>
-
-<p class="whs1">box =
- geompy.MakeBox(0., 0., 0., 20., 20., 20.)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box, "box")</p>
+<p class="whs1">import smesh</p>
<p class="whs1"> </p>
-<p class="whs1">subShapeList = geompy.SubShapeAll(box,
- geompy.ShapeType["EDGE"])</p>
+<p class="whs2"># create a box</p>
-<p class="whs1">edge =
- subShapeList[0]</p>
+<p class="whs1">box = geompy.MakeBox(0., 0., 0., 20.,
+ 20., 20.)</p>
-<p class="whs1">name =
- geompy.SubShapeName(edge, box)</p>
-
-<p class="whs1">idedge = geompy.addToStudyInFather(box,
- edge, name)</p>
+<p class="whs1">geompy.addToStudy(box, "box")</p>
<p class="whs1"> </p>
-<p class="whs1">box =
- salome.IDToObject(idbox)</p>
+<p class="whs2"># create a mesh</p>
-<p class="whs1">edge = salome.IDToObject(idedge)</p>
+<p class="whs1">tetra = smesh.Mesh(box, "MeshBox")</p>
<p class="whs1"> </p>
-<p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hyp1.SetNumberOfSegments(3)</p>
-
-<p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hyp2.SetMaxElementArea(10)</p>
-
-<p class="whs1">hyp3 = smesh.CreateHypothesis("Arithmetic1D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">hyp3.SetLength(1,1)</p>
+<p class="whs1">algo1D = tetra.Segment()</p>
-<p class="whs1">hyp3.SetLength(6,0)</p>
-
-<p class="whs1">hyp4 = smesh.CreateHypothesis("Propagation",
- "libStdMeshersEngine.so")</p>
+<p class="whs1">algo1D.NumberOfSegments(3)</p>
<p class="whs1"> </p>
-<p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
- "libStdMeshersEngine.so")</p>
-
-<p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
- "libStdMeshersEngine.so")</p>
+<p class="whs1">algo2D = tetra.Triangle()</p>
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
+<p class="whs1">algo2D.MaxElementArea(10.)</p>
<p class="whs1"> </p>
-<p class="whs1">mesh.AddHypothesis(box,hyp1)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,hyp2)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,algo1)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,algo2)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,hyp3)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,hyp4)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,algo1)</p>
+<p class="whs1">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
-<p class="whs1">smesh.Compute(mesh,box)</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs1">algo3D.MaxElementVolume(900.)</p>
<p class="whs1"> </p>
-<p class="whs2"># remove one hypothesis</p>
-
-<p class="whs1">mesh.RemoveHypothesis(edge,hyp4)</p>
+<p class="whs2"># compute the mesh</p>
-<p class="whs1">smesh.Compute(mesh,box)</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs1">tetra.Compute()</p>
<p class="whs1"> </p>
-<p class="whs2"># change the value
- of the hypothesis</p>
-
-<p class="whs1">hyp2.SetMaxElementArea(2)</p>
+<p class="whs2"># print informations
+ about the mesh</p>
-<p class="whs1">mesh.AddHypothesis(box,hyp2)</p>
-
-<p class="whs1">smesh.Compute(mesh,box)</p>
+<p class="whs1">mesh = tetra.GetMesh()</p>
<p class="whs1">print "Information about mesh:"</p>
<p class="whs1">print "Number of faces :
", mesh.NbFaces()</p>
-<p class="whs1">print "Number of triangles :
+<p class="whs1">print " triangles
+ :
", mesh.NbTriangles()</p>
-<p class="whs1">print "Number of quadrangles : ",
- mesh.NbQuadrangles()</p>
+<p class="whs1">print " quadrangles
+ : ", mesh.NbQuadrangles()</p>
-<p class="whs1">print "Number of polygons :
+<p class="whs1">print " polygons
+ :
", mesh.NbPolygons()</p>
<p class="whs1">print "Number of volumes :
", mesh.NbVolumes()</p>
-<p class="whs1">print "Number of tetrahedrons: ",
- mesh.NbTetras()</p>
+<p class="whs1">print " tetrahedrons:
+ ", mesh.NbTetras()</p>
-<p class="whs1">print "Number of hexahedrons : ",
- mesh.NbHexas()</p>
+<p class="whs1">print " hexahedrons
+ : ", mesh.NbHexas()</p>
-<p class="whs1">print "Number of prisms :
+<p class="whs1">print " prisms
+ :
", mesh.NbPrisms()</p>
-<p class="whs1">print "Number of pyramids :
+<p class="whs1">print " pyramids
+ :
", mesh.NbPyramids()</p>
-<p class="whs1">print "Number of polyhedrons : ",
- mesh.NbPolyhedrons()</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1) </p>
-
-<p class="whs1"> </p>
+<p class="whs1">print " polyhedrons
+ : ", mesh.NbPolyhedrons() </p>
<script type="text/javascript" language="javascript1.2">
<!--
}
//-->
</script>
-</html>
\ No newline at end of file
+</html>
aTE("Borders at multiconnection 2D","borders_at_multiconnection_2d.htm");
aTE("Clipping","clipping.htm");
aTE("Constructing Meshes","constructing_meshes.htm");
+aTE("Convert to/from Quadratic Mesh","convert_to_from_quadratic_mesh.htm");
aTE("Defining hypotheses TUI","defining_hypotheses_tui.htm");
aTE("Deleting Groups","deleting_groups.htm");
aTE("Display Entity","display_entity.htm");
aTE("Merge Elements","merge_elements.htm");
aTE("mesh","mesh.htm");
aTE("Modifying Meshes","modifying_meshes.htm");
+aTE("SALOME - SMESH - v.version: Package smesh","namespacesmesh.html");
+aTE("Netgen 2D and 3D hypotheses","netgen_2d_and_3d_hypotheses.htm");
aTE("Pattern mapping","pattern_mapping.htm");
aTE("Presentation","presentation.htm");
aTE("Quality Controls","quality_controls.htm");
aTE("Revolution","revolution.htm");
aTE("Selection filter library","selection_filter_library.htm");
+aTE("smesh.py_introduction","smesh.py_introduction.htm");
aTE("Transforming Meshes","transforming_meshes.htm");
aTE("Transparency","transparency.htm");
aTE("Viewing Meshes","viewing_meshes.htm");
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
</script>
<script language="javascript">
<!--
-aWE("0",13,18,5,6,24,7,56,60,63,42,66,68);
-aWE("001",66);
-aWE("0d",13);
-aWE("1",16,1,17,18,19,2,20,22,6,25,7,26,27,28,29,10,11,56,30,31,34,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53);
-aWE("10",6,7,56,60,66,68);
-aWE("100",6,7,56,60,63,66);
-aWE("109",66);
-aWE("11",60);
-aWE("113",66);
-aWE("1135",60);
-aWE("1145",60);
-aWE("1147",60);
-aWE("1159",60);
-aWE("12",60,66);
-aWE("13",60);
-aWE("14",60);
-aWE("15",60,63,66);
-aWE("150",66);
-aWE("16",60);
-aWE("17",60);
-aWE("18",60,63);
-aWE("180",60);
-aWE("19",60);
-aWE("1d",12,13,14,15,18,22,7,10,11,59,36,63,64);
-aWE("1e",60,63);
-aWE("2",16,1,17,19,2,20,22,6,25,7,26,27,28,29,10,11,30,31,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53);
-aWE("20",6,7,56,60,63,66,68);
-aWE("200",6,7,60);
-aWE("21",60,66);
-aWE("23",60,66);
-aWE("2381",60);
-aWE("2382",60);
-aWE("2383",60);
-aWE("2384",60);
-aWE("2385",60);
-aWE("2386",60);
-aWE("2387",60);
-aWE("2388",60);
-aWE("2389",60);
-aWE("2390",60);
-aWE("2391",60);
-aWE("2392",60);
-aWE("2393",60);
-aWE("2394",60);
-aWE("2395",60);
-aWE("2396",60);
-aWE("2397",60);
-aWE("2398",60);
-aWE("2399",60);
-aWE("24",66);
-aWE("240",60);
-aWE("2400",60);
-aWE("2401",60);
-aWE("2402",60);
-aWE("2403",60);
-aWE("2404",60);
-aWE("2405",60);
-aWE("2406",60);
-aWE("2407",60);
-aWE("2408",60);
-aWE("2409",60);
-aWE("2410",60);
-aWE("2411",60);
-aWE("2412",60);
-aWE("2413",60);
-aWE("2414",60);
-aWE("2415",60);
-aWE("2416",60);
-aWE("2417",60);
-aWE("2418",60);
-aWE("2419",60);
-aWE("2420",60);
-aWE("2421",60);
-aWE("2422",60);
-aWE("245",60);
-aWE("246",60);
-aWE("25",66);
-aWE("255",60);
-aWE("2d",12,13,14,15,17,19,4,22,6,7,10,11,32,31,59,35,60,61,63,64,42,66,53);
-aWE("3",13,17,19,20,22,6,25,26,27,10,11,56,30,60,61,63,38,39,64,42,43,44,66,48,49,68,53);
-aWE("30",7,56,60,63,66);
-aWE("300",6,7);
-aWE("3128",60);
-aWE("321",60);
-aWE("3265",60);
-aWE("3402",60);
-aWE("3658",60);
-aWE("38",60,66);
-aWE("39",60);
-aWE("3d",12,13,14,15,0,16,1,19,2,20,22,24,25,7,8,26,27,28,10,11,59,33,63,38,39,64,42,44,48,49,69,52);
-aWE("3e",63);
-aWE("3rd",13);
-aWE("3x3",60);
-aWE("4",13,17,19,22,6,25,7,27,11,30,60,61,63,42,43,46,66,53);
-aWE("40",60);
-aWE("405",60);
-aWE("406",60);
-aWE("45",60,66);
-aWE("47",60);
-aWE("492",60);
-aWE("493",60);
-aWE("5",5,60,63,66);
-aWE("50",7,60,66);
-aWE("502",60);
-aWE("503",60);
-aWE("58",66);
-aWE("5th",13);
-aWE("6",2,6,7,56,60,66,68);
-aWE("60",56,60);
-aWE("642",60);
-aWE("66632",60);
-aWE("69",66);
-aWE("7",6,7,56,60,63);
-aWE("70",7,63,66);
-aWE("700",60);
-aWE("71",66);
-aWE("72",66);
-aWE("73",60);
-aWE("77",60);
-aWE("8",56,60,66);
-aWE("800",6,7);
-aWE("814",60);
-aWE("850",60);
-aWE("859",60);
-aWE("864",60);
-aWE("89",66);
-aWE("9",60,66);
-aWE("90",66);
-aWE("900",6,7);
-aWE("91",66);
-aWE("911",60);
-aWE("92",66);
-aWE("931",60);
-aWE("932",60);
-aWE("95",63);
-aWE("950",60);
-aWE("9999",24);
-aWE("a_mesh",60);
-aWE("aa",60);
-aWE("abl",16,1,52);
-aWE("abord",63);
-aWE("aborder",63);
-aWE("abov",11,60,44);
-aWE("abox",63);
-aWE("absent",50);
-aWE("absolute",67);
-aWE("abut",18);
-aWE("acces",0,65,52);
-aWE("accord",15,17,18,19,2,31,35,61,43,44,46,69,53);
-aWE("account",12,61);
-aWE("acomp",63,66);
-aWE("acompobj",66);
-aWE("actual",36);
-aWE("ad",16,1,20,24,25,56,60,48,50);
-aWE("add",16,1,20,22,6,24,25,7,29,11,56,60,63,65,48);
-aWE("addedg",60);
-aWE("addfac",60);
-aWE("addhypothesi",6,7,56,60,63,68);
-aWE("addition",25,59,60);
-aWE("additional",12,13,22,7,36,61,41,65,44);
-aWE("addnod",60);
-aWE("addobject",56);
-aWE("addpolygonalfac",60);
-aWE("addpolyhedralvolum",60);
-aWE("addtostudy",6,7,56,60,63,66,68);
-aWE("addtostudyinfath",6,7,56,60,68);
-aWE("addvolum",60);
-aWE("adjacent",27,35,36,38,42,48);
-aWE("adjust",44);
-aWE("adjustabl",36);
-aWE("advanc",0,51);
-aWE("afilt",56,63);
-aWE("afiltermgr",56,60,63);
-aWE("afunctor",56,60,63);
-aWE("ageomgroup1",56);
-aWE("ageomgroup2",56);
-aWE("agroup",56,63);
-aWE("agroup1",56);
-aWE("agroup2",56);
-aWE("agroup3",56);
-aWE("agroup4",56);
-aWE("agroup5",56);
-aWE("agroupelemid",56);
-aWE("agroupf",63);
-aWE("agroupmain",56);
-aWE("agroupn",63);
-aWE("agroupr",56);
-aWE("agrouptool",56);
-aWE("ai",18);
-aWE("al",60);
-aWE("algo",6,7,60,66);
-aWE("algo1",6,63,68);
-aWE("algo2",6,63,68);
-aWE("algorithm",12,13,14,15,0,17,22,6,23,7,11,56,32,59,33,61,37,42,66);
-aWE("allow",12,0,1,18,20,23,24,25,30,32,58,34,59,36,61,40,42,44,45,47,48,50,52);
-aWE("along",10,11,60,61,44,52);
-aWE("alternativ",22);
+aWE("_grp",69);
+aWE("0",14,19,5,6,25,8,12,57,61,63,66,43,69,70,72);
+aWE("000001",66);
+aWE("001",70);
+aWE("0d",14);
+aWE("1",17,1,18,19,20,2,21,23,6,7,26,8,27,28,29,30,11,12,57,31,32,35,36,61,64,66,39,40,67,62,43,44,69,45,47,70,49,50,51,73,54);
+aWE("10",6,8,12,57,61,69,70,72);
+aWE("100",6,8,57,66,69,70);
+aWE("109",70);
+aWE("110",61);
+aWE("113",70);
+aWE("12",61,70);
+aWE("13",61);
+aWE("130",61);
+aWE("15",61,66,70);
+aWE("150",8,61,70);
+aWE("17",61);
+aWE("180",61);
+aWE("1d",13,14,15,16,19,23,6,8,11,12,60,61,63,37,66,67,69);
+aWE("1e",61,66);
+aWE("2",17,1,18,20,2,21,23,6,7,26,8,27,28,29,30,11,12,31,32,36,61,64,66,39,40,67,62,43,44,45,47,70,49,50,51,73,54);
+aWE("20",6,8,57,61,66,69,70,72);
+aWE("200",6,8,61,69);
+aWE("21",61,70);
+aWE("23",61,70);
+aWE("24",70);
+aWE("240",61);
+aWE("245",61);
+aWE("246",61);
+aWE("25",70);
+aWE("255",61);
+aWE("2d",13,14,15,16,18,20,4,23,6,8,11,12,57,33,32,60,36,63,64,66,67,43,69,70,54);
+aWE("3",14,18,20,21,23,6,7,26,8,27,28,11,12,57,31,61,63,64,66,39,40,67,62,43,44,69,45,70,49,50,72,54);
+aWE("30",8,61,63,70);
+aWE("300",6);
+aWE("3128",61);
+aWE("321",61);
+aWE("3265",61);
+aWE("3402",61);
+aWE("35",57,66);
+aWE("3658",61);
+aWE("38",61,66,70);
+aWE("39",61);
+aWE("3d",13,14,15,16,0,17,1,20,2,21,23,6,25,26,8,9,27,28,29,11,12,60,63,34,66,39,40,67,43,69,45,49,50,73,53);
+aWE("3e",66);
+aWE("3rd",14);
+aWE("3x3",61);
+aWE("4",14,18,20,23,6,26,8,28,12,31,61,64,66,62,43,44,47,70,54);
+aWE("40",57,61,69);
+aWE("405",61);
+aWE("406",61);
+aWE("45",12,61,70);
+aWE("47",61);
+aWE("492",61);
+aWE("493",61);
+aWE("5",5,6,8,61,66,70);
+aWE("50",8,61,70);
+aWE("502",61);
+aWE("503",61);
+aWE("58",70);
+aWE("5th",14);
+aWE("6",2,6,8,57,61,70);
+aWE("60",57,61,69);
+aWE("66632",61);
+aWE("69",70);
+aWE("7",6,8,57,61,66);
+aWE("70",8,61,70);
+aWE("71",70);
+aWE("72",70);
+aWE("73",61);
+aWE("8",57,61,66,70);
+aWE("80",61,69);
+aWE("800",6);
+aWE("814",61);
+aWE("850",61);
+aWE("859",61);
+aWE("89",70);
+aWE("9",61,70);
+aWE("90",70);
+aWE("900",6,72);
+aWE("91",70);
+aWE("92",70);
+aWE("95",66);
+aWE("9999",25);
+aWE("a_mesh",61);
+aWE("a10",61);
+aWE("a45",61);
+aWE("aa",61);
+aWE("abl",17,1,53);
+aWE("abord",66);
+aWE("aborder",66);
+aWE("abov",61,45);
+aWE("absent",51);
+aWE("absolute",71);
+aWE("abut",19);
+aWE("acces",0,68,53);
+aWE("accord",16,18,19,20,2,32,36,64,44,45,47,73,54);
+aWE("account",13,64);
+aWE("acomp",70);
+aWE("actual",63,37);
+aWE("ad",17,1,21,7,25,26,57,61,49,51);
+aWE("add",17,1,21,23,25,26,8,30,12,57,61,66,68,69,49);
+aWE("addedg",61);
+aWE("addfac",61);
+aWE("addhypothesi",61);
+aWE("addition",26,60,61);
+aWE("additional",13,14,23,8,37,64,42,68,45);
+aWE("addnod",61);
+aWE("addobject",57);
+aWE("addpolygonalfac",61);
+aWE("addpolyhedralvolum",61);
+aWE("addtostudy",6,8,57,61,66,69,70,72);
+aWE("addtostudyinfath",6,8,57,61);
+aWE("addvolum",61);
+aWE("adjacent",28,36,63,37,39,43,49);
+aWE("adjust",45);
+aWE("adjustabl",37);
+aWE("advanc",0,52);
+aWE("afilt",57,66);
+aWE("afiltermgr",57,61,66);
+aWE("afunctor",57,61,66);
+aWE("ageomgroup",57);
+aWE("agroup",57,66);
+aWE("agroup1",57);
+aWE("agroup2",57);
+aWE("agroup3",57);
+aWE("agroup4",57);
+aWE("agroup5",57);
+aWE("agroupelemid",57);
+aWE("agroupf",66);
+aWE("agroupmain",57);
+aWE("agroupn",66);
+aWE("agroupr",57);
+aWE("agrouptool",57);
+aWE("ai",19);
+aWE("al",61);
+aWE("algo",8,66,70);
+aWE("algo_local",6,8,70);
+aWE("algo1d",6,8,57,61,69,70,72);
+aWE("algo2d",6,8,61,69,70,72);
+aWE("algo3d",6,8,69,72);
+aWE("algorithm",13,14,15,16,0,18,23,6,24,8,12,33,60,61,63,34,64,38,43);
+aWE("allow",13,0,1,19,21,24,7,25,26,31,33,59,35,60,63,37,64,41,43,45,46,48,49,51,53);
+aWE("along",11,12,61,64,45,53);
+aWE("alternativ",23);
aWE("alternative",0,1);
-aWE("alway",44);
-aWE("amesheditor",60,66);
+aWE("alway",45);
+aWE("amesh",6);
+aWE("amesheditor",61,70);
aWE("amount",3);
-aWE("analytic",18);
-aWE("aneditor",60,63,66);
-aWE("angl",15,5,25,11,59,35,60,63,64,40,43,48,53);
-aWE("angle180",66);
-aWE("angle45",60);
-aWE("angular",11);
-aWE("angularity",11);
-aWE("anid",56,63);
-aWE("anodeid1",60);
-aWE("anodeid2",60);
-aWE("anodeid3",60);
-aWE("anodeid4",60);
-aWE("anoth",60,36);
-aWE("any",13,1,22,24,27,11,56,61,44);
-aWE("ap",14,16,1,17,19,2,20,5,22,24,25,7,8,26,27,29,10,11,31,58,59,35,60,61,37,38,39,64,42,43,44,45,46,48,49,50,69,53);
-aWE("apparent",22);
-aWE("appear",0,16,1,20,22,23,25,26,27,29,10,11,34,61,38,39,64,40,45,47,48,49,50);
-aWE("append",60,63);
-aWE("appli",17,18,19,2,22,23,32,31,35,33,36,37,65,43,44,46,69,53);
-aWE("applicabl",19,65);
-aWE("application",15,61);
-aWE("apply",12,0,22,23,24);
-aWE("applytomeshfac",60);
-aWE("appropriat",22);
-aWE("approximate",18);
-aWE("apredicat",56,63);
-aWE("arc",7,60,66);
-aWE("arcsin",53);
-aWE("area",12,15,17,7,56,32,59,33,63,44,46,52);
-aWE("arithmetic",12,18,6,7,59,66);
-aWE("arithmetic1d",6,7,66,68);
-aWE("around",5,11,64);
-aWE("array_of_nodes_group",66);
-aWE("asmeshgroup1",56);
-aWE("asmeshgroup2",56);
-aWE("aspect",15,19,2,59,63,44);
-aWE("assign",18,22,24,7,37,53);
-aWE("associat",16,28,38);
-aWE("attribut",24);
+aWE("analytic",19);
+aWE("aneditor",61,66,70);
+aWE("angl",16,5,26,12,60,36,61,66,67,41,44,70,49,54);
+aWE("angle270",70);
+aWE("angle45",61);
+aWE("angularity",12);
+aWE("anid",57,66);
+aWE("anoth",37);
+aWE("any",14,1,23,25,28,12,57,64,45);
+aWE("ap",15,17,1,18,20,2,21,5,23,7,25,26,8,9,27,28,30,11,12,32,59,60,36,61,64,38,39,40,67,43,44,45,46,47,49,50,51,73,54);
+aWE("api",69);
+aWE("apparent",23);
+aWE("appear",0,17,1,21,23,24,7,26,27,28,30,11,12,35,64,39,40,67,41,46,48,49,50,51);
+aWE("append",61);
+aWE("appli",18,19,20,2,23,24,33,32,36,37,34,38,68,44,45,47,73,54);
+aWE("applicabl",20,68);
+aWE("application",16,64);
+aWE("apply",13,0,23,24,25);
+aWE("applytomeshfac",61);
+aWE("approach",57,61,66,70);
+aWE("appropriat",23);
+aWE("approximate",19);
+aWE("apredicat",57,66);
+aWE("ar_margin",66);
+aWE("arc",8,70);
+aWE("arcsin",54);
+aWE("area",13,16,18,8,57,33,60,34,66,45,47,53);
+aWE("area_margin",66);
+aWE("arithmetic",13,19,6,8,60);
+aWE("arithmetic1d",6,8,70);
+aWE("around",5,12,67);
+aWE("array_of_nodes_group",70);
+aWE("asmeshgroup1",57);
+aWE("asmeshgroup2",57);
+aWE("aspect",16,20,2,60,66,45);
+aWE("assemb",69);
+aWE("assign",19,23,25,8,38,54);
+aWE("associat",17,29,39);
+aWE("attention",57,61,66,70);
+aWE("attribut",25);
aWE("auto",5);
-aWE("automatic",12,18,22,59,61);
-aWE("automatical",0,18,20,22,25,27,48);
-aWE("availabl",42,52);
-aWE("averag",12,18,7,32,59,61,53);
-aWE("ax",52);
-aWE("axi",10,64,40,45,52,53);
-aWE("axisstruct",60,66);
-aWE("axisxyz",60,66);
+aWE("automatic",13,19,23,60,64);
+aWE("automatical",0,19,21,23,26,28,49);
+aWE("availabl",43,53);
+aWE("averag",13,19,8,33,60,64,54);
+aWE("ax",53);
+aWE("axi",11,61,67,41,46,70,53,54);
+aWE("axisstruct",61,70);
+aWE("axisxyz",61,70);
aWE("background",0);
-aWE("bar",15);
-aWE("bas",12,17,7,11,59,53);
-aWE("basi",13,22,23);
-aWE("basic",12,0);
-aWE("becom",61);
-aWE("befor",65,66);
-aWE("begin",18,42);
-aWE("belong",3,4,24,54,55,42,50);
-aWE("below",60);
-aWE("berder",42);
-aWE("bet",19);
-aWE("binary",65);
-aWE("bisect",53);
-aWE("bisector",53);
-aWE("bit",65);
+aWE("bar",16);
+aWE("bas",13,18,8,12,57,60,61,66,70,54);
+aWE("basi",14,23,24);
+aWE("basic",13,0);
+aWE("bb",61);
+aWE("becom",63,64);
+aWE("befor",68,70);
+aWE("begin",19,43);
+aWE("belong",3,4,25,55,56,43,51);
+aWE("below",61,63,69);
+aWE("berder",43);
+aWE("bet",20);
+aWE("binary",68);
+aWE("bisect",54);
+aWE("bisector",54);
+aWE("bit",68);
aWE("black",0);
-aWE("block",6,7);
aWE("blu",3);
-aWE("bmp",0,52);
-aWE("bog",18);
-aWE("boolean",50);
-aWE("bord",42,66);
-aWE("border",15,3,4,54,55,59,63,42,66);
-aWE("both",0,11,44,50);
-aWE("bottom",60,41);
-aWE("bound",13,61);
-aWE("boundari",61);
-aWE("boundary",12,24,61,42,44);
-aWE("box",14,16,1,18,20,22,6,23,25,7,26,27,29,10,11,56,30,58,34,61,63,38,39,64,40,41,65,42,44,45,66,47,48,49,50,51,68);
-aWE("box_1",60);
-aWE("box_id",6,7);
-aWE("box1",66);
-aWE("box2",66);
-aWE("broken",1,36);
-aWE("brown",24);
-aWE("brows",0,16,1,21,22,23,24,8,29,62,38,39,65,51);
-aWE("build",7,10,32,60,36,61,64);
-aWE("built",19,23,61,44);
-aWE("button",16,1,17,19,2,20,5,22,23,24,25,8,26,27,29,10,11,30,31,35,61,37,38,39,64,40,65,42,43,44,45,46,47,48,49,50,51,69,52,53);
-aWE("cad",13);
-aWE("cal",61);
-aWE("calculat",15,19,2,32,46);
-aWE("calculation",12,17,31,35);
-aWE("careful",38);
-aWE("cas",16,22,6,7,27,60,61,66,51);
-aWE("cel",24,38,49);
-aWE("cent",11,44,52);
-aWE("centroid",44);
-aWE("centroidal",44);
-aWE("centroidal_smooth",60);
-aWE("certain",24,61);
-aWE("chang",0,18,20,6,27,60,36,37,68);
-aWE("characteristic",15);
-aWE("characteriz",13);
-aWE("check",24,42,52);
-aWE("checkbox",16,65,47);
-aWE("choic",12,22,61);
-aWE("choos",16,1,17,19,2,20,21,24,25,8,26,27,9,28,10,11,30,31,34,35,61,38,39,64,40,41,65,42,43,45,46,47,48,49,69,53);
-aWE("chosen",19,25,32,33,48);
-aWE("circl",11,60,66);
-aWE("circlemesh",60,66);
-aWE("clear",65);
-aWE("click",0,16,1,17,19,2,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,31,35,61,62,37,38,39,64,41,65,42,43,44,46,48,49,50,51,69,52,53);
+aWE("bmp",0,53);
+aWE("bog",19);
+aWE("boolean",61,51);
+aWE("bord",43,70);
+aWE("border",16,3,4,55,56,60,66,43,70);
+aWE("both",0,12,45,51);
+aWE("bottom",61,42);
+aWE("bound",14,64);
+aWE("boundari",64);
+aWE("boundary",13,25,64,43,45);
+aWE("box",17,1,19,21,23,6,24,7,26,8,27,28,30,11,12,57,31,59,35,63,64,66,39,40,67,41,42,68,43,69,45,46,70,48,49,50,51,52,72);
+aWE("box_1",61);
+aWE("box_cyl",69);
+aWE("box1",66,70);
+aWE("box2",66,70);
+aWE("broken",1,37);
+aWE("brown",25);
+aWE("brows",0,17,1,22,23,24,25,9,30,65,39,40,68,52);
+aWE("build",8,11,33,61,63,37,64,67,69);
+aWE("built",20,24,12,64,45);
+aWE("button",17,1,18,20,2,21,5,23,24,7,25,26,9,27,28,30,11,12,31,32,36,64,38,39,40,67,41,68,43,44,45,46,47,48,49,50,51,52,73,53,54);
+aWE("cad",14);
+aWE("cal",64);
+aWE("calculat",16,20,2,33,47);
+aWE("calculation",13,18,32,36);
+aWE("careful",39);
+aWE("cas",17,23,6,8,28,12,64,52);
+aWE("cc",61);
+aWE("cel",25,63,39,50);
+aWE("cent",12,45,53);
+aWE("central",12);
+aWE("centroid",45);
+aWE("centroidal",45);
+aWE("centroidal_smooth",61);
+aWE("certain",25,64);
+aWE("chang",0,19,21,6,28,61,37,38);
+aWE("characteristic",16);
+aWE("characteriz",14);
+aWE("check",25,63,66,43,53);
+aWE("checkbox",17,63,68,48);
+aWE("choic",13,23,64);
+aWE("choos",17,1,18,20,2,21,22,7,25,26,9,27,28,10,29,11,12,31,32,35,36,64,39,40,67,41,42,68,43,44,46,47,48,49,50,73,54);
+aWE("chosen",20,26,33,34,49);
+aWE("circl",12,70);
+aWE("circlemesh",70);
+aWE("circular",61);
+aWE("clas",62);
+aWE("clear",62,68);
+aWE("click",0,17,1,18,20,2,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,32,36,64,65,38,39,40,67,42,68,43,44,45,47,49,50,51,52,73,53,54);
aWE("clip",0,5);
-aWE("clos",13,19,8,42);
-aWE("co",60,42);
-aWE("coars",18);
-aWE("coincid",58);
-aWE("coincident",58,34);
-aWE("color",15,0,17,19,2,24,31,35,43,46,69,52,53);
-aWE("combin",9,31,62,65);
-aWE("common",26,65,49);
-aWE("compar",18,42);
-aWE("complete",58);
-aWE("complex",1);
-aWE("component",59,41);
-aWE("compos",12,13,14,15,0,18,2,28,32,33,43);
-aWE("compound",6,7);
-aWE("comput",0,18,22,6,7,56,60,61,63,42,66,68);
-aWE("computation",22,23,7,56,60);
-aWE("concept",36);
-aWE("condition",12,24);
-aWE("confirm",20,25,29,38,44,48,50);
-aWE("confirmation",24);
-aWE("conform",12,36,42,66);
-aWE("conformity",19);
-aWE("connect",18,25,44);
-aWE("connection",13,15,3,4,59,63);
-aWE("connectivity",61);
-aWE("consid",19,22);
-aWE("consider",13,19,2,42);
-aWE("consist",15,1,17,18,19,3,4,21,22,23,24,54,55,56,32,31,35,33,46);
-aWE("consol",51);
-aWE("constant",18);
-aWE("construct",18,21,22,6,23,37);
-aWE("construction",18,22,6,23);
-aWE("contain",13,14,20,22,23,24,25,30,32,61,44,48);
-aWE("content",8,52);
-aWE("continu",44);
-aWE("contour",13,42);
-aWE("contrast",48);
-aWE("control",15,0,17,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53);
-aWE("converg",44);
-aWE("conversion",18);
-aWE("coordinat",13,16,27,61,52);
-aWE("copy",40,65,45,66,47);
-aWE("corn",1,53);
-aWE("corner",25,44,53);
-aWE("correspond",13,15,30,60,61,63,65,42,47);
-aWE("cosal",60);
-aWE("could",13,16);
-aWE("count",42);
-aWE("counterclockwis",61);
-aWE("cours",22);
-aWE("creat",13,14,0,16,1,18,5,22,6,23,24,7,29,56,34,59,60,36,61,63,37,40,65,45,66,47,50,53);
-aWE("createanddisplaygo",7);
-aWE("createarea",56,63);
-aWE("createaspectratio",63);
-aWE("createaspectratio3d",63);
-aWE("createequalto",56,63);
-aWE("createfilt",56,63);
-aWE("createfiltermanag",56,60,63);
-aWE("createfreeborder",63);
-aWE("createfreeedg",63);
-aWE("creategroup",56,60,63);
-aWE("creategroupfromgeom",56);
-aWE("createhypothesi",6,7,56,60,63,68);
-aWE("createlength",63);
-aWE("createlength2d",63);
-aWE("createlessthan",56,63);
-aWE("createmesh",6,7,56,60,63,68);
-aWE("createminimumangl",60,63);
-aWE("createmorethan",56,63);
-aWE("createmulticonnection",63);
-aWE("createmulticonnection2d",63);
-aWE("createskew",63);
-aWE("createtap",63);
-aWE("createvolume3d",63);
-aWE("createwarp",63);
-aWE("creation",13,36,61,37,50);
-aWE("criteria",59,65);
-aWE("criterion",17,19,2,24,25,56,57,31,35,63,65,43,46,48,69,53);
-aWE("cros",0,5,53);
-aWE("cubic",14);
-aWE("current",20,22,25,37,65,42,48);
-aWE("curv",13,18,11);
-aWE("curvilinear",18,11);
-aWE("cut",18,6,25,7,56,60,66,50);
-aWE("cutgroup",56);
-aWE("cylind",60);
-aWE("d",18);
-aWE("deal",13);
-aWE("def",60);
-aWE("default",0,22,11,62,65,67,52);
-aWE("defin",13,14,1,18,19,5,22,6,23,24,7,11,60,36,61,42,66,52);
-aWE("definit",13,15,18,20,21,24,25,59,37,38,48);
-aWE("definition",0,18,32,33);
-aWE("deflection",12,18,7,59);
-aWE("deflection1d",7);
-aWE("deform",52);
-aWE("degre",19,5);
-aWE("delet",8,55,60,38,65);
-aWE("deletediag",60);
-aWE("deletion",38,49);
-aWE("density",18);
-aWE("depend",12,13,22,32,33);
-aWE("describ",13,61);
-aWE("description",61);
-aWE("desirabl",34);
-aWE("desktop",41);
-aWE("destin",13,15,59);
-aWE("detail",12,0);
-aWE("detect",34);
-aWE("dh",60);
-aWE("diagonal",25,26,60,46);
-aWE("dialog",14,16,1,18,20,22,23,25,26,27,29,10,11,30,58,34,61,38,39,64,40,42,44,45,47,48,49,50);
-aWE("diamet",19);
-aWE("dif",1);
-aWE("differ",18);
-aWE("differenc",11,42);
-aWE("different",12,16,24,37,65,42);
-aWE("dimension",13,2,22,10,64,51);
-aWE("direct",13,42,44);
-aWE("direction",61,53);
-aWE("dirstruct",60,66);
-aWE("discretisation",6,7);
-aWE("discretiz",10,64);
-aWE("discretization",13,14);
-aWE("displac",27);
-aWE("display",15,0,1,17,19,2,3,20,22,23,24,25,7,27,9,28,54,31,35,62,43,44,46,48,51,69,52,53);
-aWE("distanc",18,5,61,52,53);
-aWE("distinguish",24);
-aWE("distortion",44);
-aWE("distribution",18);
-aWE("divid",18);
-aWE("do",16);
-aWE("domain",61);
-aWE("don",13,22,36,52);
+aWE("clos",14,20,9,12,61,43);
+aWE("co",61,43);
+aWE("coars",19,7,63);
+aWE("coincid",59);
+aWE("coincident",12,59,35);
+aWE("color",16,0,18,20,2,25,32,36,44,47,73,53,54);
+aWE("combin",10,32,65,68);
+aWE("command",57,61,66,70);
+aWE("common",27,68,50);
+aWE("comp",66);
+aWE("compar",19,43);
+aWE("complete",59);
+aWE("complex",1,12);
+aWE("component",60,42);
+aWE("compos",13,14,15,16,0,19,2,29,33,34,44);
+aWE("compound",66);
+aWE("comput",0,19,23,6,8,57,61,64,66,43,69,70,72);
+aWE("computation",23,24,8,61);
+aWE("con",69);
+aWE("concept",37);
+aWE("condition",13,25);
+aWE("confirm",21,26,30,39,45,49,51);
+aWE("confirmation",25);
+aWE("conform",13,37,43,70);
+aWE("conformity",20);
+aWE("connect",19,26,45);
+aWE("connection",14,16,3,4,60,66);
+aWE("connectivity",64);
+aWE("consid",20,23);
+aWE("consider",14,20,2,43);
+aWE("consist",16,1,18,19,20,3,4,22,23,24,25,12,55,56,57,33,32,36,34,47);
+aWE("consol",52);
+aWE("constant",19);
+aWE("construct",15,19,22,23,6,24,38);
+aWE("construction",19,23,6,24);
+aWE("contain",14,15,21,23,24,25,26,12,31,33,64,45,49);
+aWE("content",9,53);
+aWE("continu",45);
+aWE("contour",14,43);
+aWE("contrast",49);
+aWE("control",16,0,18,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54);
+aWE("converg",45);
+aWE("conversion",19,7);
+aWE("convert",7);
+aWE("coordinat",14,17,28,64,53);
+aWE("copi",70);
+aWE("copy",41,68,46,70,48);
+aWE("corn",1,54);
+aWE("corner",26,12,45,54);
+aWE("correspond",14,16,31,64,66,68,43,48);
+aWE("cos_bot",61);
+aWE("cos_top",61);
+aWE("cosal",61);
+aWE("cot",69);
+aWE("could",14,17);
+aWE("count",43);
+aWE("counterclockwis",64);
+aWE("cours",23);
+aWE("cover",12);
+aWE("creat",14,0,17,1,19,5,23,6,24,25,8,30,57,35,60,61,63,37,64,66,38,41,68,69,46,70,48,51,72,54);
+aWE("createarea",57,66);
+aWE("createaspectratio",66);
+aWE("createaspectratio3d",66);
+aWE("createemptymesh",61);
+aWE("createequalto",57,66);
+aWE("createfilt",57,66);
+aWE("createfiltermanag",57,61,66);
+aWE("createfreeborder",66);
+aWE("createfreeedg",66);
+aWE("creategroup",57,61,66,69);
+aWE("creategroupfromgeom",61);
+aWE("createhypothesi",61);
+aWE("createlength",66);
+aWE("createlength2d",66);
+aWE("createlessthan",57,66);
+aWE("createminimumangl",61,66);
+aWE("createmorethan",57,66);
+aWE("createmulticonnection",66);
+aWE("createmulticonnection2d",66);
+aWE("createpolyedr",70);
+aWE("createpolygon",70);
+aWE("createskew",66);
+aWE("createtap",66);
+aWE("createvolume3d",66);
+aWE("createwarp",66);
+aWE("creation",14,37,64,38,62,69,51);
+aWE("criteria",60,68);
+aWE("criterion",18,20,2,25,26,57,58,32,36,66,68,44,47,49,73,54);
+aWE("cros",0,5,54);
+aWE("cubic",15);
+aWE("current",21,23,26,63,38,68,43,49);
+aWE("curv",14,19,12,61);
+aWE("curvilinear",19,12);
+aWE("custom",63);
+aWE("cut",19,6,26,8,57,61,51);
+aWE("cutgroup",57);
+aWE("cyl",8,69);
+aWE("cylind",8,69);
+aWE("d",19);
+aWE("data",62);
+aWE("dd",61);
+aWE("deal",14);
+aWE("def",6,61,62);
+aWE("default",0,23,12,57,63,65,68,71,53);
+aWE("defin",14,15,1,19,20,5,23,6,24,25,8,12,61,63,37,64,62,43,69,70,53);
+aWE("definit",14,16,19,21,22,25,26,60,38,39,49);
+aWE("definition",0,19,6,12,33,63,34);
+aWE("deflection",13,19,8,60);
+aWE("deflection1d",8);
+aWE("deform",53);
+aWE("degre",20,5);
+aWE("delet",9,56,61,39,68);
+aWE("deletediag",61);
+aWE("deletion",39,50);
+aWE("density",19);
+aWE("depend",13,14,23,33,34);
+aWE("describ",14,15,64);
+aWE("description",64);
+aWE("desirabl",35);
+aWE("desktop",42);
+aWE("destin",14,16,60,62);
+aWE("detail",13,15,0);
+aWE("detalization",63);
+aWE("detect",35);
+aWE("dh",61);
+aWE("di1",69);
+aWE("diagonal",26,27,61,47);
+aWE("dialog",17,1,19,21,23,24,7,26,27,28,30,11,12,31,59,35,64,39,40,67,41,43,45,46,48,49,50,51);
+aWE("diamet",20);
+aWE("dif",1,63);
+aWE("differ",19);
+aWE("differenc",12,43);
+aWE("different",13,17,25,12,38,68,43);
+aWE("digit",12);
+aWE("dimension",14,2,23,11,63,67,52);
+aWE("direct",14,6,57,61,66,43,45,70);
+aWE("direction",12,64,54);
+aWE("dirstruct",61,70);
+aWE("discretiz",11,67);
+aWE("discretization",14,15);
+aWE("displac",28);
+aWE("display",16,0,1,18,20,2,3,21,23,24,25,26,28,10,29,55,32,36,65,44,45,47,49,52,73,53,54);
+aWE("distanc",19,5,64,53,54);
+aWE("distinguish",25);
+aWE("distortion",45);
+aWE("distribution",19);
+aWE("divid",19);
+aWE("do",17);
+aWE("docopy",70);
+aWE("documentation",62);
+aWE("doesn",57,61,66,70);
+aWE("domain",64);
+aWE("don",14,23,12,61,37,53);
aWE("doubl",1);
-aWE("downward",52);
-aWE("dr",60);
-aWE("drag",52);
-aWE("drawn",52);
-aWE("dump",0,52);
-aWE("dx",60);
-aWE("dy",60);
-aWE("e",19,22,23,25,61,42,48);
-aWE("easi",21);
-aWE("edg",12,13,14,15,0,16,1,18,19,3,4,21,22,6,24,25,7,26,27,9,11,54,55,56,57,32,31,59,60,36,61,63,65,42,44,66,48,49,68,53);
-aWE("edgeslist",66);
-aWE("edgex111",6,7);
-aWE("edgex112",6,7);
-aWE("edgex121",6,7);
-aWE("edgex122",6,7);
-aWE("edgey11",6,7);
-aWE("edgey12",6,7);
-aWE("edgey21",6,7);
-aWE("edgey22",6,7);
-aWE("edgez111",6,7);
-aWE("edgez121",6,7);
-aWE("edgez211",6,7);
-aWE("edgez221",6,7);
-aWE("edit",6,8,29,56,34,37);
-aWE("effect",48);
-aWE("eith",61,42);
-aWE("element",12,13,14,15,0,16,1,17,18,19,2,4,20,21,24,25,7,8,26,27,28,29,10,11,55,56,32,31,58,59,35,60,33,36,61,63,38,39,64,40,65,42,43,44,45,46,66,47,48,50,51,69,53);
-aWE("els",7,56,60,61);
-aWE("enabl",65);
-aWE("encapsulat",23);
-aWE("encounter",61);
-aWE("end",12,18,7,59,36,65,42,47);
-aWE("enough",42);
-aWE("ent",24,26,27,30,49);
-aWE("entiti",13,14);
-aWE("entity",13,0,9,65);
-aWE("equal",18,32,61,65,42,44);
-aWE("equidistant",18);
-aWE("equilateral",19);
+aWE("downward",53);
+aWE("dr",61);
+aWE("drag",53);
+aWE("drawn",53);
+aWE("dump",0,53);
+aWE("duplicat",12);
+aWE("dx",61);
+aWE("dy",61);
+aWE("e",20,23,24,26,12,63,64,43,49);
+aWE("e_arc",8);
+aWE("e_straight",8);
+aWE("e1",61);
+aWE("easi",22);
+aWE("easy",62);
+aWE("edg",13,14,15,16,0,17,1,19,20,3,4,22,23,6,25,26,8,27,28,10,12,55,56,57,58,33,32,60,61,63,37,64,66,68,43,45,70,49,50,72,54);
+aWE("edge_",61);
+aWE("edge_bezierrr",61);
+aWE("edge_bezierrr_mesh",61);
+aWE("edge_circl",61);
+aWE("edge_circle_mesh",61);
+aWE("edge_straight",61);
+aWE("edge_straight_mesh",61);
+aWE("edge1",70);
+aWE("edgeslist",70);
+aWE("edgex",6,8);
+aWE("edit",6,9,30,57,35,38);
+aWE("edition",62,69);
+aWE("editor_1",61);
+aWE("editor_2",61);
+aWE("editor_3",61);
+aWE("editor_4",61);
+aWE("editor_5",61);
+aWE("editor_6",61);
+aWE("editor_7",61);
+aWE("ee_1",61);
+aWE("ee_2",61);
+aWE("ee_3",61);
+aWE("ee_4",61);
+aWE("ee_5",61);
+aWE("ee_6",61);
+aWE("ee_7",61);
+aWE("effect",49);
+aWE("eith",64,43);
+aWE("element",13,14,15,16,0,17,1,18,19,20,2,4,21,22,7,25,26,8,9,27,28,29,30,11,12,56,57,33,32,59,60,36,61,63,37,34,64,66,39,40,67,41,68,43,44,45,46,47,70,48,49,51,52,73,54);
+aWE("els",6,8,61,64);
+aWE("empty",61);
+aWE("enabl",68);
+aWE("encapsulat",24);
+aWE("encounter",64);
+aWE("end",13,19,8,60,37,68,43,48);
+aWE("enough",43);
+aWE("ent",25,27,28,31,50);
+aWE("entiti",14,15);
+aWE("entity",14,0,10,68);
+aWE("equal",19,33,64,68,43,45);
+aWE("equidistant",19);
+aWE("equilateral",20);
aWE("eras",0);
-aWE("etc",15,2,25,48);
-aWE("even",22,32);
-aWE("eventual",61);
-aWE("every",53);
-aWE("everyth",22);
-aWE("exampl",13,2,22,24,61,50);
-aWE("exce",18);
-aWE("exceed",44);
-aWE("except",42,52);
-aWE("exist",12,20,24,25,29,61,65,48);
-aWE("existenc",22);
-aWE("exponent",18);
-aWE("export",0,6,30,59,52);
-aWE("exportation",30);
+aWE("error",61);
+aWE("etc",16,2,26,49);
+aWE("even",23,33,63);
+aWE("eventual",64);
+aWE("every",54);
+aWE("everyth",23);
+aWE("ex21_lamp",69);
+aWE("examin",12);
+aWE("exampl",14,2,23,6,25,12,64,62,69,51);
+aWE("exce",19);
+aWE("exceed",45);
+aWE("except",43,53);
+aWE("exist",13,21,25,26,30,64,68,49);
+aWE("existenc",23);
+aWE("explod",61);
+aWE("exponent",19);
+aWE("export",0,6,31,60,53);
+aWE("exportation",31);
aWE("exportm",6);
-aWE("extend",52,53);
-aWE("extreme",18);
+aWE("extend",53,54);
+aWE("external",12);
+aWE("extreme",19);
aWE("extremiti",5);
-aWE("extrud",10,11,60,64);
-aWE("extrusion",10,11,60,66);
-aWE("extrusionalongpathobject",60,66);
-aWE("extrusionsweepobject",60);
-aWE("f",18,7);
-aWE("fac",12,13,14,0,16,18,2,3,21,22,6,23,24,7,9,54,56,32,59,60,36,61,63,65,42,66,51,68,53);
-aWE("face_1",60);
-aWE("face_2",60);
-aWE("face1",7,60,66);
-aWE("facelist",63);
-aWE("facesrotat",60);
-aWE("facessmooth",60);
-aWE("facestritoquad",60);
-aWE("facex11",6,7);
-aWE("facex21",6,7);
-aWE("facey111",6,7);
-aWE("facey121",6,7);
-aWE("facez11",6,7);
-aWE("facez12",6,7);
-aWE("factor",18,25);
-aWE("factoryserv",6,7,56,60,63,68);
-aWE("fail",60);
-aWE("far",42);
-aWE("fashion",11);
-aWE("fast",44);
-aWE("featur",24);
-aWE("field",16,1,20,24,26,27,39,65,42,44,48,49);
-aWE("fifth",42);
-aWE("fil",30,61,65);
-aWE("fill",63,39,42);
-aWE("filt",20,24,25,65,48);
-aWE("filter",24,65);
-aWE("fin",18);
-aWE("find",30,61,42);
-aWE("findcoincidentnod",66);
-aWE("findorloadcomponent",6,7,56,60,63,68);
-aWE("finenes",18);
-aWE("first",1,18,22,56,60,36,61,42);
-aWE("fit",52);
-aWE("fiv",60);
-aWE("fix",13,6,7,44,66);
-aWE("flag",61);
-aWE("fold",22,23);
-aWE("follow",12,13,14,16,1,2,20,22,23,24,25,26,27,28,29,10,11,34,61,38,39,64,40,42,44,45,47,48,49,50,51);
-aWE("font",52);
-aWE("form",1,26,29,61,42);
-aWE("format",0,30,59,52);
-aWE("formula",18,19,2);
-aWE("four",13,19,53);
-aWE("fourth",60);
-aWE("fram",52);
-aWE("fre",13,15,54,55,59,63,42,44,66);
-aWE("function",13);
-aWE("functionaliti",52);
-aWE("functionality",22,30,58,34,42,52);
-aWE("futur",18);
-aWE("g",23);
-aWE("gaus",52);
-aWE("generat",12,13,15,18,22,59,36,61);
-aWE("generation",10,61,64);
-aWE("geom",13,7,59,60);
-aWE("geometric",13,15,7);
-aWE("geometrical",12,13,14,18,22,23,24,32,59,33,61,37,40,44,45,47,51);
-aWE("geometry",23,24,56,60,44);
-aWE("geompy",6,7,56,60,63,66,68);
-aWE("get",0,5,22,7,11,61,51);
-aWE("getalgorithm",60);
-aWE("getborder",63);
-aWE("getelementsid",56,63);
-aWE("geterrorcod",60);
-aWE("getid",6);
-aWE("getlistofid",56);
-aWE("getmaxelementarea",6,7);
-aWE("getmaxelementvolum",6,7);
-aWE("getmesh",60,66);
-aWE("getmesheditor",60,63,66);
-aWE("getnam",6,7);
-aWE("getnumberofsegment",6,7);
-aWE("getpattern",60);
-aWE("gg",7);
-aWE("giv",65,51);
-aWE("given",18,32,42);
-aWE("global",52);
-aWE("go",60);
-aWE("good",44);
-aWE("got",61);
-aWE("graduat",52);
+aWE("extrud",11,12,61,67);
+aWE("extrusion",11,12,61,70);
+aWE("extrusionalongpath",61);
+aWE("extrusionalongpathobject",70);
+aWE("extrusionsweepobject",61);
+aWE("exy",8);
+aWE("f",19,8);
+aWE("f1",61);
+aWE("f2",61);
+aWE("f3",61);
+aWE("f4",61);
+aWE("f5",61);
+aWE("fac",13,14,15,0,17,19,2,3,22,23,6,24,25,8,10,12,55,57,33,60,61,63,37,64,66,68,43,69,70,52,72,54);
+aWE("face_1",61);
+aWE("face_2",61);
+aWE("face1",8,70);
+aWE("face2",70);
+aWE("facelist",66);
+aWE("faceslist1",70);
+aWE("faceslist2",70);
+aWE("facesrotat",61);
+aWE("factor",19,26);
+aWE("factoryserv",62);
+aWE("fail",61);
+aWE("far",43);
+aWE("fashion",12);
+aWE("fast",45);
+aWE("featur",25);
+aWE("ff",61);
+aWE("ff_1",61);
+aWE("ff_2",61);
+aWE("ff_3",61);
+aWE("ff_4",61);
+aWE("ff_5",61);
+aWE("ff_6",61);
+aWE("ff_7",61);
+aWE("field",17,1,21,25,27,28,40,68,43,45,49,50);
+aWE("fifth",43);
+aWE("fil",6,31,64,68);
+aWE("fill",66,40,43);
+aWE("filt",21,25,26,68,49);
+aWE("filter",25,68);
+aWE("fin",19,63);
+aWE("find",31,64,43);
+aWE("findcoincidentnod",70);
+aWE("findorloadcomponent",62);
+aWE("finenes",19,63);
+aWE("first",1,19,23,6,12,57,61,37,64,43);
+aWE("firstnodeid1",70);
+aWE("firstnodeid2",70);
+aWE("firstnodeidonfreebord",70);
+aWE("firstnodeidonsid",70);
+aWE("fit",53);
+aWE("fiv",61);
+aWE("fix",14,6,8,45);
+aWE("flag",64);
+aWE("fold",23,24);
+aWE("follow",13,14,15,17,1,2,21,23,24,7,25,26,27,28,29,30,11,12,35,61,64,39,40,67,41,43,45,46,48,49,50,51,52);
+aWE("font",53);
+aWE("form",1,27,30,64,43);
+aWE("format",0,31,60,53);
+aWE("formula",19,20,2);
+aWE("four",14,20,54);
+aWE("fourth",61);
+aWE("fram",53);
+aWE("fre",14,16,55,56,60,66,43,45,70);
+aWE("function",14,62);
+aWE("functionaliti",53);
+aWE("functionality",23,7,31,59,35,43,53);
+aWE("fus",69);
+aWE("futur",19);
+aWE("g",24);
+aWE("gaus",53);
+aWE("gen",61,66);
+aWE("generat",13,14,16,19,23,60,37,64);
+aWE("generation",6,11,64,67,69);
+aWE("geom",14,60);
+aWE("geometric",14,16,8);
+aWE("geometrical",13,14,15,19,23,24,25,33,60,34,64,38,41,45,46,48,52);
+aWE("geometry",24,7,25,57,61,69,45);
+aWE("geompy",6,8,57,61,66,69,70,72);
+aWE("get",0,5,23,8,12,57,64,52);
+aWE("getborder",66);
+aWE("getedgenearpoint",6,8);
+aWE("getelementsid",57,66);
+aWE("geterrorcod",61);
+aWE("getlistofid",57);
+aWE("getmesh",6,61,66,70,72);
+aWE("getmesheditor",61,66,70);
+aWE("getnam",62);
+aWE("getpattern",61);
+aWE("ghs3d",62);
+aWE("giv",68,52);
+aWE("given",19,33,61,43);
+aWE("global",8,53);
+aWE("glu",66);
+aWE("good",6,45);
+aWE("got",64);
+aWE("graduat",53);
aWE("graphical",0);
-aWE("great",18,52);
-aWE("greatest",19,2);
-aWE("green",24);
-aWE("group",20,21,24,25,8,29,11,56,34,59,60,63,65,44,47,48,50,51);
-aWE("group1",50);
-aWE("group12",50);
-aWE("group12a",50);
-aWE("group12b",50);
-aWE("group2",50);
-aWE("grouprotat",60);
-aWE("groupsmooth",60);
-aWE("groupsofnod",66);
-aWE("grouptritoquad",60);
-aWE("h",53);
-aWE("half",19,53);
+aWE("great",19,53);
+aWE("greatest",20,2);
+aWE("green",25,12);
+aWE("group",21,22,25,26,9,30,12,57,35,60,61,66,68,69,45,48,49,51,52);
+aWE("group_nam",69);
+aWE("group1",51);
+aWE("group12",51);
+aWE("group12a",51);
+aWE("group12b",51);
+aWE("group2",51);
+aWE("grouprotat",61);
+aWE("groupsmooth",61);
+aWE("groupsofnod",70);
+aWE("grouptri",61);
+aWE("growth",63);
+aWE("h",54);
+aWE("half",20,54);
aWE("halv",5);
-aWE("hav",19,32,36,61);
-aWE("hedron",60);
-aWE("height",53);
-aWE("helical",11);
-aWE("help",15);
-aWE("henc",61);
-aWE("her",61);
-aWE("hexa",6,7);
-aWE("hexa_3d",7);
-aWE("hexa3d",7);
-aWE("hexagon",11);
-aWE("hexahedral",14,6,7);
-aWE("hexahedralization",22);
-aWE("hexahedrical",6,7);
-aWE("hexahedron",13,14,16,2,7,60,33,68);
-aWE("hh",60);
-aWE("hid",0,52);
-aWE("high",13);
-aWE("highlight",3,4,20,24,25,54,55,48);
-aWE("hmax",19);
-aWE("hol",55);
-aWE("hold",61);
-aWE("how",11,37);
-aWE("hyp",23);
-aWE("hyp1",6,63,68);
-aWE("hyp2",6,63,68);
-aWE("hyp3",6,68);
-aWE("hyp4",6,68);
-aWE("hyparea",6,7);
-aWE("hypnbseg",6,7,56);
-aWE("hypothes",12,0,18,22,23,7,56,32,59,36,37);
-aWE("hypothesi",12,18,22,6,7,56,32,33,36,37,66,68);
-aWE("hypvolum",6,7);
-aWE("i",19,22,25,56,60,61,63,42,48);
-aWE("icon",29,38,41);
-aWE("id",0,18,20,24,25,26,27,28,10,11,64,42,44,48,49);
-aWE("id_arc",7);
-aWE("id_circl",60,66);
-aWE("id_fac",7);
-aWE("id_face1",7,60,66);
-aWE("idbox",6,7,56,63,68);
-aWE("idcomp",66);
-aWE("idea",11);
-aWE("idedg",6,68);
-aWE("idfac",56);
-aWE("idtoobject",6,63,66,68);
-aWE("if",13,16,5,22,6,23,7,10,11,56,32,60,36,61,37,38,64,65,42,44,48,52);
-aWE("ii",60);
-aWE("imag",0,11,52);
-aWE("imp",13);
-aWE("import",6,7,56,30,59,60,63,66,68);
-aWE("importation",30);
-aWE("importcomponentgui",6,7,63);
-aWE("includ",13,51);
-aWE("increas",6,7,66);
-aWE("index",24,61);
-aWE("indic",61);
-aWE("indicat",53);
-aWE("info",0,51,68);
-aWE("information",13,0,29,51,68);
-aWE("init",6,7,63);
-aWE("init_geom",60);
-aWE("initial",11,65,45,50);
-aWE("initializ",6,7,56);
-aWE("input",1,18);
-aWE("inscrib",19);
-aWE("insert",65,42);
-aWE("instead",36,61);
-aWE("intact",8);
-aWE("integ",24);
-aWE("intend",42);
-aWE("interest",13);
-aWE("intermediat",42);
-aWE("internal",61);
-aWE("intersect",61,50);
-aWE("intersectgroup",56);
-aWE("intersection",56,61,50);
-aWE("introduc",12,24,36);
-aWE("introduction",59);
-aWE("invers",13,26,60);
-aWE("inversediag",60);
-aWE("inversion",26,60);
-aWE("invisibl",67);
-aWE("isdon",60);
-aWE("iso",61);
-aWE("isolin",61);
-aWE("isometric",52);
-aWE("isplanarfac",7,60,66);
-aWE("item",16,1,20,21,25,26,27,29,10,11,30,34,61,39,64,40,42,44,45,47,48,49,50);
-aWE("iteration",11,44);
-aWE("iterativ",44);
-aWE("join",43);
-aWE("jpeg",0,52);
-aWE("jpg",0,52);
-aWE("just",1,61,38);
-aWE("k",18,19);
-aWE("keep",11,44,45);
-aWE("key",61);
-aWE("keyboard",25);
-aWE("know",61);
-aWE("ko",60);
-aWE("l",53);
-aWE("label",52);
-aWE("laplacian",44);
-aWE("last",1,18,36,42);
-aWE("lastnodeid",60);
-aWE("lay",10,61,64);
-aWE("lcc",6,7,56,60,63,68);
-aWE("learn",51);
-aWE("least",61,44);
-aWE("leav",22,8);
-aWE("left",0,11,61,52);
-aWE("legth",63);
-aWE("len",56,63);
-aWE("length",12,15,18,19,6,7,57,32,31,59,63,42,66,52,53);
-aWE("lengthfromedg",7,60,66);
-aWE("les",65,42,44);
-aWE("let",11);
-aWE("level",12,16);
-aWE("libnetgenengin",7);
-aWE("library",24,65);
-aWE("libstdmeshersengin",6,7,56,60,63,68);
-aWE("lik",16,2,28,42);
-aWE("limit",61,42,44);
-aWE("lin",13,1,18,10,36,61,64,43);
-aWE("link",42);
-aWE("list",0,16,20,24,25,8,11,65,48);
-aWE("lk",18);
-aWE("ll",52);
-aWE("load",61,65);
-aWE("loadfromfac",60);
-aWE("local",6,23,7,59,36,66);
-aWE("locallength",7);
-aWE("locat",61,42);
-aWE("location",18,27,30,44);
-aWE("lock",25,44,52);
-aWE("longest",19);
-aWE("look",28,61,65);
-aWE("low",13,18);
-aWE("ly",61);
-aWE("main",20,25,8,11,36,61,65,48,50);
-aWE("makearc",7,60,66);
-aWE("makebox",6,7,56,63,66,68);
-aWE("makeboxdxdydz",60);
-aWE("makecirclethreepnt",60,66);
-aWE("makecompound",6,7,63,66);
-aWE("makecylinderrh",7,60);
-aWE("makeedg",6,7);
-aWE("makefac",7,60,66);
-aWE("makehexa",6,7);
-aWE("makemesh",60);
-aWE("makepolygon",60);
-aWE("makequad",6,7);
-aWE("makesketch",7);
-aWE("makevector",7,60,66);
-aWE("makevertex",6,7,60,66);
-aWE("makewir",7,60,66);
-aWE("manag",12,16);
-aWE("manual",24,61);
-aWE("map",32,60,61);
-aWE("mark",52);
-aWE("mas",11);
-aWE("math",60,66);
-aWE("max",12,7,32,59,33,44);
-aWE("max_element_area",60);
-aWE("maxelementarea",6,7,60,63,68);
-aWE("maxelementarea_500",6);
-aWE("maxelementarea_800",7);
-aWE("maxelementvolum",6,7);
-aWE("maxelementvolume_500",6);
-aWE("maxelementvolume_900",7);
-aWE("maximum",18,7,32,33,43,44,51);
-aWE("mean",13);
-aWE("meaningful",13);
-aWE("measur",53);
-aWE("meet",25,48);
-aWE("mefisto_2d",6,7,63,68);
-aWE("mefisto2d",6,7);
-aWE("menu",16,1,18,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,34,36,61,38,39,64,40,41,65,42,44,45,47,48,49,50,51);
-aWE("merg",58,34,42,66);
-aWE("mergeequalelement",66);
-aWE("mergenod",66);
-aWE("mesh",12,13,14,15,0,16,1,17,18,19,2,3,4,20,5,21,22,6,23,24,25,7,8,26,27,28,29,10,11,54,55,56,30,32,31,58,34,59,35,60,33,36,61,62,63,37,38,39,64,40,41,65,42,43,44,45,46,66,47,48,49,50,51,68,69,52,53);
-aWE("mesh_1",22,60);
-aWE("mesh_2",60);
-aWE("mesh_borders_at_multi",63);
-aWE("mesh_freebord",63);
-aWE("meshbox",6,7);
-aWE("mesheditor",60);
+aWE("hasangl",61);
+aWE("hasrefpoint",61);
+aWE("hav",20,33,37,64);
+aWE("hedron",61);
+aWE("height",69,54);
+aWE("helical",12);
+aWE("help",16);
+aWE("henc",64);
+aWE("her",64);
+aWE("hexa",8);
+aWE("hexahedral",15,6,8);
+aWE("hexahedralization",23);
+aWE("hexahedrical",8);
+aWE("hexahedron",14,15,17,2,8,61,34,72);
+aWE("hh",61);
+aWE("hid",0,53);
+aWE("high",14);
+aWE("highlight",3,4,21,25,26,55,56,49);
+aWE("hmax",20);
+aWE("hol",56,61);
+aWE("hold",64);
+aWE("homogeneou",63);
+aWE("how",15,12,63,38);
+aWE("hyp",24);
+aWE("hyp1",6);
+aWE("hyp1d",61);
+aWE("hyp2",6);
+aWE("hyp3",6);
+aWE("hyp4",6);
+aWE("hypothes",13,0,19,23,6,24,8,33,60,61,63,37,38);
+aWE("hypothesi",13,19,23,6,8,33,61,37,34,38,69);
+aWE("i",15,20,23,26,12,57,61,63,64,66,43,49);
+aWE("icon",30,39,42);
+aWE("id",0,19,21,25,26,27,28,29,11,12,57,61,67,43,45,49,50);
+aWE("id_circl",70);
+aWE("id_fac",8);
+aWE("id_face1",70);
+aWE("idbox",6,66);
+aWE("idea",12);
+aWE("idl",6,57,61,66,70);
+aWE("idsofelement",61);
+aWE("idsoffixednod",61);
+aWE("idsofside1element",70);
+aWE("idsofside2element",70);
+aWE("if",14,17,5,23,6,24,7,8,11,12,57,33,61,63,37,64,66,38,39,67,68,43,45,49,53);
+aWE("ii",61);
+aWE("imag",0,12,53);
+aWE("imp",14);
+aWE("import",6,8,57,31,60,61,66,69,70,72);
+aWE("importation",31);
+aWE("importcomponentgui",61);
+aWE("includ",14,52);
+aWE("increas",6,8);
+aWE("index",25,64);
+aWE("indic",64);
+aWE("indicat",54);
+aWE("info",0,52,72);
+aWE("information",14,0,6,7,30,52,72);
+aWE("init",61);
+aWE("initial",12,61,68,46,51);
+aWE("input",1,19);
+aWE("inscrib",20);
+aWE("insert",68,43);
+aWE("instead",6,37,64);
+aWE("int",62);
+aWE("intact",9);
+aWE("integ",25);
+aWE("intend",43);
+aWE("interest",14);
+aWE("interfac",6,57,61,66,69,70);
+aWE("intermediat",43);
+aWE("internal",64);
+aWE("intersect",64,51);
+aWE("intersectgroup",57);
+aWE("intersection",57,64,51);
+aWE("introduc",13,25,37);
+aWE("introduction",60,69);
+aWE("invers",14,27,61);
+aWE("inversediag",61);
+aWE("inversion",27,61);
+aWE("invisibl",71);
+aWE("is3d",8);
+aWE("isdon",61);
+aWE("iso",64);
+aWE("isolin",64);
+aWE("isometric",53);
+aWE("isplanarfac",8,70);
+aWE("item",17,1,21,22,7,26,27,28,30,11,12,31,35,64,40,67,41,43,45,46,48,49,50,51);
+aWE("iteration",12,45);
+aWE("iterativ",45);
+aWE("iv",61);
+aWE("j",15,57,66);
+aWE("join",44);
+aWE("jpeg",0,53);
+aWE("jpg",0,53);
+aWE("just",1,64,39);
+aWE("k",15,19,20);
+aWE("keep",12,45,46);
+aWE("key",64);
+aWE("keyboard",26);
+aWE("know",64);
+aWE("ko",61);
+aWE("l",54);
+aWE("label",53);
+aWE("laplacian",45);
+aWE("last",1,19,12,37,43);
+aWE("lastnodeid1",70);
+aWE("lastnodeid2",70);
+aWE("lastnodeidonfreebord",70);
+aWE("lastnodeidonsid",70);
+aWE("lay",11,64,67);
+aWE("lcc",62);
+aWE("learn",52);
+aWE("least",64,45);
+aWE("leav",23,9);
+aWE("left",0,12,64,53);
+aWE("len",57,61,66);
+aWE("length",13,16,19,20,6,8,58,33,32,60,66,43,53,54);
+aWE("length_margin",66);
+aWE("lengthfromedg",8,69,70);
+aWE("les",68,43,45);
+aWE("level",13,17,63);
+aWE("library",25,68);
+aWE("libstdmeshersengin",61);
+aWE("lik",17,2,29,43);
+aWE("limit",64,43,45);
+aWE("lin",14,1,19,11,37,64,67,44);
+aWE("linear",12,63);
+aWE("link",43);
+aWE("list",0,17,21,25,26,9,12,68,49);
+aWE("lk",19);
+aWE("ll",53);
+aWE("load",64,68);
+aWE("loadfromfac",61);
+aWE("local",6,24,8,60,37);
+aWE("locallength",8,69);
+aWE("locat",64,43);
+aWE("location",19,28,31,45);
+aWE("lock",26,45,53);
+aWE("longest",20);
+aWE("look",29,12,64,68);
+aWE("low",14,19,63);
+aWE("ly",64);
+aWE("main",21,26,9,12,37,64,68,49,51);
+aWE("makearc",8,70);
+aWE("makebezi",61);
+aWE("makebox",6,57,66,69,70,72);
+aWE("makeboxdxdydz",6,8,61);
+aWE("makecirclethreepnt",61,70);
+aWE("makecompound",66,70);
+aWE("makecon",69);
+aWE("makecylind",69);
+aWE("makecylinderrh",8);
+aWE("makeedg",8,61);
+aWE("makefac",8,70);
+aWE("makefus",69);
+aWE("makegluefac",66);
+aWE("makemesh",61);
+aWE("makepolygon",61);
+aWE("makepolylin",61);
+aWE("makequadmesh2",61);
+aWE("makeshell",66);
+aWE("makesketch",8);
+aWE("maketranslation",66);
+aWE("makevector",8,70);
+aWE("makevectordxdydz",69);
+aWE("makevertex",6,8,61,69,70);
+aWE("makewir",8,70);
+aWE("manag",13,17);
+aWE("manual",25,63,64);
+aWE("map",15,33,61,64);
+aWE("mark",53);
+aWE("mas",12);
+aWE("math",61,70);
+aWE("max",13,8,33,60,63,34,45);
+aWE("maxaspectratio",61);
+aWE("maxelementarea",6,8,61,66,72);
+aWE("maxelementvolum",6,8,69,72);
+aWE("maximum",19,8,33,63,34,44,45,52);
+aWE("maxnbofiteration",61);
+aWE("mean",14,63);
+aWE("meaningful",14);
+aWE("measur",54);
+aWE("medium",7);
+aWE("meet",26,49);
+aWE("mefisto",15,8);
+aWE("menu",17,1,19,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,35,37,64,39,40,67,41,42,68,43,45,46,48,49,50,51,52);
+aWE("merg",59,35,43,70);
+aWE("mergeequalelement",70);
+aWE("mergenod",70);
+aWE("mesh",13,14,15,16,0,17,1,18,19,20,2,3,4,21,5,22,23,6,24,7,25,26,8,9,27,28,29,30,11,12,55,56,57,31,33,32,59,35,60,36,61,63,37,34,64,65,66,38,39,40,67,41,42,62,68,43,44,69,45,46,47,70,48,49,50,51,52,72,73,53,54);
+aWE("mesh_1",23,61);
+aWE("mesh_2",61);
+aWE("mesh_borders_at_multi",66);
+aWE("mesh_free_border",66);
+aWE("mesh_length_1d",66);
+aWE("mesh_length_2d",66);
+aWE("mesh_nam",61);
+aWE("mesh1d",61);
+aWE("mesh1d_tool",61);
+aWE("meshbox",6,72);
+aWE("mesheditor",61);
aWE("meshm",6);
-aWE("method",60,44);
-aWE("middl",1,36);
-aWE("minimum",15,18,25,59,35,63,42,48);
-aWE("mirror",66);
-aWE("mirrorobject",66);
-aWE("mod",0,18,62);
-aWE("model",13,59);
-aWE("modification",13,16,1,20,25,26,27,29,10,11,34,59,61,38,39,64,40,42,44,45,47,48,49);
-aWE("modify",20,25,29,60,48);
-aWE("modul",13,14,1,18,24,59,60,41,52);
-aWE("mous",0,24,52);
-aWE("mov",27,60);
-aWE("movenod",60);
-aWE("multi",15,3,4,59,63);
-aWE("multiconnection",63);
-aWE("must",22,11,61,65,42);
-aWE("myelemid",63);
-aWE("mypnt1",63);
-aWE("mypnt2",63);
-aWE("mystudy",6,60,63,68);
-aWE("mystudyid",6,7,63);
-aWE("n",61,42);
-aWE("nam",22,6,23,24,29,56,30,65,50,68,52);
-aWE("nb",56,63);
-aWE("nb_segments_1",60);
-aWE("nb_vert",60);
-aWE("nbedg",66,68);
-aWE("nbfac",68);
-aWE("nbhexa",68);
-aWE("nbnod",60,66,68);
-aWE("nbpolygon",68);
-aWE("nbpolyhedron",68);
-aWE("nbprism",68);
-aWE("nbpyramid",68);
-aWE("nbquadrangl",66,68);
-aWE("nbtetra",68);
-aWE("nbtriangl",66,68);
-aWE("nbvolum",66,68);
-aWE("ne",22);
-aWE("necessary",16);
-aWE("negativ",18);
-aWE("neighbor",26,49);
-aWE("netgen",14);
-aWE("netgen_3d",7);
-aWE("netgen3d",7);
-aWE("netgenplugin",7);
-aWE("new",0,5,22,23,24,27,61,37,65,50);
-aWE("next",18,61);
-aWE("nod",13,0,16,1,17,18,19,20,21,24,27,28,10,32,34,59,60,61,62,63,38,39,64,65,42,43,44,46,66,51,68,53);
-aWE("nodal",61,44);
-aWE("node_id",60);
-aWE("node_start_id",60);
-aWE("non",22);
-aWE("normal",45,53);
-aWE("normalisation",19);
-aWE("not",16,19,22,24,8);
-aWE("noth",24);
-aWE("notic",13);
-aWE("now",5,22,11,60);
-aWE("numb",12,13,1,18,6,24,7,10,32,59,61,64,42,44,66,51,68,52);
-aWE("number",0,1,28);
-aWE("numberofsegment",6,7,56,60,63,66,68);
-aWE("numberofsegments_10",6);
-aWE("numberofsegments_7",7);
-aWE("numeric",25);
-aWE("numerical",12);
-aWE("obey",42);
-aWE("object",12,14,0,16,1,18,5,21,22,23,24,25,7,8,29,30,32,60,33,61,62,37,38,39,40,47,48,51,69,52);
-aWE("objecttoid",6,7,63);
-aWE("objet",24);
-aWE("obliqu",11);
-aWE("obtain",16);
-aWE("offset",52);
-aWE("ok",16,1,20,5,25,8,26,27,29,10,11,30,60,38,39,64,42,44,48,49,50);
-aWE("on",13,1,18,22,23,25,8,26,10,54,55,58,36,61,63,37,38,64,65,42,44,45,47,48,50,68);
-aWE("onc",48);
-aWE("onto",36,61);
-aWE("oo",19);
-aWE("opaqu",67);
-aWE("operat",12);
-aWE("operation",14,16,17,18,19,2,3,4,20,23,24,25,8,26,27,29,10,11,54,55,30,57,32,31,58,34,59,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53);
-aWE("opposit",12,5,6,25,7,32,36,42,43,66);
-aWE("option",13,0,18,45,47);
-aWE("optional",22,11);
-aWE("ord",13,20,61);
-aWE("ordinary",1,36);
-aWE("orientat",52);
-aWE("orientation",20,5,25,60,48);
-aWE("origin",53);
-aWE("other",48);
-aWE("otherwis",22,32);
-aWE("our",22);
-aWE("out",52);
-aWE("outlin",55);
-aWE("outsid",61);
-aWE("own",13);
-aWE("pag",24,29);
-aWE("pair",18);
-aWE("pan",52);
-aWE("paramet",13,18,2,65,42);
-aWE("parameter",12,0,5,11,40,42,52);
-aWE("parametric",13,61);
-aWE("parent",23);
-aWE("part",42,44,52);
-aWE("particular",60);
-aWE("particularity",13);
-aWE("pas",60);
-aWE("path",11,60,65,66);
-aWE("pattern",60,61);
-aWE("pattern_nam",61);
+aWE("method",57,61,66,45,70);
+aWE("middl",1,12,37);
+aWE("min_angl",66);
+aWE("minimum",16,19,26,60,36,63,66,43,49);
+aWE("mirror",70);
+aWE("mirrorobject",70);
+aWE("mod",0,19,65);
+aWE("model",14,60);
+aWE("modification",14,17,1,21,7,26,27,28,30,11,12,35,60,64,39,40,67,41,43,45,46,48,49,50);
+aWE("modify",21,26,30,61,49);
+aWE("modul",14,15,1,19,6,25,60,61,42,69,53);
+aWE("moment",57,61,66,70);
+aWE("mous",0,25,53);
+aWE("mov",28,61);
+aWE("movenod",61);
+aWE("much",63);
+aWE("multi",16,3,4,60,66);
+aWE("multiconnection",66);
+aWE("must",23,12,64,68,43);
+aWE("myelemid",66);
+aWE("mypnt1",66);
+aWE("mypnt2",66);
+aWE("mystudyid",61);
+aWE("n",64,43);
+aWE("n1",61);
+aWE("n10",61);
+aWE("n11",61);
+aWE("n12",61);
+aWE("n2",61);
+aWE("n23_param",8);
+aWE("n3",61);
+aWE("n4",61);
+aWE("n5",61);
+aWE("n6",61);
+aWE("n7",61);
+aWE("n8",61);
+aWE("n9",61);
+aWE("na",61);
+aWE("nam",23,6,24,25,30,57,31,61,63,62,68,69,51,53);
+aWE("nb",57,61,63,66);
+aWE("nb_conn",66);
+aWE("nb_segments_3",61);
+aWE("nb_segments_7",61);
+aWE("nb_segments_8",61);
+aWE("nb_vert",61);
+aWE("nbedg",6,70,72);
+aWE("nbfac",6,72);
+aWE("nbhexa",72);
+aWE("nbnod",6,70,72);
+aWE("nbpolygon",72);
+aWE("nbpolyhedron",72);
+aWE("nbprism",72);
+aWE("nbpyramid",72);
+aWE("nbquadrangl",70,72);
+aWE("nbtetra",72);
+aWE("nbtriangl",70,72);
+aWE("nbvolum",6,70,72);
+aWE("nc",61);
+aWE("nd",61);
+aWE("ndiagonal",61);
+aWE("ne",23);
+aWE("necessary",17);
+aWE("negativ",19);
+aWE("neighbor",27,50);
+aWE("netgen",15,6,8,63,62,69,72);
+aWE("netgen_2d3d",8);
+aWE("new",0,5,23,24,25,28,61,64,38,68,51);
+aWE("new_id",61);
+aWE("next",19,57,61,64,66,70);
+aWE("nid",61);
+aWE("nid1",61);
+aWE("nid2",61);
+aWE("nid3",61);
+aWE("nid4",61);
+aWE("no_nam",62);
+aWE("nod",14,0,17,1,18,19,20,21,22,6,7,25,28,29,11,12,33,35,60,61,63,64,65,66,39,40,67,68,43,44,45,47,70,52,72,54);
+aWE("nodal",64,45);
+aWE("node_id",61);
+aWE("nodeid1ofside1tomerg",70);
+aWE("nodeid1ofside2tomerg",70);
+aWE("nodeid2ofside1tomerg",70);
+aWE("nodeid2ofside2tomerg",70);
+aWE("nodestart",61);
+aWE("non",23);
+aWE("nonam",62);
+aWE("normal",46,54);
+aWE("normalisation",20);
+aWE("not",17,20,23,25,9,12);
+aWE("noth",25);
+aWE("notic",14);
+aWE("now",5,23);
+aWE("nsmooth",61);
+aWE("numb",13,14,1,19,6,25,8,11,33,60,63,64,67,43,45,70,52,72,53);
+aWE("number",0,1,29,12);
+aWE("numberofsegment",6,8,57,61,66,70,72);
+aWE("numeric",26);
+aWE("numerical",13);
+aWE("nunit",61);
+aWE("obey",43);
+aWE("obj",62);
+aWE("object",13,15,0,17,1,19,5,22,23,24,7,25,26,9,30,31,33,61,63,34,64,65,38,39,40,41,48,49,52,73,53);
+aWE("objecttoid",61);
+aWE("objet",25);
+aWE("obtain",17,66);
+aWE("offset",53);
+aWE("ok",17,1,21,5,7,26,9,27,28,30,11,12,31,61,39,40,67,43,45,49,50,51);
+aWE("old",57,61,66,70);
+aWE("on",14,1,19,23,6,24,26,8,9,27,11,12,55,56,59,61,37,64,66,38,39,67,68,43,45,46,48,49,51);
+aWE("onc",49);
+aWE("onto",37,64);
+aWE("oo",20);
+aWE("opaqu",71);
+aWE("open",66);
+aWE("operat",13);
+aWE("operation",15,17,18,19,20,2,3,4,21,24,25,26,9,27,28,30,11,12,55,56,31,58,33,32,59,35,60,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54);
+aWE("opposit",13,5,6,26,8,33,37,43,44);
+aWE("optimiz",63);
+aWE("option",14,0,19,46,48);
+aWE("optional",23,12);
+aWE("ord",14,21,63,64);
+aWE("ordinary",1,37);
+aWE("orientat",53);
+aWE("orientation",21,5,26,61,49);
+aWE("origin",54);
+aWE("other",49);
+aWE("otherwis",23,33);
+aWE("our",23);
+aWE("out",53);
+aWE("outlin",56);
+aWE("outsid",64);
+aWE("own",14);
+aWE("p5",6,8);
+aWE("packag",6,57,61,66,62,69,70);
+aWE("pag",15,25,30);
+aWE("pair",19);
+aWE("pan",53);
+aWE("paramet",14,19,2,68,43);
+aWE("parameter",13,0,5,8,12,63,41,43,53);
+aWE("parametric",14,64);
+aWE("parent",24);
+aWE("part",61,43,45,53);
+aWE("particularity",14);
+aWE("pas",6,57,61,66);
+aWE("path",12,61,68,70);
+aWE("pathmesh",61);
+aWE("pathshap",61);
+aWE("pattern",61,64);
+aWE("pattern_nam",64);
+aWE("pentagonal",61);
aWE("pentahedron",2);
-aWE("perform",59,39,42,45,50);
-aWE("perimet",19);
-aWE("pi",60,66);
-aWE("pictur",3,24,11,54,55,58);
-aWE("plac",42,52);
-aWE("plan",5,63,45,53);
-aWE("planar",53);
-aWE("platform",24,41);
-aWE("pleas",8);
-aWE("plot",18);
-aWE("plu",10,64);
-aWE("png",0,52);
-aWE("point",13,1,18,7,11,60,36,61,64,40,42,45,66,47,52,53);
-aWE("point111",6,7);
-aWE("point112",6,7);
-aWE("point121",6,7);
-aWE("point122",6,7);
-aWE("point211",6,7);
-aWE("point212",6,7);
-aWE("point221",6,7);
-aWE("point222",6,7);
-aWE("pointstruct",60,66);
-aWE("polygon",16,60,68);
-aWE("polygonal",60);
-aWE("polyhedral",16,60);
-aWE("polyhedron",16,60,68);
-aWE("pop",8,28);
-aWE("position",13,61,52);
-aWE("posses",36);
-aWE("possibility",65);
-aWE("possibl",12,2,24,61);
-aWE("post",52);
-aWE("powerful",65);
-aWE("precision",16);
-aWE("preferenc",12,32,59,62);
-aWE("prefix",65);
-aWE("preproces",24);
-aWE("pres",16,1,11,38,52);
-aWE("present",13,0,50);
-aWE("presentation",15,0,52);
-aWE("preserv",61);
-aWE("preset",12);
-aWE("preview",16,5,25,61,65);
-aWE("previou",18,48);
-aWE("previous",23,24,59,61);
-aWE("principl",11);
-aWE("print",6,7,56,60,63,66,68);
-aWE("prism",68);
-aWE("pro",52);
-aWE("problem",6,7,56);
-aWE("proce",22,8);
-aWE("procedur",44);
-aWE("proceed",37);
-aWE("proces",44);
-aWE("produc",13,10,64,44);
-aWE("product",53);
-aWE("program",22);
-aWE("progression",18);
-aWE("project",61);
-aWE("projection",61,53);
-aWE("prompt",18);
-aWE("propagat",6,7,36,66);
-aWE("propagation",12,6,7,36,66,68);
-aWE("properti",52);
-aWE("provid",0,16,25);
-aWE("pseudo",26);
-aWE("pul",44);
-aWE("px",7,60,66);
-aWE("px1",60,66);
-aWE("py",7,60,66);
-aWE("py1",60,66);
-aWE("pyramid",68);
-aWE("pyramidal",14);
-aWE("python",51);
-aWE("pz",7,60,66);
-aWE("pz1",60,66);
+aWE("per",63);
+aWE("perform",60,61,40,43,46,51);
+aWE("perimet",20);
+aWE("pi",61,70);
+aWE("pictur",3,25,12,55,56,59);
+aWE("piec",69);
+aWE("plac",7,43,53);
+aWE("plan",5,66,46,54);
+aWE("planar",61,54);
+aWE("platform",25,42);
+aWE("pleas",9,12);
+aWE("plot",19);
+aWE("plu",11,67);
+aWE("png",0,53);
+aWE("point",14,1,19,12,61,37,64,67,41,43,46,70,48,53,54);
+aWE("pointstruct",61,70);
+aWE("polygon",17,61,72);
+aWE("polygonal",61);
+aWE("polyhedral",17,61);
+aWE("polyhedron",17,61,72);
+aWE("polylin",12);
+aWE("pop",9,29);
+aWE("position",14,64,53);
+aWE("posses",63,37);
+aWE("possibility",68);
+aWE("possibl",13,2,25,63,64);
+aWE("post",53);
+aWE("powerful",68);
+aWE("precision",17);
+aWE("preferenc",13,33,60,65);
+aWE("prefix",68);
+aWE("preproces",25);
+aWE("pres",17,1,12,39,53);
+aWE("present",14,0,63,51);
+aWE("presentation",16,0,53);
+aWE("preserv",64);
+aWE("preset",13);
+aWE("preview",17,5,26,64,68);
+aWE("previou",19,12,49);
+aWE("previous",24,25,60,64);
+aWE("principl",12);
+aWE("print",6,8,57,61,66,70,72);
+aWE("printmeshinfo",6);
+aWE("prism",72);
+aWE("pro",53);
+aWE("problem",6,8);
+aWE("proce",23,9);
+aWE("procedur",45);
+aWE("proceed",12,38);
+aWE("proces",45);
+aWE("produc",14,7,11,61,67,45);
+aWE("product",54);
+aWE("program",23);
+aWE("progression",19);
+aWE("project",64);
+aWE("projection",64,54);
+aWE("prompt",19);
+aWE("propagat",6,8,37);
+aWE("propagation",13,6,8,37,70);
+aWE("properti",53);
+aWE("prov",63);
+aWE("provid",0,17,26,57,61,66,69,70);
+aWE("pseudo",27);
+aWE("pt1",69);
+aWE("pt2",69);
+aWE("pul",45);
+aWE("put",8);
+aWE("px",8,70);
+aWE("px1",70);
+aWE("py",8,70);
+aWE("py1",70);
+aWE("pyramid",72);
+aWE("pyramidal",15);
+aWE("python",6,62,69,52);
+aWE("pz",8,70);
+aWE("pz1",70);
+aWE("q1",61);
aWE("qi",2);
-aWE("qk",19,2);
-aWE("quad",60,53);
-aWE("quad2d",7,56);
-aWE("quadrangl",12,13,14,16,17,19,2,6,25,7,26,10,32,31,59,35,60,64,43,66,68);
-aWE("quadrangle_2d",7,56);
-aWE("quadrangular",14,6,7,32,36,66);
-aWE("quadratic",12,1,36);
-aWE("quadtotri",60);
-aWE("quality",15,0,17,18,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53);
-aWE("quantity",12);
-aWE("r1",60);
-aWE("radio",20,24,25,40,42,45,48);
-aWE("radiu",19,60);
-aWE("rang",18,24,56,60,63);
-aWE("ratio",15,19,2,59,63,44,46,53);
-aWE("ready",22);
+aWE("qk",20,2);
+aWE("quad",54);
+aWE("quad_1",61);
+aWE("quad_2",61);
+aWE("quad_3",61);
+aWE("quad_4",61);
+aWE("quad_5",61);
+aWE("quad_6",61);
+aWE("quad_7",61);
+aWE("quadra",6,57);
+aWE("quadrangl",13,14,15,17,18,20,2,6,26,8,27,11,12,57,33,32,60,36,61,63,67,44,70,72);
+aWE("quadrangular",15,6,8,33,37);
+aWE("quadratic",13,1,7,63,37);
+aWE("quadtotri",61);
+aWE("quality",16,0,18,19,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54);
+aWE("quantity",13);
+aWE("r1",61);
+aWE("radio",21,25,26,41,43,46,49);
+aWE("radiu",20,61,63);
+aWE("radius",63);
+aWE("radius_1",69);
+aWE("radius_2",69);
+aWE("rang",19,25,57,61,63,66);
+aWE("rat",63);
+aWE("ratio",16,20,2,60,66,45,47,54);
+aWE("ready",23);
aWE("recent",0);
-aWE("red",55);
-aWE("redefin",0,52);
-aWE("reduc",44);
-aWE("reevaluat",44);
-aWE("refer",61);
-aWE("referenc",13,15,22,23);
-aWE("refin",12);
-aWE("reflect",61,43,69);
+aWE("red",56);
+aWE("redefin",0,53);
+aWE("reduc",45);
+aWE("reevaluat",45);
+aWE("refer",64);
+aWE("referenc",14,16,23,24);
+aWE("refin",13);
+aWE("reflect",64,44,73);
+aWE("refpoint",61);
aWE("refresh",0);
-aWE("regular",19);
-aWE("regular_1d",6,7,56,63,68);
-aWE("regular1d",6,7,56);
-aWE("relat",41);
-aWE("relation",13);
-aWE("relationship",13);
-aWE("remot",52);
-aWE("remov",20,6,24,25,8,29,11,56,60,38,65,48,68);
-aWE("removal",59);
-aWE("removeelement",60,63);
-aWE("removehypothesi",6,68);
-aWE("removenod",60);
-aWE("renumb",39);
-aWE("renumber",60,39);
-aWE("renumbernod",60);
-aWE("reorient",20,60);
-aWE("replac",42);
-aWE("represent",12,13,18,2,62,46,52);
-aWE("representation",13);
-aWE("requir",26,27,49);
-aWE("reset",52);
-aWE("resiz",52);
-aWE("respect",11);
+aWE("regular",20,6,8,63,62);
+aWE("regular_1d",61);
+aWE("relat",42);
+aWE("relation",14);
+aWE("relationship",14);
+aWE("remot",53);
+aWE("remov",21,6,25,26,9,30,12,57,61,66,39,68,49);
+aWE("removal",60);
+aWE("removeelement",61,66);
+aWE("removehypothesi",6);
+aWE("removenod",61);
+aWE("renumb",61,40);
+aWE("renumber",61,40);
+aWE("renumbernod",61);
+aWE("reorient",21,61);
+aWE("replac",43);
+aWE("represent",13,14,19,2,65,47,53);
+aWE("representation",14);
+aWE("requir",27,28,63,50);
+aWE("res",61);
+aWE("reset",53);
+aWE("resiz",53);
+aWE("respect",12);
aWE("respectiv",1);
-aWE("rest",61,42);
-aWE("restor",52);
-aWE("restrict",13);
-aWE("result",12,16,11,56,63,44,50);
-aWE("ret",6,7,56);
-aWE("retriev",13);
-aWE("return",57,60);
-aWE("reveal",19);
-aWE("revers",1,61);
-aWE("revert",20);
-aWE("revolution",10,60,64);
-aWE("revolv",64);
-aWE("right",0,21,8,27,28,11,62);
-aWE("rotat",10,11,60,64,40,66,52);
-aWE("rotateobject",66);
-aWE("rotation",5,11,64,40,66,52);
-aWE("rotationsweepobject",60);
-aWE("rough",12);
-aWE("rr",60);
-aWE("rul",18,36,42);
-aWE("run",41);
-aWE("s",11);
-aWE("salom",6,24,7,56,59,60,63,41,66,68);
-aWE("sam",13,0,18,19,2,22,23,7,11,36,37,65,42,50);
-aWE("sampl",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53);
-aWE("sav",65);
-aWE("scal",18,52);
-aWE("scalar",15);
-aWE("scen",52);
-aWE("script",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53);
-aWE("se",14,16,17,18,19,2,3,4,20,5,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,52,53);
-aWE("seam",61);
-aWE("search",30,65);
-aWE("second",16,60,42);
-aWE("section",0,5,22,61);
-aWE("segment",12,18,6,7,32,59,60,66);
-aWE("select",12,14,0,16,1,18,20,21,22,23,24,25,8,26,27,29,10,11,30,34,36,61,62,38,39,64,40,41,65,42,44,45,47,48,49,50,51,52);
-aWE("selectabl",58);
-aWE("selection",16,1,20,24,25,8,65,48);
-aWE("sens",13);
-aWE("separat",46);
-aWE("sequenc",42);
-aWE("set",13,14,16,18,20,5,22,24,7,27,11,32,59,60,33,61,62,65,42,44,67,48);
-aWE("setcurrentstudy",6,60,63,68);
-aWE("setdisplaymod",7);
-aWE("setlength",6,68);
-aWE("setmargin",56,63);
-aWE("setmaxelementarea",6,7,63,68);
-aWE("setmaxelementvolum",6,7);
-aWE("setmesh",63);
-aWE("setnam",6,7,63);
-aWE("setnumberofsegment",6,7,56,60,63,68);
-aWE("setnumfunctor",56,63);
-aWE("setpredicat",56,63);
-aWE("setting",22);
-aWE("settransparency",7);
-aWE("sew",63,42,66);
-aWE("sewbordertosid",66);
-aWE("sewconformfreeborder",66);
-aWE("sewfreeborder",66);
-aWE("sewsideelement",66);
-aWE("sg",6,7,56,60,63,66,68);
-aWE("shad",0,62,67);
-aWE("shall",20,26,27,34,61,64,40,45,47,48,49);
-aWE("shap",12,13,11,61,44);
-aWE("shape_mesh",60);
-aWE("shapetyp",6,7,56,60,63,66,68);
-aWE("shift",16,1,25,38,44);
-aWE("shortest",53);
-aWE("should",18,24,10,11,61,64,40,65,42,44,50);
-aWE("show",18,5,11,65,52);
-aWE("shown",15,44);
-aWE("shrink",62);
-aWE("sid",6,7,35,42,43,66);
-aWE("simp",22,36);
-aWE("simpl",13,16,61);
-aWE("simplex",19,2);
-aWE("sin",60);
-aWE("siz",0,44);
-aWE("sk",19,2);
-aWE("sketch",7);
-aWE("sketcher",7);
-aWE("sketcher1",7);
-aWE("sketcher2",7);
-aWE("skew",15,25,59,63,43,48);
-aWE("slid",67);
-aWE("small",52);
-aWE("smesh",6,7,56,60,63,42,66,68);
-aWE("smesh_mechanic",56,60,63,66);
-aWE("smesh_mechanic_tetra",63);
-aWE("smesh_mesheditor",60,66);
-aWE("smeshgroup1",56);
-aWE("smeshgroup2",56);
-aWE("smeshgui",6,7,63);
-aWE("smooth",60,44);
-aWE("smoothobject",60);
-aWE("smp",61);
-aWE("so",12,18,19,6,7,56,60,61,63,42,46,68);
-aWE("solid",6,7,59);
-aWE("somewhat",16);
-aWE("sort",20,24,25,48);
-aWE("sourc",65);
-aWE("spac",13,61,40,47);
-aWE("specifi",18,3,61,38,42,44);
-aWE("specific",21,65);
-aWE("specify",16,1,25,10,11,61,38,64,40,65,44,45,47,50);
-aWE("spher",18,19,22);
-aWE("split",14,18,2,5,42);
-aWE("sqrt",60);
-aWE("standalon",24,56,65);
-aWE("standard",0,30,51);
-aWE("start",12,18,5,7,11,59,41,42,47);
-aWE("startendlength",7);
-aWE("statu",60);
-aWE("stdmesher",6,7,56,60,63,68);
-aWE("step",10,64);
-aWE("stor",61,65);
-aWE("straight",1,7,36);
-aWE("stretch",52);
-aWE("strict",52);
-aWE("structur",22,23);
-aWE("study",6,7,56,65);
-aWE("stuf",52);
-aWE("sub",30,34,60,61,40,42,45,47);
-aWE("submenu",16,9,38,39);
-aWE("submesh",12,20,21,6,23,24,25,10,11,37,64,44,47,48,51);
-aWE("subshapeall",6,7,56,60,63,66,68);
-aWE("subshapelist",6,56,63,68);
-aWE("subshapelist1",66);
-aWE("subshapelist2",66);
-aWE("subshapenam",6,56,68);
-aWE("succed",7,56);
+aWE("rest",64,43);
+aWE("restor",53);
+aWE("restrict",14);
+aWE("result",13,17,12,57,66,45,51);
+aWE("ret",6,8);
+aWE("retriev",14);
+aWE("return",58,61);
+aWE("reveal",20);
+aWE("revers",1,64);
+aWE("revert",21);
+aWE("revolution",11,61,67);
+aWE("revolv",61,67);
+aWE("right",0,22,9,28,29,12,65);
+aWE("rotat",11,12,61,67,41,70,53);
+aWE("rotateobject",70);
+aWE("rotation",5,67,41,70,53);
+aWE("rotationsweepobject",61);
+aWE("rough",13);
+aWE("rr",61);
+aWE("rul",19,37,43);
+aWE("run",42);
+aWE("salom",25,8,57,60,61,66,42,62,70);
+aWE("sam",14,0,19,20,2,23,24,8,12,37,38,68,43,51);
+aWE("sampl",15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54);
+aWE("sav",68);
+aWE("scal",19,53);
+aWE("scalar",16);
+aWE("scen",53);
+aWE("script",15,17,18,19,20,2,3,4,21,23,6,24,25,26,27,28,30,11,12,55,56,57,31,58,33,32,59,35,36,61,37,34,64,66,38,39,40,67,41,43,44,45,46,47,70,48,49,50,51,52,73,54);
+aWE("se",15,17,18,19,20,2,3,4,21,5,6,24,7,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,69,45,46,47,48,49,50,51,73,53,54);
+aWE("seam",64);
+aWE("search",31,68);
+aWE("second",17,61,63,43);
+aWE("secondnodeid1",70);
+aWE("secondnodeid2",70);
+aWE("secondnodeidonfreebord",70);
+aWE("section",0,5,23,64,69);
+aWE("seg",63);
+aWE("segment",13,19,6,8,57,33,60,61,63,66,69,70,72);
+aWE("select",13,0,17,1,19,21,22,23,6,24,7,25,26,9,27,28,30,11,12,31,35,61,63,37,64,65,39,40,67,41,42,68,43,45,46,48,49,50,51,52,53);
+aWE("selectabl",59);
+aWE("selection",17,1,21,25,26,9,68,49);
+aWE("sens",14);
+aWE("separat",47);
+aWE("sequenc",43);
+aWE("set",14,15,17,19,21,5,23,25,8,28,12,33,60,61,63,34,64,65,68,43,45,71,49);
+aWE("setmargin",57,66);
+aWE("setmaxelementarea",6);
+aWE("setmesh",66);
+aWE("setnam",61,62,69);
+aWE("setnumberofsegment",61);
+aWE("setnumfunctor",57,66);
+aWE("setpredicat",57,66);
+aWE("setting",23);
+aWE("seven",12,61);
+aWE("sew",12,43,70);
+aWE("sewbordertosid",70);
+aWE("sewconformfreeborder",70);
+aWE("sewfreeborder",70);
+aWE("sewsideelement",70);
+aWE("sg",57,61,66,70);
+aWE("shad",0,65,71);
+aWE("shall",21,27,28,35,64,67,41,46,48,49,50);
+aWE("shap",13,14,12,61,64,45);
+aWE("shape_mesh",61);
+aWE("shape1d",61);
+aWE("shapetyp",6,8,57,61,66,69,70);
+aWE("shell",66);
+aWE("shift",17,1,26,39,45);
+aWE("shortest",54);
+aWE("should",19,7,25,11,12,64,67,41,68,43,45,51);
+aWE("show",19,5,12,68,53);
+aWE("shown",16,45);
+aWE("shrink",65);
+aWE("sid",6,8,36,63,43,44,70);
+aWE("simp",23,37);
+aWE("simpl",14,17,12,64);
+aWE("simplex",20,2);
+aWE("sin",61);
+aWE("sin_bot",61);
+aWE("sin_top",61);
+aWE("six",12,61);
+aWE("siz",0,63,69,45);
+aWE("sk",20,2);
+aWE("sketch",8);
+aWE("sketcher",8);
+aWE("sketcher1",8);
+aWE("sketcher2",8);
+aWE("skew",16,26,60,66,44,49);
+aWE("skew_margin",66);
+aWE("slid",71);
+aWE("small",53);
+aWE("smesh",6,8,57,61,66,62,43,69,70,72);
+aWE("smesh_mechanic",57,61,66,70);
+aWE("smesh_mechanic_tetra",66);
+aWE("smesh_mesheditor",61,70);
+aWE("smeshgroup1",57);
+aWE("smeshgui",61);
+aWE("smooth",61,45);
+aWE("smoothobject",61);
+aWE("smp",64);
+aWE("so",13,19,20,12,61,64,43,47);
+aWE("solid",8,60);
+aWE("somewhat",17);
+aWE("soon",6);
+aWE("sort",21,25,26,49);
+aWE("sourc",68);
+aWE("spac",14,64,41,48);
+aWE("specifi",19,3,64,39,43,45);
+aWE("specific",22,68);
+aWE("specify",17,1,26,11,12,64,39,67,41,68,45,46,48,51);
+aWE("spher",19,20,23);
+aWE("split",15,19,2,5,63,43);
+aWE("sqrt",61);
+aWE("standalon",25,57,68);
+aWE("standard",0,7,31,69,52);
+aWE("start",13,19,5,8,12,60,42,43,48);
+aWE("startendlength",8);
+aWE("static",62);
+aWE("statu",61);
+aWE("step",11,67);
+aWE("stor",64,68);
+aWE("str",62);
+aWE("straight",1,8,12,61,37);
+aWE("stretch",53);
+aWE("strict",53);
+aWE("structur",23,24,61,62);
+aWE("study",8,57,68,69);
+aWE("stuf",53);
+aWE("styl",6);
+aWE("sub",6,8,12,31,35,64,41,43,46,48);
+aWE("submenu",17,10,39,40);
+aWE("submesh",13,21,22,6,24,25,26,11,12,38,67,45,48,49,52);
+aWE("subshapeall",6,8,57,61,66,70);
+aWE("subshapeallid",69);
+aWE("subshapeallsort",61);
+aWE("subshapelist",6,57);
+aWE("subshapenam",6);
+aWE("succed",8);
aWE("sum",2);
-aWE("supplement",36);
-aWE("supplementary",25);
-aWE("surfac",13,19,2,10,61,64,42);
-aWE("surround",13,44);
-aWE("sweep",60);
-aWE("swept",10,64);
+aWE("supplement",37);
+aWE("supplementary",26);
+aWE("surfac",14,20,2,11,12,64,67,43);
+aWE("surround",14,45);
+aWE("swept",11,67);
aWE("switch",1);
-aWE("symmetrical",45,66);
-aWE("symmetry",45,66);
-aWE("syntax",65);
-aWE("t",13,18,2,22,36,61,62,52);
-aWE("tabl",1,18);
-aWE("tak",19,48);
-aWE("taken",12,21,24,7,61);
-aWE("tap",15,24,59,63,46);
-aWE("techniqu",44);
-aWE("tetra3d",7);
-aWE("tetrahedral",14);
-aWE("tetrahedralization",22);
-aWE("tetrahedron",13,14,16,2,7,60,33,68);
-aWE("th",61,42);
-aWE("them",12,16,1,18,2,24,8,9,10,11,34,38,64,42,44,52);
-aWE("thos",25,48);
-aWE("thre",13,1,19,7,60,36,42,45);
-aWE("threshold",65);
-aWE("tick",52);
+aWE("symmetrical",46,70);
+aWE("symmetry",46,70);
+aWE("syntax",68);
+aWE("t",14,19,2,23,57,61,37,64,65,66,70,53);
+aWE("t1",61);
+aWE("tabl",1,19);
+aWE("tak",20,49);
+aWE("taken",13,22,25,8,64);
+aWE("tap",16,25,60,66,47);
+aWE("taper_margin",66);
+aWE("techniqu",45);
+aWE("tetra",6,8,69,72);
+aWE("tetrahedral",15,8,63,69);
+aWE("tetrahedralization",23);
+aWE("tetrahedrical",8);
+aWE("tetrahedron",14,15,17,2,6,8,61,34,69,72);
+aWE("tetran",8);
+aWE("th",64,43);
+aWE("them",13,17,1,19,2,25,9,10,11,12,35,63,39,67,43,45,53);
+aWE("themesh",6);
+aWE("third",12);
+aWE("thos",26,49);
+aWE("thre",14,1,20,61,63,37,43,46);
+aWE("threshold",68);
+aWE("tick",53);
aWE("tim",0);
aWE("tmp",6);
-aWE("togeth",32);
-aWE("toggl",16,65,47);
-aWE("toleranc",34,64,65,66);
-aWE("tool",65,50);
-aWE("toolbar",19,2,20,22,23,25,26,27,29,10,11,31,61,38,39,64,41,43,44,46,48,49,51,69,52,53);
-aWE("top",60);
-aWE("topological",13,42);
-aWE("topology",13);
-aWE("total",51);
-aWE("toward",44);
-aWE("transform",27,66);
-aWE("transformation",34,40,42,45,47);
-aWE("translat",66,47);
-aWE("translateobject",66);
-aWE("translation",66,47);
-aWE("transparency",0,67);
-aWE("transparent",67);
-aWE("tri_mesh",66);
-aWE("tria",7,60,66);
-aWE("tria_mesh",7);
-aWE("triangl",13,14,16,1,17,19,7,26,10,32,31,58,35,60,64,43,46,66,48,49,68,52);
-aWE("triangle_mefisto",60);
-aWE("triangular",14,32);
-aWE("triangulation",7);
-aWE("trihedron",52);
-aWE("tritoquad",60);
-aWE("try",22);
-aWE("tt",7);
-aWE("tui",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53);
-aWE("two",13,16,5,24,25,7,26,11,56,35,60,61,42,46,66,47,49,50,51);
-aWE("typ",13,16,18,19,2,21,22,24,10,11,38,64,65,42,51);
-aWE("typical",44);
-aWE("u",13,42);
-aWE("unary",65);
-aWE("unassign",37);
-aWE("uniform",44);
-aWE("union",56,48,49,50);
-aWE("uniongroup",56);
-aWE("unit",60,42,48,49,50);
-aWE("unles",36);
-aWE("unv",30);
-aWE("up",18,8,28);
-aWE("updat",0,41,44);
-aWE("updateobjbrows",6,7,56,60,63,66,68);
-aWE("upload",65);
-aWE("us",13,14,18,3,5,22,23,24,10,32,34,61,64,65,42,44,67,50,52);
-aWE("usag",15);
-aWE("useful",0,16,24,11);
-aWE("usual",42,44);
-aWE("v",13);
-aWE("valu",12,15,18,19,2,22,6,11,57,35,36,37,65,43,68);
-aWE("vari",19);
+aWE("togeth",33);
+aWE("toggl",17,68,48);
+aWE("toleranc",35,67,68,70);
+aWE("tool",68,51);
+aWE("toolbar",20,2,21,23,24,7,26,27,28,30,11,12,32,64,39,40,67,42,44,45,47,49,50,52,73,53,54);
+aWE("top",61);
+aWE("topological",14,43);
+aWE("topology",14);
+aWE("toru",7);
+aWE("total",52);
+aWE("toward",45);
+aWE("transform",28,70);
+aWE("transformation",35,41,43,46,48);
+aWE("translat",70,48);
+aWE("translateobject",70);
+aWE("translation",70,48);
+aWE("transparency",0,71);
+aWE("transparent",71);
+aWE("transtorm",7);
+aWE("tri_mesh",70);
+aWE("tria",6,8,66,70);
+aWE("tria_mesh",8);
+aWE("triangl",14,15,17,1,18,20,6,8,27,11,33,32,59,36,61,63,66,67,44,69,47,70,49,50,72,53);
+aWE("triangular",15,33);
+aWE("triangulation",8);
+aWE("trihedron",53);
+aWE("tritoquad",61);
+aWE("truncat",69);
+aWE("try",23,63);
+aWE("tt",8,61);
+aWE("tui",15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,52,73,54);
+aWE("tupl",62);
+aWE("two",14,17,5,25,26,8,27,12,57,36,61,63,64,66,43,47,70,48,50,51,52);
+aWE("typ",14,17,19,20,2,22,23,25,11,12,39,67,68,43,52);
+aWE("typical",45);
+aWE("u",14,43);
+aWE("unary",68);
+aWE("unassign",38);
+aWE("uniform",45);
+aWE("union",57,49,50,51);
+aWE("uniongroup",57);
+aWE("unionid",69);
+aWE("unit",61,43,49,50,51);
+aWE("unles",37);
+aWE("unv",31);
+aWE("up",19,9,29);
+aWE("updat",0,6,57,61,66,42,45,70);
+aWE("updateobjbrows",57,61,66,70);
+aWE("upload",68);
+aWE("us",14,15,19,3,5,23,24,25,11,12,57,33,35,61,63,64,66,67,68,43,45,70,71,51,53);
+aWE("usag",16,6,57,61,66,69,70);
+aWE("useful",0,17,25,12,63);
+aWE("usual",43,45);
+aWE("v",14);
+aWE("valu",13,16,19,20,2,23,6,12,58,36,37,38,68,44,69);
+aWE("vari",20);
+aWE("variabl",62);
aWE("variou",0);
-aWE("ve",16);
-aWE("vector",7,10,11,60,64,40,45,66,47,53);
-aWE("vertex",13,61);
-aWE("vertic",6,7,61);
-aWE("very",16,11);
-aWE("via",65,51,52);
-aWE("view",0,16,1,17,19,2,20,5,24,25,8,26,27,28,10,11,31,35,38,39,64,65,42,43,44,46,48,49,51,68,69,52,53);
-aWE("visibl",52);
-aWE("visual",15);
-aWE("visualiz",52);
+aWE("ve",17);
+aWE("vector",11,12,61,67,41,46,70,48,54);
+aWE("versa",7);
+aWE("version",57,61,66,70);
+aWE("vert",61);
+aWE("vertex",14,64);
+aWE("vertex_",61);
+aWE("vertic",61,64);
+aWE("very",17,12,63);
+aWE("via",68,52,53);
+aWE("vic",7);
+aWE("vid",61);
+aWE("view",0,17,1,18,20,2,21,5,25,26,9,27,28,29,11,12,32,36,39,40,67,68,43,44,45,47,49,50,52,72,73,53,54);
+aWE("visibl",53);
+aWE("visual",16);
+aWE("visualiz",53);
aWE("vk",2);
-aWE("volum",12,13,14,15,16,2,21,24,7,9,59,60,33,63,65,66,51,68,69);
-aWE("vtk",0,52);
-aWE("vxy",7,60,66);
-aWE("walk",61);
-aWE("warp",15,25,59,63,48,53);
-aWE("way",13,16,22,23,24,11,61,37,50);
-aWE("weight",44);
-aWE("well",61);
-aWE("wheth",65);
-aWE("whil",38);
-aWE("whit",54);
-aWE("whol",2,10,11,60,64,65,44,47);
-aWE("whos",20,24,25,36,48);
-aWE("will",12,13,0,16,1,17,18,19,2,20,21,22,23,24,25,8,27,28,29,10,11,30,32,31,58,35,60,33,36,61,38,39,64,41,65,42,43,44,46,67,48,50,51,69,53);
+aWE("volum",13,14,15,16,17,2,22,6,25,8,10,12,60,61,34,66,68,70,52,72,73);
+aWE("volume_margin",66);
+aWE("vtk",0,53);
+aWE("vxy",8,70);
+aWE("wa_margin",66);
+aWE("walk",64);
+aWE("warp",16,26,60,66,49,54);
+aWE("way",14,17,23,24,25,12,64,38,51);
+aWE("weight",45);
+aWE("well",64);
+aWE("wheth",68);
+aWE("whil",39);
+aWE("whit",12,55);
+aWE("whol",2,11,12,67,68,45,48);
+aWE("whos",21,25,26,37,49);
+aWE("will",13,14,0,17,1,18,19,20,2,21,22,23,6,24,7,25,26,9,28,29,30,11,12,57,31,33,32,59,36,61,63,37,34,64,66,39,40,67,42,68,43,44,45,47,70,71,49,51,52,73,54);
aWE("window",5);
-aWE("wir",14,6,7,11,32,60,66);
-aWE("wire_discretisation",60);
-aWE("wirefram",0,11,62);
-aWE("wish",22,8,30,52);
-aWE("within",18,61,42);
-aWE("without",1,63);
-aWE("word",18);
-aWE("work",1,11);
-aWE("worst",19);
-aWE("would",16,42);
-aWE("ww",7);
-aWE("x",13,5,53);
-aWE("x0",60);
-aWE("y",13,5);
-aWE("y0",60);
-aWE("your",12,13,15,0,16,1,17,18,19,2,20,5,21,22,23,24,27,28,29,30,32,31,34,35,33,61,62,37,38,39,40,65,43,44,45,46,47,51,69,53);
-aWE("z",13,5);
-aWE("z0",60);
-aWE("zero",61);
-aWE("zoom",52);
+aWE("wir",15,8,12,33,61,63,70);
+aWE("wire_discretisation",61);
+aWE("wire_polylin",61);
+aWE("wire_polyline_edg",61);
+aWE("wire_polyline_mesh",61);
+aWE("wirefram",0,65);
+aWE("wish",23,7,9,31,53);
+aWE("within",19,64,43);
+aWE("without",1,12,66);
+aWE("word",19);
+aWE("work",1,12,63);
+aWE("worst",20);
+aWE("would",17,43);
+aWE("written",57,61,66,70);
+aWE("ww",8);
+aWE("x",14,5,54);
+aWE("x0",61);
+aWE("y",14,5);
+aWE("y0",61);
+aWE("your",13,14,16,0,17,1,18,19,20,2,21,5,22,23,24,25,28,29,30,31,33,32,35,36,34,64,65,38,39,40,41,68,44,45,46,47,48,52,73,54);
+aWE("z",14,5);
+aWE("z0",61);
+aWE("zero",64);
+aWE("zoom",53);
//-->
</script>
<script language="javascript" src="whtdata.js"></script>
<script language="javascript">
<!--
- aTE(1,78,"MESH module");
+ aTE(1,81,"MESH module");
aTE(2,0,"Introduction to Mesh","mesh.htm");
aTE(2,0,"Running MESH module","files/running_smesh_module.htm");
- aTE(1,12,"Creating meshes");
+ aTE(2,0,"Introduction to MESH module python interface","smesh.py_introduction.htm");
+ aTE(1,13,"Creating meshes");
aTE(2,0,"About meshes","files/about_meshes.htm");
aTE(2,0,"Importing and exporting meshes","files/importing_and_exporting_meshes.htm");
aTE(2,0,"Constructing meshes","files/constructing_meshes.htm");
aTE(2,0,"Defining meshing algorithms","files/about_meshing_algorithms.htm");
- aTE(1,5,"Defining hypotheses");
+ aTE(1,6,"Defining hypotheses");
aTE(2,0,"About Hypotheses","files/about_hypotheses.htm");
aTE(2,0,"1D Meshing Hypotheses","files/arithmetic_1d.htm");
aTE(2,0,"2D Meshing Hypotheses","files/max._element_area_hypothesis.htm");
aTE(2,0,"Max Element Volume hypothesis","files/max._element_volume_hypothsis.htm");
+ aTE(2,0,"Netgen 2D and 3D hypotheses","netgen_2d_and_3d_hypotheses.htm");
aTE(2,0,"Additional Hypotheses","files/non_conform_mesh_allowed_hypothesis.htm");
aTE(2,0,"Constructing submeshes","files/constructing_submeshes.htm");
aTE(2,0,"Editing Meshes","files/reassigning_hypotheses_and_algorithms.htm");
aTE(2,0,"Constructing groups of specific elements","files/constructing_groups_of_specific_elements.htm");
aTE(2,0,"Deleting Groups","deleting_groups.htm");
aTE(2,0,"Selection filter library","selection_filter_library.htm");
- aTE(1,22,"Modifying meshes");
+ aTE(1,23,"Modifying meshes");
aTE(2,0,"Adding nodes and elements","files/adding_nodes_and_elements.htm");
aTE(2,0,"Adding quadratic elements","adding_quadratic_nodes_and_elements.htm");
aTE(2,0,"Removing nodes and elements","files/removing_nodes_and_elements.htm");
aTE(2,0,"Extrusion along a path","extrusion_along_a_path.htm");
aTE(2,0,"Revolution","revolution.htm");
aTE(2,0,"Pattern mapping","pattern_mapping.htm");
- aTE(2,0,"Access to Mesh module functionality from Python (using smesh.py)","smeshpy_doc/namespacesmesh.html");
+ aTE(2,0,"Convert to/from Quadratic Mesh","convert_to_from_quadratic_mesh.htm");
+ aTE(2,0,"Python interface smesh.py" ,"smeshpy_doc/namespacesmesh.html");
aTE(1,7,"TUI Scripts");
aTE(2,0,"Creating Meshes","constructing_meshes.htm");
- aTE(2,0,"Defining Hypotheses","defining_hypotheses_tui.htm");
aTE(2,0,"Viewing Meshes","viewing_meshes.htm");
+ aTE(2,0,"Defining Hypotheses","defining_hypotheses_tui.htm");
aTE(2,0,"Quality Controls","quality_controls.htm");
aTE(2,0,"Grouping Elements","grouping_elements.htm");
aTE(2,0,"Modifying Meshes","modifying_meshes.htm");
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
<nobr><a href="../revolution.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Revolution</a></nobr><br>
<nobr><a href="../pattern_mapping.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Pattern mapping</a></nobr><br>
<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> TUI Scripts</a></nobr><br>
- <nobr><a href="../smeshpy_doc/namespacesmesh.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Access to Mesh module functionality from Python (using smesh.py)</a></nobr><br>
+ <nobr><a href="../smeshpy_doc/namespacesmesh.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Python interface smesh.py</a></nobr><br>
</p>
</td></tr>
<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Grouping elements</a></nobr><br>
<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Modifying meshes</a></nobr><br>
<nobr><a name="9"></a><a href="whlstt1.htm#9" target="_self"><img src="../whd_toc2.gif" border="0" align="absmiddle"> TUI Scripts</a></nobr><br>
+ <nobr><a href="../smesh_py_introduction.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Introduction to MESH module python interface</a></nobr><br>
<nobr><a href="../constructing_meshes.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Creating Meshes</a></nobr><br>
<nobr><a href="../defining_hypotheses_tui.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Defining Hypotheses</a></nobr><br>
<nobr><a href="../viewing_meshes.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Viewing Meshes</a></nobr><br>
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
</head>
<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="mesh.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>
-</html>
\ No newline at end of file
+</html>
<indent attr="9pt" />
</glossary>
</paneskin>
-</resource>
\ No newline at end of file
+</resource>
<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>
<table>
</body>
-</html>
\ No newline at end of file
+</html>
</body>
-</html>
\ No newline at end of file
+</html>
return true;
else
return false;
-}
\ No newline at end of file
+}
//-->
</script>
</body>
-</html>
\ No newline at end of file
+</html>
gbWhTopic=true;
}
else
- document.location.reload();
\ No newline at end of file
+ document.location.reload();
<topic name="Borders at multiconnection 2D" url="borders_at_multiconnection_2d.htm" />
<topic name="Clipping" url="clipping.htm" />
<topic name="Constructing Meshes" url="constructing_meshes.htm" />
+<topic name="Convert to/from Quadratic Mesh" url="convert_to_from_quadratic_mesh.htm" />
<topic name="Defining hypotheses TUI" url="defining_hypotheses_tui.htm" />
<topic name="Deleting Groups" url="deleting_groups.htm" />
<topic name="Display Entity" url="display_entity.htm" />
<topic name="Merge Elements" url="merge_elements.htm" />
<topic name="mesh" url="mesh.htm" />
<topic name="Modifying Meshes" url="modifying_meshes.htm" />
+<topic name="SALOME - SMESH - v.version: Package smesh" url="namespacesmesh.html" />
+<topic name="Netgen 2D and 3D hypotheses" url="netgen_2d_and_3d_hypotheses.htm" />
<topic name="Pattern mapping" url="pattern_mapping.htm" />
<topic name="Presentation" url="presentation.htm" />
<topic name="Quality Controls" url="quality_controls.htm" />
<topic name="Revolution" url="revolution.htm" />
<topic name="Selection filter library" url="selection_filter_library.htm" />
+<topic name="smesh.py_introduction" url="smesh.py_introduction.htm" />
<topic name="Transforming Meshes" url="transforming_meshes.htm" />
<topic name="Transparency" url="transparency.htm" />
<topic name="Viewing Meshes" url="viewing_meshes.htm" />
<?xml version='1.0' encoding='windows-1252' ?>
<fts>
-<chunkinfo url="whfwdata0.xml" first="0" last="zoom"/>
+<chunkinfo url="whfwdata0.xml" first="_grp" last="zoom"/>
-<tchunkinfo first="0" last="69" url="whftdata0.xml" />
+<tchunkinfo first="0" last="73" url="whftdata0.xml" />
</fts>
<?xml version='1.0' encoding='windows-1252' ?>
<ftswdata>
-<key name="0"> 13,18,5,6,24,7,56,60,63,42,66,68, </key>
-<key name="001"> 66, </key>
-<key name="0d"> 13, </key>
-<key name="1"> 16,1,17,18,19,2,20,22,6,25,7,26,27,28,29,10,11,56,30,31,34,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53, </key>
-<key name="10"> 6,7,56,60,66,68, </key>
-<key name="100"> 6,7,56,60,63,66, </key>
-<key name="109"> 66, </key>
-<key name="11"> 60, </key>
-<key name="113"> 66, </key>
-<key name="1135"> 60, </key>
-<key name="1145"> 60, </key>
-<key name="1147"> 60, </key>
-<key name="1159"> 60, </key>
-<key name="12"> 60,66, </key>
-<key name="13"> 60, </key>
-<key name="14"> 60, </key>
-<key name="15"> 60,63,66, </key>
-<key name="150"> 66, </key>
-<key name="16"> 60, </key>
-<key name="17"> 60, </key>
-<key name="18"> 60,63, </key>
-<key name="180"> 60, </key>
-<key name="19"> 60, </key>
-<key name="1d"> 12,13,14,15,18,22,7,10,11,59,36,63,64, </key>
-<key name="1e"> 60,63, </key>
-<key name="2"> 16,1,17,19,2,20,22,6,25,7,26,27,28,29,10,11,30,31,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53, </key>
-<key name="20"> 6,7,56,60,63,66,68, </key>
-<key name="200"> 6,7,60, </key>
-<key name="21"> 60,66, </key>
-<key name="23"> 60,66, </key>
-<key name="2381"> 60, </key>
-<key name="2382"> 60, </key>
-<key name="2383"> 60, </key>
-<key name="2384"> 60, </key>
-<key name="2385"> 60, </key>
-<key name="2386"> 60, </key>
-<key name="2387"> 60, </key>
-<key name="2388"> 60, </key>
-<key name="2389"> 60, </key>
-<key name="2390"> 60, </key>
-<key name="2391"> 60, </key>
-<key name="2392"> 60, </key>
-<key name="2393"> 60, </key>
-<key name="2394"> 60, </key>
-<key name="2395"> 60, </key>
-<key name="2396"> 60, </key>
-<key name="2397"> 60, </key>
-<key name="2398"> 60, </key>
-<key name="2399"> 60, </key>
-<key name="24"> 66, </key>
-<key name="240"> 60, </key>
-<key name="2400"> 60, </key>
-<key name="2401"> 60, </key>
-<key name="2402"> 60, </key>
-<key name="2403"> 60, </key>
-<key name="2404"> 60, </key>
-<key name="2405"> 60, </key>
-<key name="2406"> 60, </key>
-<key name="2407"> 60, </key>
-<key name="2408"> 60, </key>
-<key name="2409"> 60, </key>
-<key name="2410"> 60, </key>
-<key name="2411"> 60, </key>
-<key name="2412"> 60, </key>
-<key name="2413"> 60, </key>
-<key name="2414"> 60, </key>
-<key name="2415"> 60, </key>
-<key name="2416"> 60, </key>
-<key name="2417"> 60, </key>
-<key name="2418"> 60, </key>
-<key name="2419"> 60, </key>
-<key name="2420"> 60, </key>
-<key name="2421"> 60, </key>
-<key name="2422"> 60, </key>
-<key name="245"> 60, </key>
-<key name="246"> 60, </key>
-<key name="25"> 66, </key>
-<key name="255"> 60, </key>
-<key name="2d"> 12,13,14,15,17,19,4,22,6,7,10,11,32,31,59,35,60,61,63,64,42,66,53, </key>
-<key name="3"> 13,17,19,20,22,6,25,26,27,10,11,56,30,60,61,63,38,39,64,42,43,44,66,48,49,68,53, </key>
-<key name="30"> 7,56,60,63,66, </key>
-<key name="300"> 6,7, </key>
-<key name="3128"> 60, </key>
-<key name="321"> 60, </key>
-<key name="3265"> 60, </key>
-<key name="3402"> 60, </key>
-<key name="3658"> 60, </key>
-<key name="38"> 60,66, </key>
-<key name="39"> 60, </key>
-<key name="3d"> 12,13,14,15,0,16,1,19,2,20,22,24,25,7,8,26,27,28,10,11,59,33,63,38,39,64,42,44,48,49,69,52, </key>
-<key name="3e"> 63, </key>
-<key name="3rd"> 13, </key>
-<key name="3x3"> 60, </key>
-<key name="4"> 13,17,19,22,6,25,7,27,11,30,60,61,63,42,43,46,66,53, </key>
-<key name="40"> 60, </key>
-<key name="405"> 60, </key>
-<key name="406"> 60, </key>
-<key name="45"> 60,66, </key>
-<key name="47"> 60, </key>
-<key name="492"> 60, </key>
-<key name="493"> 60, </key>
-<key name="5"> 5,60,63,66, </key>
-<key name="50"> 7,60,66, </key>
-<key name="502"> 60, </key>
-<key name="503"> 60, </key>
-<key name="58"> 66, </key>
-<key name="5th"> 13, </key>
-<key name="6"> 2,6,7,56,60,66,68, </key>
-<key name="60"> 56,60, </key>
-<key name="642"> 60, </key>
-<key name="66632"> 60, </key>
-<key name="69"> 66, </key>
-<key name="7"> 6,7,56,60,63, </key>
-<key name="70"> 7,63,66, </key>
-<key name="700"> 60, </key>
-<key name="71"> 66, </key>
-<key name="72"> 66, </key>
-<key name="73"> 60, </key>
-<key name="77"> 60, </key>
-<key name="8"> 56,60,66, </key>
-<key name="800"> 6,7, </key>
-<key name="814"> 60, </key>
-<key name="850"> 60, </key>
-<key name="859"> 60, </key>
-<key name="864"> 60, </key>
-<key name="89"> 66, </key>
-<key name="9"> 60,66, </key>
-<key name="90"> 66, </key>
-<key name="900"> 6,7, </key>
-<key name="91"> 66, </key>
-<key name="911"> 60, </key>
-<key name="92"> 66, </key>
-<key name="931"> 60, </key>
-<key name="932"> 60, </key>
-<key name="95"> 63, </key>
-<key name="950"> 60, </key>
-<key name="9999"> 24, </key>
-<key name="a_mesh"> 60, </key>
-<key name="aa"> 60, </key>
-<key name="abl"> 16,1,52, </key>
-<key name="abord"> 63, </key>
-<key name="aborder"> 63, </key>
-<key name="abov"> 11,60,44, </key>
-<key name="abox"> 63, </key>
-<key name="absent"> 50, </key>
-<key name="absolute"> 67, </key>
-<key name="abut"> 18, </key>
-<key name="acces"> 0,65,52, </key>
-<key name="accord"> 15,17,18,19,2,31,35,61,43,44,46,69,53, </key>
-<key name="account"> 12,61, </key>
-<key name="acomp"> 63,66, </key>
-<key name="acompobj"> 66, </key>
-<key name="actual"> 36, </key>
-<key name="ad"> 16,1,20,24,25,56,60,48,50, </key>
-<key name="add"> 16,1,20,22,6,24,25,7,29,11,56,60,63,65,48, </key>
-<key name="addedg"> 60, </key>
-<key name="addfac"> 60, </key>
-<key name="addhypothesi"> 6,7,56,60,63,68, </key>
-<key name="addition"> 25,59,60, </key>
-<key name="additional"> 12,13,22,7,36,61,41,65,44, </key>
-<key name="addnod"> 60, </key>
-<key name="addobject"> 56, </key>
-<key name="addpolygonalfac"> 60, </key>
-<key name="addpolyhedralvolum"> 60, </key>
-<key name="addtostudy"> 6,7,56,60,63,66,68, </key>
-<key name="addtostudyinfath"> 6,7,56,60,68, </key>
-<key name="addvolum"> 60, </key>
-<key name="adjacent"> 27,35,36,38,42,48, </key>
-<key name="adjust"> 44, </key>
-<key name="adjustabl"> 36, </key>
-<key name="advanc"> 0,51, </key>
-<key name="afilt"> 56,63, </key>
-<key name="afiltermgr"> 56,60,63, </key>
-<key name="afunctor"> 56,60,63, </key>
-<key name="ageomgroup1"> 56, </key>
-<key name="ageomgroup2"> 56, </key>
-<key name="agroup"> 56,63, </key>
-<key name="agroup1"> 56, </key>
-<key name="agroup2"> 56, </key>
-<key name="agroup3"> 56, </key>
-<key name="agroup4"> 56, </key>
-<key name="agroup5"> 56, </key>
-<key name="agroupelemid"> 56, </key>
-<key name="agroupf"> 63, </key>
-<key name="agroupmain"> 56, </key>
-<key name="agroupn"> 63, </key>
-<key name="agroupr"> 56, </key>
-<key name="agrouptool"> 56, </key>
-<key name="ai"> 18, </key>
-<key name="al"> 60, </key>
-<key name="algo"> 6,7,60,66, </key>
-<key name="algo1"> 6,63,68, </key>
-<key name="algo2"> 6,63,68, </key>
-<key name="algorithm"> 12,13,14,15,0,17,22,6,23,7,11,56,32,59,33,61,37,42,66, </key>
-<key name="allow"> 12,0,1,18,20,23,24,25,30,32,58,34,59,36,61,40,42,44,45,47,48,50,52, </key>
-<key name="along"> 10,11,60,61,44,52, </key>
-<key name="alternativ"> 22, </key>
+<key name="_grp"> 69, </key>
+<key name="0"> 14,19,5,6,25,8,12,57,61,63,66,43,69,70,72, </key>
+<key name="000001"> 66, </key>
+<key name="001"> 70, </key>
+<key name="0d"> 14, </key>
+<key name="1"> 17,1,18,19,20,2,21,23,6,7,26,8,27,28,29,30,11,12,57,31,32,35,36,61,64,66,39,40,67,62,43,44,69,45,47,70,49,50,51,73,54, </key>
+<key name="10"> 6,8,12,57,61,69,70,72, </key>
+<key name="100"> 6,8,57,66,69,70, </key>
+<key name="109"> 70, </key>
+<key name="110"> 61, </key>
+<key name="113"> 70, </key>
+<key name="12"> 61,70, </key>
+<key name="13"> 61, </key>
+<key name="130"> 61, </key>
+<key name="15"> 61,66,70, </key>
+<key name="150"> 8,61,70, </key>
+<key name="17"> 61, </key>
+<key name="180"> 61, </key>
+<key name="1d"> 13,14,15,16,19,23,6,8,11,12,60,61,63,37,66,67,69, </key>
+<key name="1e"> 61,66, </key>
+<key name="2"> 17,1,18,20,2,21,23,6,7,26,8,27,28,29,30,11,12,31,32,36,61,64,66,39,40,67,62,43,44,45,47,70,49,50,51,73,54, </key>
+<key name="20"> 6,8,57,61,66,69,70,72, </key>
+<key name="200"> 6,8,61,69, </key>
+<key name="21"> 61,70, </key>
+<key name="23"> 61,70, </key>
+<key name="24"> 70, </key>
+<key name="240"> 61, </key>
+<key name="245"> 61, </key>
+<key name="246"> 61, </key>
+<key name="25"> 70, </key>
+<key name="255"> 61, </key>
+<key name="2d"> 13,14,15,16,18,20,4,23,6,8,11,12,57,33,32,60,36,63,64,66,67,43,69,70,54, </key>
+<key name="3"> 14,18,20,21,23,6,7,26,8,27,28,11,12,57,31,61,63,64,66,39,40,67,62,43,44,69,45,70,49,50,72,54, </key>
+<key name="30"> 8,61,63,70, </key>
+<key name="300"> 6, </key>
+<key name="3128"> 61, </key>
+<key name="321"> 61, </key>
+<key name="3265"> 61, </key>
+<key name="3402"> 61, </key>
+<key name="35"> 57,66, </key>
+<key name="3658"> 61, </key>
+<key name="38"> 61,66,70, </key>
+<key name="39"> 61, </key>
+<key name="3d"> 13,14,15,16,0,17,1,20,2,21,23,6,25,26,8,9,27,28,29,11,12,60,63,34,66,39,40,67,43,69,45,49,50,73,53, </key>
+<key name="3e"> 66, </key>
+<key name="3rd"> 14, </key>
+<key name="3x3"> 61, </key>
+<key name="4"> 14,18,20,23,6,26,8,28,12,31,61,64,66,62,43,44,47,70,54, </key>
+<key name="40"> 57,61,69, </key>
+<key name="405"> 61, </key>
+<key name="406"> 61, </key>
+<key name="45"> 12,61,70, </key>
+<key name="47"> 61, </key>
+<key name="492"> 61, </key>
+<key name="493"> 61, </key>
+<key name="5"> 5,6,8,61,66,70, </key>
+<key name="50"> 8,61,70, </key>
+<key name="502"> 61, </key>
+<key name="503"> 61, </key>
+<key name="58"> 70, </key>
+<key name="5th"> 14, </key>
+<key name="6"> 2,6,8,57,61,70, </key>
+<key name="60"> 57,61,69, </key>
+<key name="66632"> 61, </key>
+<key name="69"> 70, </key>
+<key name="7"> 6,8,57,61,66, </key>
+<key name="70"> 8,61,70, </key>
+<key name="71"> 70, </key>
+<key name="72"> 70, </key>
+<key name="73"> 61, </key>
+<key name="8"> 57,61,66,70, </key>
+<key name="80"> 61,69, </key>
+<key name="800"> 6, </key>
+<key name="814"> 61, </key>
+<key name="850"> 61, </key>
+<key name="859"> 61, </key>
+<key name="89"> 70, </key>
+<key name="9"> 61,70, </key>
+<key name="90"> 70, </key>
+<key name="900"> 6,72, </key>
+<key name="91"> 70, </key>
+<key name="92"> 70, </key>
+<key name="95"> 66, </key>
+<key name="9999"> 25, </key>
+<key name="a_mesh"> 61, </key>
+<key name="a10"> 61, </key>
+<key name="a45"> 61, </key>
+<key name="aa"> 61, </key>
+<key name="abl"> 17,1,53, </key>
+<key name="abord"> 66, </key>
+<key name="aborder"> 66, </key>
+<key name="abov"> 61,45, </key>
+<key name="absent"> 51, </key>
+<key name="absolute"> 71, </key>
+<key name="abut"> 19, </key>
+<key name="acces"> 0,68,53, </key>
+<key name="accord"> 16,18,19,20,2,32,36,64,44,45,47,73,54, </key>
+<key name="account"> 13,64, </key>
+<key name="acomp"> 70, </key>
+<key name="actual"> 63,37, </key>
+<key name="ad"> 17,1,21,7,25,26,57,61,49,51, </key>
+<key name="add"> 17,1,21,23,25,26,8,30,12,57,61,66,68,69,49, </key>
+<key name="addedg"> 61, </key>
+<key name="addfac"> 61, </key>
+<key name="addhypothesi"> 61, </key>
+<key name="addition"> 26,60,61, </key>
+<key name="additional"> 13,14,23,8,37,64,42,68,45, </key>
+<key name="addnod"> 61, </key>
+<key name="addobject"> 57, </key>
+<key name="addpolygonalfac"> 61, </key>
+<key name="addpolyhedralvolum"> 61, </key>
+<key name="addtostudy"> 6,8,57,61,66,69,70,72, </key>
+<key name="addtostudyinfath"> 6,8,57,61, </key>
+<key name="addvolum"> 61, </key>
+<key name="adjacent"> 28,36,63,37,39,43,49, </key>
+<key name="adjust"> 45, </key>
+<key name="adjustabl"> 37, </key>
+<key name="advanc"> 0,52, </key>
+<key name="afilt"> 57,66, </key>
+<key name="afiltermgr"> 57,61,66, </key>
+<key name="afunctor"> 57,61,66, </key>
+<key name="ageomgroup"> 57, </key>
+<key name="agroup"> 57,66, </key>
+<key name="agroup1"> 57, </key>
+<key name="agroup2"> 57, </key>
+<key name="agroup3"> 57, </key>
+<key name="agroup4"> 57, </key>
+<key name="agroup5"> 57, </key>
+<key name="agroupelemid"> 57, </key>
+<key name="agroupf"> 66, </key>
+<key name="agroupmain"> 57, </key>
+<key name="agroupn"> 66, </key>
+<key name="agroupr"> 57, </key>
+<key name="agrouptool"> 57, </key>
+<key name="ai"> 19, </key>
+<key name="al"> 61, </key>
+<key name="algo"> 8,66,70, </key>
+<key name="algo_local"> 6,8,70, </key>
+<key name="algo1d"> 6,8,57,61,69,70,72, </key>
+<key name="algo2d"> 6,8,61,69,70,72, </key>
+<key name="algo3d"> 6,8,69,72, </key>
+<key name="algorithm"> 13,14,15,16,0,18,23,6,24,8,12,33,60,61,63,34,64,38,43, </key>
+<key name="allow"> 13,0,1,19,21,24,7,25,26,31,33,59,35,60,63,37,64,41,43,45,46,48,49,51,53, </key>
+<key name="along"> 11,12,61,64,45,53, </key>
+<key name="alternativ"> 23, </key>
<key name="alternative"> 0,1, </key>
-<key name="alway"> 44, </key>
-<key name="amesheditor"> 60,66, </key>
+<key name="alway"> 45, </key>
+<key name="amesh"> 6, </key>
+<key name="amesheditor"> 61,70, </key>
<key name="amount"> 3, </key>
-<key name="analytic"> 18, </key>
-<key name="aneditor"> 60,63,66, </key>
-<key name="angl"> 15,5,25,11,59,35,60,63,64,40,43,48,53, </key>
-<key name="angle180"> 66, </key>
-<key name="angle45"> 60, </key>
-<key name="angular"> 11, </key>
-<key name="angularity"> 11, </key>
-<key name="anid"> 56,63, </key>
-<key name="anodeid1"> 60, </key>
-<key name="anodeid2"> 60, </key>
-<key name="anodeid3"> 60, </key>
-<key name="anodeid4"> 60, </key>
-<key name="anoth"> 60,36, </key>
-<key name="any"> 13,1,22,24,27,11,56,61,44, </key>
-<key name="ap"> 14,16,1,17,19,2,20,5,22,24,25,7,8,26,27,29,10,11,31,58,59,35,60,61,37,38,39,64,42,43,44,45,46,48,49,50,69,53, </key>
-<key name="apparent"> 22, </key>
-<key name="appear"> 0,16,1,20,22,23,25,26,27,29,10,11,34,61,38,39,64,40,45,47,48,49,50, </key>
-<key name="append"> 60,63, </key>
-<key name="appli"> 17,18,19,2,22,23,32,31,35,33,36,37,65,43,44,46,69,53, </key>
-<key name="applicabl"> 19,65, </key>
-<key name="application"> 15,61, </key>
-<key name="apply"> 12,0,22,23,24, </key>
-<key name="applytomeshfac"> 60, </key>
-<key name="appropriat"> 22, </key>
-<key name="approximate"> 18, </key>
-<key name="apredicat"> 56,63, </key>
-<key name="arc"> 7,60,66, </key>
-<key name="arcsin"> 53, </key>
-<key name="area"> 12,15,17,7,56,32,59,33,63,44,46,52, </key>
-<key name="arithmetic"> 12,18,6,7,59,66, </key>
-<key name="arithmetic1d"> 6,7,66,68, </key>
-<key name="around"> 5,11,64, </key>
-<key name="array_of_nodes_group"> 66, </key>
-<key name="asmeshgroup1"> 56, </key>
-<key name="asmeshgroup2"> 56, </key>
-<key name="aspect"> 15,19,2,59,63,44, </key>
-<key name="assign"> 18,22,24,7,37,53, </key>
-<key name="associat"> 16,28,38, </key>
-<key name="attribut"> 24, </key>
+<key name="analytic"> 19, </key>
+<key name="aneditor"> 61,66,70, </key>
+<key name="angl"> 16,5,26,12,60,36,61,66,67,41,44,70,49,54, </key>
+<key name="angle270"> 70, </key>
+<key name="angle45"> 61, </key>
+<key name="angularity"> 12, </key>
+<key name="anid"> 57,66, </key>
+<key name="anoth"> 37, </key>
+<key name="any"> 14,1,23,25,28,12,57,64,45, </key>
+<key name="ap"> 15,17,1,18,20,2,21,5,23,7,25,26,8,9,27,28,30,11,12,32,59,60,36,61,64,38,39,40,67,43,44,45,46,47,49,50,51,73,54, </key>
+<key name="api"> 69, </key>
+<key name="apparent"> 23, </key>
+<key name="appear"> 0,17,1,21,23,24,7,26,27,28,30,11,12,35,64,39,40,67,41,46,48,49,50,51, </key>
+<key name="append"> 61, </key>
+<key name="appli"> 18,19,20,2,23,24,33,32,36,37,34,38,68,44,45,47,73,54, </key>
+<key name="applicabl"> 20,68, </key>
+<key name="application"> 16,64, </key>
+<key name="apply"> 13,0,23,24,25, </key>
+<key name="applytomeshfac"> 61, </key>
+<key name="approach"> 57,61,66,70, </key>
+<key name="appropriat"> 23, </key>
+<key name="approximate"> 19, </key>
+<key name="apredicat"> 57,66, </key>
+<key name="ar_margin"> 66, </key>
+<key name="arc"> 8,70, </key>
+<key name="arcsin"> 54, </key>
+<key name="area"> 13,16,18,8,57,33,60,34,66,45,47,53, </key>
+<key name="area_margin"> 66, </key>
+<key name="arithmetic"> 13,19,6,8,60, </key>
+<key name="arithmetic1d"> 6,8,70, </key>
+<key name="around"> 5,12,67, </key>
+<key name="array_of_nodes_group"> 70, </key>
+<key name="asmeshgroup1"> 57, </key>
+<key name="asmeshgroup2"> 57, </key>
+<key name="aspect"> 16,20,2,60,66,45, </key>
+<key name="assemb"> 69, </key>
+<key name="assign"> 19,23,25,8,38,54, </key>
+<key name="associat"> 17,29,39, </key>
+<key name="attention"> 57,61,66,70, </key>
+<key name="attribut"> 25, </key>
<key name="auto"> 5, </key>
-<key name="automatic"> 12,18,22,59,61, </key>
-<key name="automatical"> 0,18,20,22,25,27,48, </key>
-<key name="availabl"> 42,52, </key>
-<key name="averag"> 12,18,7,32,59,61,53, </key>
-<key name="ax"> 52, </key>
-<key name="axi"> 10,64,40,45,52,53, </key>
-<key name="axisstruct"> 60,66, </key>
-<key name="axisxyz"> 60,66, </key>
+<key name="automatic"> 13,19,23,60,64, </key>
+<key name="automatical"> 0,19,21,23,26,28,49, </key>
+<key name="availabl"> 43,53, </key>
+<key name="averag"> 13,19,8,33,60,64,54, </key>
+<key name="ax"> 53, </key>
+<key name="axi"> 11,61,67,41,46,70,53,54, </key>
+<key name="axisstruct"> 61,70, </key>
+<key name="axisxyz"> 61,70, </key>
<key name="background"> 0, </key>
-<key name="bar"> 15, </key>
-<key name="bas"> 12,17,7,11,59,53, </key>
-<key name="basi"> 13,22,23, </key>
-<key name="basic"> 12,0, </key>
-<key name="becom"> 61, </key>
-<key name="befor"> 65,66, </key>
-<key name="begin"> 18,42, </key>
-<key name="belong"> 3,4,24,54,55,42,50, </key>
-<key name="below"> 60, </key>
-<key name="berder"> 42, </key>
-<key name="bet"> 19, </key>
-<key name="binary"> 65, </key>
-<key name="bisect"> 53, </key>
-<key name="bisector"> 53, </key>
-<key name="bit"> 65, </key>
+<key name="bar"> 16, </key>
+<key name="bas"> 13,18,8,12,57,60,61,66,70,54, </key>
+<key name="basi"> 14,23,24, </key>
+<key name="basic"> 13,0, </key>
+<key name="bb"> 61, </key>
+<key name="becom"> 63,64, </key>
+<key name="befor"> 68,70, </key>
+<key name="begin"> 19,43, </key>
+<key name="belong"> 3,4,25,55,56,43,51, </key>
+<key name="below"> 61,63,69, </key>
+<key name="berder"> 43, </key>
+<key name="bet"> 20, </key>
+<key name="binary"> 68, </key>
+<key name="bisect"> 54, </key>
+<key name="bisector"> 54, </key>
+<key name="bit"> 68, </key>
<key name="black"> 0, </key>
-<key name="block"> 6,7, </key>
<key name="blu"> 3, </key>
-<key name="bmp"> 0,52, </key>
-<key name="bog"> 18, </key>
-<key name="boolean"> 50, </key>
-<key name="bord"> 42,66, </key>
-<key name="border"> 15,3,4,54,55,59,63,42,66, </key>
-<key name="both"> 0,11,44,50, </key>
-<key name="bottom"> 60,41, </key>
-<key name="bound"> 13,61, </key>
-<key name="boundari"> 61, </key>
-<key name="boundary"> 12,24,61,42,44, </key>
-<key name="box"> 14,16,1,18,20,22,6,23,25,7,26,27,29,10,11,56,30,58,34,61,63,38,39,64,40,41,65,42,44,45,66,47,48,49,50,51,68, </key>
-<key name="box_1"> 60, </key>
-<key name="box_id"> 6,7, </key>
-<key name="box1"> 66, </key>
-<key name="box2"> 66, </key>
-<key name="broken"> 1,36, </key>
-<key name="brown"> 24, </key>
-<key name="brows"> 0,16,1,21,22,23,24,8,29,62,38,39,65,51, </key>
-<key name="build"> 7,10,32,60,36,61,64, </key>
-<key name="built"> 19,23,61,44, </key>
-<key name="button"> 16,1,17,19,2,20,5,22,23,24,25,8,26,27,29,10,11,30,31,35,61,37,38,39,64,40,65,42,43,44,45,46,47,48,49,50,51,69,52,53, </key>
-<key name="cad"> 13, </key>
-<key name="cal"> 61, </key>
-<key name="calculat"> 15,19,2,32,46, </key>
-<key name="calculation"> 12,17,31,35, </key>
-<key name="careful"> 38, </key>
-<key name="cas"> 16,22,6,7,27,60,61,66,51, </key>
-<key name="cel"> 24,38,49, </key>
-<key name="cent"> 11,44,52, </key>
-<key name="centroid"> 44, </key>
-<key name="centroidal"> 44, </key>
-<key name="centroidal_smooth"> 60, </key>
-<key name="certain"> 24,61, </key>
-<key name="chang"> 0,18,20,6,27,60,36,37,68, </key>
-<key name="characteristic"> 15, </key>
-<key name="characteriz"> 13, </key>
-<key name="check"> 24,42,52, </key>
-<key name="checkbox"> 16,65,47, </key>
-<key name="choic"> 12,22,61, </key>
-<key name="choos"> 16,1,17,19,2,20,21,24,25,8,26,27,9,28,10,11,30,31,34,35,61,38,39,64,40,41,65,42,43,45,46,47,48,49,69,53, </key>
-<key name="chosen"> 19,25,32,33,48, </key>
-<key name="circl"> 11,60,66, </key>
-<key name="circlemesh"> 60,66, </key>
-<key name="clear"> 65, </key>
-<key name="click"> 0,16,1,17,19,2,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,31,35,61,62,37,38,39,64,41,65,42,43,44,46,48,49,50,51,69,52,53, </key>
+<key name="bmp"> 0,53, </key>
+<key name="bog"> 19, </key>
+<key name="boolean"> 61,51, </key>
+<key name="bord"> 43,70, </key>
+<key name="border"> 16,3,4,55,56,60,66,43,70, </key>
+<key name="both"> 0,12,45,51, </key>
+<key name="bottom"> 61,42, </key>
+<key name="bound"> 14,64, </key>
+<key name="boundari"> 64, </key>
+<key name="boundary"> 13,25,64,43,45, </key>
+<key name="box"> 17,1,19,21,23,6,24,7,26,8,27,28,30,11,12,57,31,59,35,63,64,66,39,40,67,41,42,68,43,69,45,46,70,48,49,50,51,52,72, </key>
+<key name="box_1"> 61, </key>
+<key name="box_cyl"> 69, </key>
+<key name="box1"> 66,70, </key>
+<key name="box2"> 66,70, </key>
+<key name="broken"> 1,37, </key>
+<key name="brown"> 25, </key>
+<key name="brows"> 0,17,1,22,23,24,25,9,30,65,39,40,68,52, </key>
+<key name="build"> 8,11,33,61,63,37,64,67,69, </key>
+<key name="built"> 20,24,12,64,45, </key>
+<key name="button"> 17,1,18,20,2,21,5,23,24,7,25,26,9,27,28,30,11,12,31,32,36,64,38,39,40,67,41,68,43,44,45,46,47,48,49,50,51,52,73,53,54, </key>
+<key name="cad"> 14, </key>
+<key name="cal"> 64, </key>
+<key name="calculat"> 16,20,2,33,47, </key>
+<key name="calculation"> 13,18,32,36, </key>
+<key name="careful"> 39, </key>
+<key name="cas"> 17,23,6,8,28,12,64,52, </key>
+<key name="cc"> 61, </key>
+<key name="cel"> 25,63,39,50, </key>
+<key name="cent"> 12,45,53, </key>
+<key name="central"> 12, </key>
+<key name="centroid"> 45, </key>
+<key name="centroidal"> 45, </key>
+<key name="centroidal_smooth"> 61, </key>
+<key name="certain"> 25,64, </key>
+<key name="chang"> 0,19,21,6,28,61,37,38, </key>
+<key name="characteristic"> 16, </key>
+<key name="characteriz"> 14, </key>
+<key name="check"> 25,63,66,43,53, </key>
+<key name="checkbox"> 17,63,68,48, </key>
+<key name="choic"> 13,23,64, </key>
+<key name="choos"> 17,1,18,20,2,21,22,7,25,26,9,27,28,10,29,11,12,31,32,35,36,64,39,40,67,41,42,68,43,44,46,47,48,49,50,73,54, </key>
+<key name="chosen"> 20,26,33,34,49, </key>
+<key name="circl"> 12,70, </key>
+<key name="circlemesh"> 70, </key>
+<key name="circular"> 61, </key>
+<key name="clas"> 62, </key>
+<key name="clear"> 62,68, </key>
+<key name="click"> 0,17,1,18,20,2,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,32,36,64,65,38,39,40,67,42,68,43,44,45,47,49,50,51,52,73,53,54, </key>
<key name="clip"> 0,5, </key>
-<key name="clos"> 13,19,8,42, </key>
-<key name="co"> 60,42, </key>
-<key name="coars"> 18, </key>
-<key name="coincid"> 58, </key>
-<key name="coincident"> 58,34, </key>
-<key name="color"> 15,0,17,19,2,24,31,35,43,46,69,52,53, </key>
-<key name="combin"> 9,31,62,65, </key>
-<key name="common"> 26,65,49, </key>
-<key name="compar"> 18,42, </key>
-<key name="complete"> 58, </key>
-<key name="complex"> 1, </key>
-<key name="component"> 59,41, </key>
-<key name="compos"> 12,13,14,15,0,18,2,28,32,33,43, </key>
-<key name="compound"> 6,7, </key>
-<key name="comput"> 0,18,22,6,7,56,60,61,63,42,66,68, </key>
-<key name="computation"> 22,23,7,56,60, </key>
-<key name="concept"> 36, </key>
-<key name="condition"> 12,24, </key>
-<key name="confirm"> 20,25,29,38,44,48,50, </key>
-<key name="confirmation"> 24, </key>
-<key name="conform"> 12,36,42,66, </key>
-<key name="conformity"> 19, </key>
-<key name="connect"> 18,25,44, </key>
-<key name="connection"> 13,15,3,4,59,63, </key>
-<key name="connectivity"> 61, </key>
-<key name="consid"> 19,22, </key>
-<key name="consider"> 13,19,2,42, </key>
-<key name="consist"> 15,1,17,18,19,3,4,21,22,23,24,54,55,56,32,31,35,33,46, </key>
-<key name="consol"> 51, </key>
-<key name="constant"> 18, </key>
-<key name="construct"> 18,21,22,6,23,37, </key>
-<key name="construction"> 18,22,6,23, </key>
-<key name="contain"> 13,14,20,22,23,24,25,30,32,61,44,48, </key>
-<key name="content"> 8,52, </key>
-<key name="continu"> 44, </key>
-<key name="contour"> 13,42, </key>
-<key name="contrast"> 48, </key>
-<key name="control"> 15,0,17,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53, </key>
-<key name="converg"> 44, </key>
-<key name="conversion"> 18, </key>
-<key name="coordinat"> 13,16,27,61,52, </key>
-<key name="copy"> 40,65,45,66,47, </key>
-<key name="corn"> 1,53, </key>
-<key name="corner"> 25,44,53, </key>
-<key name="correspond"> 13,15,30,60,61,63,65,42,47, </key>
-<key name="cosal"> 60, </key>
-<key name="could"> 13,16, </key>
-<key name="count"> 42, </key>
-<key name="counterclockwis"> 61, </key>
-<key name="cours"> 22, </key>
-<key name="creat"> 13,14,0,16,1,18,5,22,6,23,24,7,29,56,34,59,60,36,61,63,37,40,65,45,66,47,50,53, </key>
-<key name="createanddisplaygo"> 7, </key>
-<key name="createarea"> 56,63, </key>
-<key name="createaspectratio"> 63, </key>
-<key name="createaspectratio3d"> 63, </key>
-<key name="createequalto"> 56,63, </key>
-<key name="createfilt"> 56,63, </key>
-<key name="createfiltermanag"> 56,60,63, </key>
-<key name="createfreeborder"> 63, </key>
-<key name="createfreeedg"> 63, </key>
-<key name="creategroup"> 56,60,63, </key>
-<key name="creategroupfromgeom"> 56, </key>
-<key name="createhypothesi"> 6,7,56,60,63,68, </key>
-<key name="createlength"> 63, </key>
-<key name="createlength2d"> 63, </key>
-<key name="createlessthan"> 56,63, </key>
-<key name="createmesh"> 6,7,56,60,63,68, </key>
-<key name="createminimumangl"> 60,63, </key>
-<key name="createmorethan"> 56,63, </key>
-<key name="createmulticonnection"> 63, </key>
-<key name="createmulticonnection2d"> 63, </key>
-<key name="createskew"> 63, </key>
-<key name="createtap"> 63, </key>
-<key name="createvolume3d"> 63, </key>
-<key name="createwarp"> 63, </key>
-<key name="creation"> 13,36,61,37,50, </key>
-<key name="criteria"> 59,65, </key>
-<key name="criterion"> 17,19,2,24,25,56,57,31,35,63,65,43,46,48,69,53, </key>
-<key name="cros"> 0,5,53, </key>
-<key name="cubic"> 14, </key>
-<key name="current"> 20,22,25,37,65,42,48, </key>
-<key name="curv"> 13,18,11, </key>
-<key name="curvilinear"> 18,11, </key>
-<key name="cut"> 18,6,25,7,56,60,66,50, </key>
-<key name="cutgroup"> 56, </key>
-<key name="cylind"> 60, </key>
-<key name="d"> 18, </key>
-<key name="deal"> 13, </key>
-<key name="def"> 60, </key>
-<key name="default"> 0,22,11,62,65,67,52, </key>
-<key name="defin"> 13,14,1,18,19,5,22,6,23,24,7,11,60,36,61,42,66,52, </key>
-<key name="definit"> 13,15,18,20,21,24,25,59,37,38,48, </key>
-<key name="definition"> 0,18,32,33, </key>
-<key name="deflection"> 12,18,7,59, </key>
-<key name="deflection1d"> 7, </key>
-<key name="deform"> 52, </key>
-<key name="degre"> 19,5, </key>
-<key name="delet"> 8,55,60,38,65, </key>
-<key name="deletediag"> 60, </key>
-<key name="deletion"> 38,49, </key>
-<key name="density"> 18, </key>
-<key name="depend"> 12,13,22,32,33, </key>
-<key name="describ"> 13,61, </key>
-<key name="description"> 61, </key>
-<key name="desirabl"> 34, </key>
-<key name="desktop"> 41, </key>
-<key name="destin"> 13,15,59, </key>
-<key name="detail"> 12,0, </key>
-<key name="detect"> 34, </key>
-<key name="dh"> 60, </key>
-<key name="diagonal"> 25,26,60,46, </key>
-<key name="dialog"> 14,16,1,18,20,22,23,25,26,27,29,10,11,30,58,34,61,38,39,64,40,42,44,45,47,48,49,50, </key>
-<key name="diamet"> 19, </key>
-<key name="dif"> 1, </key>
-<key name="differ"> 18, </key>
-<key name="differenc"> 11,42, </key>
-<key name="different"> 12,16,24,37,65,42, </key>
-<key name="dimension"> 13,2,22,10,64,51, </key>
-<key name="direct"> 13,42,44, </key>
-<key name="direction"> 61,53, </key>
-<key name="dirstruct"> 60,66, </key>
-<key name="discretisation"> 6,7, </key>
-<key name="discretiz"> 10,64, </key>
-<key name="discretization"> 13,14, </key>
-<key name="displac"> 27, </key>
-<key name="display"> 15,0,1,17,19,2,3,20,22,23,24,25,7,27,9,28,54,31,35,62,43,44,46,48,51,69,52,53, </key>
-<key name="distanc"> 18,5,61,52,53, </key>
-<key name="distinguish"> 24, </key>
-<key name="distortion"> 44, </key>
-<key name="distribution"> 18, </key>
-<key name="divid"> 18, </key>
-<key name="do"> 16, </key>
-<key name="domain"> 61, </key>
-<key name="don"> 13,22,36,52, </key>
+<key name="clos"> 14,20,9,12,61,43, </key>
+<key name="co"> 61,43, </key>
+<key name="coars"> 19,7,63, </key>
+<key name="coincid"> 59, </key>
+<key name="coincident"> 12,59,35, </key>
+<key name="color"> 16,0,18,20,2,25,32,36,44,47,73,53,54, </key>
+<key name="combin"> 10,32,65,68, </key>
+<key name="command"> 57,61,66,70, </key>
+<key name="common"> 27,68,50, </key>
+<key name="comp"> 66, </key>
+<key name="compar"> 19,43, </key>
+<key name="complete"> 59, </key>
+<key name="complex"> 1,12, </key>
+<key name="component"> 60,42, </key>
+<key name="compos"> 13,14,15,16,0,19,2,29,33,34,44, </key>
+<key name="compound"> 66, </key>
+<key name="comput"> 0,19,23,6,8,57,61,64,66,43,69,70,72, </key>
+<key name="computation"> 23,24,8,61, </key>
+<key name="con"> 69, </key>
+<key name="concept"> 37, </key>
+<key name="condition"> 13,25, </key>
+<key name="confirm"> 21,26,30,39,45,49,51, </key>
+<key name="confirmation"> 25, </key>
+<key name="conform"> 13,37,43,70, </key>
+<key name="conformity"> 20, </key>
+<key name="connect"> 19,26,45, </key>
+<key name="connection"> 14,16,3,4,60,66, </key>
+<key name="connectivity"> 64, </key>
+<key name="consid"> 20,23, </key>
+<key name="consider"> 14,20,2,43, </key>
+<key name="consist"> 16,1,18,19,20,3,4,22,23,24,25,12,55,56,57,33,32,36,34,47, </key>
+<key name="consol"> 52, </key>
+<key name="constant"> 19, </key>
+<key name="construct"> 15,19,22,23,6,24,38, </key>
+<key name="construction"> 19,23,6,24, </key>
+<key name="contain"> 14,15,21,23,24,25,26,12,31,33,64,45,49, </key>
+<key name="content"> 9,53, </key>
+<key name="continu"> 45, </key>
+<key name="contour"> 14,43, </key>
+<key name="contrast"> 49, </key>
+<key name="control"> 16,0,18,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54, </key>
+<key name="converg"> 45, </key>
+<key name="conversion"> 19,7, </key>
+<key name="convert"> 7, </key>
+<key name="coordinat"> 14,17,28,64,53, </key>
+<key name="copi"> 70, </key>
+<key name="copy"> 41,68,46,70,48, </key>
+<key name="corn"> 1,54, </key>
+<key name="corner"> 26,12,45,54, </key>
+<key name="correspond"> 14,16,31,64,66,68,43,48, </key>
+<key name="cos_bot"> 61, </key>
+<key name="cos_top"> 61, </key>
+<key name="cosal"> 61, </key>
+<key name="cot"> 69, </key>
+<key name="could"> 14,17, </key>
+<key name="count"> 43, </key>
+<key name="counterclockwis"> 64, </key>
+<key name="cours"> 23, </key>
+<key name="cover"> 12, </key>
+<key name="creat"> 14,0,17,1,19,5,23,6,24,25,8,30,57,35,60,61,63,37,64,66,38,41,68,69,46,70,48,51,72,54, </key>
+<key name="createarea"> 57,66, </key>
+<key name="createaspectratio"> 66, </key>
+<key name="createaspectratio3d"> 66, </key>
+<key name="createemptymesh"> 61, </key>
+<key name="createequalto"> 57,66, </key>
+<key name="createfilt"> 57,66, </key>
+<key name="createfiltermanag"> 57,61,66, </key>
+<key name="createfreeborder"> 66, </key>
+<key name="createfreeedg"> 66, </key>
+<key name="creategroup"> 57,61,66,69, </key>
+<key name="creategroupfromgeom"> 61, </key>
+<key name="createhypothesi"> 61, </key>
+<key name="createlength"> 66, </key>
+<key name="createlength2d"> 66, </key>
+<key name="createlessthan"> 57,66, </key>
+<key name="createminimumangl"> 61,66, </key>
+<key name="createmorethan"> 57,66, </key>
+<key name="createmulticonnection"> 66, </key>
+<key name="createmulticonnection2d"> 66, </key>
+<key name="createpolyedr"> 70, </key>
+<key name="createpolygon"> 70, </key>
+<key name="createskew"> 66, </key>
+<key name="createtap"> 66, </key>
+<key name="createvolume3d"> 66, </key>
+<key name="createwarp"> 66, </key>
+<key name="creation"> 14,37,64,38,62,69,51, </key>
+<key name="criteria"> 60,68, </key>
+<key name="criterion"> 18,20,2,25,26,57,58,32,36,66,68,44,47,49,73,54, </key>
+<key name="cros"> 0,5,54, </key>
+<key name="cubic"> 15, </key>
+<key name="current"> 21,23,26,63,38,68,43,49, </key>
+<key name="curv"> 14,19,12,61, </key>
+<key name="curvilinear"> 19,12, </key>
+<key name="custom"> 63, </key>
+<key name="cut"> 19,6,26,8,57,61,51, </key>
+<key name="cutgroup"> 57, </key>
+<key name="cyl"> 8,69, </key>
+<key name="cylind"> 8,69, </key>
+<key name="d"> 19, </key>
+<key name="data"> 62, </key>
+<key name="dd"> 61, </key>
+<key name="deal"> 14, </key>
+<key name="def"> 6,61,62, </key>
+<key name="default"> 0,23,12,57,63,65,68,71,53, </key>
+<key name="defin"> 14,15,1,19,20,5,23,6,24,25,8,12,61,63,37,64,62,43,69,70,53, </key>
+<key name="definit"> 14,16,19,21,22,25,26,60,38,39,49, </key>
+<key name="definition"> 0,19,6,12,33,63,34, </key>
+<key name="deflection"> 13,19,8,60, </key>
+<key name="deflection1d"> 8, </key>
+<key name="deform"> 53, </key>
+<key name="degre"> 20,5, </key>
+<key name="delet"> 9,56,61,39,68, </key>
+<key name="deletediag"> 61, </key>
+<key name="deletion"> 39,50, </key>
+<key name="density"> 19, </key>
+<key name="depend"> 13,14,23,33,34, </key>
+<key name="describ"> 14,15,64, </key>
+<key name="description"> 64, </key>
+<key name="desirabl"> 35, </key>
+<key name="desktop"> 42, </key>
+<key name="destin"> 14,16,60,62, </key>
+<key name="detail"> 13,15,0, </key>
+<key name="detalization"> 63, </key>
+<key name="detect"> 35, </key>
+<key name="dh"> 61, </key>
+<key name="di1"> 69, </key>
+<key name="diagonal"> 26,27,61,47, </key>
+<key name="dialog"> 17,1,19,21,23,24,7,26,27,28,30,11,12,31,59,35,64,39,40,67,41,43,45,46,48,49,50,51, </key>
+<key name="diamet"> 20, </key>
+<key name="dif"> 1,63, </key>
+<key name="differ"> 19, </key>
+<key name="differenc"> 12,43, </key>
+<key name="different"> 13,17,25,12,38,68,43, </key>
+<key name="digit"> 12, </key>
+<key name="dimension"> 14,2,23,11,63,67,52, </key>
+<key name="direct"> 14,6,57,61,66,43,45,70, </key>
+<key name="direction"> 12,64,54, </key>
+<key name="dirstruct"> 61,70, </key>
+<key name="discretiz"> 11,67, </key>
+<key name="discretization"> 14,15, </key>
+<key name="displac"> 28, </key>
+<key name="display"> 16,0,1,18,20,2,3,21,23,24,25,26,28,10,29,55,32,36,65,44,45,47,49,52,73,53,54, </key>
+<key name="distanc"> 19,5,64,53,54, </key>
+<key name="distinguish"> 25, </key>
+<key name="distortion"> 45, </key>
+<key name="distribution"> 19, </key>
+<key name="divid"> 19, </key>
+<key name="do"> 17, </key>
+<key name="docopy"> 70, </key>
+<key name="documentation"> 62, </key>
+<key name="doesn"> 57,61,66,70, </key>
+<key name="domain"> 64, </key>
+<key name="don"> 14,23,12,61,37,53, </key>
<key name="doubl"> 1, </key>
-<key name="downward"> 52, </key>
-<key name="dr"> 60, </key>
-<key name="drag"> 52, </key>
-<key name="drawn"> 52, </key>
-<key name="dump"> 0,52, </key>
-<key name="dx"> 60, </key>
-<key name="dy"> 60, </key>
-<key name="e"> 19,22,23,25,61,42,48, </key>
-<key name="easi"> 21, </key>
-<key name="edg"> 12,13,14,15,0,16,1,18,19,3,4,21,22,6,24,25,7,26,27,9,11,54,55,56,57,32,31,59,60,36,61,63,65,42,44,66,48,49,68,53, </key>
-<key name="edgeslist"> 66, </key>
-<key name="edgex111"> 6,7, </key>
-<key name="edgex112"> 6,7, </key>
-<key name="edgex121"> 6,7, </key>
-<key name="edgex122"> 6,7, </key>
-<key name="edgey11"> 6,7, </key>
-<key name="edgey12"> 6,7, </key>
-<key name="edgey21"> 6,7, </key>
-<key name="edgey22"> 6,7, </key>
-<key name="edgez111"> 6,7, </key>
-<key name="edgez121"> 6,7, </key>
-<key name="edgez211"> 6,7, </key>
-<key name="edgez221"> 6,7, </key>
-<key name="edit"> 6,8,29,56,34,37, </key>
-<key name="effect"> 48, </key>
-<key name="eith"> 61,42, </key>
-<key name="element"> 12,13,14,15,0,16,1,17,18,19,2,4,20,21,24,25,7,8,26,27,28,29,10,11,55,56,32,31,58,59,35,60,33,36,61,63,38,39,64,40,65,42,43,44,45,46,66,47,48,50,51,69,53, </key>
-<key name="els"> 7,56,60,61, </key>
-<key name="enabl"> 65, </key>
-<key name="encapsulat"> 23, </key>
-<key name="encounter"> 61, </key>
-<key name="end"> 12,18,7,59,36,65,42,47, </key>
-<key name="enough"> 42, </key>
-<key name="ent"> 24,26,27,30,49, </key>
-<key name="entiti"> 13,14, </key>
-<key name="entity"> 13,0,9,65, </key>
-<key name="equal"> 18,32,61,65,42,44, </key>
-<key name="equidistant"> 18, </key>
-<key name="equilateral"> 19, </key>
+<key name="downward"> 53, </key>
+<key name="dr"> 61, </key>
+<key name="drag"> 53, </key>
+<key name="drawn"> 53, </key>
+<key name="dump"> 0,53, </key>
+<key name="duplicat"> 12, </key>
+<key name="dx"> 61, </key>
+<key name="dy"> 61, </key>
+<key name="e"> 20,23,24,26,12,63,64,43,49, </key>
+<key name="e_arc"> 8, </key>
+<key name="e_straight"> 8, </key>
+<key name="e1"> 61, </key>
+<key name="easi"> 22, </key>
+<key name="easy"> 62, </key>
+<key name="edg"> 13,14,15,16,0,17,1,19,20,3,4,22,23,6,25,26,8,27,28,10,12,55,56,57,58,33,32,60,61,63,37,64,66,68,43,45,70,49,50,72,54, </key>
+<key name="edge_"> 61, </key>
+<key name="edge_bezierrr"> 61, </key>
+<key name="edge_bezierrr_mesh"> 61, </key>
+<key name="edge_circl"> 61, </key>
+<key name="edge_circle_mesh"> 61, </key>
+<key name="edge_straight"> 61, </key>
+<key name="edge_straight_mesh"> 61, </key>
+<key name="edge1"> 70, </key>
+<key name="edgeslist"> 70, </key>
+<key name="edgex"> 6,8, </key>
+<key name="edit"> 6,9,30,57,35,38, </key>
+<key name="edition"> 62,69, </key>
+<key name="editor_1"> 61, </key>
+<key name="editor_2"> 61, </key>
+<key name="editor_3"> 61, </key>
+<key name="editor_4"> 61, </key>
+<key name="editor_5"> 61, </key>
+<key name="editor_6"> 61, </key>
+<key name="editor_7"> 61, </key>
+<key name="ee_1"> 61, </key>
+<key name="ee_2"> 61, </key>
+<key name="ee_3"> 61, </key>
+<key name="ee_4"> 61, </key>
+<key name="ee_5"> 61, </key>
+<key name="ee_6"> 61, </key>
+<key name="ee_7"> 61, </key>
+<key name="effect"> 49, </key>
+<key name="eith"> 64,43, </key>
+<key name="element"> 13,14,15,16,0,17,1,18,19,20,2,4,21,22,7,25,26,8,9,27,28,29,30,11,12,56,57,33,32,59,60,36,61,63,37,34,64,66,39,40,67,41,68,43,44,45,46,47,70,48,49,51,52,73,54, </key>
+<key name="els"> 6,8,61,64, </key>
+<key name="empty"> 61, </key>
+<key name="enabl"> 68, </key>
+<key name="encapsulat"> 24, </key>
+<key name="encounter"> 64, </key>
+<key name="end"> 13,19,8,60,37,68,43,48, </key>
+<key name="enough"> 43, </key>
+<key name="ent"> 25,27,28,31,50, </key>
+<key name="entiti"> 14,15, </key>
+<key name="entity"> 14,0,10,68, </key>
+<key name="equal"> 19,33,64,68,43,45, </key>
+<key name="equidistant"> 19, </key>
+<key name="equilateral"> 20, </key>
<key name="eras"> 0, </key>
-<key name="etc"> 15,2,25,48, </key>
-<key name="even"> 22,32, </key>
-<key name="eventual"> 61, </key>
-<key name="every"> 53, </key>
-<key name="everyth"> 22, </key>
-<key name="exampl"> 13,2,22,24,61,50, </key>
-<key name="exce"> 18, </key>
-<key name="exceed"> 44, </key>
-<key name="except"> 42,52, </key>
-<key name="exist"> 12,20,24,25,29,61,65,48, </key>
-<key name="existenc"> 22, </key>
-<key name="exponent"> 18, </key>
-<key name="export"> 0,6,30,59,52, </key>
-<key name="exportation"> 30, </key>
+<key name="error"> 61, </key>
+<key name="etc"> 16,2,26,49, </key>
+<key name="even"> 23,33,63, </key>
+<key name="eventual"> 64, </key>
+<key name="every"> 54, </key>
+<key name="everyth"> 23, </key>
+<key name="ex21_lamp"> 69, </key>
+<key name="examin"> 12, </key>
+<key name="exampl"> 14,2,23,6,25,12,64,62,69,51, </key>
+<key name="exce"> 19, </key>
+<key name="exceed"> 45, </key>
+<key name="except"> 43,53, </key>
+<key name="exist"> 13,21,25,26,30,64,68,49, </key>
+<key name="existenc"> 23, </key>
+<key name="explod"> 61, </key>
+<key name="exponent"> 19, </key>
+<key name="export"> 0,6,31,60,53, </key>
+<key name="exportation"> 31, </key>
<key name="exportm"> 6, </key>
-<key name="extend"> 52,53, </key>
-<key name="extreme"> 18, </key>
+<key name="extend"> 53,54, </key>
+<key name="external"> 12, </key>
+<key name="extreme"> 19, </key>
<key name="extremiti"> 5, </key>
-<key name="extrud"> 10,11,60,64, </key>
-<key name="extrusion"> 10,11,60,66, </key>
-<key name="extrusionalongpathobject"> 60,66, </key>
-<key name="extrusionsweepobject"> 60, </key>
-<key name="f"> 18,7, </key>
-<key name="fac"> 12,13,14,0,16,18,2,3,21,22,6,23,24,7,9,54,56,32,59,60,36,61,63,65,42,66,51,68,53, </key>
-<key name="face_1"> 60, </key>
-<key name="face_2"> 60, </key>
-<key name="face1"> 7,60,66, </key>
-<key name="facelist"> 63, </key>
-<key name="facesrotat"> 60, </key>
-<key name="facessmooth"> 60, </key>
-<key name="facestritoquad"> 60, </key>
-<key name="facex11"> 6,7, </key>
-<key name="facex21"> 6,7, </key>
-<key name="facey111"> 6,7, </key>
-<key name="facey121"> 6,7, </key>
-<key name="facez11"> 6,7, </key>
-<key name="facez12"> 6,7, </key>
-<key name="factor"> 18,25, </key>
-<key name="factoryserv"> 6,7,56,60,63,68, </key>
-<key name="fail"> 60, </key>
-<key name="far"> 42, </key>
-<key name="fashion"> 11, </key>
-<key name="fast"> 44, </key>
-<key name="featur"> 24, </key>
-<key name="field"> 16,1,20,24,26,27,39,65,42,44,48,49, </key>
-<key name="fifth"> 42, </key>
-<key name="fil"> 30,61,65, </key>
-<key name="fill"> 63,39,42, </key>
-<key name="filt"> 20,24,25,65,48, </key>
-<key name="filter"> 24,65, </key>
-<key name="fin"> 18, </key>
-<key name="find"> 30,61,42, </key>
-<key name="findcoincidentnod"> 66, </key>
-<key name="findorloadcomponent"> 6,7,56,60,63,68, </key>
-<key name="finenes"> 18, </key>
-<key name="first"> 1,18,22,56,60,36,61,42, </key>
-<key name="fit"> 52, </key>
-<key name="fiv"> 60, </key>
-<key name="fix"> 13,6,7,44,66, </key>
-<key name="flag"> 61, </key>
-<key name="fold"> 22,23, </key>
-<key name="follow"> 12,13,14,16,1,2,20,22,23,24,25,26,27,28,29,10,11,34,61,38,39,64,40,42,44,45,47,48,49,50,51, </key>
-<key name="font"> 52, </key>
-<key name="form"> 1,26,29,61,42, </key>
-<key name="format"> 0,30,59,52, </key>
-<key name="formula"> 18,19,2, </key>
-<key name="four"> 13,19,53, </key>
-<key name="fourth"> 60, </key>
-<key name="fram"> 52, </key>
-<key name="fre"> 13,15,54,55,59,63,42,44,66, </key>
-<key name="function"> 13, </key>
-<key name="functionaliti"> 52, </key>
-<key name="functionality"> 22,30,58,34,42,52, </key>
-<key name="futur"> 18, </key>
-<key name="g"> 23, </key>
-<key name="gaus"> 52, </key>
-<key name="generat"> 12,13,15,18,22,59,36,61, </key>
-<key name="generation"> 10,61,64, </key>
-<key name="geom"> 13,7,59,60, </key>
-<key name="geometric"> 13,15,7, </key>
-<key name="geometrical"> 12,13,14,18,22,23,24,32,59,33,61,37,40,44,45,47,51, </key>
-<key name="geometry"> 23,24,56,60,44, </key>
-<key name="geompy"> 6,7,56,60,63,66,68, </key>
-<key name="get"> 0,5,22,7,11,61,51, </key>
-<key name="getalgorithm"> 60, </key>
-<key name="getborder"> 63, </key>
-<key name="getelementsid"> 56,63, </key>
-<key name="geterrorcod"> 60, </key>
-<key name="getid"> 6, </key>
-<key name="getlistofid"> 56, </key>
-<key name="getmaxelementarea"> 6,7, </key>
-<key name="getmaxelementvolum"> 6,7, </key>
-<key name="getmesh"> 60,66, </key>
-<key name="getmesheditor"> 60,63,66, </key>
-<key name="getnam"> 6,7, </key>
-<key name="getnumberofsegment"> 6,7, </key>
-<key name="getpattern"> 60, </key>
-<key name="gg"> 7, </key>
-<key name="giv"> 65,51, </key>
-<key name="given"> 18,32,42, </key>
-<key name="global"> 52, </key>
-<key name="go"> 60, </key>
-<key name="good"> 44, </key>
-<key name="got"> 61, </key>
-<key name="graduat"> 52, </key>
+<key name="extrud"> 11,12,61,67, </key>
+<key name="extrusion"> 11,12,61,70, </key>
+<key name="extrusionalongpath"> 61, </key>
+<key name="extrusionalongpathobject"> 70, </key>
+<key name="extrusionsweepobject"> 61, </key>
+<key name="exy"> 8, </key>
+<key name="f"> 19,8, </key>
+<key name="f1"> 61, </key>
+<key name="f2"> 61, </key>
+<key name="f3"> 61, </key>
+<key name="f4"> 61, </key>
+<key name="f5"> 61, </key>
+<key name="fac"> 13,14,15,0,17,19,2,3,22,23,6,24,25,8,10,12,55,57,33,60,61,63,37,64,66,68,43,69,70,52,72,54, </key>
+<key name="face_1"> 61, </key>
+<key name="face_2"> 61, </key>
+<key name="face1"> 8,70, </key>
+<key name="face2"> 70, </key>
+<key name="facelist"> 66, </key>
+<key name="faceslist1"> 70, </key>
+<key name="faceslist2"> 70, </key>
+<key name="facesrotat"> 61, </key>
+<key name="factor"> 19,26, </key>
+<key name="factoryserv"> 62, </key>
+<key name="fail"> 61, </key>
+<key name="far"> 43, </key>
+<key name="fashion"> 12, </key>
+<key name="fast"> 45, </key>
+<key name="featur"> 25, </key>
+<key name="ff"> 61, </key>
+<key name="ff_1"> 61, </key>
+<key name="ff_2"> 61, </key>
+<key name="ff_3"> 61, </key>
+<key name="ff_4"> 61, </key>
+<key name="ff_5"> 61, </key>
+<key name="ff_6"> 61, </key>
+<key name="ff_7"> 61, </key>
+<key name="field"> 17,1,21,25,27,28,40,68,43,45,49,50, </key>
+<key name="fifth"> 43, </key>
+<key name="fil"> 6,31,64,68, </key>
+<key name="fill"> 66,40,43, </key>
+<key name="filt"> 21,25,26,68,49, </key>
+<key name="filter"> 25,68, </key>
+<key name="fin"> 19,63, </key>
+<key name="find"> 31,64,43, </key>
+<key name="findcoincidentnod"> 70, </key>
+<key name="findorloadcomponent"> 62, </key>
+<key name="finenes"> 19,63, </key>
+<key name="first"> 1,19,23,6,12,57,61,37,64,43, </key>
+<key name="firstnodeid1"> 70, </key>
+<key name="firstnodeid2"> 70, </key>
+<key name="firstnodeidonfreebord"> 70, </key>
+<key name="firstnodeidonsid"> 70, </key>
+<key name="fit"> 53, </key>
+<key name="fiv"> 61, </key>
+<key name="fix"> 14,6,8,45, </key>
+<key name="flag"> 64, </key>
+<key name="fold"> 23,24, </key>
+<key name="follow"> 13,14,15,17,1,2,21,23,24,7,25,26,27,28,29,30,11,12,35,61,64,39,40,67,41,43,45,46,48,49,50,51,52, </key>
+<key name="font"> 53, </key>
+<key name="form"> 1,27,30,64,43, </key>
+<key name="format"> 0,31,60,53, </key>
+<key name="formula"> 19,20,2, </key>
+<key name="four"> 14,20,54, </key>
+<key name="fourth"> 61, </key>
+<key name="fram"> 53, </key>
+<key name="fre"> 14,16,55,56,60,66,43,45,70, </key>
+<key name="function"> 14,62, </key>
+<key name="functionaliti"> 53, </key>
+<key name="functionality"> 23,7,31,59,35,43,53, </key>
+<key name="fus"> 69, </key>
+<key name="futur"> 19, </key>
+<key name="g"> 24, </key>
+<key name="gaus"> 53, </key>
+<key name="gen"> 61,66, </key>
+<key name="generat"> 13,14,16,19,23,60,37,64, </key>
+<key name="generation"> 6,11,64,67,69, </key>
+<key name="geom"> 14,60, </key>
+<key name="geometric"> 14,16,8, </key>
+<key name="geometrical"> 13,14,15,19,23,24,25,33,60,34,64,38,41,45,46,48,52, </key>
+<key name="geometry"> 24,7,25,57,61,69,45, </key>
+<key name="geompy"> 6,8,57,61,66,69,70,72, </key>
+<key name="get"> 0,5,23,8,12,57,64,52, </key>
+<key name="getborder"> 66, </key>
+<key name="getedgenearpoint"> 6,8, </key>
+<key name="getelementsid"> 57,66, </key>
+<key name="geterrorcod"> 61, </key>
+<key name="getlistofid"> 57, </key>
+<key name="getmesh"> 6,61,66,70,72, </key>
+<key name="getmesheditor"> 61,66,70, </key>
+<key name="getnam"> 62, </key>
+<key name="getpattern"> 61, </key>
+<key name="ghs3d"> 62, </key>
+<key name="giv"> 68,52, </key>
+<key name="given"> 19,33,61,43, </key>
+<key name="global"> 8,53, </key>
+<key name="glu"> 66, </key>
+<key name="good"> 6,45, </key>
+<key name="got"> 64, </key>
+<key name="graduat"> 53, </key>
<key name="graphical"> 0, </key>
-<key name="great"> 18,52, </key>
-<key name="greatest"> 19,2, </key>
-<key name="green"> 24, </key>
-<key name="group"> 20,21,24,25,8,29,11,56,34,59,60,63,65,44,47,48,50,51, </key>
-<key name="group1"> 50, </key>
-<key name="group12"> 50, </key>
-<key name="group12a"> 50, </key>
-<key name="group12b"> 50, </key>
-<key name="group2"> 50, </key>
-<key name="grouprotat"> 60, </key>
-<key name="groupsmooth"> 60, </key>
-<key name="groupsofnod"> 66, </key>
-<key name="grouptritoquad"> 60, </key>
-<key name="h"> 53, </key>
-<key name="half"> 19,53, </key>
+<key name="great"> 19,53, </key>
+<key name="greatest"> 20,2, </key>
+<key name="green"> 25,12, </key>
+<key name="group"> 21,22,25,26,9,30,12,57,35,60,61,66,68,69,45,48,49,51,52, </key>
+<key name="group_nam"> 69, </key>
+<key name="group1"> 51, </key>
+<key name="group12"> 51, </key>
+<key name="group12a"> 51, </key>
+<key name="group12b"> 51, </key>
+<key name="group2"> 51, </key>
+<key name="grouprotat"> 61, </key>
+<key name="groupsmooth"> 61, </key>
+<key name="groupsofnod"> 70, </key>
+<key name="grouptri"> 61, </key>
+<key name="growth"> 63, </key>
+<key name="h"> 54, </key>
+<key name="half"> 20,54, </key>
<key name="halv"> 5, </key>
-<key name="hav"> 19,32,36,61, </key>
-<key name="hedron"> 60, </key>
-<key name="height"> 53, </key>
-<key name="helical"> 11, </key>
-<key name="help"> 15, </key>
-<key name="henc"> 61, </key>
-<key name="her"> 61, </key>
-<key name="hexa"> 6,7, </key>
-<key name="hexa_3d"> 7, </key>
-<key name="hexa3d"> 7, </key>
-<key name="hexagon"> 11, </key>
-<key name="hexahedral"> 14,6,7, </key>
-<key name="hexahedralization"> 22, </key>
-<key name="hexahedrical"> 6,7, </key>
-<key name="hexahedron"> 13,14,16,2,7,60,33,68, </key>
-<key name="hh"> 60, </key>
-<key name="hid"> 0,52, </key>
-<key name="high"> 13, </key>
-<key name="highlight"> 3,4,20,24,25,54,55,48, </key>
-<key name="hmax"> 19, </key>
-<key name="hol"> 55, </key>
-<key name="hold"> 61, </key>
-<key name="how"> 11,37, </key>
-<key name="hyp"> 23, </key>
-<key name="hyp1"> 6,63,68, </key>
-<key name="hyp2"> 6,63,68, </key>
-<key name="hyp3"> 6,68, </key>
-<key name="hyp4"> 6,68, </key>
-<key name="hyparea"> 6,7, </key>
-<key name="hypnbseg"> 6,7,56, </key>
-<key name="hypothes"> 12,0,18,22,23,7,56,32,59,36,37, </key>
-<key name="hypothesi"> 12,18,22,6,7,56,32,33,36,37,66,68, </key>
-<key name="hypvolum"> 6,7, </key>
-<key name="i"> 19,22,25,56,60,61,63,42,48, </key>
-<key name="icon"> 29,38,41, </key>
-<key name="id"> 0,18,20,24,25,26,27,28,10,11,64,42,44,48,49, </key>
-<key name="id_arc"> 7, </key>
-<key name="id_circl"> 60,66, </key>
-<key name="id_fac"> 7, </key>
-<key name="id_face1"> 7,60,66, </key>
-<key name="idbox"> 6,7,56,63,68, </key>
-<key name="idcomp"> 66, </key>
-<key name="idea"> 11, </key>
-<key name="idedg"> 6,68, </key>
-<key name="idfac"> 56, </key>
-<key name="idtoobject"> 6,63,66,68, </key>
-<key name="if"> 13,16,5,22,6,23,7,10,11,56,32,60,36,61,37,38,64,65,42,44,48,52, </key>
-<key name="ii"> 60, </key>
-<key name="imag"> 0,11,52, </key>
-<key name="imp"> 13, </key>
-<key name="import"> 6,7,56,30,59,60,63,66,68, </key>
-<key name="importation"> 30, </key>
-<key name="importcomponentgui"> 6,7,63, </key>
-<key name="includ"> 13,51, </key>
-<key name="increas"> 6,7,66, </key>
-<key name="index"> 24,61, </key>
-<key name="indic"> 61, </key>
-<key name="indicat"> 53, </key>
-<key name="info"> 0,51,68, </key>
-<key name="information"> 13,0,29,51,68, </key>
-<key name="init"> 6,7,63, </key>
-<key name="init_geom"> 60, </key>
-<key name="initial"> 11,65,45,50, </key>
-<key name="initializ"> 6,7,56, </key>
-<key name="input"> 1,18, </key>
-<key name="inscrib"> 19, </key>
-<key name="insert"> 65,42, </key>
-<key name="instead"> 36,61, </key>
-<key name="intact"> 8, </key>
-<key name="integ"> 24, </key>
-<key name="intend"> 42, </key>
-<key name="interest"> 13, </key>
-<key name="intermediat"> 42, </key>
-<key name="internal"> 61, </key>
-<key name="intersect"> 61,50, </key>
-<key name="intersectgroup"> 56, </key>
-<key name="intersection"> 56,61,50, </key>
-<key name="introduc"> 12,24,36, </key>
-<key name="introduction"> 59, </key>
-<key name="invers"> 13,26,60, </key>
-<key name="inversediag"> 60, </key>
-<key name="inversion"> 26,60, </key>
-<key name="invisibl"> 67, </key>
-<key name="isdon"> 60, </key>
-<key name="iso"> 61, </key>
-<key name="isolin"> 61, </key>
-<key name="isometric"> 52, </key>
-<key name="isplanarfac"> 7,60,66, </key>
-<key name="item"> 16,1,20,21,25,26,27,29,10,11,30,34,61,39,64,40,42,44,45,47,48,49,50, </key>
-<key name="iteration"> 11,44, </key>
-<key name="iterativ"> 44, </key>
-<key name="join"> 43, </key>
-<key name="jpeg"> 0,52, </key>
-<key name="jpg"> 0,52, </key>
-<key name="just"> 1,61,38, </key>
-<key name="k"> 18,19, </key>
-<key name="keep"> 11,44,45, </key>
-<key name="key"> 61, </key>
-<key name="keyboard"> 25, </key>
-<key name="know"> 61, </key>
-<key name="ko"> 60, </key>
-<key name="l"> 53, </key>
-<key name="label"> 52, </key>
-<key name="laplacian"> 44, </key>
-<key name="last"> 1,18,36,42, </key>
-<key name="lastnodeid"> 60, </key>
-<key name="lay"> 10,61,64, </key>
-<key name="lcc"> 6,7,56,60,63,68, </key>
-<key name="learn"> 51, </key>
-<key name="least"> 61,44, </key>
-<key name="leav"> 22,8, </key>
-<key name="left"> 0,11,61,52, </key>
-<key name="legth"> 63, </key>
-<key name="len"> 56,63, </key>
-<key name="length"> 12,15,18,19,6,7,57,32,31,59,63,42,66,52,53, </key>
-<key name="lengthfromedg"> 7,60,66, </key>
-<key name="les"> 65,42,44, </key>
-<key name="let"> 11, </key>
-<key name="level"> 12,16, </key>
-<key name="libnetgenengin"> 7, </key>
-<key name="library"> 24,65, </key>
-<key name="libstdmeshersengin"> 6,7,56,60,63,68, </key>
-<key name="lik"> 16,2,28,42, </key>
-<key name="limit"> 61,42,44, </key>
-<key name="lin"> 13,1,18,10,36,61,64,43, </key>
-<key name="link"> 42, </key>
-<key name="list"> 0,16,20,24,25,8,11,65,48, </key>
-<key name="lk"> 18, </key>
-<key name="ll"> 52, </key>
-<key name="load"> 61,65, </key>
-<key name="loadfromfac"> 60, </key>
-<key name="local"> 6,23,7,59,36,66, </key>
-<key name="locallength"> 7, </key>
-<key name="locat"> 61,42, </key>
-<key name="location"> 18,27,30,44, </key>
-<key name="lock"> 25,44,52, </key>
-<key name="longest"> 19, </key>
-<key name="look"> 28,61,65, </key>
-<key name="low"> 13,18, </key>
-<key name="ly"> 61, </key>
-<key name="main"> 20,25,8,11,36,61,65,48,50, </key>
-<key name="makearc"> 7,60,66, </key>
-<key name="makebox"> 6,7,56,63,66,68, </key>
-<key name="makeboxdxdydz"> 60, </key>
-<key name="makecirclethreepnt"> 60,66, </key>
-<key name="makecompound"> 6,7,63,66, </key>
-<key name="makecylinderrh"> 7,60, </key>
-<key name="makeedg"> 6,7, </key>
-<key name="makefac"> 7,60,66, </key>
-<key name="makehexa"> 6,7, </key>
-<key name="makemesh"> 60, </key>
-<key name="makepolygon"> 60, </key>
-<key name="makequad"> 6,7, </key>
-<key name="makesketch"> 7, </key>
-<key name="makevector"> 7,60,66, </key>
-<key name="makevertex"> 6,7,60,66, </key>
-<key name="makewir"> 7,60,66, </key>
-<key name="manag"> 12,16, </key>
-<key name="manual"> 24,61, </key>
-<key name="map"> 32,60,61, </key>
-<key name="mark"> 52, </key>
-<key name="mas"> 11, </key>
-<key name="math"> 60,66, </key>
-<key name="max"> 12,7,32,59,33,44, </key>
-<key name="max_element_area"> 60, </key>
-<key name="maxelementarea"> 6,7,60,63,68, </key>
-<key name="maxelementarea_500"> 6, </key>
-<key name="maxelementarea_800"> 7, </key>
-<key name="maxelementvolum"> 6,7, </key>
-<key name="maxelementvolume_500"> 6, </key>
-<key name="maxelementvolume_900"> 7, </key>
-<key name="maximum"> 18,7,32,33,43,44,51, </key>
-<key name="mean"> 13, </key>
-<key name="meaningful"> 13, </key>
-<key name="measur"> 53, </key>
-<key name="meet"> 25,48, </key>
-<key name="mefisto_2d"> 6,7,63,68, </key>
-<key name="mefisto2d"> 6,7, </key>
-<key name="menu"> 16,1,18,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,34,36,61,38,39,64,40,41,65,42,44,45,47,48,49,50,51, </key>
-<key name="merg"> 58,34,42,66, </key>
-<key name="mergeequalelement"> 66, </key>
-<key name="mergenod"> 66, </key>
-<key name="mesh"> 12,13,14,15,0,16,1,17,18,19,2,3,4,20,5,21,22,6,23,24,25,7,8,26,27,28,29,10,11,54,55,56,30,32,31,58,34,59,35,60,33,36,61,62,63,37,38,39,64,40,41,65,42,43,44,45,46,66,47,48,49,50,51,68,69,52,53, </key>
-<key name="mesh_1"> 22,60, </key>
-<key name="mesh_2"> 60, </key>
-<key name="mesh_borders_at_multi"> 63, </key>
-<key name="mesh_freebord"> 63, </key>
-<key name="meshbox"> 6,7, </key>
-<key name="mesheditor"> 60, </key>
+<key name="hasangl"> 61, </key>
+<key name="hasrefpoint"> 61, </key>
+<key name="hav"> 20,33,37,64, </key>
+<key name="hedron"> 61, </key>
+<key name="height"> 69,54, </key>
+<key name="helical"> 12, </key>
+<key name="help"> 16, </key>
+<key name="henc"> 64, </key>
+<key name="her"> 64, </key>
+<key name="hexa"> 8, </key>
+<key name="hexahedral"> 15,6,8, </key>
+<key name="hexahedralization"> 23, </key>
+<key name="hexahedrical"> 8, </key>
+<key name="hexahedron"> 14,15,17,2,8,61,34,72, </key>
+<key name="hh"> 61, </key>
+<key name="hid"> 0,53, </key>
+<key name="high"> 14, </key>
+<key name="highlight"> 3,4,21,25,26,55,56,49, </key>
+<key name="hmax"> 20, </key>
+<key name="hol"> 56,61, </key>
+<key name="hold"> 64, </key>
+<key name="homogeneou"> 63, </key>
+<key name="how"> 15,12,63,38, </key>
+<key name="hyp"> 24, </key>
+<key name="hyp1"> 6, </key>
+<key name="hyp1d"> 61, </key>
+<key name="hyp2"> 6, </key>
+<key name="hyp3"> 6, </key>
+<key name="hyp4"> 6, </key>
+<key name="hypothes"> 13,0,19,23,6,24,8,33,60,61,63,37,38, </key>
+<key name="hypothesi"> 13,19,23,6,8,33,61,37,34,38,69, </key>
+<key name="i"> 15,20,23,26,12,57,61,63,64,66,43,49, </key>
+<key name="icon"> 30,39,42, </key>
+<key name="id"> 0,19,21,25,26,27,28,29,11,12,57,61,67,43,45,49,50, </key>
+<key name="id_circl"> 70, </key>
+<key name="id_fac"> 8, </key>
+<key name="id_face1"> 70, </key>
+<key name="idbox"> 6,66, </key>
+<key name="idea"> 12, </key>
+<key name="idl"> 6,57,61,66,70, </key>
+<key name="idsofelement"> 61, </key>
+<key name="idsoffixednod"> 61, </key>
+<key name="idsofside1element"> 70, </key>
+<key name="idsofside2element"> 70, </key>
+<key name="if"> 14,17,5,23,6,24,7,8,11,12,57,33,61,63,37,64,66,38,39,67,68,43,45,49,53, </key>
+<key name="ii"> 61, </key>
+<key name="imag"> 0,12,53, </key>
+<key name="imp"> 14, </key>
+<key name="import"> 6,8,57,31,60,61,66,69,70,72, </key>
+<key name="importation"> 31, </key>
+<key name="importcomponentgui"> 61, </key>
+<key name="includ"> 14,52, </key>
+<key name="increas"> 6,8, </key>
+<key name="index"> 25,64, </key>
+<key name="indic"> 64, </key>
+<key name="indicat"> 54, </key>
+<key name="info"> 0,52,72, </key>
+<key name="information"> 14,0,6,7,30,52,72, </key>
+<key name="init"> 61, </key>
+<key name="initial"> 12,61,68,46,51, </key>
+<key name="input"> 1,19, </key>
+<key name="inscrib"> 20, </key>
+<key name="insert"> 68,43, </key>
+<key name="instead"> 6,37,64, </key>
+<key name="int"> 62, </key>
+<key name="intact"> 9, </key>
+<key name="integ"> 25, </key>
+<key name="intend"> 43, </key>
+<key name="interest"> 14, </key>
+<key name="interfac"> 6,57,61,66,69,70, </key>
+<key name="intermediat"> 43, </key>
+<key name="internal"> 64, </key>
+<key name="intersect"> 64,51, </key>
+<key name="intersectgroup"> 57, </key>
+<key name="intersection"> 57,64,51, </key>
+<key name="introduc"> 13,25,37, </key>
+<key name="introduction"> 60,69, </key>
+<key name="invers"> 14,27,61, </key>
+<key name="inversediag"> 61, </key>
+<key name="inversion"> 27,61, </key>
+<key name="invisibl"> 71, </key>
+<key name="is3d"> 8, </key>
+<key name="isdon"> 61, </key>
+<key name="iso"> 64, </key>
+<key name="isolin"> 64, </key>
+<key name="isometric"> 53, </key>
+<key name="isplanarfac"> 8,70, </key>
+<key name="item"> 17,1,21,22,7,26,27,28,30,11,12,31,35,64,40,67,41,43,45,46,48,49,50,51, </key>
+<key name="iteration"> 12,45, </key>
+<key name="iterativ"> 45, </key>
+<key name="iv"> 61, </key>
+<key name="j"> 15,57,66, </key>
+<key name="join"> 44, </key>
+<key name="jpeg"> 0,53, </key>
+<key name="jpg"> 0,53, </key>
+<key name="just"> 1,64,39, </key>
+<key name="k"> 15,19,20, </key>
+<key name="keep"> 12,45,46, </key>
+<key name="key"> 64, </key>
+<key name="keyboard"> 26, </key>
+<key name="know"> 64, </key>
+<key name="ko"> 61, </key>
+<key name="l"> 54, </key>
+<key name="label"> 53, </key>
+<key name="laplacian"> 45, </key>
+<key name="last"> 1,19,12,37,43, </key>
+<key name="lastnodeid1"> 70, </key>
+<key name="lastnodeid2"> 70, </key>
+<key name="lastnodeidonfreebord"> 70, </key>
+<key name="lastnodeidonsid"> 70, </key>
+<key name="lay"> 11,64,67, </key>
+<key name="lcc"> 62, </key>
+<key name="learn"> 52, </key>
+<key name="least"> 64,45, </key>
+<key name="leav"> 23,9, </key>
+<key name="left"> 0,12,64,53, </key>
+<key name="len"> 57,61,66, </key>
+<key name="length"> 13,16,19,20,6,8,58,33,32,60,66,43,53,54, </key>
+<key name="length_margin"> 66, </key>
+<key name="lengthfromedg"> 8,69,70, </key>
+<key name="les"> 68,43,45, </key>
+<key name="level"> 13,17,63, </key>
+<key name="library"> 25,68, </key>
+<key name="libstdmeshersengin"> 61, </key>
+<key name="lik"> 17,2,29,43, </key>
+<key name="limit"> 64,43,45, </key>
+<key name="lin"> 14,1,19,11,37,64,67,44, </key>
+<key name="linear"> 12,63, </key>
+<key name="link"> 43, </key>
+<key name="list"> 0,17,21,25,26,9,12,68,49, </key>
+<key name="lk"> 19, </key>
+<key name="ll"> 53, </key>
+<key name="load"> 64,68, </key>
+<key name="loadfromfac"> 61, </key>
+<key name="local"> 6,24,8,60,37, </key>
+<key name="locallength"> 8,69, </key>
+<key name="locat"> 64,43, </key>
+<key name="location"> 19,28,31,45, </key>
+<key name="lock"> 26,45,53, </key>
+<key name="longest"> 20, </key>
+<key name="look"> 29,12,64,68, </key>
+<key name="low"> 14,19,63, </key>
+<key name="ly"> 64, </key>
+<key name="main"> 21,26,9,12,37,64,68,49,51, </key>
+<key name="makearc"> 8,70, </key>
+<key name="makebezi"> 61, </key>
+<key name="makebox"> 6,57,66,69,70,72, </key>
+<key name="makeboxdxdydz"> 6,8,61, </key>
+<key name="makecirclethreepnt"> 61,70, </key>
+<key name="makecompound"> 66,70, </key>
+<key name="makecon"> 69, </key>
+<key name="makecylind"> 69, </key>
+<key name="makecylinderrh"> 8, </key>
+<key name="makeedg"> 8,61, </key>
+<key name="makefac"> 8,70, </key>
+<key name="makefus"> 69, </key>
+<key name="makegluefac"> 66, </key>
+<key name="makemesh"> 61, </key>
+<key name="makepolygon"> 61, </key>
+<key name="makepolylin"> 61, </key>
+<key name="makequadmesh2"> 61, </key>
+<key name="makeshell"> 66, </key>
+<key name="makesketch"> 8, </key>
+<key name="maketranslation"> 66, </key>
+<key name="makevector"> 8,70, </key>
+<key name="makevectordxdydz"> 69, </key>
+<key name="makevertex"> 6,8,61,69,70, </key>
+<key name="makewir"> 8,70, </key>
+<key name="manag"> 13,17, </key>
+<key name="manual"> 25,63,64, </key>
+<key name="map"> 15,33,61,64, </key>
+<key name="mark"> 53, </key>
+<key name="mas"> 12, </key>
+<key name="math"> 61,70, </key>
+<key name="max"> 13,8,33,60,63,34,45, </key>
+<key name="maxaspectratio"> 61, </key>
+<key name="maxelementarea"> 6,8,61,66,72, </key>
+<key name="maxelementvolum"> 6,8,69,72, </key>
+<key name="maximum"> 19,8,33,63,34,44,45,52, </key>
+<key name="maxnbofiteration"> 61, </key>
+<key name="mean"> 14,63, </key>
+<key name="meaningful"> 14, </key>
+<key name="measur"> 54, </key>
+<key name="medium"> 7, </key>
+<key name="meet"> 26,49, </key>
+<key name="mefisto"> 15,8, </key>
+<key name="menu"> 17,1,19,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,35,37,64,39,40,67,41,42,68,43,45,46,48,49,50,51,52, </key>
+<key name="merg"> 59,35,43,70, </key>
+<key name="mergeequalelement"> 70, </key>
+<key name="mergenod"> 70, </key>
+<key name="mesh"> 13,14,15,16,0,17,1,18,19,20,2,3,4,21,5,22,23,6,24,7,25,26,8,9,27,28,29,30,11,12,55,56,57,31,33,32,59,35,60,36,61,63,37,34,64,65,66,38,39,40,67,41,42,62,68,43,44,69,45,46,47,70,48,49,50,51,52,72,73,53,54, </key>
+<key name="mesh_1"> 23,61, </key>
+<key name="mesh_2"> 61, </key>
+<key name="mesh_borders_at_multi"> 66, </key>
+<key name="mesh_free_border"> 66, </key>
+<key name="mesh_length_1d"> 66, </key>
+<key name="mesh_length_2d"> 66, </key>
+<key name="mesh_nam"> 61, </key>
+<key name="mesh1d"> 61, </key>
+<key name="mesh1d_tool"> 61, </key>
+<key name="meshbox"> 6,72, </key>
+<key name="mesheditor"> 61, </key>
<key name="meshm"> 6, </key>
-<key name="method"> 60,44, </key>
-<key name="middl"> 1,36, </key>
-<key name="minimum"> 15,18,25,59,35,63,42,48, </key>
-<key name="mirror"> 66, </key>
-<key name="mirrorobject"> 66, </key>
-<key name="mod"> 0,18,62, </key>
-<key name="model"> 13,59, </key>
-<key name="modification"> 13,16,1,20,25,26,27,29,10,11,34,59,61,38,39,64,40,42,44,45,47,48,49, </key>
-<key name="modify"> 20,25,29,60,48, </key>
-<key name="modul"> 13,14,1,18,24,59,60,41,52, </key>
-<key name="mous"> 0,24,52, </key>
-<key name="mov"> 27,60, </key>
-<key name="movenod"> 60, </key>
-<key name="multi"> 15,3,4,59,63, </key>
-<key name="multiconnection"> 63, </key>
-<key name="must"> 22,11,61,65,42, </key>
-<key name="myelemid"> 63, </key>
-<key name="mypnt1"> 63, </key>
-<key name="mypnt2"> 63, </key>
-<key name="mystudy"> 6,60,63,68, </key>
-<key name="mystudyid"> 6,7,63, </key>
-<key name="n"> 61,42, </key>
-<key name="nam"> 22,6,23,24,29,56,30,65,50,68,52, </key>
-<key name="nb"> 56,63, </key>
-<key name="nb_segments_1"> 60, </key>
-<key name="nb_vert"> 60, </key>
-<key name="nbedg"> 66,68, </key>
-<key name="nbfac"> 68, </key>
-<key name="nbhexa"> 68, </key>
-<key name="nbnod"> 60,66,68, </key>
-<key name="nbpolygon"> 68, </key>
-<key name="nbpolyhedron"> 68, </key>
-<key name="nbprism"> 68, </key>
-<key name="nbpyramid"> 68, </key>
-<key name="nbquadrangl"> 66,68, </key>
-<key name="nbtetra"> 68, </key>
-<key name="nbtriangl"> 66,68, </key>
-<key name="nbvolum"> 66,68, </key>
-<key name="ne"> 22, </key>
-<key name="necessary"> 16, </key>
-<key name="negativ"> 18, </key>
-<key name="neighbor"> 26,49, </key>
-<key name="netgen"> 14, </key>
-<key name="netgen_3d"> 7, </key>
-<key name="netgen3d"> 7, </key>
-<key name="netgenplugin"> 7, </key>
-<key name="new"> 0,5,22,23,24,27,61,37,65,50, </key>
-<key name="next"> 18,61, </key>
-<key name="nod"> 13,0,16,1,17,18,19,20,21,24,27,28,10,32,34,59,60,61,62,63,38,39,64,65,42,43,44,46,66,51,68,53, </key>
-<key name="nodal"> 61,44, </key>
-<key name="node_id"> 60, </key>
-<key name="node_start_id"> 60, </key>
-<key name="non"> 22, </key>
-<key name="normal"> 45,53, </key>
-<key name="normalisation"> 19, </key>
-<key name="not"> 16,19,22,24,8, </key>
-<key name="noth"> 24, </key>
-<key name="notic"> 13, </key>
-<key name="now"> 5,22,11,60, </key>
-<key name="numb"> 12,13,1,18,6,24,7,10,32,59,61,64,42,44,66,51,68,52, </key>
-<key name="number"> 0,1,28, </key>
-<key name="numberofsegment"> 6,7,56,60,63,66,68, </key>
-<key name="numberofsegments_10"> 6, </key>
-<key name="numberofsegments_7"> 7, </key>
-<key name="numeric"> 25, </key>
-<key name="numerical"> 12, </key>
-<key name="obey"> 42, </key>
-<key name="object"> 12,14,0,16,1,18,5,21,22,23,24,25,7,8,29,30,32,60,33,61,62,37,38,39,40,47,48,51,69,52, </key>
-<key name="objecttoid"> 6,7,63, </key>
-<key name="objet"> 24, </key>
-<key name="obliqu"> 11, </key>
-<key name="obtain"> 16, </key>
-<key name="offset"> 52, </key>
-<key name="ok"> 16,1,20,5,25,8,26,27,29,10,11,30,60,38,39,64,42,44,48,49,50, </key>
-<key name="on"> 13,1,18,22,23,25,8,26,10,54,55,58,36,61,63,37,38,64,65,42,44,45,47,48,50,68, </key>
-<key name="onc"> 48, </key>
-<key name="onto"> 36,61, </key>
-<key name="oo"> 19, </key>
-<key name="opaqu"> 67, </key>
-<key name="operat"> 12, </key>
-<key name="operation"> 14,16,17,18,19,2,3,4,20,23,24,25,8,26,27,29,10,11,54,55,30,57,32,31,58,34,59,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53, </key>
-<key name="opposit"> 12,5,6,25,7,32,36,42,43,66, </key>
-<key name="option"> 13,0,18,45,47, </key>
-<key name="optional"> 22,11, </key>
-<key name="ord"> 13,20,61, </key>
-<key name="ordinary"> 1,36, </key>
-<key name="orientat"> 52, </key>
-<key name="orientation"> 20,5,25,60,48, </key>
-<key name="origin"> 53, </key>
-<key name="other"> 48, </key>
-<key name="otherwis"> 22,32, </key>
-<key name="our"> 22, </key>
-<key name="out"> 52, </key>
-<key name="outlin"> 55, </key>
-<key name="outsid"> 61, </key>
-<key name="own"> 13, </key>
-<key name="pag"> 24,29, </key>
-<key name="pair"> 18, </key>
-<key name="pan"> 52, </key>
-<key name="paramet"> 13,18,2,65,42, </key>
-<key name="parameter"> 12,0,5,11,40,42,52, </key>
-<key name="parametric"> 13,61, </key>
-<key name="parent"> 23, </key>
-<key name="part"> 42,44,52, </key>
-<key name="particular"> 60, </key>
-<key name="particularity"> 13, </key>
-<key name="pas"> 60, </key>
-<key name="path"> 11,60,65,66, </key>
-<key name="pattern"> 60,61, </key>
-<key name="pattern_nam"> 61, </key>
+<key name="method"> 57,61,66,45,70, </key>
+<key name="middl"> 1,12,37, </key>
+<key name="min_angl"> 66, </key>
+<key name="minimum"> 16,19,26,60,36,63,66,43,49, </key>
+<key name="mirror"> 70, </key>
+<key name="mirrorobject"> 70, </key>
+<key name="mod"> 0,19,65, </key>
+<key name="model"> 14,60, </key>
+<key name="modification"> 14,17,1,21,7,26,27,28,30,11,12,35,60,64,39,40,67,41,43,45,46,48,49,50, </key>
+<key name="modify"> 21,26,30,61,49, </key>
+<key name="modul"> 14,15,1,19,6,25,60,61,42,69,53, </key>
+<key name="moment"> 57,61,66,70, </key>
+<key name="mous"> 0,25,53, </key>
+<key name="mov"> 28,61, </key>
+<key name="movenod"> 61, </key>
+<key name="much"> 63, </key>
+<key name="multi"> 16,3,4,60,66, </key>
+<key name="multiconnection"> 66, </key>
+<key name="must"> 23,12,64,68,43, </key>
+<key name="myelemid"> 66, </key>
+<key name="mypnt1"> 66, </key>
+<key name="mypnt2"> 66, </key>
+<key name="mystudyid"> 61, </key>
+<key name="n"> 64,43, </key>
+<key name="n1"> 61, </key>
+<key name="n10"> 61, </key>
+<key name="n11"> 61, </key>
+<key name="n12"> 61, </key>
+<key name="n2"> 61, </key>
+<key name="n23_param"> 8, </key>
+<key name="n3"> 61, </key>
+<key name="n4"> 61, </key>
+<key name="n5"> 61, </key>
+<key name="n6"> 61, </key>
+<key name="n7"> 61, </key>
+<key name="n8"> 61, </key>
+<key name="n9"> 61, </key>
+<key name="na"> 61, </key>
+<key name="nam"> 23,6,24,25,30,57,31,61,63,62,68,69,51,53, </key>
+<key name="nb"> 57,61,63,66, </key>
+<key name="nb_conn"> 66, </key>
+<key name="nb_segments_3"> 61, </key>
+<key name="nb_segments_7"> 61, </key>
+<key name="nb_segments_8"> 61, </key>
+<key name="nb_vert"> 61, </key>
+<key name="nbedg"> 6,70,72, </key>
+<key name="nbfac"> 6,72, </key>
+<key name="nbhexa"> 72, </key>
+<key name="nbnod"> 6,70,72, </key>
+<key name="nbpolygon"> 72, </key>
+<key name="nbpolyhedron"> 72, </key>
+<key name="nbprism"> 72, </key>
+<key name="nbpyramid"> 72, </key>
+<key name="nbquadrangl"> 70,72, </key>
+<key name="nbtetra"> 72, </key>
+<key name="nbtriangl"> 70,72, </key>
+<key name="nbvolum"> 6,70,72, </key>
+<key name="nc"> 61, </key>
+<key name="nd"> 61, </key>
+<key name="ndiagonal"> 61, </key>
+<key name="ne"> 23, </key>
+<key name="necessary"> 17, </key>
+<key name="negativ"> 19, </key>
+<key name="neighbor"> 27,50, </key>
+<key name="netgen"> 15,6,8,63,62,69,72, </key>
+<key name="netgen_2d3d"> 8, </key>
+<key name="new"> 0,5,23,24,25,28,61,64,38,68,51, </key>
+<key name="new_id"> 61, </key>
+<key name="next"> 19,57,61,64,66,70, </key>
+<key name="nid"> 61, </key>
+<key name="nid1"> 61, </key>
+<key name="nid2"> 61, </key>
+<key name="nid3"> 61, </key>
+<key name="nid4"> 61, </key>
+<key name="no_nam"> 62, </key>
+<key name="nod"> 14,0,17,1,18,19,20,21,22,6,7,25,28,29,11,12,33,35,60,61,63,64,65,66,39,40,67,68,43,44,45,47,70,52,72,54, </key>
+<key name="nodal"> 64,45, </key>
+<key name="node_id"> 61, </key>
+<key name="nodeid1ofside1tomerg"> 70, </key>
+<key name="nodeid1ofside2tomerg"> 70, </key>
+<key name="nodeid2ofside1tomerg"> 70, </key>
+<key name="nodeid2ofside2tomerg"> 70, </key>
+<key name="nodestart"> 61, </key>
+<key name="non"> 23, </key>
+<key name="nonam"> 62, </key>
+<key name="normal"> 46,54, </key>
+<key name="normalisation"> 20, </key>
+<key name="not"> 17,20,23,25,9,12, </key>
+<key name="noth"> 25, </key>
+<key name="notic"> 14, </key>
+<key name="now"> 5,23, </key>
+<key name="nsmooth"> 61, </key>
+<key name="numb"> 13,14,1,19,6,25,8,11,33,60,63,64,67,43,45,70,52,72,53, </key>
+<key name="number"> 0,1,29,12, </key>
+<key name="numberofsegment"> 6,8,57,61,66,70,72, </key>
+<key name="numeric"> 26, </key>
+<key name="numerical"> 13, </key>
+<key name="nunit"> 61, </key>
+<key name="obey"> 43, </key>
+<key name="obj"> 62, </key>
+<key name="object"> 13,15,0,17,1,19,5,22,23,24,7,25,26,9,30,31,33,61,63,34,64,65,38,39,40,41,48,49,52,73,53, </key>
+<key name="objecttoid"> 61, </key>
+<key name="objet"> 25, </key>
+<key name="obtain"> 17,66, </key>
+<key name="offset"> 53, </key>
+<key name="ok"> 17,1,21,5,7,26,9,27,28,30,11,12,31,61,39,40,67,43,45,49,50,51, </key>
+<key name="old"> 57,61,66,70, </key>
+<key name="on"> 14,1,19,23,6,24,26,8,9,27,11,12,55,56,59,61,37,64,66,38,39,67,68,43,45,46,48,49,51, </key>
+<key name="onc"> 49, </key>
+<key name="onto"> 37,64, </key>
+<key name="oo"> 20, </key>
+<key name="opaqu"> 71, </key>
+<key name="open"> 66, </key>
+<key name="operat"> 13, </key>
+<key name="operation"> 15,17,18,19,20,2,3,4,21,24,25,26,9,27,28,30,11,12,55,56,31,58,33,32,59,35,60,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54, </key>
+<key name="opposit"> 13,5,6,26,8,33,37,43,44, </key>
+<key name="optimiz"> 63, </key>
+<key name="option"> 14,0,19,46,48, </key>
+<key name="optional"> 23,12, </key>
+<key name="ord"> 14,21,63,64, </key>
+<key name="ordinary"> 1,37, </key>
+<key name="orientat"> 53, </key>
+<key name="orientation"> 21,5,26,61,49, </key>
+<key name="origin"> 54, </key>
+<key name="other"> 49, </key>
+<key name="otherwis"> 23,33, </key>
+<key name="our"> 23, </key>
+<key name="out"> 53, </key>
+<key name="outlin"> 56, </key>
+<key name="outsid"> 64, </key>
+<key name="own"> 14, </key>
+<key name="p5"> 6,8, </key>
+<key name="packag"> 6,57,61,66,62,69,70, </key>
+<key name="pag"> 15,25,30, </key>
+<key name="pair"> 19, </key>
+<key name="pan"> 53, </key>
+<key name="paramet"> 14,19,2,68,43, </key>
+<key name="parameter"> 13,0,5,8,12,63,41,43,53, </key>
+<key name="parametric"> 14,64, </key>
+<key name="parent"> 24, </key>
+<key name="part"> 61,43,45,53, </key>
+<key name="particularity"> 14, </key>
+<key name="pas"> 6,57,61,66, </key>
+<key name="path"> 12,61,68,70, </key>
+<key name="pathmesh"> 61, </key>
+<key name="pathshap"> 61, </key>
+<key name="pattern"> 61,64, </key>
+<key name="pattern_nam"> 64, </key>
+<key name="pentagonal"> 61, </key>
<key name="pentahedron"> 2, </key>
-<key name="perform"> 59,39,42,45,50, </key>
-<key name="perimet"> 19, </key>
-<key name="pi"> 60,66, </key>
-<key name="pictur"> 3,24,11,54,55,58, </key>
-<key name="plac"> 42,52, </key>
-<key name="plan"> 5,63,45,53, </key>
-<key name="planar"> 53, </key>
-<key name="platform"> 24,41, </key>
-<key name="pleas"> 8, </key>
-<key name="plot"> 18, </key>
-<key name="plu"> 10,64, </key>
-<key name="png"> 0,52, </key>
-<key name="point"> 13,1,18,7,11,60,36,61,64,40,42,45,66,47,52,53, </key>
-<key name="point111"> 6,7, </key>
-<key name="point112"> 6,7, </key>
-<key name="point121"> 6,7, </key>
-<key name="point122"> 6,7, </key>
-<key name="point211"> 6,7, </key>
-<key name="point212"> 6,7, </key>
-<key name="point221"> 6,7, </key>
-<key name="point222"> 6,7, </key>
-<key name="pointstruct"> 60,66, </key>
-<key name="polygon"> 16,60,68, </key>
-<key name="polygonal"> 60, </key>
-<key name="polyhedral"> 16,60, </key>
-<key name="polyhedron"> 16,60,68, </key>
-<key name="pop"> 8,28, </key>
-<key name="position"> 13,61,52, </key>
-<key name="posses"> 36, </key>
-<key name="possibility"> 65, </key>
-<key name="possibl"> 12,2,24,61, </key>
-<key name="post"> 52, </key>
-<key name="powerful"> 65, </key>
-<key name="precision"> 16, </key>
-<key name="preferenc"> 12,32,59,62, </key>
-<key name="prefix"> 65, </key>
-<key name="preproces"> 24, </key>
-<key name="pres"> 16,1,11,38,52, </key>
-<key name="present"> 13,0,50, </key>
-<key name="presentation"> 15,0,52, </key>
-<key name="preserv"> 61, </key>
-<key name="preset"> 12, </key>
-<key name="preview"> 16,5,25,61,65, </key>
-<key name="previou"> 18,48, </key>
-<key name="previous"> 23,24,59,61, </key>
-<key name="principl"> 11, </key>
-<key name="print"> 6,7,56,60,63,66,68, </key>
-<key name="prism"> 68, </key>
-<key name="pro"> 52, </key>
-<key name="problem"> 6,7,56, </key>
-<key name="proce"> 22,8, </key>
-<key name="procedur"> 44, </key>
-<key name="proceed"> 37, </key>
-<key name="proces"> 44, </key>
-<key name="produc"> 13,10,64,44, </key>
-<key name="product"> 53, </key>
-<key name="program"> 22, </key>
-<key name="progression"> 18, </key>
-<key name="project"> 61, </key>
-<key name="projection"> 61,53, </key>
-<key name="prompt"> 18, </key>
-<key name="propagat"> 6,7,36,66, </key>
-<key name="propagation"> 12,6,7,36,66,68, </key>
-<key name="properti"> 52, </key>
-<key name="provid"> 0,16,25, </key>
-<key name="pseudo"> 26, </key>
-<key name="pul"> 44, </key>
-<key name="px"> 7,60,66, </key>
-<key name="px1"> 60,66, </key>
-<key name="py"> 7,60,66, </key>
-<key name="py1"> 60,66, </key>
-<key name="pyramid"> 68, </key>
-<key name="pyramidal"> 14, </key>
-<key name="python"> 51, </key>
-<key name="pz"> 7,60,66, </key>
-<key name="pz1"> 60,66, </key>
+<key name="per"> 63, </key>
+<key name="perform"> 60,61,40,43,46,51, </key>
+<key name="perimet"> 20, </key>
+<key name="pi"> 61,70, </key>
+<key name="pictur"> 3,25,12,55,56,59, </key>
+<key name="piec"> 69, </key>
+<key name="plac"> 7,43,53, </key>
+<key name="plan"> 5,66,46,54, </key>
+<key name="planar"> 61,54, </key>
+<key name="platform"> 25,42, </key>
+<key name="pleas"> 9,12, </key>
+<key name="plot"> 19, </key>
+<key name="plu"> 11,67, </key>
+<key name="png"> 0,53, </key>
+<key name="point"> 14,1,19,12,61,37,64,67,41,43,46,70,48,53,54, </key>
+<key name="pointstruct"> 61,70, </key>
+<key name="polygon"> 17,61,72, </key>
+<key name="polygonal"> 61, </key>
+<key name="polyhedral"> 17,61, </key>
+<key name="polyhedron"> 17,61,72, </key>
+<key name="polylin"> 12, </key>
+<key name="pop"> 9,29, </key>
+<key name="position"> 14,64,53, </key>
+<key name="posses"> 63,37, </key>
+<key name="possibility"> 68, </key>
+<key name="possibl"> 13,2,25,63,64, </key>
+<key name="post"> 53, </key>
+<key name="powerful"> 68, </key>
+<key name="precision"> 17, </key>
+<key name="preferenc"> 13,33,60,65, </key>
+<key name="prefix"> 68, </key>
+<key name="preproces"> 25, </key>
+<key name="pres"> 17,1,12,39,53, </key>
+<key name="present"> 14,0,63,51, </key>
+<key name="presentation"> 16,0,53, </key>
+<key name="preserv"> 64, </key>
+<key name="preset"> 13, </key>
+<key name="preview"> 17,5,26,64,68, </key>
+<key name="previou"> 19,12,49, </key>
+<key name="previous"> 24,25,60,64, </key>
+<key name="principl"> 12, </key>
+<key name="print"> 6,8,57,61,66,70,72, </key>
+<key name="printmeshinfo"> 6, </key>
+<key name="prism"> 72, </key>
+<key name="pro"> 53, </key>
+<key name="problem"> 6,8, </key>
+<key name="proce"> 23,9, </key>
+<key name="procedur"> 45, </key>
+<key name="proceed"> 12,38, </key>
+<key name="proces"> 45, </key>
+<key name="produc"> 14,7,11,61,67,45, </key>
+<key name="product"> 54, </key>
+<key name="program"> 23, </key>
+<key name="progression"> 19, </key>
+<key name="project"> 64, </key>
+<key name="projection"> 64,54, </key>
+<key name="prompt"> 19, </key>
+<key name="propagat"> 6,8,37, </key>
+<key name="propagation"> 13,6,8,37,70, </key>
+<key name="properti"> 53, </key>
+<key name="prov"> 63, </key>
+<key name="provid"> 0,17,26,57,61,66,69,70, </key>
+<key name="pseudo"> 27, </key>
+<key name="pt1"> 69, </key>
+<key name="pt2"> 69, </key>
+<key name="pul"> 45, </key>
+<key name="put"> 8, </key>
+<key name="px"> 8,70, </key>
+<key name="px1"> 70, </key>
+<key name="py"> 8,70, </key>
+<key name="py1"> 70, </key>
+<key name="pyramid"> 72, </key>
+<key name="pyramidal"> 15, </key>
+<key name="python"> 6,62,69,52, </key>
+<key name="pz"> 8,70, </key>
+<key name="pz1"> 70, </key>
+<key name="q1"> 61, </key>
<key name="qi"> 2, </key>
-<key name="qk"> 19,2, </key>
-<key name="quad"> 60,53, </key>
-<key name="quad2d"> 7,56, </key>
-<key name="quadrangl"> 12,13,14,16,17,19,2,6,25,7,26,10,32,31,59,35,60,64,43,66,68, </key>
-<key name="quadrangle_2d"> 7,56, </key>
-<key name="quadrangular"> 14,6,7,32,36,66, </key>
-<key name="quadratic"> 12,1,36, </key>
-<key name="quadtotri"> 60, </key>
-<key name="quality"> 15,0,17,18,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53, </key>
-<key name="quantity"> 12, </key>
-<key name="r1"> 60, </key>
-<key name="radio"> 20,24,25,40,42,45,48, </key>
-<key name="radiu"> 19,60, </key>
-<key name="rang"> 18,24,56,60,63, </key>
-<key name="ratio"> 15,19,2,59,63,44,46,53, </key>
-<key name="ready"> 22, </key>
+<key name="qk"> 20,2, </key>
+<key name="quad"> 54, </key>
+<key name="quad_1"> 61, </key>
+<key name="quad_2"> 61, </key>
+<key name="quad_3"> 61, </key>
+<key name="quad_4"> 61, </key>
+<key name="quad_5"> 61, </key>
+<key name="quad_6"> 61, </key>
+<key name="quad_7"> 61, </key>
+<key name="quadra"> 6,57, </key>
+<key name="quadrangl"> 13,14,15,17,18,20,2,6,26,8,27,11,12,57,33,32,60,36,61,63,67,44,70,72, </key>
+<key name="quadrangular"> 15,6,8,33,37, </key>
+<key name="quadratic"> 13,1,7,63,37, </key>
+<key name="quadtotri"> 61, </key>
+<key name="quality"> 16,0,18,19,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54, </key>
+<key name="quantity"> 13, </key>
+<key name="r1"> 61, </key>
+<key name="radio"> 21,25,26,41,43,46,49, </key>
+<key name="radiu"> 20,61,63, </key>
+<key name="radius"> 63, </key>
+<key name="radius_1"> 69, </key>
+<key name="radius_2"> 69, </key>
+<key name="rang"> 19,25,57,61,63,66, </key>
+<key name="rat"> 63, </key>
+<key name="ratio"> 16,20,2,60,66,45,47,54, </key>
+<key name="ready"> 23, </key>
<key name="recent"> 0, </key>
-<key name="red"> 55, </key>
-<key name="redefin"> 0,52, </key>
-<key name="reduc"> 44, </key>
-<key name="reevaluat"> 44, </key>
-<key name="refer"> 61, </key>
-<key name="referenc"> 13,15,22,23, </key>
-<key name="refin"> 12, </key>
-<key name="reflect"> 61,43,69, </key>
+<key name="red"> 56, </key>
+<key name="redefin"> 0,53, </key>
+<key name="reduc"> 45, </key>
+<key name="reevaluat"> 45, </key>
+<key name="refer"> 64, </key>
+<key name="referenc"> 14,16,23,24, </key>
+<key name="refin"> 13, </key>
+<key name="reflect"> 64,44,73, </key>
+<key name="refpoint"> 61, </key>
<key name="refresh"> 0, </key>
-<key name="regular"> 19, </key>
-<key name="regular_1d"> 6,7,56,63,68, </key>
-<key name="regular1d"> 6,7,56, </key>
-<key name="relat"> 41, </key>
-<key name="relation"> 13, </key>
-<key name="relationship"> 13, </key>
-<key name="remot"> 52, </key>
-<key name="remov"> 20,6,24,25,8,29,11,56,60,38,65,48,68, </key>
-<key name="removal"> 59, </key>
-<key name="removeelement"> 60,63, </key>
-<key name="removehypothesi"> 6,68, </key>
-<key name="removenod"> 60, </key>
-<key name="renumb"> 39, </key>
-<key name="renumber"> 60,39, </key>
-<key name="renumbernod"> 60, </key>
-<key name="reorient"> 20,60, </key>
-<key name="replac"> 42, </key>
-<key name="represent"> 12,13,18,2,62,46,52, </key>
-<key name="representation"> 13, </key>
-<key name="requir"> 26,27,49, </key>
-<key name="reset"> 52, </key>
-<key name="resiz"> 52, </key>
-<key name="respect"> 11, </key>
+<key name="regular"> 20,6,8,63,62, </key>
+<key name="regular_1d"> 61, </key>
+<key name="relat"> 42, </key>
+<key name="relation"> 14, </key>
+<key name="relationship"> 14, </key>
+<key name="remot"> 53, </key>
+<key name="remov"> 21,6,25,26,9,30,12,57,61,66,39,68,49, </key>
+<key name="removal"> 60, </key>
+<key name="removeelement"> 61,66, </key>
+<key name="removehypothesi"> 6, </key>
+<key name="removenod"> 61, </key>
+<key name="renumb"> 61,40, </key>
+<key name="renumber"> 61,40, </key>
+<key name="renumbernod"> 61, </key>
+<key name="reorient"> 21,61, </key>
+<key name="replac"> 43, </key>
+<key name="represent"> 13,14,19,2,65,47,53, </key>
+<key name="representation"> 14, </key>
+<key name="requir"> 27,28,63,50, </key>
+<key name="res"> 61, </key>
+<key name="reset"> 53, </key>
+<key name="resiz"> 53, </key>
+<key name="respect"> 12, </key>
<key name="respectiv"> 1, </key>
-<key name="rest"> 61,42, </key>
-<key name="restor"> 52, </key>
-<key name="restrict"> 13, </key>
-<key name="result"> 12,16,11,56,63,44,50, </key>
-<key name="ret"> 6,7,56, </key>
-<key name="retriev"> 13, </key>
-<key name="return"> 57,60, </key>
-<key name="reveal"> 19, </key>
-<key name="revers"> 1,61, </key>
-<key name="revert"> 20, </key>
-<key name="revolution"> 10,60,64, </key>
-<key name="revolv"> 64, </key>
-<key name="right"> 0,21,8,27,28,11,62, </key>
-<key name="rotat"> 10,11,60,64,40,66,52, </key>
-<key name="rotateobject"> 66, </key>
-<key name="rotation"> 5,11,64,40,66,52, </key>
-<key name="rotationsweepobject"> 60, </key>
-<key name="rough"> 12, </key>
-<key name="rr"> 60, </key>
-<key name="rul"> 18,36,42, </key>
-<key name="run"> 41, </key>
-<key name="s"> 11, </key>
-<key name="salom"> 6,24,7,56,59,60,63,41,66,68, </key>
-<key name="sam"> 13,0,18,19,2,22,23,7,11,36,37,65,42,50, </key>
-<key name="sampl"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53, </key>
-<key name="sav"> 65, </key>
-<key name="scal"> 18,52, </key>
-<key name="scalar"> 15, </key>
-<key name="scen"> 52, </key>
-<key name="script"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53, </key>
-<key name="se"> 14,16,17,18,19,2,3,4,20,5,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,52,53, </key>
-<key name="seam"> 61, </key>
-<key name="search"> 30,65, </key>
-<key name="second"> 16,60,42, </key>
-<key name="section"> 0,5,22,61, </key>
-<key name="segment"> 12,18,6,7,32,59,60,66, </key>
-<key name="select"> 12,14,0,16,1,18,20,21,22,23,24,25,8,26,27,29,10,11,30,34,36,61,62,38,39,64,40,41,65,42,44,45,47,48,49,50,51,52, </key>
-<key name="selectabl"> 58, </key>
-<key name="selection"> 16,1,20,24,25,8,65,48, </key>
-<key name="sens"> 13, </key>
-<key name="separat"> 46, </key>
-<key name="sequenc"> 42, </key>
-<key name="set"> 13,14,16,18,20,5,22,24,7,27,11,32,59,60,33,61,62,65,42,44,67,48, </key>
-<key name="setcurrentstudy"> 6,60,63,68, </key>
-<key name="setdisplaymod"> 7, </key>
-<key name="setlength"> 6,68, </key>
-<key name="setmargin"> 56,63, </key>
-<key name="setmaxelementarea"> 6,7,63,68, </key>
-<key name="setmaxelementvolum"> 6,7, </key>
-<key name="setmesh"> 63, </key>
-<key name="setnam"> 6,7,63, </key>
-<key name="setnumberofsegment"> 6,7,56,60,63,68, </key>
-<key name="setnumfunctor"> 56,63, </key>
-<key name="setpredicat"> 56,63, </key>
-<key name="setting"> 22, </key>
-<key name="settransparency"> 7, </key>
-<key name="sew"> 63,42,66, </key>
-<key name="sewbordertosid"> 66, </key>
-<key name="sewconformfreeborder"> 66, </key>
-<key name="sewfreeborder"> 66, </key>
-<key name="sewsideelement"> 66, </key>
-<key name="sg"> 6,7,56,60,63,66,68, </key>
-<key name="shad"> 0,62,67, </key>
-<key name="shall"> 20,26,27,34,61,64,40,45,47,48,49, </key>
-<key name="shap"> 12,13,11,61,44, </key>
-<key name="shape_mesh"> 60, </key>
-<key name="shapetyp"> 6,7,56,60,63,66,68, </key>
-<key name="shift"> 16,1,25,38,44, </key>
-<key name="shortest"> 53, </key>
-<key name="should"> 18,24,10,11,61,64,40,65,42,44,50, </key>
-<key name="show"> 18,5,11,65,52, </key>
-<key name="shown"> 15,44, </key>
-<key name="shrink"> 62, </key>
-<key name="sid"> 6,7,35,42,43,66, </key>
-<key name="simp"> 22,36, </key>
-<key name="simpl"> 13,16,61, </key>
-<key name="simplex"> 19,2, </key>
-<key name="sin"> 60, </key>
-<key name="siz"> 0,44, </key>
-<key name="sk"> 19,2, </key>
-<key name="sketch"> 7, </key>
-<key name="sketcher"> 7, </key>
-<key name="sketcher1"> 7, </key>
-<key name="sketcher2"> 7, </key>
-<key name="skew"> 15,25,59,63,43,48, </key>
-<key name="slid"> 67, </key>
-<key name="small"> 52, </key>
-<key name="smesh"> 6,7,56,60,63,42,66,68, </key>
-<key name="smesh_mechanic"> 56,60,63,66, </key>
-<key name="smesh_mechanic_tetra"> 63, </key>
-<key name="smesh_mesheditor"> 60,66, </key>
-<key name="smeshgroup1"> 56, </key>
-<key name="smeshgroup2"> 56, </key>
-<key name="smeshgui"> 6,7,63, </key>
-<key name="smooth"> 60,44, </key>
-<key name="smoothobject"> 60, </key>
-<key name="smp"> 61, </key>
-<key name="so"> 12,18,19,6,7,56,60,61,63,42,46,68, </key>
-<key name="solid"> 6,7,59, </key>
-<key name="somewhat"> 16, </key>
-<key name="sort"> 20,24,25,48, </key>
-<key name="sourc"> 65, </key>
-<key name="spac"> 13,61,40,47, </key>
-<key name="specifi"> 18,3,61,38,42,44, </key>
-<key name="specific"> 21,65, </key>
-<key name="specify"> 16,1,25,10,11,61,38,64,40,65,44,45,47,50, </key>
-<key name="spher"> 18,19,22, </key>
-<key name="split"> 14,18,2,5,42, </key>
-<key name="sqrt"> 60, </key>
-<key name="standalon"> 24,56,65, </key>
-<key name="standard"> 0,30,51, </key>
-<key name="start"> 12,18,5,7,11,59,41,42,47, </key>
-<key name="startendlength"> 7, </key>
-<key name="statu"> 60, </key>
-<key name="stdmesher"> 6,7,56,60,63,68, </key>
-<key name="step"> 10,64, </key>
-<key name="stor"> 61,65, </key>
-<key name="straight"> 1,7,36, </key>
-<key name="stretch"> 52, </key>
-<key name="strict"> 52, </key>
-<key name="structur"> 22,23, </key>
-<key name="study"> 6,7,56,65, </key>
-<key name="stuf"> 52, </key>
-<key name="sub"> 30,34,60,61,40,42,45,47, </key>
-<key name="submenu"> 16,9,38,39, </key>
-<key name="submesh"> 12,20,21,6,23,24,25,10,11,37,64,44,47,48,51, </key>
-<key name="subshapeall"> 6,7,56,60,63,66,68, </key>
-<key name="subshapelist"> 6,56,63,68, </key>
-<key name="subshapelist1"> 66, </key>
-<key name="subshapelist2"> 66, </key>
-<key name="subshapenam"> 6,56,68, </key>
-<key name="succed"> 7,56, </key>
+<key name="rest"> 64,43, </key>
+<key name="restor"> 53, </key>
+<key name="restrict"> 14, </key>
+<key name="result"> 13,17,12,57,66,45,51, </key>
+<key name="ret"> 6,8, </key>
+<key name="retriev"> 14, </key>
+<key name="return"> 58,61, </key>
+<key name="reveal"> 20, </key>
+<key name="revers"> 1,64, </key>
+<key name="revert"> 21, </key>
+<key name="revolution"> 11,61,67, </key>
+<key name="revolv"> 61,67, </key>
+<key name="right"> 0,22,9,28,29,12,65, </key>
+<key name="rotat"> 11,12,61,67,41,70,53, </key>
+<key name="rotateobject"> 70, </key>
+<key name="rotation"> 5,67,41,70,53, </key>
+<key name="rotationsweepobject"> 61, </key>
+<key name="rough"> 13, </key>
+<key name="rr"> 61, </key>
+<key name="rul"> 19,37,43, </key>
+<key name="run"> 42, </key>
+<key name="salom"> 25,8,57,60,61,66,42,62,70, </key>
+<key name="sam"> 14,0,19,20,2,23,24,8,12,37,38,68,43,51, </key>
+<key name="sampl"> 15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54, </key>
+<key name="sav"> 68, </key>
+<key name="scal"> 19,53, </key>
+<key name="scalar"> 16, </key>
+<key name="scen"> 53, </key>
+<key name="script"> 15,17,18,19,20,2,3,4,21,23,6,24,25,26,27,28,30,11,12,55,56,57,31,58,33,32,59,35,36,61,37,34,64,66,38,39,40,67,41,43,44,45,46,47,70,48,49,50,51,52,73,54, </key>
+<key name="se"> 15,17,18,19,20,2,3,4,21,5,6,24,7,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,69,45,46,47,48,49,50,51,73,53,54, </key>
+<key name="seam"> 64, </key>
+<key name="search"> 31,68, </key>
+<key name="second"> 17,61,63,43, </key>
+<key name="secondnodeid1"> 70, </key>
+<key name="secondnodeid2"> 70, </key>
+<key name="secondnodeidonfreebord"> 70, </key>
+<key name="section"> 0,5,23,64,69, </key>
+<key name="seg"> 63, </key>
+<key name="segment"> 13,19,6,8,57,33,60,61,63,66,69,70,72, </key>
+<key name="select"> 13,0,17,1,19,21,22,23,6,24,7,25,26,9,27,28,30,11,12,31,35,61,63,37,64,65,39,40,67,41,42,68,43,45,46,48,49,50,51,52,53, </key>
+<key name="selectabl"> 59, </key>
+<key name="selection"> 17,1,21,25,26,9,68,49, </key>
+<key name="sens"> 14, </key>
+<key name="separat"> 47, </key>
+<key name="sequenc"> 43, </key>
+<key name="set"> 14,15,17,19,21,5,23,25,8,28,12,33,60,61,63,34,64,65,68,43,45,71,49, </key>
+<key name="setmargin"> 57,66, </key>
+<key name="setmaxelementarea"> 6, </key>
+<key name="setmesh"> 66, </key>
+<key name="setnam"> 61,62,69, </key>
+<key name="setnumberofsegment"> 61, </key>
+<key name="setnumfunctor"> 57,66, </key>
+<key name="setpredicat"> 57,66, </key>
+<key name="setting"> 23, </key>
+<key name="seven"> 12,61, </key>
+<key name="sew"> 12,43,70, </key>
+<key name="sewbordertosid"> 70, </key>
+<key name="sewconformfreeborder"> 70, </key>
+<key name="sewfreeborder"> 70, </key>
+<key name="sewsideelement"> 70, </key>
+<key name="sg"> 57,61,66,70, </key>
+<key name="shad"> 0,65,71, </key>
+<key name="shall"> 21,27,28,35,64,67,41,46,48,49,50, </key>
+<key name="shap"> 13,14,12,61,64,45, </key>
+<key name="shape_mesh"> 61, </key>
+<key name="shape1d"> 61, </key>
+<key name="shapetyp"> 6,8,57,61,66,69,70, </key>
+<key name="shell"> 66, </key>
+<key name="shift"> 17,1,26,39,45, </key>
+<key name="shortest"> 54, </key>
+<key name="should"> 19,7,25,11,12,64,67,41,68,43,45,51, </key>
+<key name="show"> 19,5,12,68,53, </key>
+<key name="shown"> 16,45, </key>
+<key name="shrink"> 65, </key>
+<key name="sid"> 6,8,36,63,43,44,70, </key>
+<key name="simp"> 23,37, </key>
+<key name="simpl"> 14,17,12,64, </key>
+<key name="simplex"> 20,2, </key>
+<key name="sin"> 61, </key>
+<key name="sin_bot"> 61, </key>
+<key name="sin_top"> 61, </key>
+<key name="six"> 12,61, </key>
+<key name="siz"> 0,63,69,45, </key>
+<key name="sk"> 20,2, </key>
+<key name="sketch"> 8, </key>
+<key name="sketcher"> 8, </key>
+<key name="sketcher1"> 8, </key>
+<key name="sketcher2"> 8, </key>
+<key name="skew"> 16,26,60,66,44,49, </key>
+<key name="skew_margin"> 66, </key>
+<key name="slid"> 71, </key>
+<key name="small"> 53, </key>
+<key name="smesh"> 6,8,57,61,66,62,43,69,70,72, </key>
+<key name="smesh_mechanic"> 57,61,66,70, </key>
+<key name="smesh_mechanic_tetra"> 66, </key>
+<key name="smesh_mesheditor"> 61,70, </key>
+<key name="smeshgroup1"> 57, </key>
+<key name="smeshgui"> 61, </key>
+<key name="smooth"> 61,45, </key>
+<key name="smoothobject"> 61, </key>
+<key name="smp"> 64, </key>
+<key name="so"> 13,19,20,12,61,64,43,47, </key>
+<key name="solid"> 8,60, </key>
+<key name="somewhat"> 17, </key>
+<key name="soon"> 6, </key>
+<key name="sort"> 21,25,26,49, </key>
+<key name="sourc"> 68, </key>
+<key name="spac"> 14,64,41,48, </key>
+<key name="specifi"> 19,3,64,39,43,45, </key>
+<key name="specific"> 22,68, </key>
+<key name="specify"> 17,1,26,11,12,64,39,67,41,68,45,46,48,51, </key>
+<key name="spher"> 19,20,23, </key>
+<key name="split"> 15,19,2,5,63,43, </key>
+<key name="sqrt"> 61, </key>
+<key name="standalon"> 25,57,68, </key>
+<key name="standard"> 0,7,31,69,52, </key>
+<key name="start"> 13,19,5,8,12,60,42,43,48, </key>
+<key name="startendlength"> 8, </key>
+<key name="static"> 62, </key>
+<key name="statu"> 61, </key>
+<key name="step"> 11,67, </key>
+<key name="stor"> 64,68, </key>
+<key name="str"> 62, </key>
+<key name="straight"> 1,8,12,61,37, </key>
+<key name="stretch"> 53, </key>
+<key name="strict"> 53, </key>
+<key name="structur"> 23,24,61,62, </key>
+<key name="study"> 8,57,68,69, </key>
+<key name="stuf"> 53, </key>
+<key name="styl"> 6, </key>
+<key name="sub"> 6,8,12,31,35,64,41,43,46,48, </key>
+<key name="submenu"> 17,10,39,40, </key>
+<key name="submesh"> 13,21,22,6,24,25,26,11,12,38,67,45,48,49,52, </key>
+<key name="subshapeall"> 6,8,57,61,66,70, </key>
+<key name="subshapeallid"> 69, </key>
+<key name="subshapeallsort"> 61, </key>
+<key name="subshapelist"> 6,57, </key>
+<key name="subshapenam"> 6, </key>
+<key name="succed"> 8, </key>
<key name="sum"> 2, </key>
-<key name="supplement"> 36, </key>
-<key name="supplementary"> 25, </key>
-<key name="surfac"> 13,19,2,10,61,64,42, </key>
-<key name="surround"> 13,44, </key>
-<key name="sweep"> 60, </key>
-<key name="swept"> 10,64, </key>
+<key name="supplement"> 37, </key>
+<key name="supplementary"> 26, </key>
+<key name="surfac"> 14,20,2,11,12,64,67,43, </key>
+<key name="surround"> 14,45, </key>
+<key name="swept"> 11,67, </key>
<key name="switch"> 1, </key>
-<key name="symmetrical"> 45,66, </key>
-<key name="symmetry"> 45,66, </key>
-<key name="syntax"> 65, </key>
-<key name="t"> 13,18,2,22,36,61,62,52, </key>
-<key name="tabl"> 1,18, </key>
-<key name="tak"> 19,48, </key>
-<key name="taken"> 12,21,24,7,61, </key>
-<key name="tap"> 15,24,59,63,46, </key>
-<key name="techniqu"> 44, </key>
-<key name="tetra3d"> 7, </key>
-<key name="tetrahedral"> 14, </key>
-<key name="tetrahedralization"> 22, </key>
-<key name="tetrahedron"> 13,14,16,2,7,60,33,68, </key>
-<key name="th"> 61,42, </key>
-<key name="them"> 12,16,1,18,2,24,8,9,10,11,34,38,64,42,44,52, </key>
-<key name="thos"> 25,48, </key>
-<key name="thre"> 13,1,19,7,60,36,42,45, </key>
-<key name="threshold"> 65, </key>
-<key name="tick"> 52, </key>
+<key name="symmetrical"> 46,70, </key>
+<key name="symmetry"> 46,70, </key>
+<key name="syntax"> 68, </key>
+<key name="t"> 14,19,2,23,57,61,37,64,65,66,70,53, </key>
+<key name="t1"> 61, </key>
+<key name="tabl"> 1,19, </key>
+<key name="tak"> 20,49, </key>
+<key name="taken"> 13,22,25,8,64, </key>
+<key name="tap"> 16,25,60,66,47, </key>
+<key name="taper_margin"> 66, </key>
+<key name="techniqu"> 45, </key>
+<key name="tetra"> 6,8,69,72, </key>
+<key name="tetrahedral"> 15,8,63,69, </key>
+<key name="tetrahedralization"> 23, </key>
+<key name="tetrahedrical"> 8, </key>
+<key name="tetrahedron"> 14,15,17,2,6,8,61,34,69,72, </key>
+<key name="tetran"> 8, </key>
+<key name="th"> 64,43, </key>
+<key name="them"> 13,17,1,19,2,25,9,10,11,12,35,63,39,67,43,45,53, </key>
+<key name="themesh"> 6, </key>
+<key name="third"> 12, </key>
+<key name="thos"> 26,49, </key>
+<key name="thre"> 14,1,20,61,63,37,43,46, </key>
+<key name="threshold"> 68, </key>
+<key name="tick"> 53, </key>
<key name="tim"> 0, </key>
<key name="tmp"> 6, </key>
-<key name="togeth"> 32, </key>
-<key name="toggl"> 16,65,47, </key>
-<key name="toleranc"> 34,64,65,66, </key>
-<key name="tool"> 65,50, </key>
-<key name="toolbar"> 19,2,20,22,23,25,26,27,29,10,11,31,61,38,39,64,41,43,44,46,48,49,51,69,52,53, </key>
-<key name="top"> 60, </key>
-<key name="topological"> 13,42, </key>
-<key name="topology"> 13, </key>
-<key name="total"> 51, </key>
-<key name="toward"> 44, </key>
-<key name="transform"> 27,66, </key>
-<key name="transformation"> 34,40,42,45,47, </key>
-<key name="translat"> 66,47, </key>
-<key name="translateobject"> 66, </key>
-<key name="translation"> 66,47, </key>
-<key name="transparency"> 0,67, </key>
-<key name="transparent"> 67, </key>
-<key name="tri_mesh"> 66, </key>
-<key name="tria"> 7,60,66, </key>
-<key name="tria_mesh"> 7, </key>
-<key name="triangl"> 13,14,16,1,17,19,7,26,10,32,31,58,35,60,64,43,46,66,48,49,68,52, </key>
-<key name="triangle_mefisto"> 60, </key>
-<key name="triangular"> 14,32, </key>
-<key name="triangulation"> 7, </key>
-<key name="trihedron"> 52, </key>
-<key name="tritoquad"> 60, </key>
-<key name="try"> 22, </key>
-<key name="tt"> 7, </key>
-<key name="tui"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53, </key>
-<key name="two"> 13,16,5,24,25,7,26,11,56,35,60,61,42,46,66,47,49,50,51, </key>
-<key name="typ"> 13,16,18,19,2,21,22,24,10,11,38,64,65,42,51, </key>
-<key name="typical"> 44, </key>
-<key name="u"> 13,42, </key>
-<key name="unary"> 65, </key>
-<key name="unassign"> 37, </key>
-<key name="uniform"> 44, </key>
-<key name="union"> 56,48,49,50, </key>
-<key name="uniongroup"> 56, </key>
-<key name="unit"> 60,42,48,49,50, </key>
-<key name="unles"> 36, </key>
-<key name="unv"> 30, </key>
-<key name="up"> 18,8,28, </key>
-<key name="updat"> 0,41,44, </key>
-<key name="updateobjbrows"> 6,7,56,60,63,66,68, </key>
-<key name="upload"> 65, </key>
-<key name="us"> 13,14,18,3,5,22,23,24,10,32,34,61,64,65,42,44,67,50,52, </key>
-<key name="usag"> 15, </key>
-<key name="useful"> 0,16,24,11, </key>
-<key name="usual"> 42,44, </key>
-<key name="v"> 13, </key>
-<key name="valu"> 12,15,18,19,2,22,6,11,57,35,36,37,65,43,68, </key>
-<key name="vari"> 19, </key>
+<key name="togeth"> 33, </key>
+<key name="toggl"> 17,68,48, </key>
+<key name="toleranc"> 35,67,68,70, </key>
+<key name="tool"> 68,51, </key>
+<key name="toolbar"> 20,2,21,23,24,7,26,27,28,30,11,12,32,64,39,40,67,42,44,45,47,49,50,52,73,53,54, </key>
+<key name="top"> 61, </key>
+<key name="topological"> 14,43, </key>
+<key name="topology"> 14, </key>
+<key name="toru"> 7, </key>
+<key name="total"> 52, </key>
+<key name="toward"> 45, </key>
+<key name="transform"> 28,70, </key>
+<key name="transformation"> 35,41,43,46,48, </key>
+<key name="translat"> 70,48, </key>
+<key name="translateobject"> 70, </key>
+<key name="translation"> 70,48, </key>
+<key name="transparency"> 0,71, </key>
+<key name="transparent"> 71, </key>
+<key name="transtorm"> 7, </key>
+<key name="tri_mesh"> 70, </key>
+<key name="tria"> 6,8,66,70, </key>
+<key name="tria_mesh"> 8, </key>
+<key name="triangl"> 14,15,17,1,18,20,6,8,27,11,33,32,59,36,61,63,66,67,44,69,47,70,49,50,72,53, </key>
+<key name="triangular"> 15,33, </key>
+<key name="triangulation"> 8, </key>
+<key name="trihedron"> 53, </key>
+<key name="tritoquad"> 61, </key>
+<key name="truncat"> 69, </key>
+<key name="try"> 23,63, </key>
+<key name="tt"> 8,61, </key>
+<key name="tui"> 15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,52,73,54, </key>
+<key name="tupl"> 62, </key>
+<key name="two"> 14,17,5,25,26,8,27,12,57,36,61,63,64,66,43,47,70,48,50,51,52, </key>
+<key name="typ"> 14,17,19,20,2,22,23,25,11,12,39,67,68,43,52, </key>
+<key name="typical"> 45, </key>
+<key name="u"> 14,43, </key>
+<key name="unary"> 68, </key>
+<key name="unassign"> 38, </key>
+<key name="uniform"> 45, </key>
+<key name="union"> 57,49,50,51, </key>
+<key name="uniongroup"> 57, </key>
+<key name="unionid"> 69, </key>
+<key name="unit"> 61,43,49,50,51, </key>
+<key name="unles"> 37, </key>
+<key name="unv"> 31, </key>
+<key name="up"> 19,9,29, </key>
+<key name="updat"> 0,6,57,61,66,42,45,70, </key>
+<key name="updateobjbrows"> 57,61,66,70, </key>
+<key name="upload"> 68, </key>
+<key name="us"> 14,15,19,3,5,23,24,25,11,12,57,33,35,61,63,64,66,67,68,43,45,70,71,51,53, </key>
+<key name="usag"> 16,6,57,61,66,69,70, </key>
+<key name="useful"> 0,17,25,12,63, </key>
+<key name="usual"> 43,45, </key>
+<key name="v"> 14, </key>
+<key name="valu"> 13,16,19,20,2,23,6,12,58,36,37,38,68,44,69, </key>
+<key name="vari"> 20, </key>
+<key name="variabl"> 62, </key>
<key name="variou"> 0, </key>
-<key name="ve"> 16, </key>
-<key name="vector"> 7,10,11,60,64,40,45,66,47,53, </key>
-<key name="vertex"> 13,61, </key>
-<key name="vertic"> 6,7,61, </key>
-<key name="very"> 16,11, </key>
-<key name="via"> 65,51,52, </key>
-<key name="view"> 0,16,1,17,19,2,20,5,24,25,8,26,27,28,10,11,31,35,38,39,64,65,42,43,44,46,48,49,51,68,69,52,53, </key>
-<key name="visibl"> 52, </key>
-<key name="visual"> 15, </key>
-<key name="visualiz"> 52, </key>
+<key name="ve"> 17, </key>
+<key name="vector"> 11,12,61,67,41,46,70,48,54, </key>
+<key name="versa"> 7, </key>
+<key name="version"> 57,61,66,70, </key>
+<key name="vert"> 61, </key>
+<key name="vertex"> 14,64, </key>
+<key name="vertex_"> 61, </key>
+<key name="vertic"> 61,64, </key>
+<key name="very"> 17,12,63, </key>
+<key name="via"> 68,52,53, </key>
+<key name="vic"> 7, </key>
+<key name="vid"> 61, </key>
+<key name="view"> 0,17,1,18,20,2,21,5,25,26,9,27,28,29,11,12,32,36,39,40,67,68,43,44,45,47,49,50,52,72,73,53,54, </key>
+<key name="visibl"> 53, </key>
+<key name="visual"> 16, </key>
+<key name="visualiz"> 53, </key>
<key name="vk"> 2, </key>
-<key name="volum"> 12,13,14,15,16,2,21,24,7,9,59,60,33,63,65,66,51,68,69, </key>
-<key name="vtk"> 0,52, </key>
-<key name="vxy"> 7,60,66, </key>
-<key name="walk"> 61, </key>
-<key name="warp"> 15,25,59,63,48,53, </key>
-<key name="way"> 13,16,22,23,24,11,61,37,50, </key>
-<key name="weight"> 44, </key>
-<key name="well"> 61, </key>
-<key name="wheth"> 65, </key>
-<key name="whil"> 38, </key>
-<key name="whit"> 54, </key>
-<key name="whol"> 2,10,11,60,64,65,44,47, </key>
-<key name="whos"> 20,24,25,36,48, </key>
-<key name="will"> 12,13,0,16,1,17,18,19,2,20,21,22,23,24,25,8,27,28,29,10,11,30,32,31,58,35,60,33,36,61,38,39,64,41,65,42,43,44,46,67,48,50,51,69,53, </key>
+<key name="volum"> 13,14,15,16,17,2,22,6,25,8,10,12,60,61,34,66,68,70,52,72,73, </key>
+<key name="volume_margin"> 66, </key>
+<key name="vtk"> 0,53, </key>
+<key name="vxy"> 8,70, </key>
+<key name="wa_margin"> 66, </key>
+<key name="walk"> 64, </key>
+<key name="warp"> 16,26,60,66,49,54, </key>
+<key name="way"> 14,17,23,24,25,12,64,38,51, </key>
+<key name="weight"> 45, </key>
+<key name="well"> 64, </key>
+<key name="wheth"> 68, </key>
+<key name="whil"> 39, </key>
+<key name="whit"> 12,55, </key>
+<key name="whol"> 2,11,12,67,68,45,48, </key>
+<key name="whos"> 21,25,26,37,49, </key>
+<key name="will"> 13,14,0,17,1,18,19,20,2,21,22,23,6,24,7,25,26,9,28,29,30,11,12,57,31,33,32,59,36,61,63,37,34,64,66,39,40,67,42,68,43,44,45,47,70,71,49,51,52,73,54, </key>
<key name="window"> 5, </key>
-<key name="wir"> 14,6,7,11,32,60,66, </key>
-<key name="wire_discretisation"> 60, </key>
-<key name="wirefram"> 0,11,62, </key>
-<key name="wish"> 22,8,30,52, </key>
-<key name="within"> 18,61,42, </key>
-<key name="without"> 1,63, </key>
-<key name="word"> 18, </key>
-<key name="work"> 1,11, </key>
-<key name="worst"> 19, </key>
-<key name="would"> 16,42, </key>
-<key name="ww"> 7, </key>
-<key name="x"> 13,5,53, </key>
-<key name="x0"> 60, </key>
-<key name="y"> 13,5, </key>
-<key name="y0"> 60, </key>
-<key name="your"> 12,13,15,0,16,1,17,18,19,2,20,5,21,22,23,24,27,28,29,30,32,31,34,35,33,61,62,37,38,39,40,65,43,44,45,46,47,51,69,53, </key>
-<key name="z"> 13,5, </key>
-<key name="z0"> 60, </key>
-<key name="zero"> 61, </key>
-<key name="zoom"> 52, </key>
+<key name="wir"> 15,8,12,33,61,63,70, </key>
+<key name="wire_discretisation"> 61, </key>
+<key name="wire_polylin"> 61, </key>
+<key name="wire_polyline_edg"> 61, </key>
+<key name="wire_polyline_mesh"> 61, </key>
+<key name="wirefram"> 0,65, </key>
+<key name="wish"> 23,7,9,31,53, </key>
+<key name="within"> 19,64,43, </key>
+<key name="without"> 1,12,66, </key>
+<key name="word"> 19, </key>
+<key name="work"> 1,12,63, </key>
+<key name="worst"> 20, </key>
+<key name="would"> 17,43, </key>
+<key name="written"> 57,61,66,70, </key>
+<key name="ww"> 8, </key>
+<key name="x"> 14,5,54, </key>
+<key name="x0"> 61, </key>
+<key name="y"> 14,5, </key>
+<key name="y0"> 61, </key>
+<key name="your"> 13,14,16,0,17,1,18,19,20,2,21,5,22,23,24,25,28,29,30,31,33,32,35,36,34,64,65,38,39,40,41,68,44,45,46,47,48,52,73,54, </key>
+<key name="z"> 14,5, </key>
+<key name="z0"> 61, </key>
+<key name="zero"> 64, </key>
+<key name="zoom"> 53, </key>
</ftswdata>
<book name="MESH module" >
<item name="Introduction to Mesh" url="mesh.htm" />
<item name="Running MESH module" url="files/running_smesh_module.htm" />
+ <item name="Introduction to MESH module python interface" url="smesh.py_introduction.htm" />
<book name="Creating meshes" >
<item name="About meshes" url="files/about_meshes.htm" />
<item name="Importing and exporting meshes" url="files/importing_and_exporting_meshes.htm" />
<item name="1D Meshing Hypotheses" url="files/arithmetic_1d.htm" />
<item name="2D Meshing Hypotheses" url="files/max._element_area_hypothesis.htm" />
<item name="Max Element Volume hypothesis" url="files/max._element_volume_hypothsis.htm" />
+ <item name="Netgen 2D and 3D hypotheses" url="netgen_2d_and_3d_hypotheses.htm" />
<item name="Additional Hypotheses" url="files/non_conform_mesh_allowed_hypothesis.htm" />
</book>
<item name="Constructing submeshes" url="files/constructing_submeshes.htm" />
<item name="Extrusion along a path" url="extrusion_along_a_path.htm" />
<item name="Revolution" url="revolution.htm" />
<item name="Pattern mapping" url="pattern_mapping.htm" />
+ <item name="Convert to/from Quadratic Mesh" url="convert_to_from_quadratic_mesh.htm" />
</book>
- <item name="Access to Mesh module functionality from Python (using smesh.py)" url="smeshpy_doc/namespacesmesh.html" />
+ <item name="Python Interface smesh.py" url="smeshpy_doc/namespacesmesh.html" />
<book name="TUI Scripts" >
<item name="Creating Meshes" url="constructing_meshes.htm" />
- <item name="Defining Hypotheses" url="defining_hypotheses_tui.htm" />
<item name="Viewing Meshes" url="viewing_meshes.htm" />
+ <item name="Defining Hypotheses" url="defining_hypotheses_tui.htm" />
<item name="Quality Controls" url="quality_controls.htm" />
<item name="Grouping Elements" url="grouping_elements.htm" />
<item name="Modifying Meshes" url="modifying_meshes.htm" />
The SALOME automatically locates XML files, searching them in the following
directories:<br>
<tt><br>
- ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources<br>
+ ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources/<pluginname><br>
${SALOME_<PluginName>Resources}<br>
${HOME}/.salome/resources<br>
- ${KERNEL_ROOT_DIR}/share/salome/resources</tt><br>
+ ${KERNEL_ROOT_DIR}/share/salome/resources/kernel</tt><br>
<br>
where <PluginName> is a name of each mesher plugin package<br>
</blockquote>
<h5> <a name="2_4_2_2"></a>2.4.2.2. Define environment variable SALOME_<MyResourceKey>Resources</h5>
<blockquote>It should point to the directory where resources are situated.</blockquote>
-<blockquote><tt>Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources</tt></blockquote>
+<blockquote><tt>Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources/smesh</tt></blockquote>
<h4> <a name="2_4_3"></a>2.4.3. Implement your Hypothesis Creator and being
exported method</h4>
#include "GEOM_Gen.idl"
#include "SMESH_Mesh.idl"
-#include "GEOM_Gen.idl"
-
-
module SMESH
{
/*!
* Create Mesh object importing data from given UNV file
+ * (UNV supported version is I-DEAS 10)
*/
SMESH_Mesh CreateMeshesFromUNV( in string theFileName )
raises ( SALOME::SALOME_Exception );
raises ( SALOME::SALOME_Exception );
/*!
- *
+ * Return indeces of faces, edges and vertices of given subshapes
+ * within theMainObject
*/
long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
in object_array theListOfSubObjects )
/*!
* Export Mesh to DAT, UNV and STL Formats
+ * (UNV supported version is I-DEAS 10)
*/
void ExportDAT( in string file )
raises (SALOME::SALOME_Exception);
long AddNode(in double x, in double y, in double z);
+ /*!
+ * Following methods are intented for creation edges, faces
+ * and volumes both similar and quadratic (this is determed
+ * by number of given nodes).
+ * \param IdsOfNodes List of node IDs for creation of element.
+ * Needed order of nodes in this list corresponds to description
+ * of MED. This description is located by the following link:
+ * http://www.salome-platform.org/salome2/web_med_internet/logiciels/
+ * medV2.2.2_doc_html/html/modele_de_donnees.html#3.
+ */
long AddEdge(in long_array IDsOfNodes);
long AddFace(in long_array IDsOfNodes);
</section>
<section name="resources">
<!-- Module resources -->
- <parameter name="SMESH" value="${SMESH_ROOT_DIR}/share/salome/resources"/>
- <parameter name="StdMeshers" value="${SMESH_ROOT_DIR}/share/salome/resources"/>
+ <parameter name="SMESH" value="${SMESH_ROOT_DIR}/share/salome/resources/smesh"/>
+ <parameter name="StdMeshers" value="${SMESH_ROOT_DIR}/share/salome/resources/smesh"/>
+ <!-- NETGENPlugin and GHS3DPlugin -->
+ <!-- Here the environment variables are used as case-sensitive, -->
+ <!-- In GUI/src/SalomeApp/resources/SalomeApp.xml upper-case notation is used. -->
+ <!-- As a result, both variants are acceptable. -->
+ <parameter name="NETGENPlugin" value="${NETGENPlugin_ROOT_DIR}/share/salome/resources/netgenplugin"/>
+ <parameter name="GHS3DPlugin" value="${GHS3DPlugin_ROOT_DIR}/share/salome/resources/ghs3dplugin"/>
</section>
</document>
if ( nbNodes < 3 )
return 0;
- // Compute lengths of the sides
-
- vector< double > aLen (nbNodes);
-
- for ( int i = 0; i < nbNodes - 1; i++ )
- aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
- aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
-
// Compute aspect ratio
- if ( nbNodes == 3 )
- {
+ if ( nbNodes == 3 ) {
+ // Compute lengths of the sides
+ vector< double > aLen (nbNodes);
+ for ( int i = 0; i < nbNodes - 1; i++ )
+ aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
+ aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
// Q = alfa * h * p / S, where
//
// alfa = sqrt( 3 ) / 6
// h - length of the longest edge
// p - half perimeter
// S - triangle surface
-
const double alfa = sqrt( 3. ) / 6.;
double maxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
double half_perimeter = ( aLen[0] + aLen[1] + aLen[2] ) / 2.;
double anArea = getArea( P( 1 ), P( 2 ), P( 3 ) );
if ( anArea <= Precision::Confusion() )
return 0.;
-
return alfa * maxLen * half_perimeter / anArea;
}
- else
- {
+ else if ( nbNodes == 6 ) { // quadratic triangles
+ // Compute lengths of the sides
+ vector< double > aLen (3);
+ aLen[0] = getDistance( P(1), P(3) );
+ aLen[1] = getDistance( P(3), P(5) );
+ aLen[2] = getDistance( P(5), P(1) );
+ // Q = alfa * h * p / S, where
+ //
+ // alfa = sqrt( 3 ) / 6
+ // h - length of the longest edge
+ // p - half perimeter
+ // S - triangle surface
+ const double alfa = sqrt( 3. ) / 6.;
+ double maxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
+ double half_perimeter = ( aLen[0] + aLen[1] + aLen[2] ) / 2.;
+ double anArea = getArea( P(1), P(3), P(5) );
+ if ( anArea <= Precision::Confusion() )
+ return 0.;
+ return alfa * maxLen * half_perimeter / anArea;
+ }
+ else if( nbNodes == 4 ) { // quadrangle
// return aspect ratio of the worst triange which can be built
// taking three nodes of the quadrangle
TSequenceOfXYZ triaPnts(3);
triaPnts(1) = P(3);
ar = Max ( ar, GetValue( triaPnts ));
+ return ar;
+ }
+ else { // nbNodes==8 - quadratic quadrangle
+ // return aspect ratio of the worst triange which can be built
+ // taking three nodes of the quadrangle
+ TSequenceOfXYZ triaPnts(3);
+ // triangle on nodes 1 3 2
+ triaPnts(1) = P(1);
+ triaPnts(2) = P(5);
+ triaPnts(3) = P(3);
+ double ar = GetValue( triaPnts );
+ // triangle on nodes 1 3 4
+ triaPnts(3) = P(7);
+ ar = Max ( ar, GetValue( triaPnts ));
+ // triangle on nodes 1 2 4
+ triaPnts(2) = P(3);
+ ar = Max ( ar, GetValue( triaPnts ));
+ // triangle on nodes 3 2 4
+ triaPnts(1) = P(5);
+ ar = Max ( ar, GetValue( triaPnts ));
+
return ar;
}
}
{
double aQuality = 0.0;
if(myCurrElement->IsPoly()) return aQuality;
+
int nbNodes = P.size();
+
+ if(myCurrElement->IsQuadratic()) {
+ if(nbNodes==10) nbNodes=4; // quadratic tetrahedron
+ else if(nbNodes==13) nbNodes=5; // quadratic pyramid
+ else if(nbNodes==15) nbNodes=6; // quadratic pentahedron
+ else if(nbNodes==20) nbNodes=8; // quadratic hexahedron
+ else return aQuality;
+ }
+
switch(nbNodes){
case 4:{
double aLen[6] = {
// Reading MED nodes to the corresponding SMDS structure
//------------------------------------------------------
- PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
- if(!aNodeInfo)
+ PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
+ if (!aNodeInfo) {
+ aResult = DRS_FAIL;
continue;
+ }
PCoordHelper aCoordHelper = GetCoordHelper(aNodeInfo);
for(MED::TInt iDim=0;iDim<aMeshDim;iDim++)
aCoords[(int)iDim] = aMEDNodeCoord[(int)iDim];
aNode = myMesh->AddNodeWithID(aCoords[0],aCoords[1],aCoords[2],(int)iNode);
- }
- /* not implemented FAMILY
-
- TInt aFamNum = aNodeInfo->GetFamNum(iElem);
- if ( checkFamilyID ( aFamily, aFamNum ))
- {
- aFamily->AddElement(aNode);
- aFamily->SetType(SMDSAbs_Node);
+ if((aGrilleInfo->myFamNumNode).size() > 0){
+ TInt aFamNum = aGrilleInfo->GetFamNumNode(iNode);
+ if ( checkFamilyID ( aFamily, aFamNum ))
+ {
+ aFamily->AddElement(aNode);
+ aFamily->SetType(SMDSAbs_Node);
+ }
}
- */
+ }
SMDS_MeshElement* anElement = NULL;
MED::TIntVector aNodeIds;
default:
break;
}
+
+ if((aGrilleInfo->myFamNum).size() > 0){
+ TInt aFamNum = aGrilleInfo->GetFamNum(iCell);
+ if ( checkFamilyID ( aFamily, aFamNum )){
+ aFamily->AddElement(anElement);
+ aFamily->SetType(anElement->GetType());
+ }
+ }
}
return res;
if ( edge_fam != anElemFamMap.end() )
aFamilyNums->push_back( edge_fam->second );
else
- aFamilyNums->push_back( myFacesDefaultFamilyId );
+ aFamilyNums->push_back( myEdgesDefaultFamilyId );
}
if ( aNbSeg2 ) {
class SMDS_MeshGroup;
+typedef std::map<SMDS_MeshGroup*, std::string> TGroupNamesMap;
+typedef std::map<SMDS_MeshGroup*, int> TGroupIdMap;
+
typedef std::map<SMDS_MeshGroup*, std::string> TGroupNamesMap;
typedef std::map<SMDS_MeshGroup*, int> TGroupIdMap;
//le type Z des nombres entiers relatifs
//=========
-typedef long int Z;
+// 64-bit porting: "long" replaced with "int".
+// On 64-bit, C++ long type is 8 byte long. MEFISTO2D C code calls several Fortran subroutines passing
+// arguments of this type, however Fortran knows nothing about changed size of arguments,
+// therefore stack gets corrupted. With "int" used instead of "long", Fortran calls from C do no harm to the stack
+// After this modification, behavior on 32-bit platforms does not change: on all platforms supported by
+// SALOME 3, "int" and "long" have the same size of 4 bytes.
+//========
+//typedef long int Z;
+typedef int Z;
//le type R des nombres "reels"
//=========
LIB_CLIENT_IDL = SALOME_Exception.idl \
SALOME_GenericObj.idl \
SALOME_Comm.idl \
+ SALOME_Component.idl \
MED.idl \
SMESH_Mesh.idl \
SMESH_Group.idl \
aScalarBarLabelProp->SetFontFamilyToArial();
if( mgr->hasValue( "SMESH", "scalar_bar_label_font" ) )
{
- QFont f = mgr->stringValue( "SMESH", "scalar_bar_label_font" );
+ QFont f = mgr->fontValue( "SMESH", "scalar_bar_label_font" );
if( f.family() == "Arial" )
aScalarBarLabelProp->SetFontFamilyToArial();
else if( f.family() == "Courier" )
void
WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid,
const char* theFileName);
+
}
#endif
* \retval int - valid node index
*/
int WrappedIndex(const int ind) const {
- if ( ind < 0 ) return -( ind % NbNodes());
+ if ( ind < 0 ) return NbNodes() + ind % NbNodes();
if ( ind >= NbNodes() ) return ind % NbNodes();
return ind;
}
if ( IsFaceExternal( faceIndex ))
intNormal = XYZ( -intNormal.x, -intNormal.y, -intNormal.z );
XYZ p0 ( nodes[0] ), baryCenter;
- for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); ) {
+ for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); vNbIt++ ) {
int nbShared = (*vNbIt).second;
if ( nbShared >= 3 ) {
SMDS_VolumeTool volume( (*vNbIt).first );
//=======================================================================
ostream& SMESH_Mesh::Dump(ostream& save)
{
- save << "========================== Dump contents of mesh ==========================" << endl;
- save << "1) Total number of nodes: " << NbNodes() << endl;
- save << "2) Total number of edges: " << NbEdges() << endl;
- save << "3) Total number of faces: " << NbFaces() << endl;
- if ( NbFaces() > 0 ) {
- int nb3 = NbTriangles();
- int nb4 = NbQuadrangles();
- save << "3.1.) Number of triangles: " << nb3 << endl;
- save << "3.2.) Number of quadrangles: " << nb4 << endl;
- if ( nb3 + nb4 != NbFaces() ) {
- map<int,int> myFaceMap;
- SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
- while( itFaces->more( ) ) {
- int nbNodes = itFaces->next()->NbNodes();
- if ( myFaceMap.find( nbNodes ) == myFaceMap.end() )
- myFaceMap[ nbNodes ] = 0;
- myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1;
+ int clause = 0;
+ save << "========================== Dump contents of mesh ==========================" << endl << endl;
+ save << ++clause << ") Total number of nodes: \t" << NbNodes() << endl;
+ save << ++clause << ") Total number of edges: \t" << NbEdges() << endl;
+ save << ++clause << ") Total number of faces: \t" << NbFaces() << endl;
+ save << ++clause << ") Total number of polygons:\t" << NbPolygons() << endl;
+ save << ++clause << ") Total number of volumes:\t" << NbVolumes() << endl;
+ save << ++clause << ") Total number of polyhedrons:\t" << NbPolyhedrons() << endl << endl;
+ for ( int isQuadratic = 0; isQuadratic < 2; ++isQuadratic )
+ {
+ string orderStr = isQuadratic ? "quadratic" : "linear";
+ ElementOrder order = isQuadratic ? ORDER_QUADRATIC : ORDER_LINEAR;
+
+ save << ++clause << ") Total number of " << orderStr << " edges:\t" << NbEdges(order) << endl;
+ save << ++clause << ") Total number of " << orderStr << " faces:\t" << NbFaces(order) << endl;
+ if ( NbFaces(order) > 0 ) {
+ int nb3 = NbTriangles(order);
+ int nb4 = NbQuadrangles(order);
+ save << clause << ".1) Number of " << orderStr << " triangles: \t" << nb3 << endl;
+ save << clause << ".2) Number of " << orderStr << " quadrangles:\t" << nb4 << endl;
+ if ( nb3 + nb4 != NbFaces(order) ) {
+ map<int,int> myFaceMap;
+ SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
+ while( itFaces->more( ) ) {
+ int nbNodes = itFaces->next()->NbNodes();
+ if ( myFaceMap.find( nbNodes ) == myFaceMap.end() )
+ myFaceMap[ nbNodes ] = 0;
+ myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1;
+ }
+ save << clause << ".3) Faces in detail: " << endl;
+ map <int,int>::iterator itF;
+ for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++)
+ save << "--> nb nodes: " << itF->first << " - nb elemens:\t" << itF->second << endl;
}
- save << "3.3.) Faces in detail: " << endl;
- map <int,int>::iterator itF;
- for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++)
- save << "--> nb nodes: " << itF->first << " - nb elemens: " << itF->second << endl;
}
- }
- save << "4) Total number of volumes: " << NbVolumes() << endl;
- if ( NbVolumes() > 0 ) {
- int nb8 = NbHexas();
- int nb4 = NbTetras();
- int nb5 = NbPyramids();
- int nb6 = NbPrisms();
- save << "4.1.) Number of hexahedrons: " << nb8 << endl;
- save << "4.2.) Number of tetrahedrons: " << nb4 << endl;
- save << "4.3.) Number of prisms: " << nb6 << endl;
- save << "4.4.) Number of pyramides: " << nb5 << endl;
- if ( nb8 + nb4 + nb5 + nb6 != NbVolumes() ) {
- map<int,int> myVolumesMap;
- SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
- while( itVolumes->more( ) ) {
- int nbNodes = itVolumes->next()->NbNodes();
- if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() )
- myVolumesMap[ nbNodes ] = 0;
- myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1;
+ save << ++clause << ") Total number of " << orderStr << " volumes:\t" << NbVolumes(order) << endl;
+ if ( NbVolumes(order) > 0 ) {
+ int nb8 = NbHexas(order);
+ int nb4 = NbTetras(order);
+ int nb5 = NbPyramids(order);
+ int nb6 = NbPrisms(order);
+ save << clause << ".1) Number of " << orderStr << " hexahedrons:\t" << nb8 << endl;
+ save << clause << ".2) Number of " << orderStr << " tetrahedrons:\t" << nb4 << endl;
+ save << clause << ".3) Number of " << orderStr << " prisms: \t" << nb6 << endl;
+ save << clause << ".4) Number of " << orderStr << " pyramids:\t" << nb5 << endl;
+ if ( nb8 + nb4 + nb5 + nb6 != NbVolumes(order) ) {
+ map<int,int> myVolumesMap;
+ SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
+ while( itVolumes->more( ) ) {
+ int nbNodes = itVolumes->next()->NbNodes();
+ if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() )
+ myVolumesMap[ nbNodes ] = 0;
+ myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1;
+ }
+ save << clause << ".5) Volumes in detail: " << endl;
+ map <int,int>::iterator itV;
+ for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++)
+ save << "--> nb nodes: " << itV->first << " - nb elemens:\t" << itV->second << endl;
}
- save << "4.5.) Volumes in detail: " << endl;
- map <int,int>::iterator itV;
- for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++)
- save << "--> nb nodes: " << itV->first << " - nb elemens: " << itV->second << endl;
}
+ save << endl;
}
save << "===========================================================================" << endl;
return save;
class gp_Pnt;
class SMESH_EXPORT SMESH_MeshEditor {
- public:
+public:
+
+ // define a set of elements sorted by ID, to be used to assure
+ // predictability of edition
+ struct TIDCompare {
+ bool operator () (const SMDS_MeshElement* e1, const SMDS_MeshElement* e2)
+ { return e1->GetID() < e2->GetID(); }
+ };
+ typedef set< const SMDS_MeshElement*, TIDCompare > TIDSortedElemSet;
+
+public:
SMESH_MeshEditor( SMESH_Mesh* theMesh );
// 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
//
//
//
//=======================================================================
//function : IsApplicableHypotesis
-//purpose :
+//purpose :
//=======================================================================
bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
// hypothesis
switch ( theShapeType ) {
- case TopAbs_EDGE:
- case TopAbs_FACE:
- case TopAbs_SHELL:
+ case TopAbs_EDGE:
+ case TopAbs_FACE:
case TopAbs_SOLID:
return SMESH_Gen::GetShapeDim( theShapeType ) == theHypothesis->GetDim();
+
+ case TopAbs_SHELL:
+ // Special case for algorithms, building 2D mesh on a whole shell.
+ // Before this fix there was a problem after restoring from study,
+ // because in that case algorithm is assigned before hypothesis
+ // (on shell in problem case) and hypothesis is checked on faces
+ // (because it is 2D), where we have NO_ALGO state.
+ // Now 2D hypothesis is also applicable to shells.
+ return (theHypothesis->GetDim() == 2 || theHypothesis->GetDim() == 3);
+
// case TopAbs_WIRE:
// case TopAbs_COMPSOLID:
// case TopAbs_COMPOUND:
f.And( SMESH_HypoFilter::IsApplicableTo( _subShape ));
f.AndNot( SMESH_HypoFilter::Is( algo ));
const SMESH_Hypothesis * prevAlgo = _father->GetHypothesis( _subShape, f, true );
- if (prevAlgo &&
+ if (prevAlgo &&
string(algo->GetName()) != string(prevAlgo->GetName()) )
modifiedHyp = true;
}
f.And( SMESH_HypoFilter::IsApplicableTo( _subShape ));
f.AndNot( SMESH_HypoFilter::Is( algo ));
const SMESH_Hypothesis* prevAlgo = _father->GetHypothesis( _subShape, f, true );
- if (prevAlgo &&
+ if (prevAlgo &&
string(algo->GetName()) != string(prevAlgo->GetName()) )
modifiedHyp = true;
}
RemoveSubMeshElementsAndNodes();
{
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if (!algo->NeedDescretBoundary() && !algo->OnlyUnaryInput())
ret = ApplyToCollection( algo, GetCollection( gen, algo ) );
else
virtual SMDS_ElemIteratorPtr GetElements();
- bool SMESHDS_Group::Add (const int theID);
+ bool Add (const int theID);
- bool SMESHDS_Group::Remove (const int theID);
+ bool Remove (const int theID);
void Clear();
void ClearScript();
int ShapeToIndex(const TopoDS_Shape & aShape) const;
const TopoDS_Shape& IndexToShape(int ShapeIndex) const;
+ int MaxShapeIndex() const { return myIndexToShape.Extent(); }
SMESHDS_SubMesh * NewSubMesh(int Index);
int AddCompoundSubmesh(const TopoDS_Shape& S, TopAbs_ShapeEnum type = TopAbs_SHAPE);
using namespace std;
-namespace{
+//namespace{
// Declarations
//=============================================================
void ImportMeshesFromFile(SMESH::SMESH_Gen_ptr theComponentMesh,
return RefType;
}
-}
+
+
+ void SMESHGUI::OnEditDelete()
+ {
+ // VSR 17/11/04: check if all objects selected belong to SMESH component --> start
+ LightApp_SelectionMgr* aSel = SMESHGUI::selectionMgr();
+ SALOME_ListIO selected; aSel->selectedObjects( selected, QString::null, false );
+
+ QString aParentComponent = QString::null;
+ for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
+ {
+ QString cur = anIt.Value()->getComponentDataType();
+ if( aParentComponent.isNull() )
+ aParentComponent = cur;
+ else if( !aParentComponent.isEmpty() && aParentComponent!=cur )
+ aParentComponent = "";
+ }
+
+ if ( aParentComponent != SMESHGUI::GetSMESHGUI()->name() ) {
+ SUIT_MessageBox::warn1 ( SMESHGUI::desktop(),
+ QObject::tr("ERR_ERROR"),
+ QObject::tr("NON_SMESH_OBJECTS_SELECTED").arg( SMESHGUI::GetSMESHGUI()->moduleName() ),
+ QObject::tr("BUT_OK") );
+ return;
+ }
+ // VSR 17/11/04: check if all objects selected belong to SMESH component <-- finish
+ if (SUIT_MessageBox::warn2
+ (SMESHGUI::desktop(),
+ QObject::tr("SMESH_WRN_WARNING"),
+ QObject::tr("SMESH_REALLY_DELETE"),
+ QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"), 1, 0, 0) != 1)
+ return;
+
+ SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
+ SUIT_ViewManager* vm = anApp->activeViewManager();
+ int nbSf = vm->getViewsCount();
+
+ _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
+ _PTR(StudyBuilder) aStudyBuilder = aStudy->NewBuilder();
+ _PTR(GenericAttribute) anAttr;
+ _PTR(AttributeIOR) anIOR;
+
+ SALOME_ListIteratorOfListIO It(selected);
+
+ aStudyBuilder->NewCommand(); // There is a transaction
+ for(; It.More(); It.Next()){ // loop on selected IO's
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+ if(IObject->hasEntry()) {
+ _PTR(SObject) aSO = aStudy->FindObjectID(IObject->getEntry());
+
+ // disable removal of "SMESH" component object
+ if(aSO->FindAttribute(anAttr, "AttributeIOR")){
+ anIOR = anAttr;
+ if ( !strcmp( (char*)anIOR->Value().c_str(), engineIOR().latin1() ) )
+ continue;
+ }
+
+ // put the whole hierarchy of sub-objects of the selected SO into a list and
+ // then treat them all starting from the deepest objects (at list back)
+
+ list< _PTR(SObject) > listSO;
+ listSO.push_back( aSO );
+ list< _PTR(SObject) >::iterator itSO = listSO.begin();
+ for ( ; itSO != listSO.end(); ++itSO ) {
+ _PTR(ChildIterator) it = aStudy->NewChildIterator( *itSO );
+ for (it->InitEx(false); it->More(); it->Next())
+ listSO.push_back( it->Value() );
+ }
+
+ // treat SO's in the list starting from the back
+
+ list< _PTR(SObject) >::reverse_iterator ritSO = listSO.rbegin();
+ for ( ; ritSO != listSO.rend(); ++ritSO ) {
+ _PTR(SObject) SO = *ritSO;
+ if ( !SO ) continue;
+ string anEntry = SO->GetID();
+
+ /** Erase graphical object **/
+ if(SO->FindAttribute(anAttr, "AttributeIOR")){
+ QPtrVector<SUIT_ViewWindow> aViews = vm->getViews();
+ for(int i = 0; i < nbSf; i++){
+ SUIT_ViewWindow *sf = aViews[i];
+ if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){
+ SMESH::RemoveActor(sf,anActor);
+ }
+ }
+ }
+
+ /** Remove an object from data structures **/
+ SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO ));
+ SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( SMESH::SObjectToObject( SO ));
+ if ( !aGroup->_is_nil() ) { // DELETE GROUP
+ SMESH::SMESH_Mesh_var aMesh = aGroup->GetMesh();
+ aMesh->RemoveGroup( aGroup );
+ }
+ else if ( !aSubMesh->_is_nil() ) { // DELETE SUBMESH
+ SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather();
+ aMesh->RemoveSubMesh( aSubMesh );
+
+ _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
+ if (aMeshSO)
+ SMESH::ModifiedMesh(aMeshSO, false);
+ }
+ else {
+ IObject = new SALOME_InteractiveObject
+ ( anEntry.c_str(), engineIOR().latin1(), SO->GetName().c_str() );
+ QString objType = CheckTypeObject(IObject);
+ if ( objType == "Hypothesis" || objType == "Algorithm" ) {// DELETE HYPOTHESIS
+ SMESH::RemoveHypothesisOrAlgorithmOnMesh(IObject);
+ aStudyBuilder->RemoveObjectWithChildren( SO );
+ }
+ else {// default action: remove SObject from the study
+ // san - it's no use opening a transaction here until UNDO/REDO is provided in SMESH
+ //SUIT_Operation *op = new SALOMEGUI_ImportOperation(myActiveStudy);
+ //op->start();
+ aStudyBuilder->RemoveObjectWithChildren( SO );
+ //op->finish();
+ }
+ }
+ } /* listSO back loop */
+ } /* IObject->hasEntry() */
+ } /* more/next */
+ aStudyBuilder->CommitCommand();
+
+ /* Clear any previous selection */
+ SALOME_ListIO l1;
+ aSel->setSelectedObjects( l1 );
+
+ SMESHGUI::GetSMESHGUI()->updateObjBrowser();
+ }
+//}
extern "C" {
SMESHGUI_EXPORT CAM_Module* createModule()
}
}
}
+
+ // PAL13338 -->
+ if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy) && !automaticUpdate() )
+ SMESH::UpdateView();
+ // PAL13338 <--
if (anAction == SMESH::eErase) {
SALOME_ListIO l1;
}
else
aSel->setSelectedObjects( to_process );
+
break;
}
if ( vtkwnd ) {
int nbSel = selected.Extent();
if (nbSel != 1){
+ SUIT_MessageBox::warn1(desktop(),
+ tr("SMESH_WRN_WARNING"),
+ tr("SMESH_WRN_NO_AVAILABLE_DATA"),
+ tr("SMESH_BUT_OK"));
break;
}
}
SMESH::RepaintCurrentView();
}
- }else{
+ }
+ else{
SUIT_MessageBox::warn1(desktop(),
tr("SMESH_WRN_WARNING"),
tr("SMESH_WRN_VIEWER_VTK"),
}
updateObjBrowser();
- }catch(const SALOME::SALOME_Exception & S_ex){
+ }
+ catch(const SALOME::SALOME_Exception & S_ex){
SalomeApp_Tools::QtCatchCorbaException(S_ex);
}
}
}
}
}
+ else if(nbSel==0) {
+ SUIT_MessageBox::warn1(desktop(),
+ tr("SMESH_WRN_WARNING"),
+ tr("SMESH_WRN_NO_AVAILABLE_DATA"),
+ tr("SMESH_BUT_OK"));
+ }
break;
}
createSMESHAction( 4051, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" );
createSMESHAction( 4052, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" );
createSMESHAction( 4061, "TRANS", "ICON_SMESH_TRANSLATION_VECTOR" );
- createSMESHAction( 4062, "ROT", "ICON_DLG_ROTATION" );
+ createSMESHAction( 4062, "ROT", "ICON_DLG_MESH_ROTATION" );
createSMESHAction( 4063, "SYM", "ICON_SMESH_SYMMETRY_PLANE" );
createSMESHAction( 4064, "SEW", "ICON_SMESH_SEWING_FREEBORDERS" );
createSMESHAction( 4065, "MERGE", "ICON_SMESH_MERGE_NODES" );
int fontGr = addPreference( tr( "SMESH_FONT_SCALARBAR" ), sbarTab );
int tfont = addPreference( tr( "SMESH_TITLE" ), fontGr, LightApp_Preferences::Font, "SMESH", "scalar_bar_title_font" );
- addPreference( tr( "SMESH_TITLE" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_title_color" );
+ addPreference( tr( "PREF_TITLE_COLOR" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_title_color" );
int lfont = addPreference( tr( "SMESH_LABELS" ), fontGr, LightApp_Preferences::Font, "SMESH", "scalar_bar_label_font" );
- addPreference( tr( "SMESH_LABELS" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_label_color" );
+ addPreference( tr( "PREF_LABELS_COLOR" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_label_color" );
QStringList fam;
fam.append( tr( "SMESH_FONT_ARIAL" ) );
sbW = aResourceMgr->doubleValue("SMESH", "scalar_bar_horizontal_width", sbW);
if(sbX1+sbW > aTol){
aWarning = "Origin and Size Horizontal: X+Width > 1\n";
- sbX1=0.2;
- sbW=0.6;
+ sbX1=0.01;
+ sbW=0.05;
aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_x", sbX1);
aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_width", sbW);
}
if(sbY1+sbH > aTol){
aWarning = "Origin and Size Horizontal: Y+Height > 1\n";
sbY1=0.01;
- sbH=0.12;
+ sbH=0.05;
aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_y", sbY1);
aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_height",sbH);
}
return myDisplayer;
}
-void SMESHGUI::OnEditDelete()
- {
- // VSR 17/11/04: check if all objects selected belong to SMESH component --> start
- LightApp_SelectionMgr* aSel = SMESHGUI::selectionMgr();
- SALOME_ListIO selected; aSel->selectedObjects( selected, QString::null, false );
-
- QString aParentComponent = QString::null;
- for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
- {
- QString cur = anIt.Value()->getComponentDataType();
- if( aParentComponent.isNull() )
- aParentComponent = cur;
- else if( !aParentComponent.isEmpty() && aParentComponent!=cur )
- aParentComponent = "";
- }
-
- if ( aParentComponent != SMESHGUI::GetSMESHGUI()->name() ) {
- SUIT_MessageBox::warn1 ( SMESHGUI::desktop(),
- QObject::tr("ERR_ERROR"),
- QObject::tr("NON_SMESH_OBJECTS_SELECTED").arg( SMESHGUI::GetSMESHGUI()->moduleName() ),
- QObject::tr("BUT_OK") );
- return;
- }
- // VSR 17/11/04: check if all objects selected belong to SMESH component <-- finish
- if (SUIT_MessageBox::warn2
- (SMESHGUI::desktop(),
- QObject::tr("SMESH_WRN_WARNING"),
- QObject::tr("SMESH_REALLY_DELETE"),
- QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"), 1, 0, 0) != 1)
- return;
-
- SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
- SUIT_ViewManager* vm = anApp->activeViewManager();
- int nbSf = vm->getViewsCount();
-
- _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
- _PTR(StudyBuilder) aStudyBuilder = aStudy->NewBuilder();
- _PTR(GenericAttribute) anAttr;
- _PTR(AttributeIOR) anIOR;
-
- SALOME_ListIteratorOfListIO It(selected);
-
- aStudyBuilder->NewCommand(); // There is a transaction
- for(; It.More(); It.Next()){ // loop on selected IO's
- Handle(SALOME_InteractiveObject) IObject = It.Value();
- if(IObject->hasEntry()) {
- _PTR(SObject) aSO = aStudy->FindObjectID(IObject->getEntry());
-
- // disable removal of "SMESH" component object
- if(aSO->FindAttribute(anAttr, "AttributeIOR")){
- anIOR = anAttr;
- if ( !strcmp( (char*)anIOR->Value().c_str(), engineIOR().latin1() ) )
- continue;
- }
-
- // put the whole hierarchy of sub-objects of the selected SO into a list and
- // then treat them all starting from the deepest objects (at list back)
-
- list< _PTR(SObject) > listSO;
- listSO.push_back( aSO );
- list< _PTR(SObject) >::iterator itSO = listSO.begin();
- for ( ; itSO != listSO.end(); ++itSO ) {
- _PTR(ChildIterator) it = aStudy->NewChildIterator( *itSO );
- for (it->InitEx(false); it->More(); it->Next())
- listSO.push_back( it->Value() );
- }
-
- // treat SO's in the list starting from the back
-
- list< _PTR(SObject) >::reverse_iterator ritSO = listSO.rbegin();
- for ( ; ritSO != listSO.rend(); ++ritSO ) {
- _PTR(SObject) SO = *ritSO;
- if ( !SO ) continue;
- string anEntry = SO->GetID();
-
- /** Erase graphical object **/
- if(SO->FindAttribute(anAttr, "AttributeIOR")){
- QPtrVector<SUIT_ViewWindow> aViews = vm->getViews();
- for(int i = 0; i < nbSf; i++){
- SUIT_ViewWindow *sf = aViews[i];
- if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){
- SMESH::RemoveActor(sf,anActor);
- }
- }
- }
-
- /** Remove an object from data structures **/
- SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO ));
- SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( SMESH::SObjectToObject( SO ));
- if ( !aGroup->_is_nil() ) { // DELETE GROUP
- SMESH::SMESH_Mesh_var aMesh = aGroup->GetMesh();
- aMesh->RemoveGroup( aGroup );
- }
- else if ( !aSubMesh->_is_nil() ) { // DELETE SUBMESH
- SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather();
- aMesh->RemoveSubMesh( aSubMesh );
-
- _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
- if (aMeshSO)
- SMESH::ModifiedMesh(aMeshSO, false);
- }
- else {
- IObject = new SALOME_InteractiveObject
- ( anEntry.c_str(), engineIOR().latin1(), SO->GetName().c_str() );
- QString objType = CheckTypeObject(IObject);
- if ( objType == "Hypothesis" || objType == "Algorithm" ) {// DELETE HYPOTHESIS
- SMESH::RemoveHypothesisOrAlgorithmOnMesh(IObject);
- aStudyBuilder->RemoveObjectWithChildren( SO );
- }
- else {// default action: remove SObject from the study
- // san - it's no use opening a transaction here until UNDO/REDO is provided in SMESH
- //SUIT_Operation *op = new SALOMEGUI_ImportOperation(myActiveStudy);
- //op->start();
- aStudyBuilder->RemoveObjectWithChildren( SO );
- //op->finish();
- }
- }
- } /* listSO back loop */
- } /* IObject->hasEntry() */
- } /* more/next */
- aStudyBuilder->CommitCommand();
-
- /* Clear any previous selection */
- SALOME_ListIO l1;
- aSel->setSelectedObjects( l1 );
-
- SMESHGUI::GetSMESHGUI()->updateObjBrowser();
- }
displaySimulation();
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_AddMeshElementDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void hideEvent (QHideEvent*); /* ESC key */
void enterEvent (QEvent*); /* mouse enter the QWidget */
+ void keyPressEvent(QKeyEvent*);
void displaySimulation();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
aLineEdit->setValidator( new SMESHGUI_IdValidator(table()->viewport(), "validator", 1) );
return aLineEdit;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_AddQuadraticElementDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void hideEvent (QHideEvent*); /* ESC key */
void enterEvent (QEvent*); /* mouse enter the QWidget */
+ void keyPressEvent(QKeyEvent*);
void displaySimulation();
void UpdateTable( bool theConersValidity = true );
bool IsValid();
std::for_each(myPlanes.begin(),myPlanes.end(),TSetVisiblity(theIsToggled));
SMESH::RenderViewWindow(SMESH::GetCurrentVtkView());
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_ClippingDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void setRotation (const double theRot1, const double theRot2);
void Sinchronize();
+ void keyPressEvent(QKeyEvent*);
+
~SMESHGUI_ClippingDlg();
private:
}
connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) );
+ myHelpFileName = "/files/convert_to_from_quadratic.htm";
+
SMESHGUI_SelectionOp::startOperation();
myDlg->SetMediumNdsOnGeom( false );
else
myPicture2d->hide();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_CreatePatternDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent (QCloseEvent* e);
void enterEvent (QEvent*);
+ void keyPressEvent(QKeyEvent*);
private slots:
mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ;
- myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons?";
+ myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons";
Init();
}
busy = false;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_CreatePolyhedralVolumeDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ; /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* e );
int GetConstructorId();
void displaySimulation();
{
onClose();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_DeleteGroupDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*);
+ void keyPressEvent(QKeyEvent*);
private slots:
if (!isMinimized())
ClickOnCancel();
}
+
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_EditMeshDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
private:
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
/***************************************************************/
// Initialisations
- XSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- YSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- ZSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- AngleSpin->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+ XSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ YSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ ZSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ AngleSpin->RangeStepAndValidator(-180.0, 180.0, 5.0, 3);
mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(myHelpFileName),
QObject::tr("BUT_OK"));
- }
+ }
}
//=================================================================================
}
return QDialog::eventFilter(object, event);
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_ExtrusionAlongPathDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
private:
void Init (bool ResetControls = true);
void enterEvent (QEvent*); /* mouse enter the QWidget */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
void SetEditCurrentArgument (QToolButton* button);
SMESHGUI_ExtrusionDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- SpinBox_Dx->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Dy->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Dz->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+ SpinBox_Dx->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Dy->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Dz->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
QIntValidator* anIntValidator = new QIntValidator(SpinBox_NbSteps);
SpinBox_NbSteps->setValidator(anIntValidator);
return GroupConstructors->id(GroupConstructors->selected());
return -1;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_ExtrusionDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
private:
void Init (bool ResetControls = true);
void enterEvent (QEvent*); /* mouse enter the QWidget */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
//void closeEvent (QCloseEvent*);
//void hideEvent (QHideEvent*); /* ESC key */
aTable->SetEditable(false, theRow, 4);
if (theCriterion.Type != FT_RangeOfIds &&
- theCriterion.Type != FT_BelongToGeom &&
- theCriterion.Type != FT_BelongToPlane &&
- theCriterion.Type != FT_BelongToCylinder &&
- theCriterion.Type != FT_LyingOnGeom)
+ theCriterion.Type != FT_BelongToGeom &&
+ theCriterion.Type != FT_BelongToPlane &&
+ theCriterion.Type != FT_BelongToCylinder &&
+ theCriterion.Type != FT_LyingOnGeom &&
+ theCriterion.Type != FT_FreeBorders &&
+ theCriterion.Type != FT_FreeEdges &&
+ theCriterion.Type != FT_BadOrientedVolume)
aTable->setText(theRow, 2, QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
else
{
myFilter[ myTable->GetType() ]->GetPredicate()->_is_nil() ||
!mySetInViewer->isChecked()) {
SMESH::RemoveFilter(getFilterId(anEntType), aSelector);
- } else {
+ }
+ else {
Handle(SMESHGUI_PredicateFilter) aFilter = new SMESHGUI_PredicateFilter();
aFilter->SetPredicate(myFilter[ myTable->GetType() ]->GetPredicate());
+ SMESH::RemoveFilter(getFilterId(anEntType), aSelector); //skl for IPAL12631
SMESH::SetFilter(aFilter, aSelector);
}
}
}
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_FilterDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
+
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*);
+ void keyPressEvent(QKeyEvent*);
// dialog creation
QFrame* createButtonFrame (QWidget*);
}
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_FilterLibraryDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
+ void keyPressEvent( QKeyEvent* e );
private slots:
if (!isMinimized())
onClose();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent(QCloseEvent* e);
void enterEvent (QEvent*);
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
void setSelectionMode(int theMode);
void updateButtons();
myFocusWg = myEdit1;
myNameEdit->setFocus();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_GroupOpDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
+ void keyPressEvent(QKeyEvent*);
private slots:
SMESHGUI_MergeNodesDlgLayout->addWidget(GroupEdit, 3, 0);
/* Initialisations */
- SpinBoxTolerance->RangeStepAndValidator(0.0, 999999.999, 0.1, 3);
+ SpinBoxTolerance->RangeStepAndValidator(0.0, COORD_MAX, 0.1, 3);
SpinBoxTolerance->SetValue(1e-05);
RadioButton1->setChecked(TRUE);
if (!isMinimized())
ClickOnCancel();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_MergeNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e );
void enterEvent ( QEvent * ); /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* e );
void onEditNodesGroup();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
QObject::tr("BUT_OK"));
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_MeshInfosDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
protected:
void closeEvent( QCloseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
void windowActivationChange( bool oldActive );
void DumpMeshInfos();
// 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
SUBMESH_ON_SHELL_TAG =8,
SUBMESH_ON_SOLID_TAG =9,
SUBMESH_ON_COMPOUND_TAG=10 };
-
+
//================================================================================
/*!
* \brief Constructor
connect( myDlg, SIGNAL( hypoSet( const QString& )), SLOT( onHypoSet( const QString& )));
connect( myDlg, SIGNAL( geomSelectionByMesh( bool )), SLOT( onGeomSelectionByMesh( bool )));
- if ( myToCreate )
+ if ( myToCreate )
if ( myIsMesh ) myHelpFileName = "/files/constructing_meshes.htm";
else myHelpFileName = "/files/constructing_submeshes.htm";
else myHelpFileName = "files/reassigning_hypotheses_and_algorithms.htm";
}
}
}
- }
+ }
}
return _PTR(SObject)();
}
case GEOM::SOLID:
case GEOM::SHELL: shapeDim = 3; break;
case GEOM::FACE: shapeDim = 2; break;
- case GEOM::WIRE:
+ case GEOM::WIRE:
case GEOM::EDGE: shapeDim = 1; break;
case GEOM::VERTEX: shapeDim = 0; break;
default:
{
// if a submesh on the selected shape already exist, pass to submesh edition mode
if ( _PTR(SObject) pSubmesh = getSubmeshByGeom() ) {
- SMESH::SMESH_subMesh_var sm =
+ SMESH::SMESH_subMesh_var sm =
SMESH::SObjectToInterface<SMESH::SMESH_subMesh>( pSubmesh );
bool editSubmesh = ( !sm->_is_nil() &&
SUIT_MessageBox::question2( myDlg, tr( "SMESH_WARNING" ),
}
}
}
-
+
return true;
}
const int nbColonsInMeshEntry = 3;
bool isSubMesh = myToCreate ?
!myIsMesh :
- myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ).contains(':') > nbColonsInMeshEntry;
+ myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ).contains(':') > nbColonsInMeshEntry;
if ( isSubMesh )
{
//================================================================================
/*!
- * \Brief Returns tab dimention
+ * \Brief Returns tab dimention
* \param tab - the tab in the dlg
* \param dlg - my dialogue
* \retval int - dimention
const int theType,
const QString& theTypeName)
{
+ // During a hypothesis creation we might need to select some objects.
+ // Main dialog must not update it's own selected objects in this case.
+ dlg()->deactivateAll();
+
HypothesisData* aData = SMESH::GetHypothesisData(theTypeName.latin1());
if (!aData)
return;
//================================================================================
/*!
- * \brief access to hypothesis data
+ * \brief access to hypothesis data
* \param theDim - hyp dimension
* \param theHypType - hyp type (Algo,MainHyp or AddHyp)
* \param theIndex - index in the list
// set new available algoritms
availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], prevAlgo );
HypothesisData* soleCompatible = 0;
-
- // bug SWP13024 need save following state
- bool onlyOne = ( anAvailable.count() == 1 );
- if ( onlyOne )
+ if ( anAvailable.count() == 1 )
soleCompatible = myAvailableHypData[dim][Algo][0];
if ( dim == aTopDim && prevAlgo ) // all available algoritms should be selectable any way
- {
availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], 0 );
- if ( onlyOne )
- soleCompatible = 0;
- }
myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable );
noCompatible = anAvailable.isEmpty();
// restore previously selected algo
algoIndex = myAvailableHypData[dim][Algo].findIndex( curAlgo );
- if ( !isSubmesh && algoIndex < 0 && soleCompatible )
+ if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward )
// select the sole compatible algo
algoIndex = myAvailableHypData[dim][Algo].findIndex( soleCompatible );
setCurrentHyp( dim, Algo, algoIndex );
//================================================================================
/*!
- * \brief Creates and selects hypothesis of hypotheses set
+ * \brief Creates and selects hypothesis of hypotheses set
* \param theSetName - The name of hypotheses set
*/
//================================================================================
{
theMess = "";
- QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
- _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.latin1() );
- GEOM::GEOM_Object_var aGeomVar =
- GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() );
+ //QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
+ //QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
- SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen();
- if ( aSMESHGen->_is_nil() )
- return false;
+ QStringList aList;
+ myDlg->selectedObject( SMESHGUI_MeshDlg::Geom, aList );
+ QStringList::Iterator it = aList.begin();
+ for(; it!=aList.end(); it++) {
- SUIT_OverrideCursor aWaitCursor;
+ QString aGeomEntry = *it;
+ _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.latin1() );
+ GEOM::GEOM_Object_var aGeomVar =
+ GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() );
- // create mesh
- SMESH::SMESH_Mesh_var aMeshVar = aSMESHGen->CreateMesh( aGeomVar );
- if ( aMeshVar->_is_nil() )
- return false;
- _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar.in() );
- if ( aMeshSO )
- SMESH::SetName( aMeshSO, myDlg->objectText( SMESHGUI_MeshDlg::Obj ).latin1() );
+ SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen();
+ if ( aSMESHGen->_is_nil() )
+ return false;
- for ( int aDim = SMESH::DIM_1D; aDim <= SMESH::DIM_3D; aDim++ )
- {
- if ( !isAccessibleDim( aDim )) continue;
+ SUIT_OverrideCursor aWaitCursor;
- // assign hypotheses
- for ( int aHypType = MainHyp; aHypType <= AddHyp; aHypType++ )
- {
- int aHypIndex = currentHyp( aDim, aHypType );
- if ( aHypIndex >= 0 && aHypIndex < myExistingHyps[ aDim ][ aHypType ].count() )
- {
- SMESH::SMESH_Hypothesis_var aHypVar = myExistingHyps[ aDim ][ aHypType ][ aHypIndex ];
- if ( !aHypVar->_is_nil() )
- SMESH::AddHypothesisOnMesh( aMeshVar, aHypVar );
+ // create mesh
+ SMESH::SMESH_Mesh_var aMeshVar = aSMESHGen->CreateMesh( aGeomVar );
+ if ( aMeshVar->_is_nil() )
+ return false;
+ _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar.in() );
+ if ( aMeshSO )
+ SMESH::SetName( aMeshSO, myDlg->objectText( SMESHGUI_MeshDlg::Obj ).latin1() );
+
+ for ( int aDim = SMESH::DIM_1D; aDim <= SMESH::DIM_3D; aDim++ ) {
+ if ( !isAccessibleDim( aDim )) continue;
+
+ // assign hypotheses
+ for ( int aHypType = MainHyp; aHypType <= AddHyp; aHypType++ ) {
+ int aHypIndex = currentHyp( aDim, aHypType );
+ if ( aHypIndex >= 0 && aHypIndex < myExistingHyps[ aDim ][ aHypType ].count() ) {
+ SMESH::SMESH_Hypothesis_var aHypVar = myExistingHyps[ aDim ][ aHypType ][ aHypIndex ];
+ if ( !aHypVar->_is_nil() )
+ SMESH::AddHypothesisOnMesh( aMeshVar, aHypVar );
+ }
}
+ // find or create algorithm
+ SMESH::SMESH_Hypothesis_var anAlgoVar = getAlgo( aDim );
+ if ( !anAlgoVar->_is_nil() )
+ SMESH::AddHypothesisOnMesh( aMeshVar, anAlgoVar );
}
- // find or create algorithm
- SMESH::SMESH_Hypothesis_var anAlgoVar = getAlgo( aDim );
- if ( !anAlgoVar->_is_nil() )
- SMESH::AddHypothesisOnMesh( aMeshVar, anAlgoVar );
+
}
return true;
}
return false;
}
+ if ( myName->text()=="" ) {
+ if (theMess)
+ QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
+ tr("SMESHGUI_INVALID_PARAMETERS"), QMessageBox::Ok);
+ return false;
+ }
+
return true;
}
{
return second ? myNode2->value() - 1 : myNode1->value() - 1;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_MeshPatternDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
QString autoExtension( const QString& theFileName ) const;
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
+ void keyPressEvent(QKeyEvent*);
bool isValid( const bool theMess = true );
void resetSelInput();
bool isRefine() const;
new QLabel(tr("SMESH_Z"), aCoordGrp);
myZ = new SMESHGUI_SpinBox(aCoordGrp);
- myX->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
- myY->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
- myZ->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
+ myX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
+ myY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
+ myZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
QVBoxLayout* aLay = new QVBoxLayout(aFrame);
aLay->addWidget(aPixGrp);
aViewWindow->Repaint();
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_MoveNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
void hideEvent ( QHideEvent * );
+ void keyPressEvent( QKeyEvent* );
void erasePreview();
QFrame* createButtonFrame( QWidget* );
QFrame* createMainFrame ( QWidget* );
return myEntityType;
}
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_MultiEditDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
+
/*!
* Class : SMESHGUI_ChangeOrientationDlg
* Description : Modification of orientation of faces
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ;
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* );
QFrame* createButtonFrame( QWidget* );
QFrame* createMainFrame ( QWidget*, const bool );
bool isValid( const bool ) const;
step = 25.0;
/* min, max, step and decimals for spin boxes */
- SpinBox_X->RangeStepAndValidator(-999.999, +999.999, step, 3);
- SpinBox_Y->RangeStepAndValidator(-999.999, +999.999, step, 3);
- SpinBox_Z->RangeStepAndValidator(-999.999, +999.999, step, 3);
+ SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+ SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
SpinBox_X->SetValue(0.0);
SpinBox_Y->SetValue(0.0);
SpinBox_Z->SetValue(0.0);
SelectionIntoArgument();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_NodesDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void enterEvent(QEvent* e);
void closeEvent(QCloseEvent*);
void hideEvent (QHideEvent *); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
QButtonGroup* GroupConstructors;
QRadioButton* Constructor1;
if (!isMinimized())
ClickOnCancel();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_RemoveElementsDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ; /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* e );
LightApp_SelectionMgr* mySelectionMgr;
SVTK_Selector* mySelector;
if (!isMinimized())
ClickOnCancel();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_RemoveNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ; /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* e );
LightApp_SelectionMgr* mySelectionMgr;
SVTK_Selector* mySelector;
if (!isMinimized())
ClickOnCancel();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_RenumberingDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ) ; /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent( QKeyEvent* e );
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
SMESHGUI_RevolutionDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+ SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
- SpinBox_Angle->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+ SpinBox_Angle->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5.0, 3);
QIntValidator* anIntValidator = new QIntValidator(SpinBox_NbSteps);
SpinBox_NbSteps->setValidator(anIntValidator);
SpinBox_NbSteps->setRange(1, 999999);
- SpinBox_Tolerance->RangeStepAndValidator(0.0, +999999.999, 0.1, 6);
+ SpinBox_Tolerance->RangeStepAndValidator(0.0, COORD_MAX, 0.1, 6);
GroupArguments->show();
RadioButton1->setChecked(TRUE);
buttonApply->setEnabled(false);
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_RevolutionDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
bool IsAxisOk();
mySMESHGUI( theModule ),
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
{
- QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_ROTATION")));
+ QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_MESH_ROTATION")));
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
if (!name)
SMESHGUI_RotationDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+ SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
- SpinBox_Angle->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+ SpinBox_Angle->RangeStepAndValidator(-360.0, +360.0, 5.0, 3);
GroupArguments->show();
myConstructorId = 0;
buttonApply->setEnabled(false);
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_RotationDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
bool IsAxisOk();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
{
return (myOk1 && myOk2 && myOk3 && myOk4 && myOk5 && myOk6);
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_SewingDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent( QCloseEvent* e ) ;
void enterEvent ( QEvent * ); /* mouse enter the QWidget */
void hideEvent ( QHideEvent * ); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
bool IsValid();
return aResult;
}
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_SingleEditDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
+
/*!
* Class : SMESHGUI_TrianglesInversionDlg
* Description : Inversion of the diagonal of a pseudo-quadrangle formed by
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*);
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
QFrame* createButtonFrame (QWidget*);
QFrame* createMainFrame (QWidget*);
bool isValid (const bool) const;
SelectionIntoArgument();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_SmoothingDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent(QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
void SMESHGUI_SpinBox::RangeStepAndValidator
(double min, double max, double step, unsigned short decimals)
{
+ setPrecision(-decimals); // PAL8769. Minus is for using 'g' double->string conversion specifier,
+ // see QtxDblSpinBox::mapValueToText( double v )
setRange(min, max);
setLineStep(step);
((QDoubleValidator*)validator())->setRange(min, max, decimals);
#include <QtxDblSpinBox.h>
+// like in GEOM_SRC/src/DlgRef/DlgRef_SpinBox.h
+#define COORD_MIN -1e+15
+#define COORD_MAX +1e+15
+
//=================================================================================
// class : SMESHGUI_SpinBox
// purpose : Derivated from QtxDblSpinBox class
QObject::tr("BUT_OK"));
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_StandardMeshInfosDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ onHelp();
+ }
+}
protected:
void closeEvent( QCloseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
void windowActivationChange( bool oldActive );
void DumpMeshInfos();
// Open CASCADE Includes
#include <TopoDS.hxx>
+// QT Includes
+#include <qapplication.h>
+
// IDL Headers
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Gen)
}
mySComponentMesh = SALOMEDS::SComponent::_narrow(aSComponent);
+
+ qApp->processEvents(); // Workaround for bug 12662
}
};
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SMESHGUI_Swig.hxx"
%}
+/* Exception handler for all functions */
+%exception {
+ class PyAllowThreadsGuard {
+ public:
+ // Py_BEGIN_ALLOW_THREADS
+ PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+ // Py_END_ALLOW_THREADS
+ ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+ private:
+ PyThreadState *_save;
+ };
+
+ PyAllowThreadsGuard guard;
+
+ $action
+}
+
%include "typemaps.i"
class SMESH_Swig
SMESHGUI_SymmetryDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+ SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
GroupArguments->show();
RadioButton1->setChecked(TRUE);
buttonApply->setEnabled(false);
}
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_SymmetryDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
bool IsMirrorOk();
SMESHGUI_TranslationDlgLayout->addWidget(GroupArguments, 1, 0);
/* Initialisations */
- SpinBox1_1->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox1_2->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox1_3->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox2_1->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox2_2->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
- SpinBox2_3->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+ SpinBox1_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox1_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox1_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox2_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox2_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+ SpinBox2_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
GroupArguments->show();
RadioButton1->setChecked(TRUE);
return GroupConstructors->id(GroupConstructors->selected());
return -1;
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_TranslationDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
void closeEvent (QCloseEvent*);
void enterEvent (QEvent*); /* mouse enter the QWidget */
void hideEvent (QHideEvent*); /* ESC key */
+ void keyPressEvent(QKeyEvent*);
int GetConstructorId();
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
}
ValueHasChanged();
}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose :
+//=================================================================================
+void SMESHGUI_TransparencyDlg::keyPressEvent( QKeyEvent* e )
+{
+ QDialog::keyPressEvent( e );
+ if ( e->isAccepted() )
+ return;
+
+ if ( e->key() == Key_F1 )
+ {
+ e->accept();
+ ClickOnHelp();
+ }
+}
~SMESHGUI_TransparencyDlg();
+private:
+ void keyPressEvent(QKeyEvent*);
+
private :
SMESHGUI* mySMESHGUI;
msgstr "mesh_renumbering_elements.png"
#Rotation
-msgid "ICON_DLG_ROTATION"
+msgid "ICON_DLG_MESH_ROTATION"
msgstr "mesh_rotation.png"
#Translation by vector
msgstr "mesh_renumbering_elements.png"
#Rotation
-msgid "ICON_DLG_ROTATION"
+msgid "ICON_DLG_MESH_ROTATION"
msgstr "mesh_rotation.png"
#Translation by vector
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# This is a Qt message file in .po format. Each msgid starts with
+# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
+# would be translated to "Pub", not "Foo::Pub".
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2006-01-13 13:50+0300\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgid "SMESH_WRN_EMPTY_NAME"
msgstr "Empty name is not valid"
+#Not available data
+msgid "SMESH_WRN_NO_AVAILABLE_DATA"
+msgstr "No available data in selection"
+
#Smesh polyedre cretion error
msgid "SMESH_POLYEDRE_CREATE_ERROR"
msgstr "Polyedron creation error"
msgstr "Mesh"
msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_PATH_SHAPE"
-msgstr "Shape (edge or wire)"
+msgstr "Shape (edge)"
msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_PATH_START"
-msgstr "Start point"
+msgstr "Start node"
msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_USE_ANGLES"
msgstr "Use Angles"
msgid "SMESHGUI::PREF_COLOR"
msgstr "Color"
+msgid "SMESHGUI::PREF_TITLE_COLOR"
+msgstr "Title color"
+
+msgid "SMESHGUI::PREF_LABELS_COLOR"
+msgstr "Labels color"
+
msgid "SMESHGUI::PREF_SIZE"
msgstr "Size"
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FacePosition.hxx"
+#include "SMDS_VertexPosition.hxx"
+#include "SMDS_SpacePosition.hxx"
#include CORBA_SERVER_HEADER(SMESH_Group)
#include CORBA_SERVER_HEADER(SMESH_Filter)
char* aPlatformLibName = 0;
if ( theLibName && theLibName[0] != '\0' )
{
+ int libNameLen = strlen(theLibName);
+ //check for old format "libXXXXXXX.so"
+ if( !strncmp( theLibName, "lib", 3 ) && !strcmp( theLibName+libNameLen-4, ".so" ) && libNameLen > 7 )
+ {
+ //the old format
+#ifdef WNT
+ aPlatformLibName = new char[libNameLen - 2];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strncat( aPlatformLibName, theLibName+3, libNameLen-6 );
+ aPlatformLibName = strcat( aPlatformLibName, ".dll" );
+#else
+ aPlatformLibName = new char[ libNameLen ];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strcat( aPlatformLibName, theLibName );
+#endif
+ }
+ else
+ {
+ //try to use new format
#ifdef WNT
- aPlatformLibName = new char[ strlen(theLibName) + 5 ];
- aPlatformLibName[0] = '\0';
- aPlatformLibName = strcat( aPlatformLibName, theLibName );
- aPlatformLibName = strcat( aPlatformLibName, ".dll" );
+ aPlatformLibName = new char[ libNameLen + 5 ];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strcat( aPlatformLibName, theLibName );
+ aPlatformLibName = strcat( aPlatformLibName, ".dll" );
#else
- aPlatformLibName = new char[ strlen(theLibName) + 7 ];
- aPlatformLibName[0] = '\0';
- aPlatformLibName = strcat( aPlatformLibName, "lib" );
- aPlatformLibName = strcat( aPlatformLibName, theLibName );
- aPlatformLibName = strcat( aPlatformLibName, ".so" );
+ aPlatformLibName = new char[ libNameLen + 7 ];
+ aPlatformLibName[0] = '\0';
+ aPlatformLibName = strcat( aPlatformLibName, "lib" );
+ aPlatformLibName = strcat( aPlatformLibName, theLibName );
+ aPlatformLibName = strcat( aPlatformLibName, ".so" );
#endif
+ }
}
myIsEmbeddedMode = theMode;
if ( !myIsEmbeddedMode ) {
- bool raiseFPE;
+ //PAL10867: disable signals catching with "noexcepthandler" option
+ char* envNoCatchSignals = getenv("NOT_INTERCEPT_SIGNALS");
+ if (!envNoCatchSignals || !atoi(envNoCatchSignals))
+ {
+ bool raiseFPE;
#ifdef _DEBUG_
- raiseFPE = true;
- char* envDisableFPE = getenv("DISABLE_FPE");
- if (envDisableFPE && atoi(envDisableFPE))
- raiseFPE = false;
+ raiseFPE = true;
+ char* envDisableFPE = getenv("DISABLE_FPE");
+ if (envDisableFPE && atoi(envDisableFPE))
+ raiseFPE = false;
#else
- raiseFPE = false;
+ raiseFPE = false;
#endif
- OSD::SetSignal( raiseFPE );
+ OSD::SetSignal( raiseFPE );
+ }
+ // else OSD::SetSignal() is called in GUI
}
- // else OSD::SetSignal() is called in GUI
}
//=============================================================================
return myGen.Compute( myLocMesh, myLocShape);
}
}
+ catch ( std::bad_alloc& exc ) {
+ THROW_SALOME_CORBA_EXCEPTION( "Memory allocation problem",
+ SALOME::INTERNAL_ERROR );
+ }
catch ( SALOME_Exception& S_ex ) {
INFOS( "Compute(): catch exception "<< S_ex.what() );
}
}
}
// All sub-meshes will be stored in MED file
- if ( shapeRefFound )
- myWriter.AddAllSubMeshes();
+ // .. will NOT (PAL 12992)
+ //if ( shapeRefFound )
+ //myWriter.AddAllSubMeshes();
// groups root sub-branch
SALOMEDS::SObject_var myGroupsBranch;
myLocMesh.ShapeToMesh( nullShape ); // remove shape referring data
}
- // Store node positions on sub-shapes (SMDS_Position):
-
if ( !mySMESHDSMesh->SubMeshes().empty() )
{
+ // Store submeshes
+ // ----------------
+ aGroup = new HDFgroup( "Submeshes", aTopGroup );
+ aGroup->CreateOnDisk();
+
+ // each element belongs to one or none submesh,
+ // so for each node/element, we store a submesh ID
+
+ // Make maps of submesh IDs of elements sorted by element IDs
+ typedef int TElemID;
+ typedef int TSubMID;
+ map< TElemID, TSubMID > eId2smId, nId2smId;
+ map< TElemID, TSubMID >::iterator hint; // insertion to map is done before hint
+ const map<int,SMESHDS_SubMesh*>& aSubMeshes = mySMESHDSMesh->SubMeshes();
+ map<int,SMESHDS_SubMesh*>::const_iterator itSubM ( aSubMeshes.begin() );
+ SMDS_NodeIteratorPtr itNode;
+ SMDS_ElemIteratorPtr itElem;
+ for ( itSubM = aSubMeshes.begin(); itSubM != aSubMeshes.end() ; itSubM++ )
+ {
+ TSubMID aSubMeID = itSubM->first;
+ SMESHDS_SubMesh* aSubMesh = itSubM->second;
+ if ( aSubMesh->IsComplexSubmesh() )
+ continue; // submesh containing other submeshs
+ // nodes
+ hint = nId2smId.begin(); // optimize insertion basing on increasing order of elem Ids in submesh
+ for ( itNode = aSubMesh->GetNodes(); itNode->more(); ++hint)
+ hint = nId2smId.insert( hint, make_pair( itNode->next()->GetID(), aSubMeID ));
+ // elements
+ hint = eId2smId.begin();
+ for ( itElem = aSubMesh->GetElements(); itElem->more(); ++hint)
+ hint = eId2smId.insert( hint, make_pair( itElem->next()->GetID(), aSubMeID ));
+ }
+
+ // Care of elements that are not on submeshes
+ if ( mySMESHDSMesh->NbNodes() != nId2smId.size() ) {
+ for ( itNode = mySMESHDSMesh->nodesIterator(); itNode->more(); )
+ /* --- stl_map.h says : */
+ /* A %map relies on unique keys and thus a %pair is only inserted if its */
+ /* first element (the key) is not already present in the %map. */
+ nId2smId.insert( make_pair( itNode->next()->GetID(), 0 ));
+ }
+ int nbElems = mySMESHDSMesh->NbEdges() + mySMESHDSMesh->NbFaces() + mySMESHDSMesh->NbVolumes();
+ if ( nbElems != eId2smId.size() ) {
+ for ( itElem = mySMESHDSMesh->elementsIterator(); itElem->more(); )
+ eId2smId.insert( make_pair( itElem->next()->GetID(), 0 ));
+ }
+
+ // Store submesh IDs
+ for ( int isNode = 0; isNode < 2; ++isNode )
+ {
+ map< TElemID, TSubMID >& id2smId = isNode ? nId2smId : eId2smId;
+ if ( id2smId.empty() ) continue;
+ map< TElemID, TSubMID >::const_iterator id_smId = id2smId.begin();
+ // make and fill array of submesh IDs
+ int* smIDs = new int [ id2smId.size() ];
+ for ( int i = 0; id_smId != id2smId.end(); ++id_smId, ++i )
+ smIDs[ i ] = id_smId->second;
+ // write HDF group
+ aSize[ 0 ] = id2smId.size();
+ string aDSName( isNode ? "Node Submeshes" : "Element Submeshes");
+ aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_INT32, aSize, 1 );
+ aDataset->CreateOnDisk();
+ aDataset->WriteOnDisk( smIDs );
+ aDataset->CloseOnDisk();
+ //
+ delete smIDs;
+ }
+
+ // Store node positions on sub-shapes (SMDS_Position):
+ // ----------------------------------------------------
+
aGroup = new HDFgroup( "Node Positions", aTopGroup );
aGroup->CreateOnDisk();
int nbEdgeNodes = 0, nbFaceNodes = 0;
list<SMESHDS_SubMesh*> aEdgeSM, aFaceSM;
// loop on SMESHDS_SubMesh'es
- const map<int,SMESHDS_SubMesh*>& aSubMeshes = mySMESHDSMesh->SubMeshes();
- map<int,SMESHDS_SubMesh*>::const_iterator itSubM ( aSubMeshes.begin() );
- for ( ; itSubM != aSubMeshes.end() ; itSubM++ )
+ for ( itSubM = aSubMeshes.begin(); itSubM != aSubMeshes.end() ; itSubM++ )
{
SMESHDS_SubMesh* aSubMesh = (*itSubM).second;
if ( aSubMesh->IsComplexSubmesh() )
for ( ; itSM != pListSM->end(); itSM++ )
{
SMESHDS_SubMesh* aSubMesh = (*itSM);
- if ( aSubMesh->IsComplexSubmesh() )
- continue; // submesh containing other submeshs
SMDS_NodeIteratorPtr itNode = aSubMesh->GetNodes();
// loop on nodes in aSubMesh
SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
aStudyBuilder->LoadWith( theCompRoot, GetGeomEngine() );
}
+//=============================================================================
+/*!
+ * \brief Creates SMDS_Position according to shape type
+ */
+//=============================================================================
+
+class PositionCreator {
+public:
+ SMDS_PositionPtr MakePosition(const TopAbs_ShapeEnum type) {
+ return (this->*myFuncTable[ type ])();
+ }
+ PositionCreator() {
+ myFuncTable.resize( (size_t) TopAbs_SHAPE, & PositionCreator::defaultPosition );
+ myFuncTable[ TopAbs_FACE ] = & PositionCreator::facePosition;
+ myFuncTable[ TopAbs_EDGE ] = & PositionCreator::edgePosition;
+ myFuncTable[ TopAbs_VERTEX ] = & PositionCreator::vertexPosition;
+ }
+private:
+ SMDS_PositionPtr edgePosition() const { return SMDS_PositionPtr( new SMDS_EdgePosition ); }
+ SMDS_PositionPtr facePosition() const { return SMDS_PositionPtr( new SMDS_FacePosition ); }
+ SMDS_PositionPtr vertexPosition() const { return SMDS_PositionPtr( new SMDS_VertexPosition); }
+ SMDS_PositionPtr defaultPosition() const { return SMDS_SpacePosition::originSpacePosition(); }
+ typedef SMDS_PositionPtr (PositionCreator:: * FmakePos)() const;
+ vector<FmakePos> myFuncTable;
+};
//=============================================================================
/*!
}
if(hasData) {
+
// Read sub-meshes from MED
+ // -------------------------
if(MYDEBUG) MESSAGE("Create all sub-meshes");
- myReader.CreateAllSubMeshes();
+ bool submeshesInFamilies = ( ! aTopGroup->ExistInternalObject( "Submeshes" ));
+ if ( submeshesInFamilies )
+ {
+ // old way working before fix of PAL 12992
+ myReader.CreateAllSubMeshes();
+ }
+ else
+ {
+ // open a group
+ aGroup = new HDFgroup( "Submeshes", aTopGroup );
+ aGroup->OpenOnDisk();
+ int maxID = mySMESHDSMesh->MaxShapeIndex();
+ vector< SMESHDS_SubMesh * > subMeshes( maxID + 1, (SMESHDS_SubMesh*) 0 );
+ vector< TopAbs_ShapeEnum > smType ( maxID + 1, TopAbs_SHAPE );
+
+ PositionCreator aPositionCreator;
+
+ SMDS_NodeIteratorPtr nIt = mySMESHDSMesh->nodesIterator();
+ SMDS_ElemIteratorPtr eIt = mySMESHDSMesh->elementsIterator();
+ for ( int isNode = 0; isNode < 2; ++isNode )
+ {
+ string aDSName( isNode ? "Node Submeshes" : "Element Submeshes");
+ if ( aGroup->ExistInternalObject( (char*) aDSName.c_str() ))
+ {
+ aDataset = new HDFdataset( (char*) aDSName.c_str(), aGroup );
+ aDataset->OpenOnDisk();
+ // read submesh IDs for all elements sorted by ID
+ int nbElems = aDataset->GetSize();
+ int* smIDs = new int [ nbElems ];
+ aDataset->ReadFromDisk( smIDs );
+ aDataset->CloseOnDisk();
+
+ // get elements sorted by ID
+ ::SMESH_MeshEditor::TIDSortedElemSet elemSet;
+ if ( isNode )
+ while ( nIt->more() ) elemSet.insert( nIt->next() );
+ else
+ while ( eIt->more() ) elemSet.insert( eIt->next() );
+ ASSERT( elemSet.size() == nbElems );
+
+ // add elements to submeshes
+ ::SMESH_MeshEditor::TIDSortedElemSet::iterator iE = elemSet.begin();
+ for ( int i = 0; i < nbElems; ++i, ++iE )
+ {
+ int smID = smIDs[ i ];
+ if ( smID == 0 ) continue;
+ ASSERT( smID <= maxID );
+ const SMDS_MeshElement* elem = *iE;
+ // get or create submesh
+ SMESHDS_SubMesh* & sm = subMeshes[ smID ];
+ if ( ! sm ) {
+ sm = mySMESHDSMesh->NewSubMesh( smID );
+ smType[ smID ] = mySMESHDSMesh->IndexToShape( smID ).ShapeType();
+ }
+ // add
+ if ( isNode ) {
+ SMDS_PositionPtr pos = aPositionCreator.MakePosition( smType[ smID ]);
+ pos->SetShapeId( smID );
+ SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( static_cast<const SMDS_MeshNode*>( elem ));
+ node->SetPosition( pos );
+ sm->AddNode( node );
+ } else {
+ sm->AddElement( elem );
+ }
+ }
+ delete smIDs;
+ }
+ }
+ } // end reading submeshes
// Read node positions on sub-shapes (SMDS_Position)
nbFids = aSize;
}
}
+ aDataset->CloseOnDisk();
} // loop on 5 datasets
// Set node positions on edges or faces
class SMESH_Mesh_i;
class SMESH_I_EXPORT SMESH_MEDMesh_i:
- public virtual POA_SALOME_MED::MESH, public virtual SALOME::GenericObj_i
+ public virtual POA_SALOME_MED::MESH,
+ public virtual SALOME::GenericObj_i
{
protected:
// C++ object containing values
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include <gp_Ax2.hxx>
#include <gp_Vec.hxx>
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
#include <sstream>
typedef map<const SMDS_MeshElement*,
myLastCreatedElems = new SMESH::long_array();
myLastCreatedNodes = new SMESH::long_array();
- CASCatch_TRY {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
SMESHDS_Mesh* aMesh = GetMeshDS();
-
+
map<int,const SMDS_MeshElement*> elements;
ToMap(theIDsOfElements, aMesh, elements);
const SMESH::PointStruct * P = &theStepVector.PS;
gp_Vec stepVec( P->x, P->y, P->z );
-
+
TElemOfElemListMap aHystory;
::SMESH_MeshEditor anEditor( _myMesh );
anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
// Update Python script
TPythonDump() << "stepVector = " << theStepVector;
TPythonDump() << this << ".ExtrusionSweep( "
- << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+ << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
- }
- CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
INFOS( "SMESH_MeshEditor_i::ExtrusionSweep fails - "<< aFail->GetMessageString() );
}
// remove some gabage from the end
TCollection_AsciiString patternDescription = (char*) theFileContents;
int pos = patternDescription.Length();
- char test = patternDescription.Value( pos );
- while (! isdigit( (unsigned char)patternDescription.Value( pos )))
+ while (! isdigit( patternDescription.Value( pos )))
pos--;
if ( pos != patternDescription.Length() ) {
patternDescription.Trunc( pos );
ex17_dome1.py \
ex18_dome2.py \
ex19_sphereINcube.py \
+ ex21_lamp.py \
SMESH_test.py\
SMESH_test0.py\
SMESH_test1.py \
// $Header$
#include "StdMeshers_Distribution.hxx"
-#include "CASCatch.hxx"
#include <math_GaussSingleIntegration.hxx>
#include <utilities.h>
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
Function::Function( const int conv )
: myConv( conv )
{
bool Function::value( const double, double& f ) const
{
bool ok = true;
- if( myConv==0 )
- {
- CASCatch_TRY
- {
+ if (myConv == 0) {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
f = pow( 10., f );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
f = 0.0;
ok = false;
bool FunctionTable::findBounds( const double x, int& x_ind_1, int& x_ind_2 ) const
{
- int n = myData.size();
+ int n = myData.size() / 2;
if( n==0 || x<myData[0] )
{
x_ind_1 = x_ind_2 = 0;
myValues( 1, 1 )
{
bool ok = true;
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString )str );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
ok = false;
}
( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t;
bool ok = true;
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
CASCatch_TRY {
+#endif
f = myExpr->Expression()->Evaluate( myVars, myValues );
- }
- CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
f = 0.0;
ok = false;
double FunctionExpr::integral( const double a, const double b ) const
{
double res = 0.0;
- CASCatch_TRY
- {
- math_GaussSingleIntegration _int( ( math_Function& )*this, a, b, 20 );
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
+ math_GaussSingleIntegration _int
+ ( *static_cast<math_Function*>( const_cast<FunctionExpr*> (this) ), a, b, 20 );
if( _int.IsDone() )
res = _int.Value();
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
res = 0.0;
MESSAGE( "Exception in integral calculating" );
}
#include "SMESHDS_SubMesh.hxx"
#include "SMESH_Mesh.hxx"
-#include "CASCatch.hxx"
-
#include <ExprIntrp_GenExp.hxx>
#include <Expr_Array1OfNamedUnknown.hxx>
#include <Expr_NamedUnknown.hxx>
#include <TopExp.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
using namespace std;
const double PRECISION = 1e-7;
double val = table[i*2+1];
if( _convMode==0 )
{
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
val = pow( 10.0, val );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
throw SALOME_Exception( LOCALIZED( "invalid value"));
return;
{
bool parsed_ok = true;
Handle( ExprIntrp_GenExp ) myExpr;
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( str.ToCString() );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "StdMeshers_Regular_1D.hxx"
#include "StdMeshers_Distribution.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_HypoFilter.hxx"
-#include "SMESH_subMesh.hxx"
#include "StdMeshers_LocalLength.hxx"
#include "StdMeshers_NumberOfSegments.hxx"
#include "StdMeshers_Deflection1D.hxx"
#include "StdMeshers_AutomaticLength.hxx"
+#include "SMESH_Gen.hxx"
+#include "SMESH_Mesh.hxx"
+#include "SMESH_HypoFilter.hxx"
+#include "SMESH_subMesh.hxx"
+
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
#include "SMDS_EdgePosition.hxx"
#include <GCPnts_AbscissaPoint.hxx>
#include <GCPnts_UniformAbscissa.hxx>
#include <GCPnts_UniformDeflection.hxx>
-#include <Standard_ErrorHandler.hxx>
#include <Precision.hxx>
#include <Expr_GeneralExpression.hxx>
#include <Expr_NamedUnknown.hxx>
#include <Expr_Array1OfNamedUnknown.hxx>
-#include <TColStd_Array1OfReal.hxx>
#include <ExprIntrp_GenExp.hxx>
+#include <TColStd_Array1OfReal.hxx>
#include <OSD.hxx>
+#include <Standard_ErrorHandler.hxx>
+#include <Standard_Failure.hxx>
+
#include <string>
#include <math.h>
if ( !_mainEdge.IsNull() )
reversed = aMesh.IsReversedInChain( EE, _mainEdge );
try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+ OCC_CATCH_SIGNALS;
+#endif
if ( ! computeInternalParameters( E, params, reversed )) {
//cout << "computeInternalParameters() failed" <<endl;
return false;
//
#include "StdMeshersGUI_DistrPreview.h"
-#include "CASCatch.hxx"
#include <Expr_NamedUnknown.hxx>
#include <Expr_GeneralExpression.hxx>
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
StdMeshersGUI_DistrPreview::StdMeshersGUI_DistrPreview( QWidget* p, StdMeshers::StdMeshers_NumberOfSegments_ptr h )
: QwtPlot( p ),
myPoints( 50 ),
delete[] y;
x = y = 0;
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
replot();
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
}
}
bool StdMeshersGUI_DistrPreview::init( const QString& str )
{
bool parsed_ok = true;
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString ) str.latin1() );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}
double res = 0.0;
ok = true;
- CASCatch_TRY {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
res = myExpr->Expression()->Evaluate( myVars, myValues );
- }
- CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
ok = false;
res = 0.0;
{
case EXPONENT:
{
- CASCatch_TRY
- {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
// in StdMeshers_NumberOfSegments.cc
// const double PRECISION = 1e-7;
//
if(v < -7) v = -7.0;
v = pow( 10.0, v );
- }
- CASCatch_CATCH(Standard_Failure)
- {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
v = 0.0;
ok = false;
SALOMEDS.idl SALOME_Exception.idl \
GEOM_Gen.idl MED.idl SALOMEDS_Attributes.idl \
SMESH_Gen.idl SMESH_Hypothesis.idl SMESH_Group.idl \
- SALOME_Comm.idl
+ SALOME_Comm.idl SALOME_Component.idl SALOME_GenericObj.idl SMESH_Mesh.idl
# Executables targets
BIN =