\r
<p class="whs3"> </p>\r
\r
-<p class="whs3">mport math</p>\r
+<p class="whs3">import math</p>\r
\r
<p class="whs3">mesh = \r
SMESH_mechanic.mesh</p>\r
\r
<p class="whs4"> </p>\r
\r
+<h4><a name=bookmark8>Merging Elements</a></h4>\r
+\r
+<p class="whs5">import geompy</p>\r
+\r
+<p class="whs5">import smesh</p>\r
+\r
+<p class="whs5">import salome</p>\r
+\r
+<p class="whs5">import SMESH</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># create a face to be meshed</p>\r
+\r
+<p class="whs5">px = geompy.MakeVertex(100., \r
+ 0. , 0. \r
+ )</p>\r
+\r
+<p class="whs5">py = geompy.MakeVertex(0. \r
+ , 100., \r
+ 0. )</p>\r
+\r
+<p class="whs5">pz = geompy.MakeVertex(0. \r
+ , 0. , \r
+ 100.)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">vxy = geompy.MakeVector(px, \r
+ py)</p>\r
+\r
+<p class="whs5">arc = geompy.MakeArc(py, \r
+ pz, px)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">wire = geompy.MakeWire([vxy, \r
+ arc])</p>\r
+\r
+<p class="whs5">isPlanarFace = 1</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">face1 = geompy.MakeFace(wire, \r
+ isPlanarFace)</p>\r
+\r
+<p class="whs5">id_face1 = geompy.addToStudy(face1, \r
+ "Face1")</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># create a 2D mesh on the \r
+ face</p>\r
+\r
+<p class="whs5">trias = smesh.Mesh(face1, \r
+ "Face : 2D mesh")</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">algo = trias.Segment()</p>\r
+\r
+<p class="whs5">algo.NumberOfSegments(6)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">algo = trias.Triangle()</p>\r
+\r
+<p class="whs5">algo.LengthFromEdges()</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">trias.Compute()</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">tri_mesh = trias.GetMesh()</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># create a path mesh</p>\r
+\r
+<p class="whs5">px1 = geompy.MakeVertex(100., \r
+ 100. , \r
+ 0. )</p>\r
+\r
+<p class="whs5">py1 = geompy.MakeVertex(-100. \r
+ , -100., \r
+ 0. )</p>\r
+\r
+<p class="whs5">pz1 = geompy.MakeVertex(0. \r
+ , 0. , \r
+ 50.)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">circle = geompy.MakeCircleThreePnt(py1, \r
+ pz1, px1)</p>\r
+\r
+<p class="whs5">id_circle = geompy.addToStudy(circle, \r
+ "Path")</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">circlemesh = smesh.Mesh(circle, \r
+ "Path mesh")</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">algo = circlemesh.Segment()</p>\r
+\r
+<p class="whs5">algo.NumberOfSegments(10)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">circlemesh.Compute()</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># extrusion of the mesh</p>\r
+\r
+<p class="whs5">aMeshEditor = tri_mesh.GetMeshEditor()</p>\r
+\r
+<p class="whs5">aMeshEditor.ExtrusionAlongPathObject(tri_mesh, \r
+ circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># merge nodes</p>\r
+\r
+<p class="whs5">print "Number \r
+ of nodes before MergeNodes:", tri_mesh.NbNodes()</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">tolerance = 0.001</p>\r
+\r
+<p class="whs5">array_of_nodes_groups \r
+ = aMeshEditor.FindCoincidentNodes(tolerance)</p>\r
+\r
+<p class="whs5">aMeshEditor.MergeNodes(array_of_nodes_groups)</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">print "Number \r
+ of nodes after MergeNodes:", tri_mesh.NbNodes()</p>\r
+\r
+<p class="whs5">print ""</p>\r
+\r
+<p class="whs5">print "Number \r
+ of elements before MergeEqualElements:"</p>\r
+\r
+<p class="whs5">print "Edges \r
+ : \r
+ ", tri_mesh.NbEdges()</p>\r
+\r
+<p class="whs5">print "Triangles \r
+ : ", \r
+ tri_mesh.NbTriangles()</p>\r
+\r
+<p class="whs5">print "Quadrangles: \r
+ ", tri_mesh.NbQuadrangles()</p>\r
+\r
+<p class="whs5">print "Volumes \r
+ : \r
+ ", tri_mesh.NbVolumes()</p>\r
+\r
+<p class="whs4"> </p>\r
+\r
+<p class="whs4"># merge elements</p>\r
+\r
+<p class="whs5">aMeshEditor.MergeEqualElements()</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs5">print "Number \r
+ of elements after MergeEqualElements:"</p>\r
+\r
+<p class="whs5">print "Edges \r
+ : \r
+ ", tri_mesh.NbEdges()</p>\r
+\r
+<p class="whs5">print "Triangles \r
+ : ", \r
+ tri_mesh.NbTriangles()</p>\r
+\r
+<p class="whs5">print "Quadrangles: \r
+ ", tri_mesh.NbQuadrangles()</p>\r
+\r
+<p class="whs5">print "Volumes \r
+ : \r
+ ", tri_mesh.NbVolumes()</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
+ </p>\r
+\r
<h3>Sewing Meshes</h3>\r
\r
<h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>\r