# -*- 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
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)
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
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)
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]]
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:
with_solid = True
global geompy
- geompy = geomBuilder.New(study)
+ geompy = geomBuilder.New()
O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
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)
# 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):
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:
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)
# --- 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
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)
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
# --- 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
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)
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.]:
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))