]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Merge branch 'master' into V9_dev
authorrnv <rnv@opencascade.com>
Thu, 20 Jul 2017 09:00:49 +0000 (12:00 +0300)
committerrnv <rnv@opencascade.com>
Thu, 20 Jul 2017 09:00:49 +0000 (12:00 +0300)
1  2 
doc/salome/examples/modifying_meshes_ex22.py
src/SMESHGUI/SMESHGUI_GroupOnShapeDlg.cxx
src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx
src/SMESH_I/SMESH_Group_i.cxx
src/SMESH_SWIG/smeshBuilder.py
src/StdMeshers/StdMeshers_Cartesian_3D.cxx
src/StdMeshers/StdMeshers_Import_1D2D.cxx
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
src/StdMeshers/StdMeshers_ViscousLayers.cxx
src/StdMeshers/StdMeshers_ViscousLayers2D.cxx

index 32466ccf0d6c96a56b050062e55df2569a10548f,8444ee567faec359ce4814d606da9079ae6d15cf..d9e1f97d9431a6ca63509bb465fe4d45310abb0a
@@@ -1,34 -1,90 +1,90 @@@
  # Extrusion
  
  
- import salome
+ import salome, math
  salome.salome_init()
- import GEOM
  from salome.geom import geomBuilder
 -geompy = geomBuilder.New(salome.myStudy)
 +geompy = geomBuilder.New()
  
- import SMESH, SALOMEDS
+ import SMESH
  from salome.smesh import smeshBuilder
 -smesh =  smeshBuilder.New(salome.myStudy)
 +smesh =  smeshBuilder.New()
  
- import SMESH_mechanic
+ # create an empty mesh
+ mesh = smesh.Mesh() 
  
- #smesh = SMESH_mechanic.smesh
- mesh = SMESH_mechanic.mesh 
+ # add a node
+ mesh.AddNode( 0.,0.,0. )
  
- # select the top face
- faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType["FACE"])
- face = faces[7]
- geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face circular top")
+ # extrude a node into a line of 10 segments along the X axis
+ ids = mesh.GetNodesId()
+ stepVector = [1.,0.,0.]
+ nbSteps = 10
+ mesh.ExtrusionSweep( ids, stepVector, nbSteps, IsNodes=True )
  
- # create a vector for extrusion
- point = SMESH.PointStruct(0., 0., 5.)
- vector = SMESH.DirStruct(point)
+ # create some groups
+ lastNode      = mesh.GetNodesId()[-1]
+ lastNodeGroup = mesh.MakeGroupByIds( "node %s"% lastNode, SMESH.NODE, [lastNode])
+ lineGroup     = mesh.MakeGroupByIds( "line", SMESH.EDGE, mesh.GetElementsId() )
  
- # create a group to be extruded
- GroupTri = mesh.GroupOnGeom(face, "Group of faces (extrusion)", SMESH.FACE)
+ # rotate the segments around the first node to get a mesh of a disk quarter
+ axisZ  = [0.,0.,0., 0.,0.,1.]
+ groups = mesh.RotationSweepObject( lineGroup, axisZ, math.pi/2., 10, 1e-3, MakeGroups=True, TotalAngle=True )
  
- # perform extrusion of the group
- mesh.ExtrusionSweepObject(GroupTri, vector, 5)
+ # extrude all faces into volumes
+ obj        = mesh
+ stepVector = [0.,0.,-1.]
+ nbSteps    = 5
+ groups = mesh.ExtrusionSweepObject2D( obj, stepVector, nbSteps, MakeGroups=True )
+ # remove all segments created by the last command
+ for g in groups:
+     if g.GetType() == SMESH.EDGE:
+         mesh.RemoveGroupWithContents( g )
+ # extrude all segments into faces along Z
+ obj = mesh
+ stepVector = [0.,0.,1.]
+ mesh.ExtrusionSweepObject1D( obj, stepVector, nbSteps )
+ # extrude a group
+ lineExtruded = None
+ for g in mesh.GetGroups( SMESH.FACE ):
+     if g.GetName() == "line_extruded":
+         lineExtruded = g
+         break
+ obj        = lineExtruded
+ stepVector = [0,-5.,0.]
+ nbSteps    = 1
+ mesh.ExtrusionSweepObject( obj, stepVector, nbSteps )
+ # extrude all nodes and triangle faces of the disk quarter, applying a scale factor
+ diskGroup = None
+ for g in mesh.GetGroups( SMESH.FACE ):
+     if g.GetName() == "line_rotated":
+         diskGroup = g
+         break
+ crit = [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_TRIANGLE ),
+          smesh.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=', diskGroup )]
+ trianglesFilter = smesh.GetFilterFromCriteria( crit )
+ nodes      = [ diskGroup ]
+ edges      = []
+ faces      = [ trianglesFilter ]
+ stepVector = [0,0,1]
+ nbSteps    = 10
+ mesh.ExtrusionSweepObjects( nodes, edges, faces, stepVector, nbSteps, scaleFactors=[0.5], linearVariation=True )
+ # extrude a cylindrical group of faces by normal
+ cylGroup = None
+ for g in mesh.GetGroups( SMESH.FACE ):
+     if g.GetName().startswith("node "):
+         cylGroup = g
+         break
+ elements = cylGroup
+ stepSize = 5.
+ nbSteps  = 2
+ mesh.ExtrusionByNormal( elements, stepSize, nbSteps )
  
 -salome.sg.updateObjBrowser(True)
 +salome.sg.updateObjBrowser()
Simple merge
Simple merge