Salome HOME
projects
/
modules
/
geom.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Copyright update 2022
[modules/geom.git]
/
src
/
Tools
/
t_shape
/
t_shape_builder.py
diff --git
a/src/Tools/t_shape/t_shape_builder.py
b/src/Tools/t_shape/t_shape_builder.py
index 8a77a8b099c8bbda88a73ccc076a831f47108add..fca067f071e4a33ca2236abff8695d47fb4ba437 100644
(file)
--- 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 -*-
# -*- coding: utf-8 -*-
-# Copyright (C) 2014-20
16
EDF R&D
+# Copyright (C) 2014-20
22
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))