1 # Creation of a PipeWithShellSections
6 from salome.geom import geomBuilder
7 geompy = geomBuilder.New(salome.myStudy)
9 gg = salome.ImportComponentGUI("GEOM")
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])
15 edges = geompy.SubShapeAll(WirePath, geompy.ShapeType["EDGE"])
16 vertices = geompy.SubShapeAll(WirePath, geompy.ShapeType["VERTEX"])
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]]
32 c0 = geompy.PointCoordinates(ps[0])
33 c1 = geompy.PointCoordinates(ps[1])
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])
51 shell = geompy.MakeSewing(faces,1.e-6)
53 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
54 subbases.append(faces[0])
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)
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)
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)
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)
91 shell = geompy.MakeSewing(faces,1.e-6)
93 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
94 subbases.append(faces[0])
98 c2 = geompy.PointCoordinates(ps[2])
99 c3 = geompy.PointCoordinates(ps[3])
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)
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)
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)
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)
136 shell = geompy.MakeSewing(faces,1.e-6)
138 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
139 subbases.append(faces[2])
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"])
154 vec = geompy.MakeVectorDXDYDZ(0,0,1)
155 ff = geompy.MakePlane(ps[3],vec,40)
157 vp = geompy.MakeVertex(c3[0],c3[1],c3[2]+20)
158 ff = geompy.MakePlane(vp,vec,40)
160 vp = geompy.MakeVertex(c3[0],c3[1],c3[2]-20)
161 ff = geompy.MakePlane(vp,vec,40)
163 vec = geompy.MakeVectorDXDYDZ(1,0,0)
164 ff = geompy.MakePlane(ps[3],vec,40)
166 vp = geompy.MakeVertex(c3[0]+20,c3[1],c3[2])
167 ff = geompy.MakePlane(vp,vec,40)
169 vp = geompy.MakeVertex(c3[0]-20,c3[1],c3[2])
170 ff = geompy.MakePlane(vp,vec,40)
172 aPartition = geompy.MakePartition(shellsph,fs)
173 fs = geompy.SubShapeAllSortedCentres(aPartition, geompy.ShapeType["FACE"])
176 if ( 4 == geompy.NbShapes(face, geompy.ShapeType["VERTEX"]) ):
180 shell = geompy.MakeSewing(faces,1.e-6)
182 faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
183 subbases.append(faces[2])
185 #===========================================================
187 #===========================================================
188 Pipe = geompy.MakePipeWithShellSections(shells, subbases, theLocations, WirePath,
189 theWithContact=0, theWithCorrection=0)
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")
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)