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 -*-
 # -*- 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
 #
 # 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
 
 
 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
   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) 
   
   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)
   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
   
   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
 
   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)
   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
 
       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]]
   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
  
     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:
   """ 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
     with_solid = True
   
   global geompy
-  geompy = geomBuilder.New(study)
+  geompy = geomBuilder.New()
   
   O = geompy.MakeVertex(0, 0, 0)
   OX = geompy.MakeVectorDXDYDZ(1, 0, 0) 
   
   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
     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)
                                                                        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, \
     # 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):
                                                                  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]
   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:
   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:])
   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)
 
   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
   
     
   # --- 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
   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
 
 
   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
   """
   """ 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) 
   
   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
   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
  
   # --- 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
 
 
   # --- 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.
   
 
   # --- 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
   
  
   # --- 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)
     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)
 
     #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()
 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.]:
   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:
         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))
           geompy.addToStudy(res, "res_%f_%f_%f"%(r1,r2, thickness))
         except:
           print("problem with res_%f_%f_%f"%(r1,r2, thickness))