-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Transforming Meshes</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
-h3.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
-h4.whs2 { margin-top:0pt; margin-bottom:0pt; }\r
-p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }\r
-p.whs4 { margin-top:0pt; margin-bottom:0pt; }\r
-p.whs5 { 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 += "h3.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "h4.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs5 {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
--->\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
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.addTocInfo)\r
- {\r
- addTocInfo("MESH module\nTUI Scripts\nTransforming Meshes");\r
-addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
-\r
- }\r
- if (window.writeBtnStyle)\r
- writeBtnStyle();\r
-\r
- if (window.writeIntopicBar)\r
- writeIntopicBar(1);\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("smesh.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<h1>Transforming Meshes</h1>\r
-\r
-<h3 class="whs1">Transforming Meshes</h3>\r
-\r
-<h4 class="whs2"> </h4>\r
-\r
-<h4 class="whs2"><a name=bookmark>Translation</a></h4>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">import SMESH</p>\r
-\r
-<p class="whs3">import SMESH_mechanic</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">mesh = \r
- SMESH_mechanic.mesh</p>\r
-\r
-<p class="whs3">salome = SMESH_mechanic.salome</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># translate a mesh</p>\r
-\r
-<p class="whs3">anEditor = mesh.GetMeshEditor()</p>\r
-\r
-<p class="whs3">point = SMESH.PointStruct(-150, -150, \r
- 0)</p>\r
-\r
-<p class="whs3">vector = SMESH.DirStruct(point) </p>\r
-\r
-<p class="whs3">anEditor.TranslateObject(mesh, vector, \r
- 1)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
- </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<h4 class="whs2"><a name=bookmark1>Rotation</a></h4>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">import SMESH</p>\r
-\r
-<p class="whs3">import SMESH_mechanic</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">mport math</p>\r
-\r
-<p class="whs3">mesh = \r
- SMESH_mechanic.mesh</p>\r
-\r
-<p class="whs3">salome = SMESH_mechanic.salome</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># rotate a mesh </p>\r
-\r
-<p class="whs3">anEditor = mesh.GetMeshEditor()</p>\r
-\r
-<p class="whs3">axisXYZ = SMESH.AxisStruct(0, 0, 0, 5, \r
- 5, 20)</p>\r
-\r
-<p class="whs3">angle180 = 1.5*math.pi</p>\r
-\r
-<p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle180, \r
- 1)</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs5">salome.sg.updateObjBrowser(1)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">import SMESH</p>\r
-\r
-<p class="whs3">import SMESH_mechanic</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">import math</p>\r
-\r
-<p class="whs3">mesh = \r
- SMESH_mechanic.mesh</p>\r
-\r
-<p class="whs3">salome = SMESH_mechanic.salome</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a symmetrical \r
- copy of the mesh mirrored through a point</p>\r
-\r
-<p class="whs3">anEditor = mesh.GetMeshEditor()</p>\r
-\r
-<p class="whs3">anEditor.MirrorObject(mesh, SMESH.AxisStruct(0, \r
- 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1) </p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
- </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<h4 class="whs2"><a name=bookmark3>Merging \r
- Nodes</a></h4>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">import SMESH</p>\r
-\r
-<p class="whs3">import SMESH_mechanic</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">smesh = \r
- SMESH_mechanic.smesh</p>\r
-\r
-<p class="whs3">mesh = \r
- SMESH_mechanic.mesh</p>\r
-\r
-<p class="whs3">salome = SMESH_mechanic.salome</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># merge nodes</p>\r
-\r
-<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>\r
-\r
-<p class="whs3">Tolerance = 25.0</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs3">GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)</p>\r
-\r
-<p class="whs3">aMeshEditor.MergeNodes(GroupsOfNodes)</p>\r
-\r
-<p class="whs3"> </p>\r
-\r
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
- </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<h3>Sewing Meshes</h3>\r
-\r
-<h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>\r
-\r
-<p class="whs5">import salome</p>\r
-\r
-<p class="whs5">import geompy</p>\r
-\r
-<p class="whs5">import smesh</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create two faces of a \r
- box</p>\r
-\r
-<p class="whs5">box1 = geompy.MakeBox(0., \r
- 0., -10., 30., 20., 25.)</p>\r
-\r
-<p class="whs5">subShapeList1 = \r
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5">box2 = geompy.MakeBox(0., \r
- 5., 0., 20., 20., 15.)</p>\r
-\r
-<p class="whs5">subShapeList2 = \r
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ \r
- 1 ], geompy.ShapeType["EDGE"])</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5">aComp = geompy.MakeCompound( \r
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>\r
-\r
-<p class="whs5">idComp = geompy.addToStudy( \r
- aComp, "Two faces" )</p>\r
-\r
-<p class="whs5">aCompobj = \r
- salome.IDToObject( idComp )</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs4"># create a mesh on two \r
- faces</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs5">mesh = smesh.Mesh(aCompobj, \r
- "Two faces : quadrangle mesh")</p>\r
-\r
-<p class="whs5">algo = mesh.Segment()</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs4"># define "NumberOfSegments" \r
- hypothesis to cut an edge in a fixed number of segments</p>\r
-\r
-<p class="whs5">algo.NumberOfSegments(9)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a quadrangle 2D \r
- algorithm for faces</p>\r
-\r
-<p class="whs5">mesh.Quadrangle()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a local hypothesis</p>\r
-\r
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Arithmetic1D" \r
- hypothesis to cut an edge in several segments with increasing arithmetic \r
- length </p>\r
-\r
-<p class="whs5">algo.Arithmetic1D(1, \r
- 4)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Propagation" \r
- hypothesis that propagates all other hypothesis on all edges on the opposite \r
- side in case of quadrangular faces</p>\r
-\r
-<p class="whs5">algo.Propagation()</p>\r
-\r
-<p class="whs5">mesh.Compute()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># sew free borders</p>\r
-\r
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
-\r
-<p class="whs5">anEditor.SewBorderToSide(5, \r
- 45, 6, 113, 109, 0, 0)</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
-<p class="whs4"> </p>\r
-\r
-<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>\r
-\r
-<p class="whs5">import salome</p>\r
-\r
-<p class="whs5">import geompy</p>\r
-\r
-<p class="whs5">import smesh</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create two faces of the \r
- box</p>\r
-\r
-<p class="whs5">box1 = geompy.MakeBox(0., \r
- 0., -10., 20., 20., 15.)</p>\r
-\r
-<p class="whs5">subShapeList1 = \r
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5">box2 = geompy.MakeBox(0., \r
- 5., 0., 20., 20., 15.)</p>\r
-\r
-<p class="whs5">subShapeList2 = \r
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ \r
- 1 ], geompy.ShapeType["EDGE"])</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5">aComp = geompy.MakeCompound( \r
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>\r
-\r
-<p class="whs5">idComp = geompy.addToStudy( \r
- aComp, "Two faces" )</p>\r
-\r
-<p class="whs5">aCompobj = \r
- salome.IDToObject( idComp )</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a mesh on two \r
- faces</p>\r
-\r
-<p class="whs5">mesh = smesh.Mesh(aCompobj, \r
- "Two faces : quadrangle mesh")</p>\r
-\r
-<p class="whs5">algo = mesh.Segment()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "NumberOfSegments" \r
- hypothesis to cut an edge in a fixed number of segments</p>\r
-\r
-<p class="whs5">algo.NumberOfSegments(9)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a quadrangle 2D \r
- algorithm for faces</p>\r
-\r
-<p class="whs5">mesh.Quadrangle()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a local hypothesis</p>\r
-\r
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Arithmetic1D" \r
- hypothesis to cut an edge in several segments with increasing arithmetic \r
- length </p>\r
-\r
-<p class="whs5">algo.Arithmetic1D(1, \r
- 4)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Propagation" \r
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;"> \r
- the opposite side in case of quadrangular faces</span></p>\r
-\r
-<p class="whs5">algo.Propagation()</p>\r
-\r
-<p class="whs5">mesh.Compute()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># sew free borders</p>\r
-\r
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
-\r
-<p class="whs5">anEditor.SewConformFreeBorders(5, \r
- 45, 6, 3, 24)</p>\r
-\r
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
- </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<h4><a name=bookmark6>Sew Free Borders</a></h4>\r
-\r
-<p class="whs5">import salome</p>\r
-\r
-<p class="whs5">import geompy</p>\r
-\r
-<p class="whs5">import smesh</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create two faces of the \r
- box</p>\r
-\r
-<p class="whs5">box1 = geompy.MakeBox(0., \r
- 0., 0., 20., 20., 15.)</p>\r
-\r
-<p class="whs5">subShapeList1 = \r
- geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs5">box2 = geompy.MakeBox(0., \r
- 5., 0., 20., 20., 15.)</p>\r
-\r
-<p class="whs5">subShapeList2 = \r
- geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>\r
-\r
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ \r
- 1 ], geompy.ShapeType["EDGE"])</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5">aComp = geompy.MakeCompound( \r
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>\r
-\r
-<p class="whs5">idComp = geompy.addToStudy( \r
- aComp, "Two faces" )</p>\r
-\r
-<p class="whs5">aCompobj = \r
- salome.IDToObject( idComp )</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs4"># create a mesh on two \r
- faces</p>\r
-\r
-<p class="whs5">mesh = smesh.Mesh(aCompobj, \r
- "Two faces : quadrangle mesh")</p>\r
-\r
-<p class="whs5">algo = mesh.Segment()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "NumberOfSegments" \r
- hypothesis to cut an edge in a fixed number of segments</p>\r
-\r
-<p class="whs5">algo.NumberOfSegments(4)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># creates a quadrangle \r
- 2D algorithm for faces</p>\r
-\r
-<p class="whs5">mesh.Quadrangle()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a local hypothesis</p>\r
-\r
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Arithmetic1D" \r
- hypothesis to cut an edge in several segments with increasing \r
- arithmetic length</p>\r
-\r
-<p class="whs5">algo.Arithmetic1D(1, \r
- 4)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Propagation" \r
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;"> \r
- the opposite side in case of quadrangular faces</span></p>\r
-\r
-<p class="whs5">algo.Propagation()</p>\r
-\r
-<p class="whs5">mesh.Compute()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># sew free borders</p>\r
-\r
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
-\r
-<p class="whs5">anEditor.SewFreeBorders(6, \r
- 21, 5, 1, 12, 3, 0, 0)</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
-<p class="whs4"> </p>\r
-\r
-<h4><a name=bookmark7>Sew Side Elements</a></h4>\r
-\r
-<p class="whs5">import salome</p>\r
-\r
-<p class="whs5">import geompy</p>\r
-\r
-<p class="whs5">import smesh</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs4"># create two faces of the \r
- box</p>\r
-\r
-<p class="whs5">box1 = geompy.MakeBox(0., \r
- 0., 0., \r
- 10., 10., 10.)</p>\r
-\r
-<p class="whs5">box2 = geompy.MakeBox(0., \r
- 15., 0., 20., 25., 10.)</p>\r
-\r
-<p class="whs5">EdgesList = geompy.SubShapeAll(box2, \r
- geompy.ShapeType["EDGE"])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs5">aComp = geompy.MakeCompound( \r
- [box1, box2] )</p>\r
-\r
-<p class="whs5">idComp = geompy.addToStudy( \r
- aComp, "Two faces" )</p>\r
-\r
-<p class="whs5">aCompobj = \r
- salome.IDToObject( idComp )</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs4"># create a mesh on two \r
- faces</p>\r
-\r
-<p class="whs5">mesh = smesh.Mesh(aCompobj, \r
- "Two faces : quadrangle mesh")</p>\r
-\r
-<p class="whs5">algo = mesh.Segment()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "NumberOfSegments" \r
- hypothesis to cut an edge in a fixed number of segments</p>\r
-\r
-<p class="whs5">algo.NumberOfSegments(2)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a quadrangle 2D \r
- algorithm for faces</p>\r
-\r
-<p class="whs5">mesh.Quadrangle()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># create a local hypothesis</p>\r
-\r
-<p class="whs5">algo = mesh.Segment(EdgesList[8])</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Arithmetic1D" \r
- hypothesis to cut an edge in several segments with increasing arithmetic \r
- length </p>\r
-\r
-<p class="whs5">algo.NumberOfSegments(4)</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># define "Propagation" \r
- hypothesis that propagates all other hypothesis on all edges on <span \r
- style="margin-top: 0pt; margin-bottom: 0pt;">the opposite side in case \r
- of quadrangular faces</span></p>\r
-\r
-<p class="whs5">algo.Propagation()</p>\r
-\r
-<p class="whs5">mesh.Compute()</p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs4"># sew free borders</p>\r
-\r
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
-\r
-<p class="whs5">anEditor.SewSideElements([69, \r
- 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)</p>\r
-\r
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \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
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
+
+<html>
+
+<head>
+<title>Transforming Meshes</title>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
+<!--
+h3.whs1 { margin-top:0pt; margin-bottom:0pt; }
+h4.whs2 { margin-top:0pt; margin-bottom:0pt; }
+p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs6 { margin-top:0pt; margin-bottom:0pt; }
+-->
+</style><script type="text/javascript" language="JavaScript">
+<!--
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
+{
+ var strNSS = "<style type='text/css'>";
+ strNSS += "h3.whs1 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "h4.whs2 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+ strNSS +="</style>";
+ document.write(strNSS);
+}
+//-->
+</script>
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
+<!--
+function reDo() {
+ if (innerWidth != origWidth || innerHeight != origHeight)
+ location.reload();
+}
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
+ origWidth = innerWidth;
+ origHeight = innerHeight;
+ onresize = reDo;
+}
+onerror = null;
+//-->
+</script>
+<style type="text/css">
+<!--
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
+p.WebHelpNavBar { text-align:right; }
+-->
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
+<script type="text/javascript" language="javascript" src="whver.js"></script>
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
+<script type="text/javascript" language="javascript1.2">
+<!--
+if (window.gbWhTopic)
+{
+ if (window.setRelStartPage)
+ {
+ addTocInfo("MESH module\nTUI Scripts\nTransforming Meshes");
+addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
+addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
+
+ }
+
+
+ if (window.setRelStartPage)
+ {
+ setRelStartPage("index.htm");
+
+ autoSync(1);
+ sendSyncInfo();
+ sendAveInfoOut();
+ }
+
+}
+else
+ if (window.gbIE4)
+ document.location.reload();
+//-->
+</script>
+</head>
+<body><script type="text/javascript" language="javascript1.2">
+<!--
+if (window.writeIntopicBar)
+ writeIntopicBar(4);
+//-->
+</script>
+<h1>Transforming Meshes</h1>
+
+<h3 class="whs1">Transforming Meshes</h3>
+
+<h4 class="whs2"> </h4>
+
+<h4 class="whs2"><a name=bookmark>Translation</a></h4>
+
+<p class="whs3"> </p>
+
+<p class="whs4">import SMESH_mechanic</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">smesh
+ = SMESH_mechanic.smesh </span></p>
+
+<p class="whs4">mesh = SMESH_mechanic.mesh
+ </p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># define translation
+ vector</p>
+
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">point
+ = smesh.PointStruct(-150., -150., 0.)</span></p>
+
+<p class="whs4">vector =smesh.DirStruct(point)
+ </p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># translate a mesh</p>
+
+<p class="whs4">doCopy = 1</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">mesh.Translate([],
+ vector, doCopy) </p>
+
+<p class="whs6"> </p>
+
+<h4 class="whs2"><a name=bookmark1>Rotation</a></h4>
+
+<p class="whs3"> </p>
+
+<p class="whs3">import math</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">smesh
+ = SMESH_mechanic.smesh</span></p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh </p>
+
+<p class="whs3"> </p>
+
+<p class="whs5"># define rotation axis
+ and angle</p>
+
+<p class="whs3">axisXYZ = smesh.AxisStruct(0., 0., 0.,
+ 5., 5., 20.)</p>
+
+<p class="whs3">angle270 = 1.5 * math.pi</p>
+
+<p class="whs3"> </p>
+
+<p class="whs5"># rotate a mesh</p>
+
+<p class="whs4">mesh.Rotate([],
+ axisXYZ, angle270, 1) </p>
+
+<p class="whs6"> </p>
+
+<h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>
+
+<p class="whs3"> </p>
+
+<p class="whs3">import math</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">smesh
+ = SMESH_mechanic.smesh</span></p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh </p>
+
+<p class="whs3"> </p>
+
+<p class="whs5"># create a symmetrical
+ copy of the mesh mirrored through a point</p>
+
+<p class="whs3">axis = SMESH.AxisStruct(0, 0, 0, 0, 0,
+ 0)</p>
+
+<p class="whs3"> </p>
+
+<p class="whs3">mesh.Mirror([], axis, smesh.POINT, 1)
+ </p>
+
+<p class="whs6"> </p>
+
+<h4 class="whs2"><a name=bookmark3>Merging
+ Nodes</a></h4>
+
+<p class="whs3"> </p>
+
+<p class="whs4">import SMESH_mechanic</p>
+
+<p class="whs4">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># merge nodes</p>
+
+<p class="whs4">Tolerance = 25.0</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">GroupsOfNodes =
+ mesh.FindCoincidentNodes(Tolerance)</p>
+
+<p class="whs4">mesh.MergeNodes(GroupsOfNodes)
+ </p>
+
+<p class="whs6"> </p>
+
+<h4><a name=bookmark8>Merging Elements</a></h4>
+
+<p class="whs4">import salome</p>
+
+<p class="whs4">import geompy</p>
+
+<p class="whs4">import smesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a face to
+ be meshed</p>
+
+<p class="whs4">px = geompy.MakeVertex(100.,
+ 0. , 0.
+ )</p>
+
+<p class="whs4">py = geompy.MakeVertex(0.
+ , 100.,
+ 0. )</p>
+
+<p class="whs4">pz = geompy.MakeVertex(0.
+ , 0. ,
+ 100.)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">vxy = geompy.MakeVector(px,
+ py)</p>
+
+<p class="whs4">arc = geompy.MakeArc(py,
+ pz, px)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">wire = geompy.MakeWire([vxy,
+ arc])</p>
+
+<p class="whs4">isPlanarFace = 1</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">face1 = geompy.MakeFace(wire,
+ isPlanarFace)</p>
+
+<p class="whs4">id_face1 = geompy.addToStudy(face1,
+ "Face1")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a circle to
+ be an extrusion path</p>
+
+<p class="whs4">px1 = geompy.MakeVertex(
+ 100., 100.,
+ 0.)</p>
+
+<p class="whs4">py1 = geompy.MakeVertex(-100.,
+ -100., 0.)</p>
+
+<p class="whs4">pz1 = geompy.MakeVertex(
+ 0.,
+ 0.,
+ 50.)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">circle = geompy.MakeCircleThreePnt(py1,
+ pz1, px1)</p>
+
+<p class="whs4">id_circle = geompy.addToStudy(circle,
+ "Path")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a 2D mesh
+ on the face</p>
+
+<p class="whs4">trias = smesh.Mesh(face1,
+ "Face : 2D mesh")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo1D = trias.Segment()</p>
+
+<p class="whs4">algo1D.NumberOfSegments(6)</p>
+
+<p class="whs4">algo2D = trias.Triangle()</p>
+
+<p class="whs4">algo2D.LengthFromEdges()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">trias.Compute()</p>
+
+<p class="whs5"> </p>
+
+<p class="whs5"># create a path mesh</p>
+
+<p class="whs4">circlemesh = smesh.Mesh(circle,
+ "Path mesh")</p>
+
+<p class="whs4">algo = circlemesh.Segment()</p>
+
+<p class="whs4">algo.NumberOfSegments(10)</p>
+
+<p class="whs4">circlemesh.Compute()</p>
+
+<p class="whs5"> </p>
+
+<p class="whs5"># extrusion of the
+ mesh</p>
+
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">trias.ExtrusionAlongPath([],
+ circlemesh, circle,</span></p>
+
+<p class="whs4"> 1,
+ 0, [], 0, smesh.PointStruct(0, 0, 0))</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># merge nodes</p>
+
+<p class="whs4">print "Number
+ of nodes before MergeNodes:", </p>
+
+<p class="whs4">trias.NbNodes()</p>
+
+<p class="whs4">tolerance = 0.001</p>
+
+<p class="whs4">array_of_nodes_groups
+ = trias.FindCoincidentNodes(tolerance)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">trias.MergeNodes(array_of_nodes_groups)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">print "Number
+ of nodes after MergeNodes:", trias.NbNodes()</p>
+
+<p class="whs4">print ""</p>
+
+<p class="whs4">print "Number
+ of elements before MergeEqualElements:"</p>
+
+<p class="whs4">print "Edges
+ :
+ ", trias.NbEdges()</p>
+
+<p class="whs4">print "Triangles
+ : ",
+ trias.NbTriangles()</p>
+
+<p class="whs4">print "Quadrangles:
+ ", trias.NbQuadrangles()</p>
+
+<p class="whs4">print "Volumes
+ :
+ ", trias.NbVolumes()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># merge elements</p>
+
+<p class="whs4">trias.MergeEqualElements()</p>
+
+<p class="whs4">print "Number
+ of elements after MergeEqualElements:"</p>
+
+<p class="whs4">print "Edges
+ :
+ ", trias.NbEdges()</p>
+
+<p class="whs4">print "Triangles
+ : ",
+ trias.NbTriangles()</p>
+
+<p class="whs4">print "Quadrangles:
+ ", trias.NbQuadrangles()</p>
+
+<p class="whs4">print "Volumes
+ :
+ ", trias.NbVolumes()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">salome.sg.updateObjBrowser(1)
+ </p>
+
+<p class="whs4"> </p>
+
+<h3>Sewing Meshes</h3>
+
+<h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>
+
+<p class="whs4">import geompy</p>
+
+<p class="whs4">import smesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create two faces
+ of a box</p>
+
+<p class="whs4">box1 = geompy.MakeBox(0.,
+ 0., -10., 30., 20., 25.)</p>
+
+<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face1 = facesList1[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">box2 = geompy.MakeBox(0.,
+ 5., 0., 20., 20., 15.)</p>
+
+<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face2 = facesList2[1]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
+
+<p class="whs4">edge1 = edgesList[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">aComp = geompy.MakeCompound([face1,
+ face2])</p>
+
+<p class="whs4">geompy.addToStudy(aComp,
+ "Two faces")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a mesh on
+ two faces</p>
+
+<p class="whs4">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo1D = mesh.Segment()</p>
+
+<p class="whs4">algo1D.NumberOfSegments(9)</p>
+
+<p class="whs4">algo2D = mesh.Quadrangle()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo_local = mesh.Segment(edge1)</p>
+
+<p class="whs4">algo_local.Arithmetic1D(1,
+ 4)</p>
+
+<p class="whs4">algo_local.Propagation()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">mesh.Compute()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># sew border to side</p>
+
+<p class="whs5"># FirstNodeIDOnFreeBorder,
+ SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,</p>
+
+<p class="whs5"># FirstNodeIDOnSide,
+ LastNodeIDOnSide,</p>
+
+<p class="whs5"># CreatePolygons, CreatePolyedrs</p>
+
+<p class="whs4">mesh.SewBorderToSide(5,
+ 45, 6, 113, 109, 0, 0) </p>
+
+<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
+
+<p class="whs4">import geompy</p>
+
+<p class="whs4">import smesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create two faces
+ of the box</p>
+
+<p class="whs4">box1 = geompy.MakeBox(0.,
+ 0., -10., 20., 20., 15.)</p>
+
+<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face1 = facesList1[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">box2 = geompy.MakeBox(0.,
+ 5., 0., 20., 20., 15.)</p>
+
+<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face2 = facesList2[1]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
+
+<p class="whs4">edge1 = edgesList[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">aComp = geompy.MakeCompound([face1,
+ face2])</p>
+
+<p class="whs4">geompy.addToStudy(aComp,
+ "Two faces")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a mesh on
+ two faces</p>
+
+<p class="whs4">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo1D = mesh.Segment()</p>
+
+<p class="whs4">algo1D.NumberOfSegments(9)</p>
+
+<p class="whs4">algo2D = mesh.Quadrangle()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo_local = mesh.Segment(edge1)</p>
+
+<p class="whs4">algo_local.Arithmetic1D(1,
+ 4)</p>
+
+<p class="whs4">algo_local.Propagation()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">mesh.Compute()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># sew conform free
+ borders</p>
+
+<p class="whs5"># FirstNodeID1, SecondNodeID1,
+ LastNodeID1, FirstNodeID2, SecondNodeID2</p>
+
+<p class="whs4">mesh.SewConformFreeBorders(5,
+ 45, 6, 3, 24) </p>
+
+<h4><a name=bookmark6>Sew Free Borders</a></h4>
+
+<p class="whs4">import geompy</p>
+
+<p class="whs4">import smesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create two faces
+ of the box</p>
+
+<p class="whs4">box1 = geompy.MakeBox(0.,
+ 0., 0., 20., 20., 15.)</p>
+
+<p class="whs4">facesList1 = geompy.SubShapeAll(box1,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face1 = facesList1[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">box2 = geompy.MakeBox(0.,
+ 5., 0., 20., 20., 15.)</p>
+
+<p class="whs4">facesList2 = geompy.SubShapeAll(box2,
+ geompy.ShapeType["FACE"])</p>
+
+<p class="whs4">face2 = facesList2[1]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">edgesList = geompy.SubShapeAll(face2,
+ geompy.ShapeType["EDGE"])</p>
+
+<p class="whs4">edge1 = edgesList[2]</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">aComp = geompy.MakeCompound([face1,
+ face2])</p>
+
+<p class="whs4">geompy.addToStudy(aComp,
+ "Two faces")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a mesh on
+ two faces</p>
+
+<p class="whs4">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo1D = mesh.Segment()</p>
+
+<p class="whs4">algo1D.NumberOfSegments(4)</p>
+
+<p class="whs4">algo2D = mesh.Quadrangle()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo_local = mesh.Segment(edge1)</p>
+
+<p class="whs4">algo_local.Arithmetic1D(1,
+ 4)</p>
+
+<p class="whs4">algo_local.Propagation()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">mesh.Compute()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># sew free borders</p>
+
+<p class="whs5"># FirstNodeID1, SecondNodeID1,
+ LastNodeID1,</p>
+
+<p class="whs5"># FirstNodeID2, SecondNodeID2,
+ LastNodeID2, CreatePolygons, CreatePolyedrs</p>
+
+<p class="whs6">mesh.SewFreeBorders(6,
+ 21, 5, 1, 12, 3, 0, 0) </p>
+
+<h4><a name=bookmark7>Sew Side Elements</a></h4>
+
+<p class="whs4">import geompy</p>
+
+<p class="whs4">import smesh</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create two boxes</p>
+
+<p class="whs4">box1 = geompy.MakeBox(0.,
+ 0., 0.,
+ 10., 10., 10.)</p>
+
+<p class="whs4">box2 = geompy.MakeBox(0.,
+ 15., 0., 20., 25., 10.)</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">EdgesList = geompy.SubShapeAll(box2,
+ geompy.ShapeType["EDGE"])</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">aComp = geompy.MakeCompound([box1,
+ box2])</p>
+
+<p class="whs4">geompy.addToStudy(aComp,
+ "Two boxes")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># create a mesh on
+ two boxes</p>
+
+<p class="whs4">mesh = smesh.Mesh(aComp,
+ "Two faces : quadrangle mesh")</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo1D = mesh.Segment()</p>
+
+<p class="whs4">algo1D.NumberOfSegments(2)</p>
+
+<p class="whs4">algo2D = mesh.Quadrangle()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">algo_local = mesh.Segment(EdgesList[8])</p>
+
+<p class="whs4">algo_local.NumberOfSegments(4)</p>
+
+<p class="whs4">algo_local.Propagation()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs4">mesh.Compute()</p>
+
+<p class="whs4"> </p>
+
+<p class="whs5"># sew side elements</p>
+
+<p class="whs5"># IDsOfSide1Elements,
+ IDsOfSide2Elements,</p>
+
+<p class="whs5"># NodeID1OfSide1ToMerge,
+ NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge</p>
+
+<p class="whs4">mesh.SewSideElements([69,
+ 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58) </p>
+
+<script type="text/javascript" language="javascript1.2">
+<!--
+if (window.writeIntopicBar)
+ writeIntopicBar(0);
+//-->
+</script>
+</body>
+</html>