#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+"""tore et plan de fissure"""
import logging
+import math
+
from .geomsmesh import geompy
from .geomsmesh import geomPublish
-from .geomsmesh import geomPublishInFather
+
from . import initLog
-import math
+
from .triedreBase import triedreBase
O, OX, OY, OZ = triedreBase()
-# -----------------------------------------------------------------------------
-# --- tore et plan de fissure
-
def toreFissure(minRad,allonge,rayTore):
"""
Construction de la geometrie du tore elliptique autour du front de fissure.
@param minRad :petit rayon
@param allonge :rapport grand rayon / petit rayon
@param rayTore :rayon du tore construit autour de la generatrice de l'ellipse
- @return (generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part) : ellipse, section du tore,
+ @return (generatrice, face_gen_fiss, pipe, face_fissure, plane, pipe_part) : ellipse, section du tore,
tore plein, face plane de le fissure, plan de la fissure, tore partitioné par le plan de fissure.
"""
- logging.info("start ", minRad, allonge, rayTore)
-
- Vertex_1 = geompy.MakeVertex( minRad, 0, 0)
- Vertex_2 = geompy.MakeVertex(-minRad, 0, 0)
- Vertex_3 = geompy.MakeRotation(Vertex_1, OZ, 45*math.pi/180.0)
- Arc_1 = geompy.MakeArc(Vertex_1, Vertex_2, Vertex_3)
- generatrice = geompy.MakeScaleAlongAxes(Arc_1, O, 1, allonge, 1)
-
- #geomPublish(initLog.debug, Vertex_1, 'Vertex_1' )
- #geomPublish(initLog.debug, Vertex_2, 'Vertex_2' )
- #geomPublish(initLog.debug, Vertex_3, 'Vertex_3' )
- #geomPublish(initLog.debug, Arc_1, 'Arc_1' )
+ logging.info("start %s %s %s", minRad, allonge, rayTore)
+
+ vertex_1 = geompy.MakeVertex( minRad, 0., 0.)
+ vertex_2 = geompy.MakeVertex(-minRad, 0., 0.)
+ vertex_3 = geompy.Makerotation(vertex_1, OZ, 45.*math.pi/180.0)
+ arc = geompy.MakeArc(vertex_1, vertex_2, vertex_3)
+ generatrice = geompy.MakeScaleAlongAxes(arc, O, 1, allonge, 1)
+
+ #geomPublish(initLog.debug, vertex_1, 'vertex_1' )
+ #geomPublish(initLog.debug, vertex_2, 'vertex_2' )
+ #geomPublish(initLog.debug, vertex_3, 'vertex_3' )
+ #geomPublish(initLog.debug, arc, 'arc' )
#geomPublish(initLog.debug, generatrice, 'generatrice' )
# --- face circulaire sur la generatrice, pour extrusion
- Circle_1 = geompy.MakeCircle(O, OY, rayTore)
- Rotation_1 = geompy.MakeRotation(Circle_1, OY, -90*math.pi/180.0)
- Translation_1 = geompy.MakeTranslation(Rotation_1, minRad, 0, 0)
- FaceGenFiss = geompy.MakeFaceWires([Translation_1], 1)
+ circle = geompy.MakeCircle(O, OY, rayTore)
+ rotation = geompy.MakeRotation(circle, OY, -90.*math.pi/180.0)
+ translation = geompy.MakeTranslation(rotation, minRad, 0., 0.)
+ face_gen_fiss = geompy.MakeFaceWires([translation], 1)
- #geomPublish(initLog.debug, Circle_1, 'Circle_1' )
- #geomPublish(initLog.debug, Rotation_1, 'Rotation_1' )
- #geomPublish(initLog.debug, Translation_1, 'Translation_1' )
- #geomPublish(initLog.debug, FaceGenFiss, 'FaceGenFiss' )
+ #geomPublish(initLog.debug, circle, 'circle' )
+ #geomPublish(initLog.debug, rotation, 'rotation' )
+ #geomPublish(initLog.debug, translation, 'translation' )
+ #geomPublish(initLog.debug, face_gen_fiss, 'face_gen_fiss' )
# --- tore extrude
- Pipe_1 = geompy.MakePipe(FaceGenFiss, generatrice)
+ pipe = geompy.MakePipe(face_gen_fiss, generatrice)
# --- plan fissure, delimite par la generatrice
- Scale_1_vertex_3 = geompy.GetSubShape(generatrice, [3])
- Line_1 = geompy.MakeLineTwoPnt(Vertex_1, Scale_1_vertex_3)
- FaceFissure = geompy.MakeFaceWires([generatrice, Line_1], 1)
+ scale_vertex_3 = geompy.GetSubShape(generatrice, [3])
+ line = geompy.MakeLineTwoPnt(vertex_1, scale_vertex_3)
+ face_fissure = geompy.MakeFaceWires([generatrice, line], 1)
- #geomPublishInFather(initLog.debug, generatrice, Scale_1_vertex_3, 'Scale_1:vertex_3' )
- #geomPublish(initLog.debug, Line_1, 'Line_1' )
- #geomPublish(initLog.debug, FaceFissure, 'FaceFissure' )
+ #geomPublishInFather(initLog.debug, generatrice, scale_vertex_3, 'scale_1:vertex_3' )
+ #geomPublish(initLog.debug, line, 'line' )
+ #geomPublish(initLog.debug, face_fissure, 'face_fissure' )
# --- tore coupe en 2 demi tore de section 1/2 disque
- Plane_1 = geompy.MakePlane(O, OZ, 2000)
- Pipe1Part = geompy.MakePartition([Pipe_1], [Plane_1], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
- geomPublish(initLog.debug, Pipe1Part , 'Pipe1Part' )
+ plane = geompy.MakePlane(O, OZ, 2000)
+ pipe_part = geompy.MakePartition([pipe], [plane], [], [], geompy.ShapeType["SOLID"], 0, [], 1)
+ geomPublish(initLog.debug, pipe_part , 'pipe_part' )
- return generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part
+ return generatrice, face_gen_fiss, pipe, face_fissure, plane, pipe_part
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+"""Calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)"""
import logging
from .geomsmesh import geompy
-# -----------------------------------------------------------------------------
-# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
-
def whichSide(face, obj, tol = 1.e-3):
"""
Position d'un objet par rapport a une face (non nécessairement plane).
nbFaces = geompy.NbShapes(obj, geompy.ShapeType["FACE"]) # --- attention ! pour une seule face presente, renvoie 2
logging.debug(" nbFaces %s", nbFaces)
vertices = geompy.ExtractShapes(obj, geompy.ShapeType["VERTEX"], False)
+
if nbEdges > 0 and nbFaces == 0: # --- edges
if nbEdges <= 2:
point = geompy.MakeVertexOnCurve(obj, 0.5)
for anEdge in edges:
point = geompy.MakeVertexOnCurve(anEdge, 0.5)
vertices.append(point)
+
elif nbFaces >0: # --- faces
if nbFaces <=2:
point = geompy.MakeVertexOnSurface(obj, 0.5, 0.5)
vertices.append(point)
- if nbFaces > 2:
+ else:
faces = geompy.ExtractShapes(obj, geompy.ShapeType["FACE"], False)
for aFace in faces:
point = geompy.MakeVertexOnSurface(aFace, 0.5, 0.5)
vertices.append(point)
+
else: # --- vertices
vertices = [obj]
+
for vertex in vertices:
distance = geompy.MinDistance(vertex, face)
logging.debug(" distance %s", distance)
side = -1
break
logging.debug(" side %s", side)
- return side
+ return side
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+"""Calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)"""
import logging
-from .geomsmesh import geompy
-# -----------------------------------------------------------------------------
-# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
+from .geomsmesh import geompy
def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3):
"""
nbEdges = geompy.NbShapes(obj, geompy.ShapeType["EDGE"]) # --- attention ! pour une seule edge presente, renvoie 2
logging.debug(" nbEdges %s", nbEdges)
vertices = geompy.ExtractShapes(obj, geompy.ShapeType["VERTEX"], False)
+
if nbEdges > 0 : # --- edges
if nbEdges <= 2:
point = geompy.MakeVertexOnCurve(obj, 0.5)
vertices.append(point)
else: # --- vertices
vertices = [obj]
+
nbOnRef = 0
nbOnOther = 0
for vertex in vertices:
break
else:
nbMiss += 1
- pass # peut-être inside, tester les autres faces
+ # peut-être inside, tester les autres faces
else:
if i == ifil:
nbOnRef +=1 # le point est sur la face de référence, on continue avec les autres points
break
else:
nbOnOther += 1 # le point est sur une autre face, mais il peut aussi être sur la face de référence...
- pass # on peut tester les autres faces
+ # on peut tester les autres faces
if nbMiss == len(facerefs):
side = 1 # inside
if side != 0:
break
+
if side == 0 and nbOnRef < len(vertices):
- side = 1 # inside
+ side = 1 # inside
logging.debug(" side %s", side)
- return side
+ return side