import salome
import geompy
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
# create a box
box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
# add box to the study
idbox = geompy.addToStudy(box, "box")
# create a hypothesis
print "-------------------------- create Hypothesis"
print "-------------------------- NumberOfSegments"
numberOfSegments = 7
hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hypNbSeg.SetNumberOfSegments(numberOfSegments)
print hypNbSeg.GetName()
print hypNbSeg.GetId()
print hypNbSeg.GetNumberOfSegments()
smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
print "-------------------------- MaxElementArea"
maxElementArea = 800
hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hypArea.SetMaxElementArea(maxElementArea)
print hypArea.GetName()
print hypArea.GetId()
print hypArea.GetMaxElementArea()
smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_500")
print "-------------------------- MaxElementVolume"
maxElementVolume = 900
hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
hypVolume.SetMaxElementVolume(maxElementVolume)
print hypVolume.GetName()
print hypVolume.GetId()
print hypVolume.GetMaxElementVolume()
smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_500")
# create algorithms
print "-------------------------- create Algorithms"
print "-------------------------- Regular_1D"
regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
print "-------------------------- MEFISTO_2D"
mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
# initialize a mesh with the box
mesh = smesh.CreateMesh(box)
smeshgui.SetName(salome.ObjectToID(mesh), "MeshBox")
# add the hypothesis to the box
print "-------------------------- add hypothesis to the box"
mesh.AddHypothesis(box,hypNbSeg)
mesh.AddHypothesis(box,hypArea)
mesh.AddHypothesis(box,hypVolume)
mesh.AddHypothesis(box,regular1D)
mesh.AddHypothesis(box,mefisto2D)
# compute the mesh
print "-------------------------- compute the mesh of the box"
ret = smesh.Compute(mesh,box)
print ret
if ret == 0:
print "probleme when computing the mesh"
salome.sg.updateObjBrowser(1)
from geompy import *
import smesh
# create vertices
Point111 = MakeVertex( 0, 0, 0)
Point211 = MakeVertex(10, 0, 0)
Point121 = MakeVertex( 0, 10, 0)
Point221 = MakeVertex(10, 10, 0)
Point112 = MakeVertex( 0, 0, 10)
Point212 = MakeVertex(10, 0, 10)
Point122 = MakeVertex( 0, 10, 10)
Point222 = MakeVertex(10, 10, 10)
# create edges
EdgeX111 = MakeEdge(Point111, Point211)
EdgeX121 = MakeEdge(Point121, Point221)
EdgeX112 = MakeEdge(Point112, Point212)
EdgeX122 = MakeEdge(Point122, Point222)
EdgeY11 = MakeEdge(Point111, Point121)
EdgeY21 = MakeEdge(Point211, Point221)
EdgeY12 = MakeEdge(Point112, Point122)
EdgeY22 = MakeEdge(Point212, Point222)
EdgeZ111 = MakeEdge(Point111, Point112)
EdgeZ211 = MakeEdge(Point211, Point212)
EdgeZ121 = MakeEdge(Point121, Point122)
EdgeZ221 = MakeEdge(Point221, Point222)
# create faces
FaceX11 = MakeQuad(EdgeY11, EdgeZ111, EdgeY12, EdgeZ121)
FaceX21 = MakeQuad(EdgeY21, EdgeZ211, EdgeY22, EdgeZ221)
FaceY111 = MakeQuad(EdgeX111, EdgeZ111, EdgeX112, EdgeZ211)
FaceY121 = MakeQuad(EdgeX121, EdgeZ121, EdgeX122, EdgeZ221)
FaceZ11 = MakeQuad(EdgeX111, EdgeY11, EdgeX121, EdgeY21)
FaceZ12 = MakeQuad(EdgeX112, EdgeY12, EdgeX122, EdgeY22)
# create a solid
Block = MakeHexa(FaceX11, FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)
# create a compound
box = MakeCompound([Block])
# add in the study
box_id = addToStudy(box, "Box compound")
# create hexahedral mesh on the box
hexa = smesh.Mesh(box, "Box compound : hexahedrical mesh")
algo = hexa.Segment()
# define "NumberOfSegments" hypothesis to cut the edge in a fixed number of segments
algo.NumberOfSegments(4)
# creates a quadrangle 2D algorithm for the faces
hexa.Quadrangle()
# construct a submesh with a local hypothesis
algo = hexa.Segment(EdgeX111)
# 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()
# compute the mesh
hexa.Compute() )
import salome
import geompy
import SMESH
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smesh.SetCurrentStudy(salome.myStudy)
box = geompy.MakeBox(0., 0., 0., 20., 20., 20.)
idbox = geompy.addToStudy(box, "box")
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
edge = subShapeList[0]
name = geompy.SubShapeName(edge, box)
idedge = geompy.addToStudyInFather(box, edge, name)
box = salome.IDToObject(idbox)
edge = salome.IDToObject(idedge)
hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hyp1.SetNumberOfSegments(3)
hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hyp2.SetMaxElementArea(10)
hyp3 = smesh.CreateHypothesis("Arithmetic1D", "libStdMeshersEngine.so")
hyp3.SetLength(1,1)
hyp3.SetLength(6,0)
hyp4 = smesh.CreateHypothesis("Propagation", "libStdMeshersEngine.so")
algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
mesh = smesh.CreateMesh(box)
mesh.AddHypothesis(box,hyp1)
mesh.AddHypothesis(box,hyp2)
mesh.AddHypothesis(box,algo1)
mesh.AddHypothesis(box,algo2)
mesh.AddHypothesis(edge,hyp3)
mesh.AddHypothesis(edge,hyp4)
mesh.AddHypothesis(edge,algo1)
smesh.Compute(mesh,box)
salome.sg.updateObjBrowser(1)
# remove a hypothesis
mesh.RemoveHypothesis(edge,hyp4)
smesh.Compute(mesh,box)
salome.sg.updateObjBrowser(1)
# change the value of the hypothesis
hyp2.SetMaxElementArea(2)
mesh.AddHypothesis(box,hyp2)
smesh.Compute(mesh,box)
salome.sg.updateObjBrowser(1)
import salome
import geompy
import StdMeshers
smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
smeshgui = salome.ImportComponentGUI("SMESH")
smeshgui.Init(salome.myStudyId);
# create a box
box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
# add the box to the study
idbox = geompy.addToStudy(box, "box")
# create a hypothesis
print "-------------------------- create Hypothesis"
print "-------------------------- NumberOfSegments"
numberOfSegments = 7
hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
hypNbSeg.SetNumberOfSegments(numberOfSegments)
print hypNbSeg.GetName()
print hypNbSeg.GetId()
print hypNbSeg.GetNumberOfSegments()
smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
print "-------------------------- MaxElementArea"
maxElementArea = 800
hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
hypArea.SetMaxElementArea(maxElementArea)
print hypArea.GetName()
print hypArea.GetId()
print hypArea.GetMaxElementArea()
smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_500")
print "-------------------------- MaxElementVolume"
maxElementVolume = 900
hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
hypVolume.SetMaxElementVolume(maxElementVolume)
print hypVolume.GetName()
print hypVolume.GetId()
print hypVolume.GetMaxElementVolume()
smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_500")
# create algorithms
print "-------------------------- create Algorithms"
print "-------------------------- Regular_1D"
regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
print "-------------------------- MEFISTO_2D"
mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
# initialize a mesh with the box
mesh = smesh.CreateMesh(box)
smeshgui.SetName(salome.ObjectToID(mesh), "MeshBox")
# add the hypothesis to the box
print "-------------------------- add hypothesis to the box"
mesh.AddHypothesis(box,hypNbSeg)
mesh.AddHypothesis(box,hypArea)
mesh.AddHypothesis(box,hypVolume)
mesh.AddHypothesis(box,regular1D)
mesh.AddHypothesis(box,mefisto2D)
# compute the mesh
print "-------------------------- compute the mesh of the box"
ret = smesh.Compute(mesh,box)
print ret
if ret == 0:
print "probleme when computing the mesh"
salome.sg.updateObjBrowser(1)
mesh.ExportMED("/tmp/meshMED.med",0)