Add PreCAD

Update doc
Update smeshDC.py
This commit is contained in:
gdd 2011-07-26 17:18:04 +00:00
parent eed8bfc30b
commit 78fd150f79
5 changed files with 110 additions and 26 deletions

View File

@ -4,6 +4,7 @@
\n BLSURF Parameters hypothesis works only with <b>BLSURF</b> 2d \n BLSURF Parameters hypothesis works only with <b>BLSURF</b> 2d
algorithm. This algorithm is a commercial software. algorithm. This algorithm is a commercial software.
\n To get a licence, visit http://www.distene.com/corp/eval-distene.html
<h1>General parameters</h1> <h1>General parameters</h1>
@ -67,6 +68,15 @@ not sewed faces.
<li>"Pre-process" and "Pre-process++" allow the BLSURF software to <li>"Pre-process" and "Pre-process++" allow the BLSURF software to
pre-process the geometrical model to eventually produce a conform pre-process the geometrical model to eventually produce a conform
mesh. </li> mesh. </li>
<li>"PreCAD" is an auxiliary CAD pre-processing module which has
two main goals:
<ul>
<li> Complete missing or inadequate CAD-description.</li>
<li>Perform topology reconstruction and specific geometry
enhancement for mesh generation.</li>
</ul>
This module requires a specific licence.
</li>
</ul> </ul>
<li><b>Verbosity level</b> - Defines the percentage of "verbosity" of <li><b>Verbosity level</b> - Defines the percentage of "verbosity" of

View File

@ -4,6 +4,7 @@
\n GHS3D Parameters hypothesis works only with <b>Tetrahedron (GHS3D)</b> \n GHS3D Parameters hypothesis works only with <b>Tetrahedron (GHS3D)</b>
algorithm. This algorithm is a commercial software. algorithm. This algorithm is a commercial software.
\n To get a licence, visit http://www.distene.com/corp/eval-distene.html
<h1>General parameters</h1> <h1>General parameters</h1>

View File

@ -4,6 +4,7 @@
\n Hexotic Parameters hypothesis works only with <b>Hexotic</b> \n Hexotic Parameters hypothesis works only with <b>Hexotic</b>
algorithm. This algorithm is a commercial software. algorithm. This algorithm is a commercial software.
\n To get a licence, visit http://www.distene.com/corp/eval-distene.html
\image html hexotic_parameters.png \image html hexotic_parameters.png

View File

@ -34,36 +34,33 @@ geompy.addToStudyInFather(Face_2,Wire_1, "Wire_1")
blsurfMesh = smesh.Mesh(box,"box: BLSurf mesh") blsurfMesh = smesh.Mesh(box,"box: BLSurf mesh")
# create a BLSurf algorithm for faces # create a BLSurf algorithm for faces
BLSURF = blsurfMesh.Triangle(algo=smesh.BLSURF) algo2d = blsurfMesh.Triangle(algo=smesh.BLSURF)
# get BLSurf algorithm hypothesis # optional - set physical mesh to 2 = Size Map
BLSURF_Parameters = BLSURF.Parameters() algo2d.SetPhysicalMesh( 2 )
# set physical mesh to 2 = Size Map # optional - set global mesh size
BLSURF_Parameters.SetPhysicalMesh( 2 ) algo2d.SetPhySize( 34.641 )
# set global mesh size
BLSURF_Parameters.SetPhySize( 34.641 )
# set size on Face_1 # set size on Face_1
BLSURF_Parameters.SetSizeMap(Face_1, 'def f(u,v): return 10' ) algo2d.SetSizeMap(Face_1, 'def f(u,v): return 10' )
# set size on Edge_1 # set size on Edge_1
BLSURF_Parameters.SetSizeMap(Edge_1, 'def f(t): return 5' ) algo2d.SetSizeMap(Edge_1, 'def f(t): return 5' )
# set size on Vertex_1 # set size on Vertex_1
BLSURF_Parameters.SetSizeMap(Vertex_1, 'def f(): return 2' ) algo2d.SetSizeMap(Vertex_1, 'def f(): return 2' )
# compute the mesh # compute the mesh
blsurfMesh.Compute() blsurfMesh.Compute()
# Add enforced vertex for Face_1 on (50, 50, 50) # Add enforced vertex for Face_1 on (50, 50, 50)
# The projection coordinates will be (50, 50, 0) # The projection coordinates will be (50, 50, 0)
BLSURF_Parameters.SetEnforcedVertex(Face_1, 50, 50, 50) algo2d.SetEnforcedVertex(Face_1, 50, 50, 50)
# Add another enforced vertex on (150, 150, 150) # Add another enforced vertex on (150, 150, 150)
BLSURF_Parameters.SetEnforcedVertex(Face_1, 150, 150, 150) algo2d.SetEnforcedVertex(Face_1, 150, 150, 150)
# Retrieve and print the list of enforced vertices defines on Face_1 # Retrieve and print the list of enforced vertices defines on Face_1
enfList = BLSURF_Parameters.GetEnforcedVertices(Face_1) enfList = algo2d.GetEnforcedVertices(Face_1)
print "List of enforced vertices for Face_1: " print "List of enforced vertices for Face_1: "
print enfList print enfList
@ -71,8 +68,8 @@ print enfList
blsurfMesh.Compute() blsurfMesh.Compute()
# Remove an enforced vertex and print the list # Remove an enforced vertex and print the list
BLSURF_Parameters.UnsetEnforcedVertex(Face_1, 50, 50, 50) algo2d.UnsetEnforcedVertex(Face_1, 50, 50, 50)
enfList = BLSURF_Parameters.GetEnforcedVertices(Face_1) enfList = algo2d.GetEnforcedVertices(Face_1)
print "List of enforced vertices for Face_1: " print "List of enforced vertices for Face_1: "
print enfList print enfList
@ -80,7 +77,7 @@ print enfList
blsurfMesh.Compute() blsurfMesh.Compute()
# Remove all enforced vertices defined on Face_1 # Remove all enforced vertices defined on Face_1
BLSURF_Parameters.UnsetEnforcedVertices(Face_1) algo2d.UnsetEnforcedVertices(Face_1)
# compute the mesh # compute the mesh
blsurfMesh.Compute() blsurfMesh.Compute()
@ -91,11 +88,11 @@ blsurfMesh.Compute()
# The size on Wire_1 is 1 and will grow until a maximum of 36.641 (physical size set above) # The size on Wire_1 is 1 and will grow until a maximum of 36.641 (physical size set above)
# The influence distance of the attractor is 20 # The influence distance of the attractor is 20
# The size is kept constant until a distance of 10 # The size is kept constant until a distance of 10
BLSURF_Parameters.SetAttractorGeom(Face_2, Wire_1, 1, 36.641, 20, 10) algo2d.SetAttractorGeom(Face_2, Wire_1, 1, 36.641, 20, 10)
# In order to let the attractor control the growing of the mesh let set # In order to let the attractor control the growing of the mesh let set
# the gradation to its maximum # the gradation to its maximum
BLSURF_Parameters.SetGradation( 2.5 ) algo2d.SetGradation( 2.5 )
# compute the mesh # compute the mesh
blsurfMesh.Compute() blsurfMesh.Compute()

View File

@ -188,7 +188,7 @@ None_Optimization, Light_Optimization, Medium_Optimization, Strong_Optimization
None_Optimization, Light_Optimization, Standard_Optimization, StandardPlus_Optimization, Strong_Optimization = 0,1,2,3,4 None_Optimization, Light_Optimization, Standard_Optimization, StandardPlus_Optimization, Strong_Optimization = 0,1,2,3,4
# Topology treatment way of BLSURF # Topology treatment way of BLSURF
FromCAD, PreProcess, PreProcessPlus = 0,1,2 FromCAD, PreProcess, PreProcessPlus, PreCAD = 0,1,2,3
# Element size flag of BLSURF # Element size flag of BLSURF
DefaultSize, DefaultGeom, BLSURF_Custom, SizeMap = 0,0,1,2 DefaultSize, DefaultGeom, BLSURF_Custom, SizeMap = 0,0,1,2
@ -5053,6 +5053,7 @@ class Mesh_Triangle(Mesh_Algorithm):
# @param way defines how mesh conformity is assured <ul> # @param way defines how mesh conformity is assured <ul>
# <li>FromCAD - mesh conformity is assured by conformity of a shape</li> # <li>FromCAD - mesh conformity is assured by conformity of a shape</li>
# <li>PreProcess or PreProcessPlus - by pre-processing a CAD model</li></ul> # <li>PreProcess or PreProcessPlus - by pre-processing a CAD model</li></ul>
# <li>PreCAD - by pre-processing with PreCAD a CAD model</li></ul>
# @ingroup l3_hypos_blsurf # @ingroup l3_hypos_blsurf
def SetTopology(self, way): def SetTopology(self, way):
if self.Parameters(): if self.Parameters():
@ -5080,6 +5081,52 @@ class Mesh_Triangle(Mesh_Algorithm):
# Parameter of BLSURF algo # Parameter of BLSURF algo
self.params.SetOptionValue(optionName,level) self.params.SetOptionValue(optionName,level)
## Enforced vertices (BLSURF)
## To get all the enforced vertices
# @ingroup l3_hypos_blsurf
def GetAllEnforcedVertices(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.GetAllEnforcedVertices()
## To get all the enforced vertices sorted by face (or group, compound)
# @ingroup l3_hypos_blsurf
def GetAllEnforcedVerticesByFace(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.GetAllEnforcedVerticesByFace()
## To get all the enforced vertices sorted by coords of input vertices
# @ingroup l3_hypos_blsurf
def GetAllEnforcedVerticesByCoords(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.GetAllEnforcedVerticesByCoords()
## To get all the coords of input vertices sorted by face (or group, compound)
# @ingroup l3_hypos_blsurf
def GetAllCoordsByFace(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.GetAllCoordsByFace()
## To get all the enforced vertices on a face (or group, compound)
# @param theFace : GEOM face (or group, compound) on which to define an enforced vertex
# @ingroup l3_hypos_blsurf
def GetEnforcedVertices(self, theFace):
if self.Parameters():
# Parameter of BLSURF algo
AssureGeomPublished( self.mesh, theFace )
return self.params.GetEnforcedVertices(theFace)
## To clear all the enforced vertices
# @ingroup l3_hypos_blsurf
def ClearAllEnforcedVertices(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.ClearAllEnforcedVertices()
## To set an enforced vertex on a face (or group, compound) given the coordinates of a point. If the point is not on the face, it will projected on it. If there is no projection, no enforced vertex is created. ## To set an enforced vertex on a face (or group, compound) given the coordinates of a point. If the point is not on the face, it will projected on it. If there is no projection, no enforced vertex is created.
# @param theFace : GEOM face (or group, compound) on which to define an enforced vertex # @param theFace : GEOM face (or group, compound) on which to define an enforced vertex
# @param x : x coordinate # @param x : x coordinate
@ -5089,7 +5136,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertex(self, theFace, x, y, z): def SetEnforcedVertex(self, theFace, x, y, z):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
return self.params.SetEnforcedVertex(theFace, x, y, z) return self.params.SetEnforcedVertex(theFace, x, y, z)
@ -5103,7 +5149,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertexNamed(self, theFace, x, y, z, vertexName): def SetEnforcedVertexNamed(self, theFace, x, y, z, vertexName):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
return self.params.SetEnforcedVertexNamed(theFace, x, y, z, vertexName) return self.params.SetEnforcedVertexNamed(theFace, x, y, z, vertexName)
@ -5114,7 +5159,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertexGeom(self, theFace, theVertex): def SetEnforcedVertexGeom(self, theFace, theVertex):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
AssureGeomPublished( self.mesh, theVertex ) AssureGeomPublished( self.mesh, theVertex )
return self.params.SetEnforcedVertexGeom(theFace, theVertex) return self.params.SetEnforcedVertexGeom(theFace, theVertex)
@ -5129,7 +5173,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertexWithGroup(self, theFace, x, y, z, groupName): def SetEnforcedVertexWithGroup(self, theFace, x, y, z, groupName):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
return self.params.SetEnforcedVertexWithGroup(theFace, x, y, z, groupName) return self.params.SetEnforcedVertexWithGroup(theFace, x, y, z, groupName)
@ -5144,7 +5187,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertexNamedWithGroup(self, theFace, x, y, z, vertexName, groupName): def SetEnforcedVertexNamedWithGroup(self, theFace, x, y, z, vertexName, groupName):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
return self.params.SetEnforcedVertexNamedWithGroup(theFace, x, y, z, vertexName, groupName) return self.params.SetEnforcedVertexNamedWithGroup(theFace, x, y, z, vertexName, groupName)
@ -5156,7 +5198,6 @@ class Mesh_Triangle(Mesh_Algorithm):
def SetEnforcedVertexGeomWithGroup(self, theFace, theVertex, groupName): def SetEnforcedVertexGeomWithGroup(self, theFace, theVertex, groupName):
if self.Parameters(): if self.Parameters():
# Parameter of BLSURF algo # Parameter of BLSURF algo
# self.SetPhysicalMesh(2)
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
AssureGeomPublished( self.mesh, theVertex ) AssureGeomPublished( self.mesh, theVertex )
return self.params.SetEnforcedVertexGeomWithGroup(theFace, theVertex,groupName) return self.params.SetEnforcedVertexGeomWithGroup(theFace, theVertex,groupName)
@ -5193,6 +5234,8 @@ class Mesh_Triangle(Mesh_Algorithm):
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
return self.params.UnsetEnforcedVertices(theFace) return self.params.UnsetEnforcedVertices(theFace)
## Attractors (BLSURF)
## Sets an attractor on the chosen face. The mesh size will decrease exponentially with the distance from theAttractor, following the rule h(d) = theEndSize - (theEndSize - theStartSize) * exp [ - ( d / theInfluenceDistance ) ^ 2 ] ## Sets an attractor on the chosen face. The mesh size will decrease exponentially with the distance from theAttractor, following the rule h(d) = theEndSize - (theEndSize - theStartSize) * exp [ - ( d / theInfluenceDistance ) ^ 2 ]
# @param theFace : face on which the attractor will be defined # @param theFace : face on which the attractor will be defined
# @param theAttractor : geometrical object from which the mesh size "h" decreases exponentially # @param theAttractor : geometrical object from which the mesh size "h" decreases exponentially
@ -5217,6 +5260,38 @@ class Mesh_Triangle(Mesh_Algorithm):
AssureGeomPublished( self.mesh, theFace ) AssureGeomPublished( self.mesh, theFace )
self.params.SetAttractorGeom(theFace) self.params.SetAttractorGeom(theFace)
## Size maps (BLSURF)
## To set a size map on a face, edge or vertex (or group, compound) given Python function.
# If theObject is a face, the function can be: def f(u,v): return u+v
# If theObject is an edge, the function can be: def f(t): return t/2
# If theObject is a vertex, the function can be: def f(): return 10
# @param theObject : GEOM face, edge or vertex (or group, compound) on which to define a size map
# @param theSizeMap : Size map defined as a string
# @ingroup l3_hypos_blsurf
def SetSizeMap(self, theObject, theSizeMap):
if self.Parameters():
# Parameter of BLSURF algo
AssureGeomPublished( self.mesh, theObject )
return self.params.SetSizeMap(theObject, theSizeMap)
## To remove a size map defined on a face, edge or vertex (or group, compound)
# @param theObject : GEOM face, edge or vertex (or group, compound) on which to define a size map
# @ingroup l3_hypos_blsurf
def UnsetSizeMap(self, theObject):
if self.Parameters():
# Parameter of BLSURF algo
AssureGeomPublished( self.mesh, theObject )
return self.params.UnsetSizeMap(theObject)
## To remove all the size maps
# @ingroup l3_hypos_blsurf
def ClearSizeMaps(self):
if self.Parameters():
# Parameter of BLSURF algo
return self.params.ClearSizeMaps()
## Sets QuadAllowed flag. ## Sets QuadAllowed flag.
# Only for algoType == NETGEN(NETGEN_1D2D) || NETGEN_2D || BLSURF # Only for algoType == NETGEN(NETGEN_1D2D) || NETGEN_2D || BLSURF
# @ingroup l3_hypos_netgen l3_hypos_blsurf # @ingroup l3_hypos_netgen l3_hypos_blsurf