3 # There is a series of Extrusion Along Line methods added at different times;
4 # a fully functional method is ExtrusionSweepObjects()
8 from salome.geom import geomBuilder
9 geompy = geomBuilder.New()
12 from salome.smesh import smeshBuilder
13 smesh = smeshBuilder.New()
15 # create an empty mesh
19 mesh.AddNode( 0.,0.,0. )
21 # extrude a node into a line of 10 segments along the X axis
22 ids = mesh.GetNodesId()
23 stepVector = [1.,0.,0.]
25 mesh.ExtrusionSweep( ids, stepVector, nbSteps, IsNodes=True )
28 lastNode = mesh.GetNodesId()[-1]
29 lastNodeGroup = mesh.MakeGroupByIds( "node %s"% lastNode, SMESH.NODE, [lastNode])
30 lineGroup = mesh.MakeGroupByIds( "line", SMESH.EDGE, mesh.GetElementsId() )
32 # rotate the segments around the first node to get a mesh of a disk quarter
33 axisZ = [0.,0.,0., 0.,0.,1.]
34 groups = mesh.RotationSweepObject( lineGroup, axisZ, math.pi/2., 10, 1e-3, MakeGroups=True, TotalAngle=True )
36 # extrude all faces into volumes
38 stepVector = [0.,0.,-1.]
40 groups = mesh.ExtrusionSweepObject2D( obj, stepVector, nbSteps, MakeGroups=True )
42 # remove all segments created by the last command
44 if g.GetType() == SMESH.EDGE:
45 mesh.RemoveGroupWithContents( g )
47 # extrude all segments into faces along Z
49 stepVector = [0.,0.,1.]
50 mesh.ExtrusionSweepObject1D( obj, stepVector, nbSteps )
53 obj = mesh.GetGroupByName( "line_extruded", SMESH.FACE )[0]
54 stepVector = [0,-5.,0.]
56 mesh.ExtrusionSweepObject( obj, stepVector, nbSteps )
58 # extrude all nodes and triangle faces of the disk quarter, applying a scale factor
59 diskGroup = mesh.GetGroupByName( "line_rotated", SMESH.FACE )[0]
60 crit = [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_TRIANGLE ),
61 smesh.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=', diskGroup )]
62 trianglesFilter = smesh.GetFilterFromCriteria( crit )
66 faces = [ trianglesFilter ]
69 mesh.ExtrusionSweepObjects( nodes, edges, faces, stepVector, nbSteps, scaleFactors=[0.5], linearVariation=True )
71 # extrude a cylindrical group of faces by normal
73 for g in mesh.GetGroups( SMESH.FACE ):
74 if g.GetName().startswith("node "):
81 mesh.ExtrusionByNormal( elements, stepSize, nbSteps )
83 salome.sg.updateObjBrowser()