Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / Tools / ZCracksPlug / casTests / genereCube.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2016-2022  EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 ###
22 ### This file is generated automatically by SALOME v7.7.0 with dump python functionality
23 ###
24
25 import salome
26
27 salome.salome_init()
28
29 import salome_notebook
30 notebook = salome_notebook.NoteBook()
31
32 ###
33 ### GEOM component
34 ###
35
36
37 #L = 1.
38 #N = 20 #Nombre d elements sur un cote
39
40 def cube3D(L, N, outFile):
41
42   N=int(N)
43   from salome.geom import geomBuilder
44
45   geompy = geomBuilder.New()
46
47   eps=L*1.e-6
48
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.)
55
56   epais=1./(2.*N)
57   larg=L*1.1
58
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)
63
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)
68
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)
73
74   box = geompy.MakeBoxDXDYDZ(larg, larg, larg)
75
76   boxXPLUS = geompy.TranslateDXDYDZ(box, 0.,       -larg/2., -larg/2., theCopy=True)
77   boxXMOIN = geompy.TranslateDXDYDZ(box, -larg,    -larg/2., -larg/2., theCopy=True)
78
79   boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0.,       -larg/2., theCopy=True)
80   boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg,    -larg/2., theCopy=True)
81
82   boxZPLUS = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., 0.,       theCopy=True)
83   boxZMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg/2., -larg,    theCopy=True)
84
85
86   from salome.smesh import smeshBuilder
87   import SMESH
88
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()
102
103   geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN, boxZPLUS, boxZMOIN]
104
105   noms = ['VOLXP', 'VOLXM', 'VOLYP', 'VOLYM', 'VOLZP', 'VOLZM']
106
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 )
112
113   nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_2DFROM3D, '', '', 0, [ VOLUME_temp ])
114
115   geometries = [boxX, boxXM, boxXP, 
116                 boxY, boxYM, boxYP, 
117                 boxZ, boxZM, boxZP]
118
119   noms = ['FACEX', 'FACEXM', 'FACEXP', 
120           'FACEY', 'FACEYM', 'FACEYP', 
121           'FACEZ', 'FACEZM', 'FACEZP']
122
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 )
128  
129   Maillage_1.ExportMED(outFile)
130
131   #if salome.sg.hasDesktop():
132     #salome.sg.updateObjBrowser()
133
134
135
136 def cube2D(L, N, outFile):
137
138   N=int(N)
139   from salome.geom import geomBuilder
140
141   geompy = geomBuilder.New()
142
143   eps=L*1.e-6
144
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)
150
151   epais=1./(2.*N)
152   larg=L*1.1
153
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)
158
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)
163
164   box = geompy.MakeBoxDXDYDZ(larg, larg, epais)
165
166   boxXPLUS = geompy.TranslateDXDYDZ(box, 0.,       -larg/2., -epais/2., theCopy=True)
167   boxXMOIN = geompy.TranslateDXDYDZ(box, -larg,    -larg/2., -epais/2., theCopy=True)
168
169   boxYPLUS = geompy.TranslateDXDYDZ(box, -larg/2., 0.,       -epais/2., theCopy=True)
170   boxYMOIN = geompy.TranslateDXDYDZ(box, -larg/2., -larg,    -epais/2., theCopy=True)
171
172
173   from salome.smesh import smeshBuilder
174   import SMESH
175
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)
183
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()
188
189   geometries = [boxXPLUS, boxXMOIN, boxYPLUS, boxYMOIN]
190
191   noms = ['FACEXP', 'FACEXM', 'FACEYP', 'FACEYM']
192
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 )
198
199   nbAdded, Maillage_1, Group = Maillage_1.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ FACE_temp ])
200
201   geometries = [boxX, boxXM, boxXP, boxY, boxYM, boxYP]
202
203   noms = ['EDGEX', 'EDGEXM', 'EDGEXP', 'EDGEY', 'EDGEYM', 'EDGEYP']
204
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 )
210  
211   Maillage_1.ExportMED(outFile)
212
213   #if salome.sg.hasDesktop():
214     #salome.sg.updateObjBrowser()