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