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