X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FTools%2Ft_shape%2Ft_shape_builder.py;h=fca067f071e4a33ca2236abff8695d47fb4ba437;hb=refs%2Fheads%2FV9_9_BR;hp=8a77a8b099c8bbda88a73ccc076a831f47108add;hpb=b0f67e0ecd3e6a48a184fd6462862b359d736c7a;p=modules%2Fgeom.git diff --git a/src/Tools/t_shape/t_shape_builder.py b/src/Tools/t_shape/t_shape_builder.py index 8a77a8b09..fca067f07 100644 --- a/src/Tools/t_shape/t_shape_builder.py +++ b/src/Tools/t_shape/t_shape_builder.py @@ -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))