1 # -*- coding: utf-8 -*-
4 ### This file is generated automatically by SALOME v7.7.0 with dump python functionality
10 theStudy = salome.myStudy
12 import salome_notebook
13 notebook = salome_notebook.NoteBook(theStudy)
21 #N = 20 #Nombre d elements sur un cote
23 def cube3D(L, N, outFile):
26 from salome.geom import geomBuilder
28 geompy = geomBuilder.New(theStudy)
32 O = geompy.MakeVertex(0, 0, 0)
33 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
34 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
35 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
36 cube = geompy.MakeBoxDXDYDZ(L, L, L)
37 geompy.TranslateDXDYDZ(cube, -L/2., -L/2., -L/2.)
42 boxX = geompy.MakeBoxDXDYDZ(epais, larg, larg)
43 geompy.TranslateDXDYDZ(boxX, -epais/2., -larg/2., -larg/2.)
44 boxXM = geompy.TranslateDXDYDZ(boxX, -L/2., 0., 0., theCopy=True)
45 boxXP = geompy.TranslateDXDYDZ(boxX, L/2., 0., 0., theCopy=True)
47 boxY = geompy.MakeBoxDXDYDZ(larg, epais, larg)
48 geompy.TranslateDXDYDZ(boxY, -larg/2., -epais/2., -larg/2.)
49 boxYM = geompy.TranslateDXDYDZ(boxY, 0., -L/2., 0., theCopy=True)
50 boxYP = geompy.TranslateDXDYDZ(boxY, 0., L/2., 0., theCopy=True)
52 boxZ = geompy.MakeBoxDXDYDZ(larg, larg, epais)
53 geompy.TranslateDXDYDZ(boxZ, -larg/2., -larg/2., -epais/2.)
54 boxZM = geompy.TranslateDXDYDZ(boxZ, 0., 0., -L/2., theCopy=True)
55 boxZP = geompy.TranslateDXDYDZ(boxZ, 0., 0., L/2., theCopy=True)
57 box = geompy.MakeBoxDXDYDZ(larg, larg, larg)
59 boxXPLUS = geompy.TranslateDXDYDZ(box, 0., -larg/2., -larg/2., theCopy=True)
60 boxXMOIN = geompy.TranslateDXDYDZ(box, -larg, -larg/2., -larg/2., theCopy=True)
62 boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0., -larg/2., theCopy=True)
63 boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg, -larg/2., theCopy=True)
65 boxZPLUS = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., 0., theCopy=True)
66 boxZMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., -larg, theCopy=True)
69 from salome.smesh import smeshBuilder
72 smesh = smeshBuilder.New(theStudy)
73 Nb_Segments_1 = smesh.CreateHypothesis('NumberOfSegments')
74 Nb_Segments_1.SetNumberOfSegments( N )
75 Length_From_Edges_1 = smesh.CreateHypothesis('LengthFromEdges')
76 Regular_1D = smesh.CreateHypothesis('Regular_1D')
77 NETGEN_2D_ONLY = smesh.CreateHypothesis('NETGEN_2D_ONLY', 'NETGENEngine')
78 Hexa_3D = smesh.CreateHypothesis('Hexa_3D')
79 Maillage_1 = smesh.Mesh(cube)
80 status = Maillage_1.AddHypothesis(Nb_Segments_1)
81 status = Maillage_1.AddHypothesis(Regular_1D)
82 Quadrangle_2D = Maillage_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
83 status = Maillage_1.AddHypothesis(Hexa_3D)
84 isDone = Maillage_1.Compute()
86 geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN, boxZPLUS, boxZMOIN]
88 noms = ['VOLXP', 'VOLXM', 'VOLYP', 'VOLYM', 'VOLZP', 'VOLZM']
90 for cont, geo in enumerate(geometries):
91 aCriteria = smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
92 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
93 aFilter_1.SetMesh(Maillage_1.GetMesh())
94 VOLUME_temp = Maillage_1.GroupOnFilter( SMESH.VOLUME, noms[cont], aFilter_1 )
96 nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_2DFROM3D, '', '', 0, [ VOLUME_temp ])
98 geometries = [boxX, boxXM, boxXP,
102 noms = ['FACEX', 'FACEXM', 'FACEXP',
103 'FACEY', 'FACEYM', 'FACEYP',
104 'FACEZ', 'FACEZM', 'FACEZP']
106 for cont, geo in enumerate(geometries):
107 aCriteria = smesh.GetCriterion(SMESH.FACE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
108 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
109 aFilter_1.SetMesh(Maillage_1.GetMesh())
110 FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
112 Maillage_1.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
114 #if salome.sg.hasDesktop():
115 #salome.sg.updateObjBrowser(True)
119 def cube2D(L, N, outFile):
122 from salome.geom import geomBuilder
124 geompy = geomBuilder.New(theStudy)
128 O = geompy.MakeVertex(0, 0, 0)
129 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
130 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
131 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
132 face = geompy.MakeFaceHW(L, L, 1)
137 boxX = geompy.MakeBoxDXDYDZ(epais, larg, epais)
138 geompy.TranslateDXDYDZ(boxX, -epais/2., -larg/2., -epais/2.)
139 boxXM = geompy.TranslateDXDYDZ(boxX, -L/2., 0., 0., theCopy=True)
140 boxXP = geompy.TranslateDXDYDZ(boxX, L/2., 0., 0., theCopy=True)
142 boxY = geompy.MakeBoxDXDYDZ(larg, epais, epais)
143 geompy.TranslateDXDYDZ(boxY, -larg/2., -epais/2., -epais/2.)
144 boxYM = geompy.TranslateDXDYDZ(boxY, 0., -L/2., 0., theCopy=True)
145 boxYP = geompy.TranslateDXDYDZ(boxY, 0., L/2., 0., theCopy=True)
147 box = geompy.MakeBoxDXDYDZ(larg, larg, epais)
149 boxXPLUS = geompy.TranslateDXDYDZ(box, 0., -larg/2., -epais/2., theCopy=True)
150 boxXMOIN = geompy.TranslateDXDYDZ(box, -larg, -larg/2., -epais/2., theCopy=True)
152 boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0., -epais/2., theCopy=True)
153 boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg, -epais/2., theCopy=True)
156 from salome.smesh import smeshBuilder
159 smesh = smeshBuilder.New(theStudy)
160 Nb_Segments_1 = smesh.CreateHypothesis('NumberOfSegments')
161 Nb_Segments_1.SetNumberOfSegments( N )
162 Length_From_Edges_1 = smesh.CreateHypothesis('LengthFromEdges')
163 Regular_1D = smesh.CreateHypothesis('Regular_1D')
164 NETGEN_2D_ONLY = smesh.CreateHypothesis('NETGEN_2D_ONLY', 'NETGENEngine')
165 Maillage_1 = smesh.Mesh(face)
167 status = Maillage_1.AddHypothesis(Nb_Segments_1)
168 status = Maillage_1.AddHypothesis(Regular_1D)
169 Quadrangle_2D = Maillage_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
170 isDone = Maillage_1.Compute()
172 geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN]
174 noms = ['FACEXP', 'FACEXM', 'FACEYP', 'FACEYM']
176 for cont, geo in enumerate(geometries):
177 aCriteria = smesh.GetCriterion(SMESH.FACE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
178 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
179 aFilter_1.SetMesh(Maillage_1.GetMesh())
180 FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
182 nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ FACE_temp ])
184 geometries = [boxX, boxXM, boxXP, boxY, boxYM, boxYP]
186 noms = ['EDGEX', 'EDGEXM', 'EDGEXP', 'EDGEY', 'EDGEYM', 'EDGEYP']
188 for cont, geo in enumerate(geometries):
189 aCriteria = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
190 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
191 aFilter_1.SetMesh(Maillage_1.GetMesh())
192 EDGE_temp = Maillage_1.GroupOnFilter( SMESH.EDGE, noms[cont], aFilter_1 )
194 Maillage_1.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
196 #if salome.sg.hasDesktop():
197 #salome.sg.updateObjBrowser(True)