Salome HOME
Mantis issues 0021432 and 0021404: MakeFace[Wires] should generate exception on attem...
[modules/geom.git] / src / GEOM_SWIG / GEOM_shellSolid.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2011  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)   : shellSolid_modified.py, PAL6611
27 #  Modified                 : 25/11/2004
28 #  Author                   : Kovaltchuk Alexey
29 #  Project                  : PAL/SALOME
30 #==============================================================================
31 # Imports
32 # -------
33 #
34 import salome
35 import SALOMEDS
36
37 import geompy
38
39 # Interface with geometry
40 # -----------------------
41
42 #geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
43 geomgui = salome.ImportComponentGUI("GEOM")
44
45 geom = geompy
46
47 # Interface with study
48 # --------------------
49
50 def addToStudy(shape, name):
51     i = geompy.addToStudy(shape, name)
52     salome.sg.updateObjBrowser(0)
53 #    geomgui.createAndDisplayGO(i)
54     return i
55
56 def setName(obj):
57     obj.SetName(salome.orb.object_to_string(obj))
58
59
60 def MakeVertex(x, y, z):
61     v = geom.MakeVertex(x, y, z)
62     setName(v)
63     return v
64
65 def MakeEdge(v1, v2):
66     e = geom.MakeEdge(v1, v2)
67     setName(e)
68     return e
69
70 def MakeArc(f, p, t):
71     e = geom.MakeArc(f, p, t)
72     setName(e)
73     return e
74
75 def MakeArcCenter(c, f, t):
76     p = fkl(c, f, t)
77     e = geom.MakeArc(f, p, t)
78     setName(e)
79     return e
80
81 # Face with 4 edges
82 # -----------------
83
84 # cf. makeTiledSurfByContour
85
86 def MakeQuadFace(e1, e2, e3, e4):
87     l = []
88     l.append(e1)
89     l.append(e2)
90     l.append(e3)
91     l.append(e4)
92     w = geom.MakeWire(l)
93     f = geom.MakeFace(w, 1)
94     setName(f)
95     return f
96
97 # cf. makeTiledSurfBetweenTwolines
98
99 def MakeQuadFaceEdge(e1, e2):
100     return fkl
101
102 # cf. makeTiledSurfByPointsOfContour
103 # cf. makeMesh
104
105 def MakeQuadFaceVertex(v1, v2, v3, v4):
106     l = []
107     e = MakeEdge(v1, v2)
108     l.append(e)
109     e = MakeEdge(v2, v3)
110     l.append(e)
111     e = MakeEdge(v3, v4)
112     l.append(e)
113     e = MakeEdge(v4, v1)
114     l.append(e)
115     w = geom.MakeWire(l)
116     f = geom.MakeFace(w, 1)
117     setName(f)
118     return f
119
120 # Solid with 6 faces
121 # ------------------
122
123 # cf. makePavedVolWithContour
124 # cf. makeVolWithEnvolope
125
126 def MakeHexaSolid(f1, f2, f3, f4, f5, f6):
127     l = []
128     l.append(f1)
129     l.append(f2)
130     l.append(f3)
131     l.append(f4)
132     l.append(f5)
133     l.append(f6)
134     s = geom.MakeShell(l)
135 # FKL: bad shell
136     l = []
137     l.append(s)
138     s = geom.MakeSolid(l)
139 # FKL: MakeSolid crash
140     setName(s)
141     return s
142
143 # cf. makeVolBetweenTwoSurfaces
144
145 def MakeHexaSolidFace(f1, f2):
146     return fkl
147
148 # Face (with 4 edges) and solid (with 6 faces)
149 # --------------------------------------------
150
151 # makeTiledSurfByRotationOfLine
152
153 def MakeRevolution(g, pt, ve, angle):
154     """
155     Creates a face  by rotation of an edge with an angle around an axis defined by a point and a vector or
156     creates a solid by rotation of a  face with an angle around an axis defined by a point and a vector
157     """
158     axis = geom.MakeAxisStruct(pt.x, pt.y, pt.z, ve.x, ve.y, ve.z)
159     s = geom.MakeRevolution(g, axis, angle)
160     setName(s)
161     return s
162
163 # cf. makeSurfSewingTwolines
164
165 def MakeSewing(ls):
166     """
167     Creates a face  by sewing common edges between a list of faces or
168     Creates a solid by sewing common faces between a list of solids
169     """
170     s = geom.MakeSewing(ls)
171     setName(s)
172     return s
173
174 # cf. makeIntersectionBetweenTwoMeshes
175
176 def MakeCommon(s1, s2):
177     """
178     Creates the common face  between 2 faces or
179     Creates the common solid between 2 solids
180     """
181     s = geom.MakeBoolean(s1, s2, 1)
182     setName(s)
183     return s
184
185 # cf. makeMerge
186
187 def MakeFuse(s1, s2):
188     """
189     Fuses 2 faces or 2 solids
190     """
191     s = geom.MakeBoolean(s1, s2, 3)
192     setName(s)
193     return s
194
195 # Additional
196
197 def MakeCut(s1, s2):
198     """
199     Cuts 2 faces or 2 solids
200     """
201     s = geom.MakeBoolean(s1, s2, 2)
202     setName(s)
203     return s
204
205 # Edge, face (with 4 edges) and solid (with 6 faces)
206 # --------------------------------------------------
207
208 # cf. makeSurfByTranslation
209 # cf. makeVolByTranslation
210
211 def MakePrism(s, v):
212     """
213     Creates a edge  defined by a vertex and along a vector
214     Creates a face  defined by a edge   and along a vector
215     Creates a solid defined by a face   and along a vector
216     """
217     r = geom.MakePrism(s, point(0, 0, 0), v)
218     setName(r)
219     return r
220
221 # cf. homothety
222
223 def MakeScaleTransform(s, center, factor):
224     """
225     Creates a homothety of a geometric object
226     """
227     r = geom.MakeScaleTransform(s, center, factor)
228     setName(r)
229     return r
230
231 # Vertex, edge, face (with 4 edges) and solid (with 6 faces)
232 # ----------------------------------------------------------
233
234 # cf. translate
235
236 def MakeTranslation(s, vx, vy, vz):
237     """
238     Translates a vertex, an edge, a face or a solid
239     """
240     r = geom.MakeTranslation(s, vx, vy, vz)
241     setName(r)
242     return r
243
244 # cf. rotation
245
246 def MakeRotation(g, pt, ve, angle):
247     """
248     Creates a rotation of the geometric object with an angle around an axis defined by a point and a vector
249     """
250     axis = geom.MakeAxisStruct(pt.x, pt.y, pt.z, ve.x, ve.y, ve.z)
251     s = geom.MakeRotation(g, axis, angle)
252     setName(s)
253     return s
254
255 # cf. symmetryByPoint
256
257 def MakeMirrorByPoint(s, point):
258     """
259     Creates a symmetric object by point symetry
260     """
261     return fkl
262
263 # cf. symmetryByLine
264
265 def MakeMirrorByLine(s, line):
266     """
267     Creates a symmetric object by line symetry
268     """
269     return fkl
270
271 # cf. symmetryByPlane
272
273 def MakeMirrorByPlane(s, pt, ve):
274     """
275     Creates a symmetric object by plane symetry defined by a point and a normal vector
276     """
277     p = plane(pt, ve)
278     r = geom.MakeMirrorByplane(s, p)
279     setName(r)
280     return r
281
282 # Compound
283 # --------
284
285 # Additional
286
287 def BlockMakeCompound(ls):
288     """
289     Creates a compound defined by a list and glue faces
290     """
291     c = MakeCompound(ls)
292     r = MakeGlueFaces(c, 1.e-5)
293     setName(r)
294     return r
295
296 # Boolean operators
297 # -----------------
298
299 def mergePointsNearBy(l, v):
300     """
301     Modifies a list of shape by replacing all vertex near a new vextex
302     """
303     return fkl
304
305 # Acces operators
306 # ---------------
307
308 def getCoords(v):
309     """
310     Gets the coordinates of the vertex
311     """
312     return fkl
313
314 def extractBeginPoint(e):
315     """
316     Gets the first point of an edge
317     """
318     return fkl
319
320 def extractEndPoint(e):
321     """
322     Gets the second point of an edge
323     """
324     return fkl
325
326 # fkl more functionalities
327
328 # Addionnal
329 # =========
330
331 # Check geometry
332 # --------------
333
334 def CheckQuadFace(f):
335     """
336     Checks if a face has 4 edges
337     """
338     return fkl
339
340 def CheckHexaSolid(s):
341     """
342     Checks if a solid has 6 faces and each faces have 4 edges
343     """
344     return fkl
345
346 # fkl more if other kind of solid like: tetra, penta, etc
347
348 # point for building
349 # ------------------
350
351 def point(x, y, z):
352     p = geom.MakeVertex(x, y, z)
353     return p
354
355 def plane(pt, dir):
356     p = geom.MakePlane(pt, d, 100)
357     return p
358
359 # Solid
360 # -----
361
362 def MakeCylinder(center, dir, radius, height):
363     s = geom.MakeCylinder(center, dir, radius, height)
364     setName(s)
365     return s
366
367 def MakeBox(p1, p2):
368     s = geom.MakeBoxTwoPnt(p1, p2)
369     setName(s)
370     return s
371
372 # Compound
373 # --------
374
375 ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}
376
377 def MakePartitionList(solids, tools):
378     """
379     Creates a list of shape by a partition of a list of solids by a list of tools
380     """
381     p = geom.Partition(solids, tools, [], [], ShapeType["SHAPE"]);
382     l = geom.SubShapeAll(p, ShapeType["SHAPE"])
383     return l
384
385 def MakePartition(solids, tools):
386     """
387     Creates a partition of a list of solids by a list of tools
388     """
389     l = MakePartitionList(solids, tools)
390     c = MakeCompound(l)
391     setName(c)
392     return c
393
394 def BlockMakeMultiTranslation1D(shape, dir, step, times):
395     m = geom.MakeMultiTranslation1D(shape, dir, step, times)
396     c  = MakeGlueFaces(m, 1.e-5)
397     setName(c)
398     return c
399
400 def BlockMakeMultiTranslation2D(shape, dir1, step1, times1, dir2, step2, times2):
401     m  = geom.MakeMultiTranslation2D(shape, dir1, step1, times1, dir2, step2, times2)
402     c  = MakeGlueFaces(m, 1.e-5)
403     setName(c)
404     return c
405
406 def BlockMakeMultiRotation1D(shape, dir, point, times):
407     m = geom.MakeMultiRotation1D(shape, dir, point, times)
408     c  = MakeGlueFaces(m, 1.e-5)
409     setName(c)
410     return c
411
412 def BlockMakeMultiRotation2D(shape, dir, point, angle, times1, step, times2):
413     m = geom.MakeMultiRotation2D(shape, dir, point, angle, times1, step, times2)
414     c  = MakeGlueFaces(m, 1.e-5)
415     setName(c)
416     return c
417
418 # internal
419 # --------
420
421 def MakeCompound(ls):
422     """
423     Creates a compound defined by a list
424     """
425     c = geom.MakeCompound(ls)
426     return c
427
428 def MakeSewingShape(s, eps):
429     """
430     Creates a shape fully sewed
431     """
432     r = geom.MakeSewingShape(s, eps)
433     return r
434
435 def MakeGlueFaces(s, eps):
436     """
437     Touched faces are replaced by one
438     """
439     r = geom.MakeGlueFaces(s, eps)
440     return r
441
442
443 # Geometry
444 # ========
445
446 # A small cube centered and put on a great cube
447
448 # Points
449 # ------
450
451 greatPoint111 = point( 0,  0,  0)
452 greatPoint211 = point(10,  0,  0)
453 greatPoint311 = point(20,  0,  0)
454 greatPoint411 = point(30,  0,  0)
455
456 greatPoint121 = point( 0, 10,  0)
457 greatPoint221 = point(10, 10,  0)
458 greatPoint321 = point(20, 10,  0)
459 greatPoint421 = point(30, 10,  0)
460
461 greatPoint112 = point( 0,  0, 10)
462 greatPoint212 = point(10,  0, 10)
463 greatPoint312 = point(20,  0, 10)
464 greatPoint412 = point(30,  0, 10)
465
466 greatPoint122 = point( 0, 10, 10)
467 greatPoint222 = point(10, 10, 10)
468 greatPoint322 = point(20, 10, 10)
469 greatPoint422 = point(30, 10, 10)
470
471 greatPoint113 = point( 0,  0, 20)
472 greatPoint213 = point(10,  0, 20)
473 greatPoint313 = point(20,  0, 20)
474 greatPoint413 = point(30,  0, 20)
475
476 greatPoint123 = point( 0, 10, 20)
477 greatPoint223 = point(10, 10, 20)
478 greatPoint323 = point(20, 10, 20)
479 greatPoint423 = point(30, 10, 20)
480
481 greatPoint114 = point( 0,  0, 30)
482 greatPoint214 = point(10,  0, 30)
483 greatPoint314 = point(20,  0, 30)
484 greatPoint414 = point(30,  0, 30)
485
486 greatPoint124 = point( 0, 10, 30)
487 greatPoint224 = point(10, 10, 30)
488 greatPoint324 = point(20, 10, 30)
489 greatPoint424 = point(30, 10, 30)
490
491
492 smallPoint111 = greatPoint222
493 smallPoint211 = greatPoint322
494 smallPoint121 = point(10, 20, 10)
495 smallPoint221 = point(20, 20, 10)
496
497 smallPoint112 = greatPoint223
498 smallPoint212 = greatPoint323
499 smallPoint122 = point(10, 20, 20)
500 smallPoint222 = point(20, 20, 20)
501
502 # Edges
503 # -----
504
505 smallEdgeX11 = MakeEdge(smallPoint111, smallPoint211)
506 smallEdgeX21 = MakeEdge(smallPoint121, smallPoint221)
507 smallEdgeX12 = MakeEdge(smallPoint112, smallPoint212)
508 smallEdgeX22 = MakeEdge(smallPoint122, smallPoint222)
509
510 smallEdgeY11 = MakeEdge(smallPoint111, smallPoint121)
511 smallEdgeY21 = MakeEdge(smallPoint211, smallPoint221)
512 smallEdgeY12 = MakeEdge(smallPoint112, smallPoint122)
513 smallEdgeY22 = MakeEdge(smallPoint212, smallPoint222)
514
515 smallEdgeZ11 = MakeEdge(smallPoint111, smallPoint112)
516 smallEdgeZ21 = MakeEdge(smallPoint211, smallPoint212)
517 smallEdgeZ12 = MakeEdge(smallPoint121, smallPoint122)
518 smallEdgeZ22 = MakeEdge(smallPoint221, smallPoint222)
519
520
521 greatEdgeX111 = MakeEdge(greatPoint111, greatPoint211)
522 greatEdgeX211 = MakeEdge(greatPoint211, greatPoint311)
523 greatEdgeX311 = MakeEdge(greatPoint311, greatPoint411)
524 greatEdgeX121 = MakeEdge(greatPoint121, greatPoint221)
525 greatEdgeX221 = MakeEdge(greatPoint221, greatPoint321)
526 greatEdgeX321 = MakeEdge(greatPoint321, greatPoint421)
527
528 greatEdgeX112 = MakeEdge(greatPoint112, greatPoint212)
529 greatEdgeX212 = MakeEdge(greatPoint212, greatPoint312)
530 greatEdgeX312 = MakeEdge(greatPoint312, greatPoint412)
531 greatEdgeX122 = MakeEdge(greatPoint122, greatPoint222)
532 greatEdgeX222 = smallEdgeX11
533 greatEdgeX322 = MakeEdge(greatPoint322, greatPoint422)
534
535 greatEdgeX113 = MakeEdge(greatPoint113, greatPoint213)
536 greatEdgeX213 = MakeEdge(greatPoint213, greatPoint313)
537 greatEdgeX313 = MakeEdge(greatPoint313, greatPoint413)
538 greatEdgeX123 = MakeEdge(greatPoint123, greatPoint223)
539 greatEdgeX223 = smallEdgeX12
540 greatEdgeX323 = MakeEdge(greatPoint323, greatPoint423)
541
542 greatEdgeX114 = MakeEdge(greatPoint114, greatPoint214)
543 greatEdgeX214 = MakeEdge(greatPoint214, greatPoint314)
544 greatEdgeX314 = MakeEdge(greatPoint314, greatPoint414)
545 greatEdgeX124 = MakeEdge(greatPoint124, greatPoint224)
546 greatEdgeX224 = MakeEdge(greatPoint224, greatPoint324)
547 greatEdgeX324 = MakeEdge(greatPoint324, greatPoint424)
548
549 greatEdgeY11 = MakeEdge(greatPoint111, greatPoint121)
550 greatEdgeY21 = MakeEdge(greatPoint211, greatPoint221)
551 greatEdgeY31 = MakeEdge(greatPoint311, greatPoint321)
552 greatEdgeY41 = MakeEdge(greatPoint411, greatPoint421)
553
554 greatEdgeY12 = MakeEdge(greatPoint112, greatPoint122)
555 greatEdgeY22 = MakeEdge(greatPoint212, greatPoint222)
556 greatEdgeY32 = MakeEdge(greatPoint312, greatPoint322)
557 greatEdgeY42 = MakeEdge(greatPoint412, greatPoint422)
558
559 greatEdgeY13 = MakeEdge(greatPoint113, greatPoint123)
560 greatEdgeY23 = MakeEdge(greatPoint213, greatPoint223)
561 greatEdgeY33 = MakeEdge(greatPoint313, greatPoint323)
562 greatEdgeY43 = MakeEdge(greatPoint413, greatPoint423)
563
564 greatEdgeY14 = MakeEdge(greatPoint114, greatPoint124)
565 greatEdgeY24 = MakeEdge(greatPoint214, greatPoint224)
566 greatEdgeY34 = MakeEdge(greatPoint314, greatPoint324)
567 greatEdgeY44 = MakeEdge(greatPoint414, greatPoint424)
568
569 greatEdgeZ111 = MakeEdge(greatPoint111, greatPoint112)
570 greatEdgeZ211 = MakeEdge(greatPoint211, greatPoint212)
571 greatEdgeZ311 = MakeEdge(greatPoint311, greatPoint312)
572 greatEdgeZ411 = MakeEdge(greatPoint411, greatPoint412)
573
574 greatEdgeZ121 = MakeEdge(greatPoint121, greatPoint122)
575 greatEdgeZ221 = MakeEdge(greatPoint221, greatPoint222)
576 greatEdgeZ321 = MakeEdge(greatPoint321, greatPoint322)
577 greatEdgeZ421 = MakeEdge(greatPoint421, greatPoint422)
578
579 greatEdgeZ112 = MakeEdge(greatPoint112, greatPoint113)
580 greatEdgeZ212 = MakeEdge(greatPoint212, greatPoint213)
581 greatEdgeZ312 = MakeEdge(greatPoint312, greatPoint313)
582 greatEdgeZ412 = MakeEdge(greatPoint412, greatPoint413)
583
584 greatEdgeZ122 = MakeEdge(greatPoint122, greatPoint123)
585 greatEdgeZ222 = smallEdgeZ11
586 greatEdgeZ322 = smallEdgeZ21
587 greatEdgeZ422 = MakeEdge(greatPoint422, greatPoint423)
588
589 greatEdgeZ113 = MakeEdge(greatPoint113, greatPoint114)
590 greatEdgeZ213 = MakeEdge(greatPoint213, greatPoint214)
591 greatEdgeZ313 = MakeEdge(greatPoint313, greatPoint314)
592 greatEdgeZ413 = MakeEdge(greatPoint413, greatPoint414)
593
594 greatEdgeZ123 = MakeEdge(greatPoint123, greatPoint124)
595 greatEdgeZ223 = MakeEdge(greatPoint223, greatPoint224)
596 greatEdgeZ323 = MakeEdge(greatPoint323, greatPoint324)
597 greatEdgeZ423 = MakeEdge(greatPoint423, greatPoint424)
598
599 # Faces
600 # -----
601
602 smallFaceX1 = MakeQuadFace(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
603 smallFaceX2 = MakeQuadFace(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
604 smallFaceY1 = MakeQuadFace(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
605 smallFaceY2 = MakeQuadFace(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
606 smallFaceZ1 = MakeQuadFace(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
607 smallFaceZ2 = MakeQuadFace(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
608
609
610 greatFaceX11 = MakeQuadFace(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
611 greatFaceX21 = MakeQuadFace(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
612 greatFaceX31 = MakeQuadFace(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
613 greatFaceX41 = MakeQuadFace(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
614
615 greatFaceX12 = MakeQuadFace(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
616 greatFaceX22 = MakeQuadFace(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
617 greatFaceX32 = MakeQuadFace(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
618 greatFaceX42 = MakeQuadFace(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
619
620 greatFaceX13 = MakeQuadFace(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
621 greatFaceX23 = MakeQuadFace(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
622 greatFaceX33 = MakeQuadFace(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
623 greatFaceX43 = MakeQuadFace(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
624
625 greatFaceY111 = MakeQuadFace(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
626 greatFaceY211 = MakeQuadFace(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
627 greatFaceY311 = MakeQuadFace(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
628 greatFaceY121 = MakeQuadFace(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
629 greatFaceY221 = MakeQuadFace(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
630 greatFaceY321 = MakeQuadFace(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
631
632 greatFaceY112 = MakeQuadFace(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
633 greatFaceY212 = MakeQuadFace(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
634 greatFaceY312 = MakeQuadFace(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
635 greatFaceY122 = MakeQuadFace(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
636 greatFaceY222 = smallFaceY1
637 greatFaceY322 = MakeQuadFace(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
638
639 greatFaceY113 = MakeQuadFace(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
640 greatFaceY213 = MakeQuadFace(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
641 greatFaceY313 = MakeQuadFace(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
642 greatFaceY123 = MakeQuadFace(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
643 greatFaceY223 = MakeQuadFace(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
644 greatFaceY323 = MakeQuadFace(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
645
646 greatFaceZ11 = MakeQuadFace(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
647 greatFaceZ21 = MakeQuadFace(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
648 greatFaceZ31 = MakeQuadFace(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
649
650 greatFaceZ12 = MakeQuadFace(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
651 greatFaceZ22 = MakeQuadFace(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
652 greatFaceZ32 = MakeQuadFace(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
653
654 greatFaceZ13 = MakeQuadFace(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
655 greatFaceZ23 = MakeQuadFace(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
656 greatFaceZ33 = MakeQuadFace(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
657
658 greatFaceZ14 = MakeQuadFace(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
659 greatFaceZ24 = MakeQuadFace(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
660 greatFaceZ34 = MakeQuadFace(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
661
662 # Solids
663 # ------
664
665 smallBlock   = MakeHexaSolid(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
666
667 greatBlock11 = MakeHexaSolid(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
668 greatBlock21 = MakeHexaSolid(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
669 greatBlock31 = MakeHexaSolid(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
670
671 greatBlock12 = MakeHexaSolid(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
672 greatBlock22 = MakeHexaSolid(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
673 greatBlock32 = MakeHexaSolid(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
674
675 greatBlock13 = MakeHexaSolid(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
676 greatBlock23 = MakeHexaSolid(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
677 greatBlock33 = MakeHexaSolid(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
678
679 # Compound
680 # --------
681
682 l = []
683 l.append(smallBlock)
684 l.append(greatBlock11)
685 l.append(greatBlock21)
686 l.append(greatBlock31)
687 l.append(greatBlock12)
688 l.append(greatBlock22)
689 l.append(greatBlock32)
690 l.append(greatBlock13)
691 l.append(greatBlock23)
692 l.append(greatBlock33)
693
694 piece = MakeCompound(l)
695
696 # Add in study
697 # ------------
698
699 idpiece = addToStudy(piece, "Cubes2pyGibi")
700 #geom.InsertOp.Export(piece,"piece.brep", "BREP")