import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
# add edge
LastNodeId = mesh.NbNodes()
if aMeshEditor.AddEdge([LastNodeId, 38]) == 1:
print "Edge addition is OK!"
else:
print "KO edge addition."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
LastNodeId = mesh.NbNodes()
# add triangle
if aMeshEditor.AddFace([LastNodeId, 38, 39]) == 1:
print "Triangle addition is OK!"
else:
print "KO triangle addition."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
LastNodeId = mesh.NbNodes()
# add quadrangle
if aMeshEditor.AddNode(40, 20, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
if aMeshEditor.AddFace([mesh.NbNodes(), LastNodeId, 38, 39]) == 1:
print "Quadrangle addition is OK!"
else:
print "KO quadrangle addition."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
LastNodeId = mesh.NbNodes()
# add tetrahedron
if aMeshEditor.AddVolume([LastNodeId, 38, 39, 246]) == 1:
print "Tetrahedron addition is OK!"
else:
print "KO tetrahedron addition."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add nodes
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.AddNode(50, 10, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
aNodeId1 = mesh.NbNodes()
if aMeshEditor.AddNode(47, 12, 0) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
aNodeId2 = mesh.NbNodes()
if aMeshEditor.AddNode(50, 10, 10) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
aNodeId3 = mesh.NbNodes()
if aMeshEditor.AddNode(47, 12, 10) == 1:
print "Node addition is OK!"
else:
print "KO node addition."
aNodeId4 = mesh.NbNodes()
# add hexahedron
if aMeshEditor.AddVolume([aNodeId2, aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:
print "Hexahedron addition is OK!"
else:
print "KO Hexahedron addition."
salome.sg.updateObjBrowser(1)
import salome
import geompy
import math
import StdMeshers
# GEOM module
shape_mesh = geompy.MakeCylinderRH(13, 77)
geompy.addToStudy(shape_mesh, "cylinder")
# SMESH module
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
mesh = smesh.CreateMesh(shape_mesh)
MeshEditor = mesh.GetMeshEditor()
# a method to build a polygonal mesh element with nb_vert angles:
def MakePolygon (a_mesh, x0, y0, z0, radius, nb_vert):
node_start_id = a_mesh.NbNodes() + 1
al = 2.0 * math.pi / nb_vert
node_ids = []
# Create nodes for a polyhedron
for ii in range(nb_vert):
MeshEditor.AddNode(x0 + radius * math.cos(ii*al),
y0 + radius * math.sin(ii*al),
z0)
node_ids.append(node_start_id + ii)
pass
# Create a polygon
MeshEditor.AddPolygonalFace(node_ids)
return 0
# Create three polygons
MakePolygon(mesh, 0, 0, 0, 30, 13)
MakePolygon(mesh, 0, 0, 10, 21, 9)
MakePolygon(mesh, 0, 0, 20, 13, 6)
salome.sg.updateObjBrowser(1)
import salome
import geompy
import math
#import SMESH
import StdMeshers
# GEOM
shape_mesh = geompy.MakeCylinderRH(13, 77)
geompy.addToStudy(shape_mesh, "cylinder")
# SMESH
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
mesh = smesh.CreateMesh(shape_mesh)
MeshEditor = mesh.GetMeshEditor()
# Now we are going to create a 12-hedron:
# Create nodes for polyhedron
al = 2 * math.pi / 5.0
cosal = math.cos(al)
aa = 13
rr = aa / (2.0 * math.sin(al/2.0))
dr = 2.0 * rr * cosal
r1 = rr + dr
dh = rr * math.sqrt(2.0 * (1.0 - cosal * (1.0 + 2.0 * cosal)))
hh = 2.0 * dh - dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh
for i in range(5):
MeshEditor.AddNode(rr*math.cos(i*al), rr*math.sin(i*al), 0) # 1,3,5,7, 9 # bottom
MeshEditor.AddNode(r1*math.cos(i*al), r1*math.sin(i*al), dh) # 2,4,6,8,10 # above bottom
for i in range(5):
MeshEditor.AddNode(rr*math.cos(i*al + al/2.0),
rr*math.sin(i*al + al/2.0), hh) # 11,13,15,17,19 # top
MeshEditor.AddNode(r1*math.cos(i*al + al/2.0),
r1*math.sin(i*al + al/2.0), hh - dh) # 12,14,16,18,20 # below top
# Create a polyhedral volume
MeshEditor.AddPolyhedralVolume([ 1, 3, 5, 7, 9, # bottom
1, 2, 12, 4, 3, # .
3, 4, 14, 6, 5, # .
5, 6, 16, 8, 7, # . above bottom
7, 8, 18, 10, 9, # .
9, 10, 20, 2, 1, # .
11, 12, 4, 14, 13, # -
13, 14, 6, 16, 15, # -
15, 16, 8, 18, 17, # - below top
17, 18, 10, 20, 19, # -
19, 20, 2, 12, 11, # -
11, 13, 15, 17, 19], # top
[5,5,5,5,5,5,5,5,5,5,5,5])
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# add node
aMeshEditor = mesh.GetMeshEditor()
if aMeshEditor.RemoveNodes([246, 255]) == 1:
print "Node removing is OK!"
else:
print "KO node removing."
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
anEditor = mesh.GetMeshEditor()
anEditor.RemoveElements([850, 859, 814])
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
anEditor = mesh.GetMeshEditor()
anEditor.RenumberNodes()
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# move node
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.MoveNode(38, 20, 10, 0)
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# inverse diagonal
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.InverseDiag(700, 642)
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# delete diagonal
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.DeleteDiag(700, 642)
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# unite a set of triangles
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateMinimumAngle()
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.TriToQuad([1145, 1147, 1159, 1135], aFunctor, 60)
salome.sg.updateObjBrowser(1)
import salome
import geompy
import StdMeshers
# GEOM module
shape_mesh = geompy.MakeCylinderRH(13, 77)
geompy.addToStudy(shape_mesh, "cylinder")
# SMESH module
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
mesh = smesh.CreateMesh(shape_mesh)
MeshEditor = mesh.GetMeshEditor()
# build five quadrangles:
node_start_id = mesh.NbNodes() + 1
dx = 10
dy = 20
MeshEditor.AddNode(0.0 * dx, 0, 0) # 1
MeshEditor.AddNode(1.0 * dx, 0, 0) # 2
MeshEditor.AddNode(2.0 * dx, 0, 0) # 3
MeshEditor.AddNode(3.0 * dx, 0, 0) # 4
MeshEditor.AddNode(4.0 * dx, 0, 0) # 5
MeshEditor.AddNode(5.0 * dx, 0, 0) # 6
MeshEditor.AddNode(0.0 * dx, dy, 0) # 7
MeshEditor.AddNode(1.0 * dx, dy, 0) # 8
MeshEditor.AddNode(2.0 * dx, dy, 0) # 9
MeshEditor.AddNode(3.0 * dx, dy, 0) # 10
MeshEditor.AddNode(4.0 * dx, dy, 0) # 11
MeshEditor.AddNode(5.0 * dx, dy, 0) # 12
MeshEditor.AddFace([1, 2, 8, 7])
MeshEditor.AddFace([2, 3, 9, 8])
MeshEditor.AddFace([3, 4, 10, 9])
MeshEditor.AddFace([4, 5, 11, 10])
MeshEditor.AddFace([5, 6, 12, 11])
# Change orientation of the second and the fourth faces.
MeshEditor.Reorient([2, 4])
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# unite a set of triangles
aFilterMgr = smesh.CreateFilterManager()
aFunctor = aFilterMgr.CreateMinimumAngle()
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.QuadToTri([405, 406], aFunctor)
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# smooth
FacesSmooth = [911, 931, 950, 864, 932]
GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group of faces (smooth)")
GroupSmooth.Add(FacesSmooth)
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.SmoothObject(GroupSmooth, [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# extrusion of the group
point = SMESH.PointStruct(0, 0, 5)
vector = SMESH.DirStruct(point)
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]
GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group of faces (quad)")
GroupTriToQuad.Add(FacesTriToQuad)
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.ExtrusionSweepObject(GroupTriToQuad, vector, 5)
salome.sg.updateObjBrowser(1)
import geompy
import smesh
import salome
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 2D mesh on the face
trias = smesh.Mesh(face1, "Face : 2D mesh")
algo = trias.Segment()
algo.NumberOfSegments(6)
algo = trias.Triangle()
algo.LengthFromEdges()
trias.Compute()
# create a path mesh
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")
circlemesh = smesh.Mesh(circle, "Path mesh")
algo = circlemesh.Segment()
algo.NumberOfSegments(10)
circlemesh.Compute()
# extrusion of the mesh
# The mesh "trias" will be extruded along another mesh, which is a sub-mesh of "circlemesh",
# corresponding to geometry "circle". In this particular case the path mesh will be the whole "circlemesh"
aMeshEditor = trias.GetMesh().GetMeshEditor()
aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(), circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))
salome.sg.updateObjBrowser(1)
import SMESH
import SMESH_mechanic
import math
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# rotate a sweep object
FacesRotate = [492, 493, 502, 503]
GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group of faces (rotate)")
GroupRotate.Add(FacesRotate)
angle45 = 45*math.pi/180
axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -23.321, -13.3402, -13.3265, 6.66632)
aMeshEditor = mesh.GetMeshEditor()
aMeshEditor.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
salome.sg.updateObjBrowser(1)
Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package.
import salome
import geompy
import SMESH, smesh
geompy.init_geom(salome.myStudy)
smesh.smesh.SetCurrentStudy(salome.myStudy)
# define geometry
Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
geompy.addToStudy(Box_1, "Box_1")
faces = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"])
Face_1 = faces[0]
Face_2 = faces[1]
geompy.addToStudyInFather(Box_1, Face_1, "Face_1")
geompy.addToStudyInFather(Box_1, Face_2, "Face_2")
# build quadrangle mesh 3x3 on Face_1
Mesh_1 = smesh.Mesh(Face_1)
Wire_discretisation = Mesh_1.Segment()
Wire_discretisation.NumberOfSegments(3)
Mesh_1.Quadrangle()
isDone = Mesh_1.Compute()
if not isDone: print 'Mesh Mesh_1 : computation failed'
# pattern the mesh
Mesh_2 = smesh.Mesh(Face_2)
Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments', 'libStdMeshersEngine.so')
Nb_Segments_1.SetNumberOfSegments(1)
status = Mesh_2.GetMesh().AddHypothesis(Face_2, Nb_Segments_1)
status = Mesh_2.GetMesh().AddHypothesis(Face_2, Wire_discretisation.GetAlgorithm())
Triangle_Mefisto = Mesh_2.Triangle()
Max_Element_Area = Triangle_Mefisto.MaxElementArea(240)
isDone = Mesh_2.Compute()
if not isDone: print 'Mesh Mesh_2 : computation failed'
# create a pattern
pattern = smesh.smesh.GetPattern()
isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), Face_2, 0)
if (isDone != 1):
print 'LoadFromFace :', pattern.GetErrorCode()
# apply the pattern to a face of the first mesh
pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), [17], 0, 0)
isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 0, 0)
if (isDone != 1):
print 'MakeMesh :', pattern.GetErrorCode()
salome.sg.updateObjBrowser(1)