From 8b0c5680264603d0338bf2904ee3d1fe93cefb34 Mon Sep 17 00:00:00 2001 From: jfa Date: Thu, 6 Jul 2006 11:20:58 +0000 Subject: [PATCH] PAL11898: Improve docs for Extrusion Along a Path. --- .../gui/SMESH/extrusion_along_a_path.htm | 575 ++- doc/salome/gui/SMESH/image102.gif | Bin 3465 -> 0 bytes doc/salome/gui/SMESH/image104.gif | Bin 9275 -> 0 bytes doc/salome/gui/SMESH/modifying_meshes.htm | 3412 +++++++++-------- .../gui/SMESH/pics/a-extusionalongapath2.png | Bin 20909 -> 0 bytes .../gui/SMESH/pics/circle_angles_after.png | Bin 0 -> 7716 bytes .../gui/SMESH/pics/circle_simple_after.png | Bin 0 -> 5858 bytes .../gui/SMESH/pics/circle_simple_before.png | Bin 0 -> 4018 bytes .../gui/SMESH/pics/curvi_angles_after.png | Bin 0 -> 4276 bytes .../gui/SMESH/pics/curvi_simple_after.png | Bin 0 -> 4598 bytes .../gui/SMESH/pics/curvi_simple_before.png | Bin 0 -> 3585 bytes .../gui/SMESH/pics/edge_wire_3d_after.png | Bin 0 -> 3477 bytes .../gui/SMESH/pics/edge_wire_3d_before.png | Bin 0 -> 5212 bytes doc/salome/gui/SMESH/pics/edge_wire_after.png | Bin 0 -> 3185 bytes .../gui/SMESH/pics/edge_wire_before.png | Bin 0 -> 5036 bytes doc/salome/gui/SMESH/pics/extrusion1.png | Bin 0 -> 22957 bytes .../SMESH/pics/mesh_for_extr_along_path.png | Bin 0 -> 4658 bytes doc/salome/gui/SMESH/pics/straight_after.png | Bin 0 -> 5369 bytes doc/salome/gui/SMESH/pics/straight_before.png | Bin 0 -> 3623 bytes 19 files changed, 2211 insertions(+), 1776 deletions(-) delete mode 100755 doc/salome/gui/SMESH/image102.gif delete mode 100755 doc/salome/gui/SMESH/image104.gif delete mode 100755 doc/salome/gui/SMESH/pics/a-extusionalongapath2.png create mode 100644 doc/salome/gui/SMESH/pics/circle_angles_after.png create mode 100644 doc/salome/gui/SMESH/pics/circle_simple_after.png create mode 100644 doc/salome/gui/SMESH/pics/circle_simple_before.png create mode 100644 doc/salome/gui/SMESH/pics/curvi_angles_after.png create mode 100644 doc/salome/gui/SMESH/pics/curvi_simple_after.png create mode 100644 doc/salome/gui/SMESH/pics/curvi_simple_before.png create mode 100644 doc/salome/gui/SMESH/pics/edge_wire_3d_after.png create mode 100644 doc/salome/gui/SMESH/pics/edge_wire_3d_before.png create mode 100644 doc/salome/gui/SMESH/pics/edge_wire_after.png create mode 100644 doc/salome/gui/SMESH/pics/edge_wire_before.png create mode 100644 doc/salome/gui/SMESH/pics/extrusion1.png create mode 100644 doc/salome/gui/SMESH/pics/mesh_for_extr_along_path.png create mode 100644 doc/salome/gui/SMESH/pics/straight_after.png create mode 100644 doc/salome/gui/SMESH/pics/straight_before.png diff --git a/doc/salome/gui/SMESH/extrusion_along_a_path.htm b/doc/salome/gui/SMESH/extrusion_along_a_path.htm index 2058125a0..74b811ab6 100755 --- a/doc/salome/gui/SMESH/extrusion_along_a_path.htm +++ b/doc/salome/gui/SMESH/extrusion_along_a_path.htm @@ -1,197 +1,378 @@ - - - - - -Extrusion along a path - - - - - - - - - - - - -

Extrusion along a path

- -

In principle, Extrusion along a path works in the same way as Extrusion, - the main difference is that we define not a vector, but a path of extrusion - which must be a meshed edge or wire. To get an idea of how this algorithm - works, let's see the left image, where we have a 1D circle edge and  a - 2D hexagon to be extruded along this path (in the picture they are angular - because we show the wireframe of the mesh). And now let's see the right - image, showing the result of the operation.  

- -

 

- - --- - - - -
-

-

- -

 

- -

     

- -

 

- -

To use Extrusion along a path:

- -

1. From the Modification - menu choose the Extrusion along - a path item or click button in the toolbar. The - following dialog box will appear:

- -

 

- -

- -

 

- -

2. In the dialog box you should  

- - - -

 

- -

3. There are two optional parameters, which - can be very useful.

- - - -

4. Click the Apply - or OK button.

- -

 

- -

 See - Also a sample TUI Script of an Extrusion - along a Path operation.  

- -

 

- -

 

- - - - + + + + + +Extrusion along a path + + + + + + + + + + + + + +

Extrusion along a path

+ +

In principle, Extrusion along a path + works in the same way as Extrusion, + the main difference is that we define not a vector, but a path of extrusion + which must be a meshed edge. To get an idea of how this algorithm works, + examine several examples, starting from the most simple case of extrusion + along a straight edge. In all examples the same mesh will be extruded + along different paths and with different parameters. This sample 2D mesh + has two quadrangle faces and seven edges. Look at the picture, where white + digits are the node numbers and green are the element numbers:

+ +

.

+ +

 

+ + + + +++ + + + +
+

+

+ +

   

+ +

The left image shows a 1D path mesh, built + on a linear edge, and the initial 2D mesh. The right image shows the result + of extrusion of two edges (#1 and #2) of the initial mesh along the path. + Node #1 of path mesh has been selected as Start + node.

+ +

 

+ + + + ++++ + + + + + + + + + +
+

+

+

+

The left image shows a 1D path mesh, built on curvilinear edge, and + the initial  2D + mesh.

+

The central image shows the result of extrusion of one edge (#2) of + the initial mesh along the path.  Node + #1 of path mesh has been selected as Start + node.

+

The same, but using angles {45, 45, 45, 0, -45, -45, -45}

+ +

 

+ + + + +++ + + + +
+

+

+ +

 

+ +

In this example the path mesh has been built + on a wire (polyline with six edges). The first edge of the wire was used + as Shape (edge), node #1 as Start node. The angles have been defined + as {10, 10, 10}. The middle edge (#4) of the initial mesh has been extruded.

+ +

 

+ + + + +++ + + + +
+

+

+ +

 

+ +

This extrusion bases on the same path mesh + as in the previous example but the third edge of the wire was set as Shape (edge) and node #4 as Start + node. Please note, that the extrusion has been done in direction + from node #4 to node #3, i.e. against the wire direction. In this example + both faces of the initial mesh have been extruded.

+ +

 

+ + + + ++++ + + + + + + + + + +
+

+

+

+

The left image shows a path mesh built on a closed edge (circle).

+

The central image shows the result of extrusion of both faces of the + initial mesh. Note, that no sewing has been done, so, there are six coincident + nodes and two coincident faces in the resulting mesh.

+

The same, but using angles {45, -45, 45, -45, 45, -45, 45, -45}

+ +

 

+ +

 

+ +

To use Extrusion along a path:

+ +

1. From the Modification + menu choose the Extrusion along + a path item or click button in the toolbar. The + following dialog box will appear:

+ +

 

+ +

+ +

 

+ +

2. In the dialog box you should  

+ + + +

Path definition consists of several elements +

+ + + +

 

+ +

3. There are two optional parameters, which + can be very useful.

+ + + +

4. Click the Apply + or OK button. Mesh edges + will be extruded into faces, faces into volumes. The external surface + of the resulting 3d mesh (if faces have been extruded) is covered with + faces, and corners with edges. If the path is closed, the resulting mesh + can contain duplicated nodes and faces, because no sewing is done.

+ +

 

+ +

 See + Also a sample TUI Script of an Extrusion + along a Path operation.  

+ +

 

+ +

 

+ + + + diff --git a/doc/salome/gui/SMESH/image102.gif b/doc/salome/gui/SMESH/image102.gif deleted file mode 100755 index be6a58286d74c16a6aaf2ad1b98b4f165bece048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3465 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 LClUYx99sVXvbIuA diff --git a/doc/salome/gui/SMESH/image104.gif b/doc/salome/gui/SMESH/image104.gif deleted file mode 100755 index 3c33feee7fa2ae0653b46ca595b3e33b2c606c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9275 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�G8;WyDp}9oZxwQSHo*2~ zhPE$!CBKs2o3bfdp{_}m({mKAMYPsb`efS{jNtI+cogj#otW1x=wusxgIR>eq7{ly?7VHa<^oF zM-J>jYb#o=6k2QHnry47f_?j?=-&T1)|c+dDD{a(YGB9YcsJ>f;kz;ZT5X&4kI-vq28gLPdVkxp@@I zu15SyZCR%KQ2R+ajBDNtti*bnWc0mAH(?FN!Qr3Y%$Pxv?ke&Em!hE2lJfP|v5W$M&h*j3;Ay1|#$x_v8qiE+vEB~boO|!eztcph?iLS^Y`^I0F?wjrA13Cz zra&wE7m$D*NoKFfw_~Mq13tUtP|yCArw<;waeLoxJmmvH!ujUaNk#Os} z%G_O1k>7Qh_w9BP$^Gm~+ZDj{@d!+S=oiOl$!2~;ikjc*&#hj=u>3Z)F7B6MFv83w znmtwV*;N|Di%B<7azp*g;Q29iIq{lhcj+>v*v9lS*auemWJL-akGc_U={&*c)_U*K8nSP_VomAVPDb1cetu` zyrjKEm_R25I*9JEb0_HY+oVp+g3d;PFKkj@kS5}|J!S8uB%Xu1SfsKj zN$chiU$~L&OwiVkHos9I(smB?Zcg<~O1%PZXgBdl*Yy&V_OjC!w@ZNf%O;zoFm(^G zM>40bLsUc}Hn>|nsk_LT|8q-s1-%p-xI2NQRdiXh+oVStOf{;D_j#LCp86}cdQ%y? zI6AwyI8sVt8Rvz^*Y7c3)v|ikq&k_ti0(yyR{Hr>8QM$~@%0B@pO#d#HjmWT={kvT zy&BuSIL1IDCP4h1INL#w{!i(AIcaO24AT*5JEU}MiL^bQjQ+B;BYVFzhKw_~Ur}Ag zZCl#KM#e+E(LF}SE2+*CD&ynB=`ucVYXcDW?>j0CV;N=QPoja(W= zd}@qb21Z;WR4(f=K7B+kr#>bdDfb&ACKFHo&t+^byL^F9R32Eq$VR@{N4_LRzBEg| z3@TsVA`cyruUM9^M9Nn^%2(ql)KDwbvMbbyDAa=$8uSzzZ4_WW3QaKz%~=X?r~;xz zp=Cs&by=YesnGtY(18c;qy~4fgS$n*Jz#LJ9=Oj2-0uS(hyf2~frp^r;TG`72zYcE zJcb01KY}Ol6ep<_r`Q#zMHK&n6=(DmXKfVcd=%$n6c@4-7omzvEsDz{iYv>Ct4PJQ pM@9N|Jf#h4rA>CFEfJ+{u+om6(yooto{!RgjM4#VR{#JY{6AH^O7{Q& diff --git a/doc/salome/gui/SMESH/modifying_meshes.htm b/doc/salome/gui/SMESH/modifying_meshes.htm index 8708a02b0..ab474a53d 100755 --- a/doc/salome/gui/SMESH/modifying_meshes.htm +++ b/doc/salome/gui/SMESH/modifying_meshes.htm @@ -1,1579 +1,1833 @@ - - - - - -Modifying Meshes - - - - - - - - - - - -

Modifying Meshes

- -

Adding Nodes and Elements

- -

Add Node

- -

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

- -

 

- -

Add Edge

- -

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

- -

 

- -

Add Triangle

- -

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

- -

 

- -

Add Quadrangle

- -

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

- -

 

- -

Add Tetrahedron

- -

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

- -

 

- -

Add Hexahedron

- -

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

- -

 

- -

Add Polygon

- -

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

- -

 

- -

Add polyhedron

- -

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

- -

 

- -

Removing Nodes and Elements

- -

Removing Nodes

- -

 

- -

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

- -

 

- -

Removing Elements

- -

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

- -

 

- -

Renumbering Nodes and Elements

- -

import SMESH

- -

import SMESH_mechanic

- -

 

- -

mesh   = - SMESH_mechanic.mesh

- -

salome = SMESH_mechanic.salome

- -

 

- -

anEditor = mesh.GetMeshEditor()

- -

anEditor.RenumberNodes()

- -

 

- -

salome.sg.updateObjBrowser(1) -

- -

 

- -

 

- -

Moving Nodes

- -

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

- -

 

- -

Diagonal Inversion

- -

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

- -

 

- -

Uniting two Triangles

- -

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

- -

 

- -

Uniting a Set of Triangles

- -

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

- -

 

- -

Orientation

- -

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

- -

 

- -

Cutting Quadrangles

- -

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

- -

 

- -

Smoothing

- -

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

- -

 

- -

 

- -

Extrusion

- -

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

- -

 

- -

Extrusion along a Path

- -

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

- -

Revolution

- -

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

- -

 

- -

Pattern Mapping

- -

Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use smesh package. -
  - -

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

- - - - + + + + + +Modifying Meshes + + + + + + + + + + + +

Modifying Meshes

+ +

Adding Nodes and Elements

+ +

Add Node

+ +

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

+ +

 

+ +

Add Edge

+ +

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

+ +

 

+ +

Add Triangle

+ +

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

+ +

 

+ +

Add Quadrangle

+ +

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

+ +

 

+ +

Add Tetrahedron

+ +

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

+ +

 

+ +

Add Hexahedron

+ +

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

+ +

 

+ +

Add Polygon

+ +

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

+ +

 

+ +

Add polyhedron

+ +

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

+ +

 

+ +

Removing Nodes and Elements

+ +

Removing Nodes

+ +

 

+ +

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

+ +

 

+ +

Removing Elements

+ +

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

+ +

 

+ +

Renumbering Nodes and Elements

+ +

import SMESH

+ +

import SMESH_mechanic

+ +

 

+ +

mesh   = + SMESH_mechanic.mesh

+ +

salome = SMESH_mechanic.salome

+ +

 

+ +

anEditor = mesh.GetMeshEditor()

+ +

anEditor.RenumberNodes()

+ +

 

+ +

salome.sg.updateObjBrowser(1) +

+ +

 

+ +

 

+ +

Moving Nodes

+ +

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

+ +

 

+ +

Diagonal Inversion

+ +

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

+ +

 

+ +

Uniting two Triangles

+ +

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

+ +

 

+ +

Uniting a Set of Triangles

+ +

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

+ +

 

+ +

Orientation

+ +

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

+ +

 

+ +

Cutting Quadrangles

+ +

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

+ +

 

+ +

Smoothing

+ +

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

+ +

 

+ +

 

+ +

Extrusion

+ +

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

+ +

 

+ +

Extrusion along a Path

+ +

import math

+ +

 

+ +

import salome

+ +

salome.salome_init()

+ +

 

+ +

# Geometry

+ +

import geompy

+ +

 

+ +

# 1. Create points

+ +

points = [[0, 0], + [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]

+ +

 

+ +

iv = 1

+ +

vertices = []

+ +

for point in points:

+ +

vert + = geompy.MakeVertex(point[0], point[1], 0)

+ +

geompy.addToStudy(vert, + "Vertex_" + `iv`)

+ +

vertices.append(vert)

+ +

iv + += 1

+ +

pass

+ +

 

+ +

# 2. Create edges and + wires

+ +

Edge_straight = geompy.MakeEdge(vertices[0], + vertices[4])

+ +

Edge_bezierrr = geompy.MakeBezier(vertices)

+ +

Wire_polyline = geompy.MakePolyline(vertices)

+ +

Edge_Circle   = + geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])

+ +

 

+ +

geompy.addToStudy(Edge_straight, + "Edge_straight")

+ +

geompy.addToStudy(Edge_bezierrr, + "Edge_bezierrr")

+ +

geompy.addToStudy(Wire_polyline, + "Wire_polyline")

+ +

geompy.addToStudy(Edge_Circle +  , "Edge_Circle")

+ +

 

+ +

# 3. Explode wire on + edges, as they will be used for mesh extrusion

+ +

Wire_polyline_edges + = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType["EDGE"])

+ +

for ii in range(len(Wire_polyline_edges)):

+ +

geompy.addToStudyInFather(Wire_polyline, + Wire_polyline_edges[ii], "Edge_" + `ii + 1`)

+ +

pass

+ +

 

+ +

# Mesh

+ +

import smesh

+ +

import SMESH

+ +

 

+ +

gen = smesh.smesh

+ +

 

+ +

smeshgui = salome.ImportComponentGUI("SMESH")

+ +

smeshgui.Init(salome.myStudyId)

+ +

 

+ +

# 1D algorithm and three + 1D hypotheses

+ +

Wire_discretisation + = gen.CreateHypothesis('Regular_1D', 'libStdMeshersEngine.so')

+ +

 

+ +

Nb_Segments_3 = gen.CreateHypothesis('NumberOfSegments', + 'libStdMeshersEngine.so')

+ +

Nb_Segments_7 = gen.CreateHypothesis('NumberOfSegments', + 'libStdMeshersEngine.so')

+ +

Nb_Segments_8 = gen.CreateHypothesis('NumberOfSegments', + 'libStdMeshersEngine.so')

+ +

 

+ +

Nb_Segments_3.SetNumberOfSegments(3)

+ +

Nb_Segments_7.SetNumberOfSegments(7)

+ +

Nb_Segments_8.SetNumberOfSegments(8)

+ +

 

+ +

# Mesh given shape with + given 1d hypothesis

+ +

def Mesh1D(shape1d, + hyp1d, name):

+ +

mesh1d_tool + = smesh.Mesh(shape1d)

+ +

mesh1d + = mesh1d_tool.GetMesh()

+ +

status + = mesh1d.AddHypothesis(shape1d, hyp1d)

+ +

status + = mesh1d.AddHypothesis(shape1d, Wire_discretisation)

+ +

isDone + = mesh1d_tool.Compute()

+ +

if + not isDone: print 'Mesh ', name, ': computation failed'

+ +

return + mesh1d

+ +

 

+ +

# Create mesh with six + nodes, seven edges and two quadrangle faces

+ +

def MakeQuadMesh2(mesh_name):

+ +

quad_1 + = gen.CreateEmptyMesh()

+ +

smeshgui.SetName(salome.ObjectToID(quad_1), + mesh_name)

+ +

editor_1 + = quad_1.GetMeshEditor()

+ +

 

+ +

# six nodes

+ +

n1 + = editor_1.AddNode(0, 20, 10)

+ +

n2 + = editor_1.AddNode(0, 40, 10)

+ +

n3 + = editor_1.AddNode(0, 40, 30)

+ +

n4 + = editor_1.AddNode(0, 20, 30)

+ +

n5 + = editor_1.AddNode(0,  0, + 30)

+ +

n6 + = editor_1.AddNode(0,  0, + 10)

+ +

 

+ +

# seven edges

+ +

editor_1.AddEdge([n1, + n2]) # 1

+ +

editor_1.AddEdge([n2, + n3]) # 2

+ +

editor_1.AddEdge([n3, + n4]) # 3

+ +

editor_1.AddEdge([n4, + n1]) # 4

+ +

editor_1.AddEdge([n4, + n5]) # 5

+ +

editor_1.AddEdge([n5, + n6]) # 6

+ +

editor_1.AddEdge([n6, + n1]) # 7

+ +

 

+ +

# two quadrangle faces

+ +

editor_1.AddFace([n1, + n2, n3, n4]) # 8

+ +

editor_1.AddFace([n1, + n4, n5, n6]) # 9

+ +

return + [quad_1, editor_1, [1,2,3,4,5,6,7], [8,9]]

+ +

 

+ +

# Path meshes

+ +

Edge_straight_mesh + = Mesh1D(Edge_straight, Nb_Segments_7, "Edge_straight")

+ +

Edge_bezierrr_mesh + = Mesh1D(Edge_bezierrr, Nb_Segments_7, "Edge_bezierrr")

+ +

Wire_polyline_mesh + = Mesh1D(Wire_polyline, Nb_Segments_3, "Wire_polyline")

+ +

Edge_Circle_mesh   = + Mesh1D(Edge_Circle  , + Nb_Segments_8, "Edge_Circle")

+ +

 

+ +

# Initial meshes (to + be extruded)

+ +

[quad_1, editor_1, + ee_1, ff_1] = MakeQuadMesh2("quad_1")

+ +

[quad_2, editor_2, + ee_2, ff_2] = MakeQuadMesh2("quad_2")

+ +

[quad_3, editor_3, + ee_3, ff_3] = MakeQuadMesh2("quad_3")

+ +

[quad_4, editor_4, + ee_4, ff_4] = MakeQuadMesh2("quad_4")

+ +

[quad_5, editor_5, + ee_5, ff_5] = MakeQuadMesh2("quad_5")

+ +

[quad_6, editor_6, + ee_6, ff_6] = MakeQuadMesh2("quad_6")

+ +

[quad_7, editor_7, + ee_7, ff_7] = MakeQuadMesh2("quad_7")

+ +

 

+ +

# ExtrusionAlongPath

+ +

# IDsOfElements, PathMesh, + PathShape, NodeStart,

+ +

# HasAngles, Angles, + HasRefPoint, RefPoint

+ +

 

+ +

refPoint = SMESH.PointStruct(0, + 0, 0)

+ +

 

+ +

a10 = 10.0*math.pi/180.0

+ +

a45 = 45.0*math.pi/180.0

+ +

 

+ +

# 1. Extrusion of two + mesh edges along straight path

+ +

error = editor_1.ExtrusionAlongPath([1,2], + Edge_straight_mesh, Edge_straight, 1,

+ +

    0, + [], 0, refPoint)

+ +

 

+ +

# 2. Extrusion of one + mesh edge along curved path

+ +

error = editor_2.ExtrusionAlongPath([2], + Edge_bezierrr_mesh, Edge_bezierrr, 1,

+ +

    0, + [], 0, refPoint)

+ +

 

+ +

# 3. Extrusion of one + mesh edge along curved path with angles usage

+ +

error = editor_3.ExtrusionAlongPath([2], + Edge_bezierrr_mesh, Edge_bezierrr, 1,

+ +

    1, + [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)

+ +

 

+ +

# 4. Extrusion of one + mesh edge along path, which is a part of meshed wire

+ +

error = editor_4.ExtrusionAlongPath([4], + Wire_polyline_mesh, Wire_polyline_edges[0], 1,

+ +

    1, + [a10, a10, a10], 0, refPoint)

+ +

 

+ +

# 5. Extrusion of two + mesh faces along path, which is a part of meshed wire

+ +

error = editor_5.ExtrusionAlongPath(ff_5 + , Wire_polyline_mesh, Wire_polyline_edges[2], 4,

+ +

    0, + [], 0, refPoint)

+ +

 

+ +

# 6. Extrusion of two + mesh faces along closed path

+ +

error = editor_6.ExtrusionAlongPath(ff_6 + , Edge_Circle_mesh, Edge_Circle, 1,

+ +

    0, + [], 0, refPoint)

+ +

 

+ +

# 7. Extrusion of two + mesh faces along closed path with angles usage

+ +

error = editor_7.ExtrusionAlongPath(ff_7, + Edge_Circle_mesh, Edge_Circle, 1,

+ +

    1, + [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint)

+ +

 

+ +

if salome.sg.hasDesktop():

+ +

salome.sg.updateObjBrowser(1)

+ +

pass

+ +

Revolution

+ +

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

+ +

 

+ +

Pattern Mapping

+ +

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

+ + + + diff --git a/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png b/doc/salome/gui/SMESH/pics/a-extusionalongapath2.png deleted file mode 100755 index f120fc3c0fc4544d6ac2a10d8c02c6d58c212974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20909 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 diff --git a/doc/salome/gui/SMESH/pics/circle_angles_after.png b/doc/salome/gui/SMESH/pics/circle_angles_after.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c606bde10ae8633d1fcd204392a98d95615c54 GIT binary patch literal 7716 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/circle_simple_after.png b/doc/salome/gui/SMESH/pics/circle_simple_after.png new file mode 100644 index 0000000000000000000000000000000000000000..99f65b5585b930fa9fd05442115d43a78792f930 GIT binary patch literal 5858 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/circle_simple_before.png b/doc/salome/gui/SMESH/pics/circle_simple_before.png new file mode 100644 index 0000000000000000000000000000000000000000..95b90373f25b6ab9112622c413d05ccd0450926e GIT binary patch literal 4018 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 VdBxtr2Mhiq2{E)VsJr7H_dj{ayOsa| literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/curvi_angles_after.png b/doc/salome/gui/SMESH/pics/curvi_angles_after.png new file mode 100644 index 0000000000000000000000000000000000000000..9d06262b05e46d672dfaecbec0fb90b90c9ba5f7 GIT binary patch literal 4276 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 LXYzfAfQ$bJf>_1! literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/curvi_simple_after.png b/doc/salome/gui/SMESH/pics/curvi_simple_after.png new file mode 100644 index 0000000000000000000000000000000000000000..ae1d98fdffbef606b48e14f94e4c11a9a5ddec94 GIT binary patch literal 4598 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 F{}&ec%s~JE literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/edge_wire_3d_after.png b/doc/salome/gui/SMESH/pics/edge_wire_3d_after.png new file mode 100644 index 0000000000000000000000000000000000000000..3fab59803fcb51d361849fd8c544dd93b89ded77 GIT binary patch literal 3477 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/edge_wire_after.png b/doc/salome/gui/SMESH/pics/edge_wire_after.png new file mode 100644 index 0000000000000000000000000000000000000000..408480ecdcf1cf2bb479a9468e6f9a3b54fc5415 GIT binary patch literal 3185 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/edge_wire_before.png b/doc/salome/gui/SMESH/pics/edge_wire_before.png new file mode 100644 index 0000000000000000000000000000000000000000..186528ec7fd1a61cf89fa67ba60805aa8420e184 GIT binary patch literal 5036 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/pics/extrusion1.png b/doc/salome/gui/SMESH/pics/extrusion1.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b1559319e627584213ea6185507d662931fbee GIT binary patch literal 22957 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

vl(~O)Q^rQd0|#1^=It>Q*RO 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 aap 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 literal 0 HcmV?d00001 -- 2.39.2