mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-01 20:30:35 +05:00
0021893: EDF 2133 SMESH : Improvement of 3D extrusion algorithm
This commit is contained in:
parent
cac74c04ae
commit
76fc32823a
BIN
doc/salome/gui/SMESH/images/prism_needs_hyps.png
Normal file
BIN
doc/salome/gui/SMESH/images/prism_needs_hyps.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 42 KiB |
@ -30,35 +30,43 @@ all the eight prisms in the stacks.
|
|||||||
|
|
||||||
To use <em>3D extrusion</em> algorithm you need to assign algorithms
|
To use <em>3D extrusion</em> algorithm you need to assign algorithms
|
||||||
and hypotheses of lower dimension as follows.
|
and hypotheses of lower dimension as follows.
|
||||||
|
(A sample picture below shows algorithms and hypotheses used to
|
||||||
|
mesh a cylinder with prismatic volumes).
|
||||||
|
|
||||||
|
\image html prism_needs_hyps.png
|
||||||
|
|
||||||
\b Global algorithms and hypotheses to be chosen at
|
\b Global algorithms and hypotheses to be chosen at
|
||||||
\ref create_mesh_anchor "Creation of a mesh object" are:
|
\ref create_mesh_anchor "Creation of a mesh object" are:
|
||||||
<ul>
|
<ul>
|
||||||
<li> 1D algorithm and hypothesis that will be applied for meshing
|
<li> 1D algorithm and hypothesis that will be applied for meshing
|
||||||
(logically) vertical edges of the prism (these edges connect the top and
|
(logically) vertical edges of the prism (these edges connect the top and
|
||||||
base faces of prism).</li>
|
base faces of prism). In the sample picture above these are
|
||||||
|
"Regular_1D" algorithm and "Nb. Segments_1" hypothesis.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
\b Local algorithms and hypotheses to be chosen at
|
\b Local algorithms and hypotheses to be chosen at
|
||||||
\ref constructing_submeshes_page "Constructing sub-meshes" are:
|
\ref constructing_submeshes_page "Constructing sub-meshes" are:
|
||||||
<ul>
|
<ul>
|
||||||
<li> 1D and 2D algorithms and hypotheses that will be applied for
|
<li> 1D and 2D algorithms and hypotheses that will be applied for
|
||||||
meshing the top and base prism faces. These faces can be meshed
|
meshing the top and base prism faces. These faces can be meshed
|
||||||
with any type of 2D elements: quadrangles, triangles, polygons or
|
with any type of 2D elements: quadrangles, triangles, polygons or
|
||||||
their mix. It's enough to define a sub-mesh on either top or base face
|
their mix. It's enough to define a sub-mesh on either top or base
|
||||||
only.</li>
|
face. In the sample picture above, "BLSURF" algorithm meshes
|
||||||
<li> Optionally you can define an 1D sub-mesh on some vertical edges
|
"Face_1" base surface with triangles. (1D algorithm is not
|
||||||
of stacked prisms, which will override the global 1D hypothesis mentioned
|
assigned as "BLSURF" does not require divided edges to create 2D mesh.)
|
||||||
above. In the above picture, the vertical division is not equidistant
|
</li>
|
||||||
on all the length because of a "Number Of Segments" hypothesis with
|
<li> Optionally you can define an 1D sub-mesh on some vertical edges
|
||||||
Scale Factor=3 assigned to one of edges between the shifted stacks.
|
of stacked prisms, which will override the global 1D hypothesis mentioned
|
||||||
|
above. In the picture above the picture of Object Browser, the
|
||||||
|
vertical division is not equidistant on all the length because of
|
||||||
|
a "Number Of Segments" hypothesis with Scale Factor=3 assigned to
|
||||||
|
the highlighted edge.
|
||||||
</li></ul>
|
</li></ul>
|
||||||
|
|
||||||
\image html image157.gif "Prism with 3D extrusion meshing"
|
\image html image157.gif
|
||||||
|
|
||||||
As you can see, the <em>3D extrusion</em> algorithm permits to build
|
Prism with 3D extrusion meshing. "Vertical" division is different on
|
||||||
in the same 3D mesh such elements as hexahedrons, prisms and
|
neighbor edges due to local 1D hypotheses assigned.
|
||||||
polyhedrons.
|
|
||||||
|
|
||||||
\sa a sample TUI Script of
|
\sa a sample TUI Script of
|
||||||
\ref tui_prism_3d_algo "Use 3D extrusion meshing algorithm".
|
\ref tui_prism_3d_algo "Use 3D extrusion meshing algorithm".
|
||||||
|
@ -54,25 +54,30 @@ bigQuad = geompy.GetFaceNearPoint( prisms, geompy.MakeVertex( 15,15,0 ), "bigQ
|
|||||||
|
|
||||||
mesh = smesh.Mesh( prisms )
|
mesh = smesh.Mesh( prisms )
|
||||||
|
|
||||||
# vertical division
|
# assign Global hypotheses
|
||||||
|
|
||||||
|
# 1D algorithm and hypothesis for vertical division
|
||||||
mesh.Segment().NumberOfSegments(15)
|
mesh.Segment().NumberOfSegments(15)
|
||||||
|
|
||||||
# Extrusion 3D algo
|
# Extrusion 3D algo
|
||||||
mesh.Prism()
|
mesh.Prism()
|
||||||
|
|
||||||
# mesh smallQuad with quadrilaterals
|
# assign Local hypotheses
|
||||||
|
|
||||||
|
# 1D and 2D algos and hyps to mesh smallQuad with quadrilaterals
|
||||||
mesh.Segment(smallQuad).LocalLength( 3 )
|
mesh.Segment(smallQuad).LocalLength( 3 )
|
||||||
mesh.Quadrangle(smallQuad)
|
mesh.Quadrangle(smallQuad)
|
||||||
|
|
||||||
# mesh bigQuad with triangles
|
# 1D and 2D algos and hyps to mesh bigQuad with triangles
|
||||||
mesh.Segment(bigQuad).LocalLength( 3 )
|
mesh.Segment(bigQuad).LocalLength( 3 )
|
||||||
mesh.Triangle(bigQuad)
|
mesh.Triangle(bigQuad)
|
||||||
|
|
||||||
|
# compute the mesh
|
||||||
mesh.Compute()
|
mesh.Compute()
|
||||||
|
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
The result mesh is shown below
|
The result geometry and mesh is shown below
|
||||||
\image html prism_tui_sample.png
|
\image html prism_tui_sample.png
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user