Salome HOME
6a1a2c84868eda232fc3df8a0617936e24475019
[modules/geom.git] / src / GEOM_SWIG / GEOM_tube_geom_gg2.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License, or (at your option) any later version.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 #==============================================================================
25 #  Info.
26 #  Bug (from script, bug)   : tube_geom_gg2_corrected.py, PAL5243
27 #  Modified                 : 25/11/2004
28 #  Author                   : Kovaltchuk Alexey
29 #  Project                  : PAL/SALOME
30 #==============================================================================
31 # Geometrie du cas test
32 #
33 import salome
34 salome.salome_init()
35 import GEOM
36 from salome.geom import geomBuilder
37 geompy = geomBuilder.New()
38 #
39 # base de l'assemblage
40 #
41 L_base = 300.
42 l_base = 150.
43 h_base = 75.
44 e_base = 6.
45
46 base_bot = geompy.MakeBox(0.,0.,0.,L_base,l_base,e_base)
47 base_top = geompy.MakeTranslation(base_bot,0.,0.,h_base-e_base)
48 base_front = geompy.MakeBox(0,0,0,L_base,e_base,h_base)
49 base_rear = geompy.MakeTranslation(base_front,0.,l_base,0.)
50
51 tmp = geompy.MakeBoolean(base_top,base_rear,3)
52 tmp = geompy.MakeBoolean(tmp,base_bot,3)
53 base = geompy.MakeBoolean(tmp,base_front,3)
54
55 baseId = geompy.addToStudy(base,"base")
56 #
57 # traverse
58 #
59 L_trav = 60.
60 h_trav = 300.
61 e_trav = 7.
62 marge = 15.
63
64 flange_left = geompy.MakeBox(0.,0.,0,e_trav,L_trav,h_trav)
65 flange_right = geompy.MakeTranslation(flange_left,L_trav-e_trav,0.,0.)
66 flange_front = geompy.MakeBox(0.,0.,0,L_trav,e_trav,h_trav)
67 flange_rear = geompy.MakeTranslation(flange_front,0.,L_trav-e_trav,0.)
68
69 tmp = geompy.MakeBoolean(flange_left,flange_rear,3)
70 tmp = geompy.MakeBoolean(tmp,flange_right,3)
71 flange = geompy.MakeBoolean(tmp,flange_front,3)
72 #
73 # left chamfer
74 #
75 import math
76 length = e_trav/math.sin(math.pi/4.)
77 yaxis = geompy.MakeVectorDXDYDZ(0.,1.,0.)
78 cut_left = geompy.MakeBox(0.,-marge,0.,-length,L_trav+marge,length)
79 cut_left = geompy.MakeRotation(cut_left,yaxis,-math.pi/4.)
80 cut_left = geompy.MakeTranslation(cut_left,e_trav,0.,0.)
81 #
82 # right chamfer
83 #
84 symPlaneYZ = geompy.MakePlane(
85      geompy.MakeVertex(L_trav/2.,0.,0.),
86      geompy.MakeVectorDXDYDZ(1.,0.,0.), 10000. )
87 cut_right = geompy.MakeMirrorByPlane(cut_left,symPlaneYZ)
88 #
89 # front chamfer
90 #
91 xaxis = geompy.MakeVectorDXDYDZ(1.,0.,0.)
92 cut_front = geompy.MakeBox(-marge,0.,0.,L_trav+marge,length,length)
93 cut_front = geompy.MakeRotation(cut_front,xaxis,3.*math.pi/4.)
94 cut_front = geompy.MakeTranslation(cut_front,0.,e_trav,0.)
95 #
96 # rear chamfer
97 #
98 symPlaneXZ = geompy.MakePlane(
99      geompy.MakeVertex(0.,L_trav/2.,0.),
100      geompy.MakeVectorDXDYDZ(0.,1.,0.), 10000. )
101 cut_rear = geompy.MakeMirrorByPlane(cut_front,symPlaneXZ)
102 #
103 # chamfer
104 #
105 trav = geompy.MakeBoolean(flange,cut_left,2)
106 trav = geompy.MakeBoolean(trav,cut_right,2)
107 trav = geompy.MakeBoolean(trav,cut_front,2)
108 trav = geompy.MakeBoolean(trav,cut_rear,2)
109 trav = geompy.MakeTranslation(trav,
110                        L_base/2.-L_trav/2.,
111                        l_base/2.-L_trav/2.,
112                        h_base)
113 travId = geompy.addToStudy(trav,"trav")
114 #
115 # Welding
116 #
117 ground = geompy.MakeBox(-1000.,-1000.,0.,1000.,1000.,-1000.)
118 weld_left = geompy.MakeBoolean(cut_left,ground,2)
119 weld_right = geompy.MakeBoolean(cut_right,ground,2)
120 weld_front = geompy.MakeBoolean(cut_front,ground,2)
121 weld_rear = geompy.MakeBoolean(cut_rear,ground,2)
122 #
123 # Assembly
124 #
125 coarse_weld = geompy.MakeBoolean(weld_left,weld_rear,3)
126 coarse_weld = geompy.MakeBoolean(coarse_weld,weld_right,3)
127 coarse_weld = geompy.MakeBoolean(coarse_weld,weld_front,3)
128 #
129 # Cleaners
130 #
131 left_cleaner = geompy.MakeBox(0.,-10*marge,0.,-10.*marge,10.*marge,10.*marge)
132 left_cleaner = geompy.MakeRotation(left_cleaner,yaxis,math.pi/4.)
133 left_cleaner = geompy.MakeTranslation(left_cleaner,-e_trav-2.*marge,0.,-2.*marge)
134
135 right_cleaner = geompy.MakeMirrorByPlane(left_cleaner,symPlaneYZ)
136
137 front_cleaner = geompy.MakeBox(-10*marge,0.,0.,10.*marge,10.*marge,10.*marge)
138 front_cleaner = geompy.MakeRotation(front_cleaner,xaxis,3.*math.pi/4.)
139 front_cleaner = geompy.MakeTranslation(front_cleaner,0.,2.*marge-e_trav,2.*marge)
140
141 rear_cleaner = geompy.MakeMirrorByPlane(front_cleaner,symPlaneXZ)
142 #
143 # Welding
144 #
145 weld = geompy.MakeBoolean(coarse_weld,left_cleaner,2)
146 weld = geompy.MakeBoolean(weld,rear_cleaner,2)
147 weld = geompy.MakeBoolean(weld,right_cleaner,2)
148 weld = geompy.MakeBoolean(weld,front_cleaner,2)
149 weld = geompy.MakeTranslation(weld,
150                        L_base/2.-L_trav/2.,
151                        l_base/2.-L_trav/2.,
152                        h_base)
153 weldId = geompy.addToStudy(weld,"weld")
154 #
155 # Assembly
156 #
157 #assemblage = MakePartition([base.,weld.GetName()])
158 assemblage = geompy.MakePartition([base,weld])
159 geompy.addToStudy(assemblage, "base+weld")
160 #print assemblage.GetName()
161 #print trav.GetName()
162 #assemblage = geompy.MakePartition([assemblage.GetName(),trav.GetName()])
163 assemblage = geompy.MakePartition([assemblage,trav])
164 assemblageId = geompy.addToStudy(assemblage, "assemblage")
165
166 #
167 # Display
168 #
169 gg = salome.ImportComponentGUI("GEOM")
170 import salome_ComponentGUI
171 if not isinstance(gg, type(salome_ComponentGUI)):
172     gg.initGeomGen()
173     gg.createAndDisplayGO(baseId)
174     gg.setTransparency(baseId,0.5)
175     gg.setDisplayMode(baseId,1)
176     gg.setColor(baseId,255,0,0)
177     gg.createAndDisplayGO(travId)
178     gg.setTransparency(travId,0.5)
179     gg.setDisplayMode(travId,1)
180     gg.setColor(travId,255,0,0)
181     gg.createAndDisplayGO(weldId)
182     gg.setTransparency(weldId,0.5)
183     gg.setDisplayMode(weldId,1)
184     gg.setColor(weldId,0,0,255)