Salome HOME
Copyright update 2022
[modules/geom.git] / src / Tools / t_shape / t_shape_builder.py
index 8a77a8b099c8bbda88a73ccc076a831f47108add..fca067f071e4a33ca2236abff8695d47fb4ba437 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2016  EDF R&D
+# Copyright (C) 2014-2022  EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -29,13 +29,11 @@ import time
 
 geompy = None
 
-def demidisk(study, r1, a1, roty=0, solid_thickness=0):
+def demidisk(r1, a1, roty=0, solid_thickness=0):
   if solid_thickness < 1e-7:
     with_solid = False
   else:
     with_solid = True
-
-  #geompy = geomBuilder.New(study)
   
   O = geompy.MakeVertex(0, 0, 0)
   OX = geompy.MakeVectorDXDYDZ(1, 0, 0) 
@@ -67,7 +65,7 @@ def demidisk(study, r1, a1, roty=0, solid_thickness=0):
   arc1 = geompy.MakeArc(v[1], v7, v[3])
   l[0] = geompy.MakeLineTwoPnt(v[1], v[3])
   face1 = geompy.MakeFaceWires([arc1, l[0]], 1)
-  part1 = geompy.MakePartition([face1], [l[2], l[4], l[5], l[6], l[7]], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
+  part1 = geompy.MakePartition([face1], [l[2], l[4], l[5], l[6], l[7]], [], [], geompy.ShapeType["FACE"], 0, [], 0)
   
   if with_solid:
     # Add some faces corresponding to the solid layer outside
@@ -101,8 +99,7 @@ def demidisk(study, r1, a1, roty=0, solid_thickness=0):
   else:
     return v, l, arc1, part1
 
-def pointsProjetes(study, vref, face):
-  #geompy = geomBuilder.New(study)
+def pointsProjetes(vref, face):
   vface = geompy.ExtractShapes(face, geompy.ShapeType["VERTEX"], True)
   vord = list(range(len(vref)))
   plan = geompy.MakePlaneThreePnt(vref[0], vref[1], vref[-1], 10000)
@@ -114,8 +111,7 @@ def pointsProjetes(study, vref, face):
       vord[dist[0][1]] = vface[i]
   return vord
 
-def arcsProjetes(study, vf, face):
-  #geompy = geomBuilder.New(study)
+def arcsProjetes(vf, face):
   lface = geompy.ExtractShapes(face, geompy.ShapeType["EDGE"], True)
   lord = list(range(3))
   ends = [vf[1], vf[6], vf[7], vf[3]]
@@ -130,7 +126,7 @@ def arcsProjetes(study, vf, face):
     pass
   return lord
  
-def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
+def build_shape(r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
   """ Builds the final shape """
 
   if progressBar is not None:
@@ -143,7 +139,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
     with_solid = True
   
   global geompy
-  geompy = geomBuilder.New(study)
+  geompy = geomBuilder.New()
   
   O = geompy.MakeVertex(0, 0, 0)
   OX = geompy.MakeVectorDXDYDZ(1, 0, 0) 
@@ -157,7 +153,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
     a1 = 45.0*(1.0 -ratio)/seuilmax
 
   # --- Creation of the jonction faces
-  [faci, sect45, arc1, l1, lord90, lord45, edges, arcextru] = jonction(study, r1, r2,\
+  [faci, sect45, arc1, l1, lord90, lord45, edges, arcextru] = jonction(r1, r2,\
                                                                        h1, h2, a1)
   if progressBar is not None:
     progressBar.addSteps(2)
@@ -167,7 +163,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
     # The same code is executed again with different external radiuses in order
     # to get the needed faces and edges to build the solid layer of the pipe
     [faci_ext, sect45_ext, arc1_ext, l1_ext, \
-     lord90_ext, lord45_ext, edges_ext, arcextru_ext] = jonction(study, r1 + solid_thickness, r2 + solid_thickness,\
+     lord90_ext, lord45_ext, edges_ext, arcextru_ext] = jonction(r1 + solid_thickness, r2 + solid_thickness,\
                                                                  h1, h2, a1)
     faces_jonction_ext = []
     for i,l in enumerate(lord90):
@@ -195,7 +191,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
   faces_coupe = faci[5:]
   if with_solid:
     faces_coupe = faci[5:]+faces_jonction_ext[:3]
-  base2 = geompy.MakePartition(faces_coupe, [], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
+  base2 = geompy.MakePartition(faces_coupe, [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
   extru2 = geompy.MakePrismVecH(base2, OZ, h2)
 
   if progressBar is not None:
@@ -227,7 +223,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
   faces_coupe = faci[:5]
   if with_solid:
     faces_coupe.extend(faces_jonction_ext[-7:])
-  raccord = geompy.MakePartition([garder], faces_coupe + [arcextru], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True)
+  raccord = geompy.MakePartition([garder], faces_coupe + [arcextru], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
   assemblage = geompy.MakeCompound([raccord, extru1, extru2])
   assemblage = geompy.MakeGlueFaces(assemblage, 1e-7)
 
@@ -246,7 +242,7 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
     
   # --- Partie inférieure
   
-  v3, l3, arc3, part3 = demidisk(study, r1, a1, 180.0, solid_thickness)
+  v3, l3, arc3, part3 = demidisk(r1, a1, 180.0, solid_thickness)
   extru3 = geompy.MakePrismVecH(part3, OX, h1)
 
   # --- Symétrie
@@ -264,11 +260,10 @@ def build_shape(study, r1, r2, h1, h2, solid_thickness=0, progressBar=None ):
   return final
 
 
-def jonction(study, r1, r2, h1, h2, a1):
+def jonction(r1, r2, h1, h2, a1):
   """ Builds the jonction faces and
   returns what is needed to build the whole pipe
   """
-  #geompy = geomBuilder.New(study)
   
   O = geompy.MakeVertex(0, 0, 0)
   OX = geompy.MakeVectorDXDYDZ(1, 0, 0) 
@@ -276,8 +271,8 @@ def jonction(study, r1, r2, h1, h2, a1):
   OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
   
   # --- sections droites des deux demi cylindres avec le partionnement
-  v1, l1, arc1, part1 = demidisk(study, r1, a1, 0.)
-  v2, l2, arc2, part2 = demidisk(study, r2, a1, 90.0)
+  v1, l1, arc1, part1 = demidisk(r1, a1, 0.)
+  v2, l2, arc2, part2 = demidisk(r2, a1, 90.0)
  
   # --- extrusion des sections --> demi cylindres de travail, pour en extraire les sections utilisées au niveau du Té
   #     et enveloppe cylindrique du cylindre principal
@@ -299,13 +294,13 @@ def jonction(study, r1, r2, h1, h2, a1):
 
   # --- liste ordonnée des points projetés sur les deux sections
 
-  vord45 = pointsProjetes(study, v1, sect45)
-  vord90 = pointsProjetes(study, v2, sect90)
+  vord45 = pointsProjetes(v1, sect45)
+  vord90 = pointsProjetes(v2, sect90)
 
   # --- identification des projections des trois arcs de cercle, sur les deux sections.
   
-  lord45 = arcsProjetes(study, vord45, sect45)
-  lord90 = arcsProjetes(study, vord90, sect90)
+  lord45 = arcsProjetes(vord45, sect45)
+  lord90 = arcsProjetes(vord90, sect90)
  
   # --- abaissement des quatre points centraux de la section du cylindre secondaire
   
@@ -330,7 +325,7 @@ def jonction(study, r1, r2, h1, h2, a1):
     plan = geompy.MakePlaneThreePnt(p0, p1, p2, 10000)
     #geompy.addToStudy(plan, "plan%d"%i)
     section = geompy.MakeSection(plan, arcextru, True)
-    secpart = geompy.MakePartition([section], [sect45, sect90], [], [], geompy.ShapeType["EDGE"], 0, [], 0, True)
+    secpart = geompy.MakePartition([section], [sect45, sect90], [], [], geompy.ShapeType["EDGE"], 0, [], 0)
     #geompy.addToStudy(secpart, "secpart%d"%i)
     lsec = geompy.ExtractShapes(secpart, geompy.ShapeType["EDGE"], True)
 
@@ -390,8 +385,7 @@ def jonction(study, r1, r2, h1, h2, a1):
 def test_t_shape_builder():
   """For testing purpose"""
   salome.salome_init()
-  theStudy = salome.myStudy
-  geompy = geomBuilder.New(theStudy)
+  geompy = geomBuilder.New()
   for r1 in [1., 100.]:
     for r2 in [0.9*r1, 0.5*r1, 0.1*r1, 0.05*r1]:
       for thickness in [r1/100., r1/10., r1/2.]:
@@ -399,7 +393,7 @@ def test_t_shape_builder():
         h1 = r1 * 2.0
         h2 = h1
         try:
-          res = build_shape(theStudy, r1, r2, h1, h2, thickness)
+          res = build_shape(r1, r2, h1, h2, thickness)
           geompy.addToStudy(res, "res_%f_%f_%f"%(r1,r2, thickness))
         except:
           print("problem with res_%f_%f_%f"%(r1,r2, thickness))