1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2016-2021 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 ### This file is generated automatically by SALOME v7.7.0 with dump python functionality
29 import salome_notebook
30 notebook = salome_notebook.NoteBook()
38 #N = 20 #Nombre d elements sur un cote
40 def cube3D(L, N, outFile):
43 from salome.geom import geomBuilder
45 geompy = geomBuilder.New()
49 O = geompy.MakeVertex(0, 0, 0)
50 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
51 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
52 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
53 cube = geompy.MakeBoxDXDYDZ(L, L, L)
54 geompy.TranslateDXDYDZ(cube, -L/2., -L/2., -L/2.)
59 boxX = geompy.MakeBoxDXDYDZ(epais, larg, larg)
60 geompy.TranslateDXDYDZ(boxX, -epais/2., -larg/2., -larg/2.)
61 boxXM = geompy.TranslateDXDYDZ(boxX, -L/2., 0., 0., theCopy=True)
62 boxXP = geompy.TranslateDXDYDZ(boxX, L/2., 0., 0., theCopy=True)
64 boxY = geompy.MakeBoxDXDYDZ(larg, epais, larg)
65 geompy.TranslateDXDYDZ(boxY, -larg/2., -epais/2., -larg/2.)
66 boxYM = geompy.TranslateDXDYDZ(boxY, 0., -L/2., 0., theCopy=True)
67 boxYP = geompy.TranslateDXDYDZ(boxY, 0., L/2., 0., theCopy=True)
69 boxZ = geompy.MakeBoxDXDYDZ(larg, larg, epais)
70 geompy.TranslateDXDYDZ(boxZ, -larg/2., -larg/2., -epais/2.)
71 boxZM = geompy.TranslateDXDYDZ(boxZ, 0., 0., -L/2., theCopy=True)
72 boxZP = geompy.TranslateDXDYDZ(boxZ, 0., 0., L/2., theCopy=True)
74 box = geompy.MakeBoxDXDYDZ(larg, larg, larg)
76 boxXPLUS = geompy.TranslateDXDYDZ(box, 0., -larg/2., -larg/2., theCopy=True)
77 boxXMOIN = geompy.TranslateDXDYDZ(box, -larg, -larg/2., -larg/2., theCopy=True)
79 boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0., -larg/2., theCopy=True)
80 boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg, -larg/2., theCopy=True)
82 boxZPLUS = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., 0., theCopy=True)
83 boxZMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., -larg, theCopy=True)
86 from salome.smesh import smeshBuilder
89 smesh = smeshBuilder.New()
90 Nb_Segments_1 = smesh.CreateHypothesis('NumberOfSegments')
91 Nb_Segments_1.SetNumberOfSegments( N )
92 Length_From_Edges_1 = smesh.CreateHypothesis('LengthFromEdges')
93 Regular_1D = smesh.CreateHypothesis('Regular_1D')
94 NETGEN_2D_ONLY = smesh.CreateHypothesis('NETGEN_2D_ONLY', 'NETGENEngine')
95 Hexa_3D = smesh.CreateHypothesis('Hexa_3D')
96 Maillage_1 = smesh.Mesh(cube)
97 status = Maillage_1.AddHypothesis(Nb_Segments_1)
98 status = Maillage_1.AddHypothesis(Regular_1D)
99 Quadrangle_2D = Maillage_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
100 status = Maillage_1.AddHypothesis(Hexa_3D)
101 isDone = Maillage_1.Compute()
103 geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN, boxZPLUS, boxZMOIN]
105 noms = ['VOLXP', 'VOLXM', 'VOLYP', 'VOLYM', 'VOLZP', 'VOLZM']
107 for cont, geo in enumerate(geometries):
108 aCriteria = smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
109 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
110 aFilter_1.SetMesh(Maillage_1.GetMesh())
111 VOLUME_temp = Maillage_1.GroupOnFilter( SMESH.VOLUME, noms[cont], aFilter_1 )
113 nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_2DFROM3D, '', '', 0, [ VOLUME_temp ])
115 geometries = [boxX, boxXM, boxXP,
119 noms = ['FACEX', 'FACEXM', 'FACEXP',
120 'FACEY', 'FACEYM', 'FACEYP',
121 'FACEZ', 'FACEZM', 'FACEZP']
123 for cont, geo in enumerate(geometries):
124 aCriteria = smesh.GetCriterion(SMESH.FACE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
125 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
126 aFilter_1.SetMesh(Maillage_1.GetMesh())
127 FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
129 Maillage_1.ExportMED(outFile)
131 #if salome.sg.hasDesktop():
132 #salome.sg.updateObjBrowser()
136 def cube2D(L, N, outFile):
139 from salome.geom import geomBuilder
141 geompy = geomBuilder.New()
145 O = geompy.MakeVertex(0, 0, 0)
146 OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
147 OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
148 OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
149 face = geompy.MakeFaceHW(L, L, 1)
154 boxX = geompy.MakeBoxDXDYDZ(epais, larg, epais)
155 geompy.TranslateDXDYDZ(boxX, -epais/2., -larg/2., -epais/2.)
156 boxXM = geompy.TranslateDXDYDZ(boxX, -L/2., 0., 0., theCopy=True)
157 boxXP = geompy.TranslateDXDYDZ(boxX, L/2., 0., 0., theCopy=True)
159 boxY = geompy.MakeBoxDXDYDZ(larg, epais, epais)
160 geompy.TranslateDXDYDZ(boxY, -larg/2., -epais/2., -epais/2.)
161 boxYM = geompy.TranslateDXDYDZ(boxY, 0., -L/2., 0., theCopy=True)
162 boxYP = geompy.TranslateDXDYDZ(boxY, 0., L/2., 0., theCopy=True)
164 box = geompy.MakeBoxDXDYDZ(larg, larg, epais)
166 boxXPLUS = geompy.TranslateDXDYDZ(box, 0., -larg/2., -epais/2., theCopy=True)
167 boxXMOIN = geompy.TranslateDXDYDZ(box, -larg, -larg/2., -epais/2., theCopy=True)
169 boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0., -epais/2., theCopy=True)
170 boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg, -epais/2., theCopy=True)
173 from salome.smesh import smeshBuilder
176 smesh = smeshBuilder.New()
177 Nb_Segments_1 = smesh.CreateHypothesis('NumberOfSegments')
178 Nb_Segments_1.SetNumberOfSegments( N )
179 Length_From_Edges_1 = smesh.CreateHypothesis('LengthFromEdges')
180 Regular_1D = smesh.CreateHypothesis('Regular_1D')
181 NETGEN_2D_ONLY = smesh.CreateHypothesis('NETGEN_2D_ONLY', 'NETGENEngine')
182 Maillage_1 = smesh.Mesh(face)
184 status = Maillage_1.AddHypothesis(Nb_Segments_1)
185 status = Maillage_1.AddHypothesis(Regular_1D)
186 Quadrangle_2D = Maillage_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
187 isDone = Maillage_1.Compute()
189 geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN]
191 noms = ['FACEXP', 'FACEXM', 'FACEYP', 'FACEYM']
193 for cont, geo in enumerate(geometries):
194 aCriteria = smesh.GetCriterion(SMESH.FACE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
195 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
196 aFilter_1.SetMesh(Maillage_1.GetMesh())
197 FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
199 nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ FACE_temp ])
201 geometries = [boxX, boxXM, boxXP, boxY, boxYM, boxYP]
203 noms = ['EDGEX', 'EDGEXM', 'EDGEXP', 'EDGEY', 'EDGEYM', 'EDGEYP']
205 for cont, geo in enumerate(geometries):
206 aCriteria = smesh.GetCriterion(SMESH.EDGE,SMESH.FT_BelongToGeom,SMESH.FT_Undefined, geo)
207 aFilter_1 = smesh.GetFilterFromCriteria([aCriteria])
208 aFilter_1.SetMesh(Maillage_1.GetMesh())
209 EDGE_temp = Maillage_1.GroupOnFilter( SMESH.EDGE, noms[cont], aFilter_1 )
211 Maillage_1.ExportMED(outFile)
213 #if salome.sg.hasDesktop():
214 #salome.sg.updateObjBrowser()