]> SALOME platform Git repositories - modules/shaper.git/blob - src/ConnectorPlugin/ExtrusionToMesh.py
Salome HOME
ConnectorPlugin to export shapes to GEOM
[modules/shaper.git] / src / ConnectorPlugin / ExtrusionToMesh.py
1 #=========================================================================
2 # Creation of the circular Sketch, then Extrusion (cylinder), 
3 # then export to the old GEOM and usage of SMESH for meshing.
4 # Based on SALOME 7.4.0 and NewGEOM version: master 18Dec2014.
5 #=========================================================================
6 from ModelAPI import *
7 from GeomDataAPI import *
8 from GeomAlgoAPI import *
9 from GeomAPI import *
10
11 aSession = ModelAPI_Session.get()
12 aDocument = aSession.moduleDocument()
13
14 # Create a part for extrusion
15 aSession.startOperation()
16 aPartFeature = aDocument.addFeature("Part")
17 aSession.finishOperation()
18
19 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
20 aPart = aPartResult.partDoc()
21
22 #=========================================================================
23 # Create a sketch circle to extrude
24 #=========================================================================
25 aSession.startOperation()
26 aSketchFeature = modelAPI_CompositeFeature(aPart.addFeature("Sketch"))
27 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
28 origin.setValue(0, 0, 0)
29 dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
30 dirx.setValue(1, 0, 0)
31 diry = geomDataAPI_Dir(aSketchFeature.attribute("DirY"))
32 diry.setValue(0, 1, 0)
33 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
34 norm.setValue(0, 0, 1)
35 # Create circle
36 aSketchCircle = aSketchFeature.addFeature("SketchCircle")
37 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
38 aCircleRadius = aSketchCircle.real("CircleRadius")
39 anCircleCentr.setValue(50., 50)
40 aCircleRadius.setValue(20.)
41 aSession.finishOperation()
42
43 #=========================================================================
44 # Make extrusion on circle
45 #=========================================================================
46 # Build shape from sketcher results
47 aSketchResult = aSketchFeature.firstResult()
48 aSketchEdges = modelAPI_ResultConstruction(aSketchResult).shape()
49 origin = geomDataAPI_Point(aSketchFeature.attribute("Origin")).pnt()
50 dirX = geomDataAPI_Dir(aSketchFeature.attribute("DirX")).dir()
51 dirY = geomDataAPI_Dir(aSketchFeature.attribute("DirY")).dir()
52 norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm")).dir()
53 aSketchFaces = ShapeList()
54 GeomAlgoAPI_SketchBuilder.createFaces(
55     origin, dirX, dirY, norm, aSketchEdges, aSketchFaces)
56
57 # Create extrusion
58 anExtrusionFt = aPart.addFeature("Extrusion")
59 anExtrusionFt.selection("extrusion_face").setValue(
60     aSketchResult, aSketchFaces[0])
61 anExtrusionFt.real("extrusion_size").setValue(50)
62 anExtrusionFt.boolean("extrusion_reverse").setValue(False)
63 anExtrusionFt.execute()
64 aSession.finishOperation()
65
66 # Check extrusion results
67 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
68
69 #==================================================
70 # Transfer shape to Geom module of Salome
71 #==================================================
72 aShape = anExtrusionResult.shape()
73 aDump = aShape.getShapeStream()
74
75 # Load shape to SALOME Geom
76 import salome
77 from salome.geom import geomBuilder
78 geompy = geomBuilder.New(salome.myStudy)
79 aBrep = geompy.RestoreShape(aDump)
80 geompy.addToStudy(aBrep, "NewGeomShape")
81
82 # Meshing of the Shape
83 from salome.smesh import smeshBuilder
84 meshpy = smeshBuilder.New(salome.myStudy)
85 aMesh = meshpy.Mesh(aBrep)
86 Regular_1D = aMesh.Segment()
87 Max_Size_1 = Regular_1D.MaxSize(5)
88 MEFISTO_2D = aMesh.Triangle(algo=smeshBuilder.MEFISTO)
89 isDone = aMesh.Compute()
90 assert (isDone)
91 meshpy.SetName(aMesh.GetMesh(), 'NewGeomMesh')
92