X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=doc%2Fsalome%2Fgui%2FSMESH%2Ftransforming_meshes.htm;h=4f740bb60f0e8b299f345e157db301a65b11124b;hp=6d2ada4f1d772a5f4f8ed17eceaebb9f5cbb6a9e;hb=0600c4b484dfa65efb046502dfffe6b61389c2b3;hpb=6a3292e0719908b1e6ba7d3994fb314fa9fba71b diff --git a/doc/salome/gui/SMESH/transforming_meshes.htm b/doc/salome/gui/SMESH/transforming_meshes.htm index 6d2ada4f1..4f740bb60 100755 --- a/doc/salome/gui/SMESH/transforming_meshes.htm +++ b/doc/salome/gui/SMESH/transforming_meshes.htm @@ -1,664 +1,758 @@ - - - - -
-- -
import SMESH
- -import SMESH_mechanic
- -- -
mesh = - SMESH_mechanic.mesh
- -salome = SMESH_mechanic.salome
- -- -
# translate a mesh
- -anEditor = mesh.GetMeshEditor()
- -point = SMESH.PointStruct(-150, -150, - 0)
- -vector = SMESH.DirStruct(point)
- -anEditor.TranslateObject(mesh, vector, - 1)
- -- -
salome.sg.updateObjBrowser(1) -
- -- -
- -
import SMESH
- -import SMESH_mechanic
- -- -
mport math
- -mesh = - SMESH_mechanic.mesh
- -salome = SMESH_mechanic.salome
- -- -
# rotate a mesh
- -anEditor = mesh.GetMeshEditor()
- -axisXYZ = SMESH.AxisStruct(0, 0, 0, 5, - 5, 20)
- -angle180 = 1.5*math.pi
- -anEditor.RotateObject(mesh, axisXYZ, angle180, - 1)
- -- -
salome.sg.updateObjBrowser(1)
- -- -
- -
- -
import SMESH
- -import SMESH_mechanic
- -- -
import math
- -mesh = - SMESH_mechanic.mesh
- -salome = SMESH_mechanic.salome
- -- -
# create a symmetrical - copy of the mesh mirrored through a point
- -anEditor = mesh.GetMeshEditor()
- -anEditor.MirrorObject(mesh, SMESH.AxisStruct(0, - 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1)
- -- -
salome.sg.updateObjBrowser(1) -
- -- -
- -
- -
import SMESH
- -import SMESH_mechanic
- -- -
smesh = - SMESH_mechanic.smesh
- -mesh = - SMESH_mechanic.mesh
- -salome = SMESH_mechanic.salome
- -- -
# merge nodes
- -aMeshEditor = mesh.GetMeshEditor()
- -Tolerance = 25.0
- -- -
GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)
- -aMeshEditor.MergeNodes(GroupsOfNodes)
- -- -
salome.sg.updateObjBrowser(1) -
- -- -
import salome
- -import geompy
- -import smesh
- -- -
# create two faces of a - box
- -box1 = geompy.MakeBox(0., - 0., -10., 30., 20., 25.)
- -subShapeList1 = - geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
- -- -
box2 = geompy.MakeBox(0., - 5., 0., 20., 20., 15.)
- -subShapeList2 = - geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
- -EdgesList = geompy.SubShapeAll(subShapeList2[ - 1 ], geompy.ShapeType["EDGE"])
- -- -
aComp = geompy.MakeCompound( - [subShapeList1[ 2 ], subShapeList2[ 1 ]] )
- -idComp = geompy.addToStudy( - aComp, "Two faces" )
- -aCompobj = - salome.IDToObject( idComp )
- -- -
# create a mesh on two - faces
- -- -
mesh = smesh.Mesh(aCompobj, - "Two faces : quadrangle mesh")
- -algo = mesh.Segment()
- -- -
# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments
- -algo.NumberOfSegments(9)
- -- -
# create a quadrangle 2D - algorithm for faces
- -mesh.Quadrangle()
- -- -
# create a local hypothesis
- -algo = mesh.Segment(EdgesList[2])
- -- -
# define "Arithmetic1D" - hypothesis to cut an edge in several segments with increasing arithmetic - length
- -algo.Arithmetic1D(1, - 4)
- -- -
# define "Propagation" - hypothesis that propagates all other hypothesis on all edges on the opposite - side in case of quadrangular faces
- -algo.Propagation()
- -mesh.Compute()
- -- -
# sew free borders
- -anEditor = mesh.GetMesh().GetMeshEditor()
- -anEditor.SewBorderToSide(5, - 45, 6, 113, 109, 0, 0)
- -- -
salome.sg.updateObjBrowser(1) -
- -- -
import salome
- -import geompy
- -import smesh
- -- -
# create two faces of the - box
- -box1 = geompy.MakeBox(0., - 0., -10., 20., 20., 15.)
- -subShapeList1 = - geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
- -- -
box2 = geompy.MakeBox(0., - 5., 0., 20., 20., 15.)
- -subShapeList2 = - geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
- -EdgesList = geompy.SubShapeAll(subShapeList2[ - 1 ], geompy.ShapeType["EDGE"])
- -- -
aComp = geompy.MakeCompound( - [subShapeList1[ 2 ], subShapeList2[ 1 ]] )
- -idComp = geompy.addToStudy( - aComp, "Two faces" )
- -aCompobj = - salome.IDToObject( idComp )
- -- -
# create a mesh on two - faces
- -mesh = smesh.Mesh(aCompobj, - "Two faces : quadrangle mesh")
- -algo = mesh.Segment()
- -- -
# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments
- -algo.NumberOfSegments(9)
- -- -
# create a quadrangle 2D - algorithm for faces
- -mesh.Quadrangle()
- -- -
# create a local hypothesis
- -algo = mesh.Segment(EdgesList[2])
- -- -
# define "Arithmetic1D" - hypothesis to cut an edge in several segments with increasing arithmetic - length
- -algo.Arithmetic1D(1, - 4)
- -- -
# define "Propagation" - hypothesis that propagate all other hypothesis on all edges on - the opposite side in case of quadrangular faces
- -algo.Propagation()
- -mesh.Compute()
- -- -
# sew free borders
- -anEditor = mesh.GetMesh().GetMeshEditor()
- -anEditor.SewConformFreeBorders(5, - 45, 6, 3, 24)
- -salome.sg.updateObjBrowser(1) -
- -- -
import salome
- -import geompy
- -import smesh
- -- -
# create two faces of the - box
- -box1 = geompy.MakeBox(0., - 0., 0., 20., 20., 15.)
- -subShapeList1 = - geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
- -- -
box2 = geompy.MakeBox(0., - 5., 0., 20., 20., 15.)
- -subShapeList2 = - geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
- -EdgesList = geompy.SubShapeAll(subShapeList2[ - 1 ], geompy.ShapeType["EDGE"])
- -- -
aComp = geompy.MakeCompound( - [subShapeList1[ 2 ], subShapeList2[ 1 ]] )
- -idComp = geompy.addToStudy( - aComp, "Two faces" )
- -aCompobj = - salome.IDToObject( idComp )
- -- -
# create a mesh on two - faces
- -mesh = smesh.Mesh(aCompobj, - "Two faces : quadrangle mesh")
- -algo = mesh.Segment()
- -- -
# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments
- -algo.NumberOfSegments(4)
- -- -
# creates a quadrangle - 2D algorithm for faces
- -mesh.Quadrangle()
- -- -
# create a local hypothesis
- -algo = mesh.Segment(EdgesList[2])
- -- -
# define "Arithmetic1D" - hypothesis to cut an edge in several segments with increasing - arithmetic length
- -algo.Arithmetic1D(1, - 4)
- -- -
# define "Propagation" - hypothesis that propagate all other hypothesis on all edges on - the opposite side in case of quadrangular faces
- -algo.Propagation()
- -mesh.Compute()
- -- -
# sew free borders
- -anEditor = mesh.GetMesh().GetMeshEditor()
- -anEditor.SewFreeBorders(6, - 21, 5, 1, 12, 3, 0, 0)
- -- -
salome.sg.updateObjBrowser(1) -
- -- -
import salome
- -import geompy
- -import smesh
- -- -
# create two faces of the - box
- -box1 = geompy.MakeBox(0., - 0., 0., - 10., 10., 10.)
- -box2 = geompy.MakeBox(0., - 15., 0., 20., 25., 10.)
- -EdgesList = geompy.SubShapeAll(box2, - geompy.ShapeType["EDGE"])
- -- -
aComp = geompy.MakeCompound( - [box1, box2] )
- -idComp = geompy.addToStudy( - aComp, "Two faces" )
- -aCompobj = - salome.IDToObject( idComp )
- -- -
# create a mesh on two - faces
- -mesh = smesh.Mesh(aCompobj, - "Two faces : quadrangle mesh")
- -algo = mesh.Segment()
- -- -
# define "NumberOfSegments" - hypothesis to cut an edge in a fixed number of segments
- -algo.NumberOfSegments(2)
- -- -
# create a quadrangle 2D - algorithm for faces
- -mesh.Quadrangle()
- -- -
# create a local hypothesis
- -algo = mesh.Segment(EdgesList[8])
- -- -
# define "Arithmetic1D" - hypothesis to cut an edge in several segments with increasing arithmetic - length
- -algo.NumberOfSegments(4)
- -- -
# define "Propagation" - hypothesis that propagates all other hypothesis on all edges on the opposite side in case - of quadrangular faces
- -algo.Propagation()
- -mesh.Compute()
- -- -
# sew free borders
- -anEditor = mesh.GetMesh().GetMeshEditor()
- -anEditor.SewSideElements([69, - 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)
- -salome.sg.updateObjBrowser(1) -
- - - - + + + + + ++ +
import SMESH_mechanic
+ ++ +
smesh + = SMESH_mechanic.smesh
+ +mesh = SMESH_mechanic.mesh +
+ ++ +
# define translation + vector
+ +point + = smesh.PointStruct(-150., -150., 0.)
+ +vector =smesh.DirStruct(point) +
+ ++ +
# translate a mesh
+ +doCopy = 1
+ ++ +
mesh.Translate([], + vector, doCopy)
+ ++ +
+ +
import math
+ +import SMESH_mechanic
+ ++ +
smesh + = SMESH_mechanic.smesh
+ +mesh = SMESH_mechanic.mesh
+ ++ +
# define rotation axis + and angle
+ +axisXYZ = smesh.AxisStruct(0., 0., 0., + 5., 5., 20.)
+ +angle270 = 1.5 * math.pi
+ ++ +
# rotate a mesh
+ +mesh.Rotate([], + axisXYZ, angle270, 1)
+ ++ +
+ +
import math
+ ++ +
import SMESH_mechanic
+ ++ +
smesh + = SMESH_mechanic.smesh
+ +mesh = SMESH_mechanic.mesh
+ ++ +
# create a symmetrical + copy of the mesh mirrored through a point
+ +axis = SMESH.AxisStruct(0, 0, 0, 0, 0, + 0)
+ ++ +
mesh.Mirror([], axis, smesh.POINT, 1) +
+ ++ +
+ +
import SMESH_mechanic
+ +mesh = SMESH_mechanic.mesh
+ ++ +
# merge nodes
+ +Tolerance = 25.0
+ ++ +
GroupsOfNodes = + mesh.FindCoincidentNodes(Tolerance)
+ +mesh.MergeNodes(GroupsOfNodes) +
+ ++ +
import salome
+ +import geompy
+ +import smesh
+ ++ +
# create a face to + be meshed
+ +px = geompy.MakeVertex(100., + 0. , 0. + )
+ +py = geompy.MakeVertex(0. + , 100., + 0. )
+ +pz = geompy.MakeVertex(0. + , 0. , + 100.)
+ ++ +
vxy = geompy.MakeVector(px, + py)
+ +arc = geompy.MakeArc(py, + pz, px)
+ ++ +
wire = geompy.MakeWire([vxy, + arc])
+ +isPlanarFace = 1
+ ++ +
face1 = geompy.MakeFace(wire, + isPlanarFace)
+ +id_face1 = geompy.addToStudy(face1, + "Face1")
+ ++ +
# create a circle to + be an extrusion path
+ +px1 = geompy.MakeVertex( + 100., 100., + 0.)
+ +py1 = geompy.MakeVertex(-100., + -100., 0.)
+ +pz1 = geompy.MakeVertex( + 0., + 0., + 50.)
+ ++ +
circle = geompy.MakeCircleThreePnt(py1, + pz1, px1)
+ +id_circle = geompy.addToStudy(circle, + "Path")
+ ++ +
# create a 2D mesh + on the face
+ +trias = smesh.Mesh(face1, + "Face : 2D mesh")
+ ++ +
algo1D = trias.Segment()
+ +algo1D.NumberOfSegments(6)
+ +algo2D = trias.Triangle()
+ +algo2D.LengthFromEdges()
+ ++ +
trias.Compute()
+ ++ +
# create a path mesh
+ +circlemesh = smesh.Mesh(circle, + "Path mesh")
+ +algo = circlemesh.Segment()
+ +algo.NumberOfSegments(10)
+ +circlemesh.Compute()
+ ++ +
# extrusion of the + mesh
+ +trias.ExtrusionAlongPath([], + circlemesh, circle,
+ +1, + 0, [], 0, smesh.PointStruct(0, 0, 0))
+ ++ +
# merge nodes
+ +print "Number + of nodes before MergeNodes:",
+ +trias.NbNodes()
+ +tolerance = 0.001
+ +array_of_nodes_groups + = trias.FindCoincidentNodes(tolerance)
+ ++ +
trias.MergeNodes(array_of_nodes_groups)
+ ++ +
print "Number + of nodes after MergeNodes:", trias.NbNodes()
+ +print ""
+ +print "Number + of elements before MergeEqualElements:"
+ +print "Edges + : + ", trias.NbEdges()
+ +print "Triangles + : ", + trias.NbTriangles()
+ +print "Quadrangles: + ", trias.NbQuadrangles()
+ +print "Volumes + : + ", trias.NbVolumes()
+ ++ +
# merge elements
+ +trias.MergeEqualElements()
+ +print "Number + of elements after MergeEqualElements:"
+ +print "Edges + : + ", trias.NbEdges()
+ +print "Triangles + : ", + trias.NbTriangles()
+ +print "Quadrangles: + ", trias.NbQuadrangles()
+ +print "Volumes + : + ", trias.NbVolumes()
+ ++ +
salome.sg.updateObjBrowser(1) +
+ ++ +
import geompy
+ +import smesh
+ ++ +
# create two faces + of a box
+ +box1 = geompy.MakeBox(0., + 0., -10., 30., 20., 25.)
+ +facesList1 = geompy.SubShapeAll(box1, + geompy.ShapeType["FACE"])
+ +face1 = facesList1[2]
+ ++ +
box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)
+ +facesList2 = geompy.SubShapeAll(box2, + geompy.ShapeType["FACE"])
+ +face2 = facesList2[1]
+ ++ +
edgesList = geompy.SubShapeAll(face2, + geompy.ShapeType["EDGE"])
+ +edge1 = edgesList[2]
+ ++ +
aComp = geompy.MakeCompound([face1, + face2])
+ +geompy.addToStudy(aComp, + "Two faces")
+ ++ +
# create a mesh on + two faces
+ +mesh = smesh.Mesh(aComp, + "Two faces : quadrangle mesh")
+ ++ +
algo1D = mesh.Segment()
+ +algo1D.NumberOfSegments(9)
+ +algo2D = mesh.Quadrangle()
+ ++ +
algo_local = mesh.Segment(edge1)
+ +algo_local.Arithmetic1D(1, + 4)
+ +algo_local.Propagation()
+ ++ +
mesh.Compute()
+ ++ +
# sew border to side
+ +# FirstNodeIDOnFreeBorder, + SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
+ +# FirstNodeIDOnSide, + LastNodeIDOnSide,
+ +# CreatePolygons, CreatePolyedrs
+ +mesh.SewBorderToSide(5, + 45, 6, 113, 109, 0, 0)
+ +import geompy
+ +import smesh
+ ++ +
# create two faces + of the box
+ +box1 = geompy.MakeBox(0., + 0., -10., 20., 20., 15.)
+ +facesList1 = geompy.SubShapeAll(box1, + geompy.ShapeType["FACE"])
+ +face1 = facesList1[2]
+ ++ +
box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)
+ +facesList2 = geompy.SubShapeAll(box2, + geompy.ShapeType["FACE"])
+ +face2 = facesList2[1]
+ ++ +
edgesList = geompy.SubShapeAll(face2, + geompy.ShapeType["EDGE"])
+ +edge1 = edgesList[2]
+ ++ +
aComp = geompy.MakeCompound([face1, + face2])
+ +geompy.addToStudy(aComp, + "Two faces")
+ ++ +
# create a mesh on + two faces
+ +mesh = smesh.Mesh(aComp, + "Two faces : quadrangle mesh")
+ ++ +
algo1D = mesh.Segment()
+ +algo1D.NumberOfSegments(9)
+ +algo2D = mesh.Quadrangle()
+ ++ +
algo_local = mesh.Segment(edge1)
+ +algo_local.Arithmetic1D(1, + 4)
+ +algo_local.Propagation()
+ ++ +
mesh.Compute()
+ ++ +
# sew conform free + borders
+ +# FirstNodeID1, SecondNodeID1, + LastNodeID1, FirstNodeID2, SecondNodeID2
+ +mesh.SewConformFreeBorders(5, + 45, 6, 3, 24)
+ +import geompy
+ +import smesh
+ ++ +
# create two faces + of the box
+ +box1 = geompy.MakeBox(0., + 0., 0., 20., 20., 15.)
+ +facesList1 = geompy.SubShapeAll(box1, + geompy.ShapeType["FACE"])
+ +face1 = facesList1[2]
+ ++ +
box2 = geompy.MakeBox(0., + 5., 0., 20., 20., 15.)
+ +facesList2 = geompy.SubShapeAll(box2, + geompy.ShapeType["FACE"])
+ +face2 = facesList2[1]
+ ++ +
edgesList = geompy.SubShapeAll(face2, + geompy.ShapeType["EDGE"])
+ +edge1 = edgesList[2]
+ ++ +
aComp = geompy.MakeCompound([face1, + face2])
+ +geompy.addToStudy(aComp, + "Two faces")
+ ++ +
# create a mesh on + two faces
+ +mesh = smesh.Mesh(aComp, + "Two faces : quadrangle mesh")
+ ++ +
algo1D = mesh.Segment()
+ +algo1D.NumberOfSegments(4)
+ +algo2D = mesh.Quadrangle()
+ ++ +
algo_local = mesh.Segment(edge1)
+ +algo_local.Arithmetic1D(1, + 4)
+ +algo_local.Propagation()
+ ++ +
mesh.Compute()
+ ++ +
# sew free borders
+ +# FirstNodeID1, SecondNodeID1, + LastNodeID1,
+ +# FirstNodeID2, SecondNodeID2, + LastNodeID2, CreatePolygons, CreatePolyedrs
+ +mesh.SewFreeBorders(6, + 21, 5, 1, 12, 3, 0, 0)
+ +import geompy
+ +import smesh
+ ++ +
# create two boxes
+ +box1 = geompy.MakeBox(0., + 0., 0., + 10., 10., 10.)
+ +box2 = geompy.MakeBox(0., + 15., 0., 20., 25., 10.)
+ ++ +
EdgesList = geompy.SubShapeAll(box2, + geompy.ShapeType["EDGE"])
+ ++ +
aComp = geompy.MakeCompound([box1, + box2])
+ +geompy.addToStudy(aComp, + "Two boxes")
+ ++ +
# create a mesh on + two boxes
+ +mesh = smesh.Mesh(aComp, + "Two faces : quadrangle mesh")
+ ++ +
algo1D = mesh.Segment()
+ +algo1D.NumberOfSegments(2)
+ +algo2D = mesh.Quadrangle()
+ ++ +
algo_local = mesh.Segment(EdgesList[8])
+ +algo_local.NumberOfSegments(4)
+ +algo_local.Propagation()
+ ++ +
mesh.Compute()
+ ++ +
# sew side elements
+ +# IDsOfSide1Elements, + IDsOfSide2Elements,
+ +# NodeID1OfSide1ToMerge, + NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge
+ +mesh.SewSideElements([69, + 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)
+ + + +