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)
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)