SALOME documentation central

Python interface

Python package smesh defines several classes, destined for easy and clear mesh creation and edition.

Documentation for smesh package is available in two forms:

The structured documentation for smesh package, where all methods and classes are grouped by their functionality, like it is done in the GUI documentation and the linear documentation for smesh package grouped only by classes, declared in the smesh.py file.

The main page of the linear documentation for smesh package contains a list of data structures and a list of functions, provided by the package smesh.py. The first item in the list of data structures (class smesh) also represents documentation for the methods of the package smesh.py itself.

The package smesh.py provides an interface to create and handle meshes. Use it to create an empty mesh or to import it from the data file.

Once a mesh has been created, it is possible to manage it via its own methods, described at class Mesh documentation (it is also accessible by the second item "class Mesh" in the list of data structures).

Class Mesh allows assigning algorithms to a mesh. Please note, that some algorithms, included in the standard SALOME distribution are always available:

There are also some algorithms, which can be installed optionally, some of them are based on open-source meshers:

... and others are based on commercial meshers:

To add hypotheses, use the interfaces, provided by the assigned algorithms.

Below you can see an example of usage of the package smesh for 3d mesh generation.

Example of 3d mesh generation with NETGEN:

from geompy import * 
import smesh 

###
# Geometry: an assembly of a box, a cylinder and a truncated cone
# meshed with tetrahedral 
###

# Define values
name = "ex21_lamp" 
cote = 60 
section = 20 
size = 200 
radius_1 = 80 
radius_2 = 40 
height = 100 

# Build a box
box = MakeBox(-cote, -cote, -cote, +cote, +cote, +cote) 

# Build a cylinder
pt1 = MakeVertex(0, 0, cote/3) 
di1 = MakeVectorDXDYDZ(0, 0, 1) 
cyl = MakeCylinder(pt1, di1, section, size) 

# Build a truncated cone
pt2 = MakeVertex(0, 0, size) 
cone = MakeCone(pt2, di1, radius_1, radius_2, height) 

# Fuse
box_cyl = MakeFuse(box, cyl) 
piece = MakeFuse(box_cyl, cone) 

# Add to the study
addToStudy(piece, name) 

# Create a group of faces
group = CreateGroup(piece, ShapeType["FACE"]) 
group_name = name + "_grp" 
addToStudy(group, group_name) 
group.SetName(group_name) 

# Add faces to the group
faces = SubShapeAllIDs(piece, ShapeType["FACE"]) 
UnionIDs(group, faces) 

###
# Create a mesh
###

# Define a mesh on a geometry
tetra = smesh.Mesh(piece, name) 

# Define 1D hypothesis
algo1d = tetra.Segment() 
algo1d.LocalLength(10) 

# Define 2D hypothesis
algo2d = tetra.Triangle() 
algo2d.LengthFromEdges() 

# Define 3D hypothesis
algo3d = tetra.Tetrahedron(smesh.NETGEN) 
algo3d.MaxElementVolume(100) 

# Compute the mesh
tetra.Compute() 

# Create a groupe of faces
tetra.Group(group)

Examples of Python scripts for all Mesh operations are available by the following links:


Copyright © 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS