Salome HOME
Merge from V5_1_main branch 24/11/2010
[modules/geom.git] / src / GEOM_SWIG / GEOM_tube_geom_gg2.py
1 #  -*- coding: iso-8859-1 -*-
2 #  Copyright (C) 2007-2010  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.
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 from geompy import *
34 import salome
35 #
36 # base de l'assemblage
37 #
38 L_base = 300.
39 l_base = 150.
40 h_base = 75.
41 e_base = 6.
42
43 base_bot = MakeBox(0.,0.,0.,L_base,l_base,e_base)
44 base_top = MakeTranslation(base_bot,0.,0.,h_base-e_base)
45 base_front = MakeBox(0,0,0,L_base,e_base,h_base)
46 base_rear = MakeTranslation(base_front,0.,l_base,0.)
47
48 tmp = MakeBoolean(base_top,base_rear,3)
49 tmp = MakeBoolean(tmp,base_bot,3)
50 base = MakeBoolean(tmp,base_front,3)
51
52 baseId = addToStudy(base,"base")
53 #
54 # traverse
55 #
56 L_trav = 60.
57 h_trav = 300.
58 e_trav = 7.
59 marge = 15.
60
61 flange_left = MakeBox(0.,0.,0,e_trav,L_trav,h_trav)
62 flange_right = MakeTranslation(flange_left,L_trav-e_trav,0.,0.)
63 flange_front = MakeBox(0.,0.,0,L_trav,e_trav,h_trav)
64 flange_rear = MakeTranslation(flange_front,0.,L_trav-e_trav,0.)
65
66 tmp = MakeBoolean(flange_left,flange_rear,3)
67 tmp = MakeBoolean(tmp,flange_right,3)
68 flange = MakeBoolean(tmp,flange_front,3)
69 #
70 # left chamfer
71 #
72 import math
73 length = e_trav/math.sin(math.pi/4.)
74 yaxis = MakeVectorDXDYDZ(0.,1.,0.)
75 cut_left = MakeBox(0.,-marge,0.,-length,L_trav+marge,length)
76 cut_left = MakeRotation(cut_left,yaxis,-math.pi/4.)
77 cut_left = MakeTranslation(cut_left,e_trav,0.,0.)
78 #
79 # right chamfer
80 #
81 symPlaneYZ = MakePlane(
82      MakeVertex(L_trav/2.,0.,0.),
83      MakeVectorDXDYDZ(1.,0.,0.), 10000. )
84 cut_right = MakeMirrorByPlane(cut_left,symPlaneYZ)
85 #
86 # front chamfer
87 #
88 xaxis = MakeVectorDXDYDZ(1.,0.,0.)
89 cut_front = MakeBox(-marge,0.,0.,L_trav+marge,length,length)
90 cut_front = MakeRotation(cut_front,xaxis,3.*math.pi/4.)
91 cut_front = MakeTranslation(cut_front,0.,e_trav,0.)
92 #
93 # rear chamfer
94 #
95 symPlaneXZ = MakePlane(
96      MakeVertex(0.,L_trav/2.,0.),
97      MakeVectorDXDYDZ(0.,1.,0.), 10000. )
98 cut_rear = MakeMirrorByPlane(cut_front,symPlaneXZ)
99 #
100 # chamfer
101 #
102 trav = MakeBoolean(flange,cut_left,2)
103 trav = MakeBoolean(trav,cut_right,2)
104 trav = MakeBoolean(trav,cut_front,2)
105 trav = MakeBoolean(trav,cut_rear,2)
106 trav = MakeTranslation(trav,
107                        L_base/2.-L_trav/2.,
108                        l_base/2.-L_trav/2.,
109                        h_base)
110 travId = addToStudy(trav,"trav")
111 #
112 # Welding
113 #
114 ground = MakeBox(-1000.,-1000.,0.,1000.,1000.,-1000.)
115 weld_left = MakeBoolean(cut_left,ground,2)
116 weld_right = MakeBoolean(cut_right,ground,2)
117 weld_front = MakeBoolean(cut_front,ground,2)
118 weld_rear = MakeBoolean(cut_rear,ground,2)
119 #
120 # Assembly
121 #
122 coarse_weld = MakeBoolean(weld_left,weld_rear,3)
123 coarse_weld = MakeBoolean(coarse_weld,weld_right,3)
124 coarse_weld = MakeBoolean(coarse_weld,weld_front,3)
125 #
126 # Cleaners
127 #
128 left_cleaner = MakeBox(0.,-10*marge,0.,-10.*marge,10.*marge,10.*marge)
129 left_cleaner = MakeRotation(left_cleaner,yaxis,math.pi/4.)
130 left_cleaner = MakeTranslation(left_cleaner,-e_trav-2.*marge,0.,-2.*marge)
131
132 right_cleaner = MakeMirrorByPlane(left_cleaner,symPlaneYZ)
133
134 front_cleaner = MakeBox(-10*marge,0.,0.,10.*marge,10.*marge,10.*marge)
135 front_cleaner = MakeRotation(front_cleaner,xaxis,3.*math.pi/4.)
136 front_cleaner = MakeTranslation(front_cleaner,0.,2.*marge-e_trav,2.*marge)
137
138 rear_cleaner = MakeMirrorByPlane(front_cleaner,symPlaneXZ)
139 #
140 # Welding
141 #
142 weld = MakeBoolean(coarse_weld,left_cleaner,2)
143 weld = MakeBoolean(weld,rear_cleaner,2)
144 weld = MakeBoolean(weld,right_cleaner,2)
145 weld = MakeBoolean(weld,front_cleaner,2)
146 weld = MakeTranslation(weld,
147                        L_base/2.-L_trav/2.,
148                        l_base/2.-L_trav/2.,
149                        h_base)
150 weldId = addToStudy(weld,"weld")
151 #
152 # Assembly
153 #
154 #assemblage = MakePartition([base.,weld.GetName()])
155 assemblage = MakePartition([base,weld])
156 addToStudy(assemblage, "base+weld")
157 #print assemblage.GetName()
158 #print trav.GetName()
159 #assemblage = MakePartition([assemblage.GetName(),trav.GetName()])
160 assemblage = MakePartition([assemblage,trav])
161 assemblageId = addToStudy(assemblage, "assemblage")
162
163 #
164 # Display
165 #
166 gg = ImportComponentGUI("GEOM")
167 import salome_ComponentGUI
168 if not isinstance(gg, type(salome_ComponentGUI)):
169     gg.initGeomGen()
170     gg.createAndDisplayGO(baseId)
171     gg.setTransparency(baseId,0.5)
172     gg.setDisplayMode(baseId,1)
173     gg.setColor(baseId,255,0,0)
174     gg.createAndDisplayGO(travId)
175     gg.setTransparency(travId,0.5)
176     gg.setDisplayMode(travId,1)
177     gg.setColor(travId,255,0,0)
178     gg.createAndDisplayGO(weldId)
179     gg.setTransparency(weldId,0.5)
180     gg.setDisplayMode(weldId,1)
181     gg.setColor(weldId,0,0,255)