Salome HOME
019b13a44ed0ed462ce09e586ae72744a7a8dabd
[modules/geom.git] / doc / salome / examples / complex_objs_ex06.py
1 # Creation of a PipeWithShellSections
2
3 import salome
4 salome.salome_init()
5 import GEOM
6 from salome.geom import geomBuilder
7 geompy = geomBuilder.New()
8 import math
9 gg = salome.ImportComponentGUI("GEOM")
10
11 # create path
12 WirePath = geompy.MakeSketcher("Sketcher:F 0 0:TT 100 0:R 0:C 100 90:T 0 200", [0, 0, 0, 0, 0, 1, 1, 0, -0])
13
14 # get sub-shapes
15 edges = geompy.SubShapeAll(WirePath, geompy.ShapeType["EDGE"])
16 vertices = geompy.SubShapeAll(WirePath, geompy.ShapeType["VERTEX"])
17
18
19 #=======================================================
20 #                 Create shell sections
21 #=======================================================
22 ps = [vertices[0],vertices[1],vertices[2],vertices[3]]
23 theLocations = [vertices[0],vertices[1],vertices[2],vertices[3]]
24 VC = geompy.MakeCompound(theLocations)
25 geompy.addToStudy(VC,"VC")
26 vs = [edges[0],edges[0],edges[2],edges[2]]
27 hs = [20,40,30,20]
28 shells = []
29 subbases = []
30
31 # 1 section
32 c0 = geompy.PointCoordinates(ps[0])
33 c1 = geompy.PointCoordinates(ps[1])
34 nx = c1[0] - c0[0]
35 ny = c1[1] - c0[1]
36 nz = c1[2] - c0[2]
37
38 faces = []
39 f1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 20 0:TT 20 20:TT 0 20:WF",
40                          [c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
41 f2 = geompy.MakeSketcher("Sketcher:F 0 0:TT 0 20:TT -20 20:TT -20 0:WF",
42                          [c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
43 f3 = geompy.MakeSketcher("Sketcher:F 0 0:TT -20 0:TT -20 -20:TT 0 -20:WF",
44                          [c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
45 f4 = geompy.MakeSketcher("Sketcher:F 0 0:TT 0 -20:TT 20 -20:TT 20 0:WF",
46                          [c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
47 faces.append(f1)
48 faces.append(f2)
49 faces.append(f3)
50 faces.append(f4)
51 shell = geompy.MakeSewing(faces,1.e-6)
52 shells.append(shell)
53 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
54 subbases.append(faces[0])
55
56 # 2 section
57 faces = []
58
59 w = geompy.MakeSketcher("Sketcher:F 20 20:TT 0 20:TT 0 0:TT 20 0",
60                          [c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
61 contour = geompy.CloseContour(w, [], isCommonVertex=False)
62 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
63 w = geompy.MakeWire([e1,e2,e3,e4])
64 f1 = geompy.MakeFace(w,1)
65
66 w = geompy.MakeSketcher("Sketcher:F -20 0:TT 0 0:TT 0 20:TT -20 20",
67                          [c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
68 contour = geompy.CloseContour(w, [], isCommonVertex=False)
69 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
70 w = geompy.MakeWire([e1,e2,e3,e4])
71 f2 = geompy.MakeFace(w,1)
72
73 w = geompy.MakeSketcher("Sketcher:F 20 0:TT 0 0:TT 0 -20:TT 20 -20",
74                          [c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
75 contour = geompy.CloseContour(w, [], isCommonVertex=False)
76 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
77 w = geompy.MakeWire([e1,e2,e3,e4])
78 f3 = geompy.MakeFace(w,1)
79
80 w = geompy.MakeSketcher("Sketcher:F -20 -20:TT 0 -20:TT 0 0:TT -20 0",
81                          [c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
82 contour = geompy.CloseContour(w, [], isCommonVertex=False)
83 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
84 w = geompy.MakeWire([e1,e2,e3,e4])
85 f4 = geompy.MakeFace(w,1)
86
87 faces.append(f1)
88 faces.append(f2)
89 faces.append(f3)
90 faces.append(f4)
91 shell = geompy.MakeSewing(faces,1.e-6)
92 shells.append(shell)
93 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
94 subbases.append(faces[0])
95
96 # 3 section
97 faces = []
98 c2 = geompy.PointCoordinates(ps[2])
99 c3 = geompy.PointCoordinates(ps[3])
100 nx = c3[0] - c2[0]
101 ny = c3[1] - c2[1]
102 nz = c3[2] - c2[2]
103
104 w = geompy.MakeSketcher("Sketcher:F 20 20:TT 0 20:TT 0 0:TT 20 0",
105                          [c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
106 contour = geompy.CloseContour(w, [], isCommonVertex=False)
107 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
108 w = geompy.MakeWire([e1,e2,e3,e4])
109 f1 = geompy.MakeFace(w,1)
110
111 w = geompy.MakeSketcher("Sketcher:F -20 0:TT 0 0:TT 0 20:TT -20 20",
112                          [c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
113 contour = geompy.CloseContour(w, [], isCommonVertex=False)
114 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
115 w = geompy.MakeWire([e1,e2,e3,e4])
116 f2 = geompy.MakeFace(w,1)
117
118 w = geompy.MakeSketcher("Sketcher:F 20 0:TT 0 0:TT 0 -20:TT 20 -20",
119                          [c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
120 contour = geompy.CloseContour(w, [], isCommonVertex=False)
121 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
122 w = geompy.MakeWire([e1,e2,e3,e4])
123 f3 = geompy.MakeFace(w,1)
124
125 w = geompy.MakeSketcher("Sketcher:F -20 -20:TT 0 -20:TT 0 0:TT -20 0",
126                          [c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
127 contour = geompy.CloseContour(w, [], isCommonVertex=False)
128 [e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
129 w = geompy.MakeWire([e1,e2,e3,e4])
130 f4 = geompy.MakeFace(w,1)
131
132 faces.append(f1)
133 faces.append(f2)
134 faces.append(f3)
135 faces.append(f4)
136 shell = geompy.MakeSewing(faces,1.e-6)
137 shells.append(shell)
138 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
139 subbases.append(faces[2])
140
141 # 4 section
142 faces = []
143
144 kk = 4
145 dx = c3[0] - nx/kk
146 dy = c3[1] - ny/kk
147 dz = c3[2] - nz/kk
148 rad = math.sqrt(nx*nx+ny*ny+nz*nz)
149 vc = geompy.MakeVertex(dx,dy,dz)
150 sph = geompy.MakeSpherePntR(vc,rad/kk)
151 shellsph = geompy.SubShapeAll(sph, geompy.ShapeType["SHELL"])
152
153 fs = []
154 vec = geompy.MakeVectorDXDYDZ(0,0,1)
155 ff = geompy.MakePlane(ps[3],vec,40)
156 fs.append(ff)
157 vp = geompy.MakeVertex(c3[0],c3[1],c3[2]+20)
158 ff = geompy.MakePlane(vp,vec,40)
159 fs.append(ff)
160 vp = geompy.MakeVertex(c3[0],c3[1],c3[2]-20)
161 ff = geompy.MakePlane(vp,vec,40)
162 fs.append(ff)
163 vec = geompy.MakeVectorDXDYDZ(1,0,0)
164 ff = geompy.MakePlane(ps[3],vec,40)
165 fs.append(ff)
166 vp = geompy.MakeVertex(c3[0]+20,c3[1],c3[2])
167 ff = geompy.MakePlane(vp,vec,40)
168 fs.append(ff)
169 vp = geompy.MakeVertex(c3[0]-20,c3[1],c3[2])
170 ff = geompy.MakePlane(vp,vec,40)
171 fs.append(ff)
172 aPartition = geompy.MakePartition(shellsph,fs)
173 fs = geompy.SubShapeAllSortedCentres(aPartition, geompy.ShapeType["FACE"])
174
175 for face in fs:
176     if ( 4 == geompy.NbShapes(face, geompy.ShapeType["VERTEX"]) ):
177         faces.append(face)
178         pass
179     pass
180 shell = geompy.MakeSewing(faces,1.e-6)
181 shells.append(shell)
182 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
183 subbases.append(faces[2])
184
185 #===========================================================
186 #                   Create Pipe
187 #===========================================================
188 Pipe = geompy.MakePipeWithShellSections(shells, subbases, theLocations, WirePath,
189                                         theWithContact=0, theWithCorrection=0)
190
191 # add objects in the study
192 resc = geompy.MakeCompound(shells)
193 id_sec = geompy.addToStudy(resc,"sections")
194 id_wire = geompy.addToStudy(WirePath,"WirePath")
195 id_pipe = geompy.addToStudy(Pipe, "Pipe")
196
197 # display the wire(path), sections and the pipe
198 gg.createAndDisplayGO(id_wire)
199 gg.createAndDisplayGO(id_sec)
200 gg.createAndDisplayGO(id_pipe)
201 gg.setDisplayMode(id_pipe,1)