X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FrotTrans.py;h=4ee11b88e49eb517143a5ba3ee1d85899bf587c1;hb=eb7885b577e8b570a49ff7e755b8a11302d8571e;hp=ec9012e5b2ce7e026286aecfa06715359a45bf9f;hpb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;p=modules%2Fsmesh.git diff --git a/src/Tools/blocFissure/gmu/rotTrans.py b/src/Tools/blocFissure/gmu/rotTrans.py index ec9012e5b..4ee11b88e 100644 --- a/src/Tools/blocFissure/gmu/rotTrans.py +++ b/src/Tools/blocFissure/gmu/rotTrans.py @@ -17,18 +17,19 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Opérateur de rotation translation d'un objet centré à l'origine""" 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() -# ----------------------------------------------------------------------------- -# --- operateur de rotation translation d'un objet centré à l'origine +O, OX, OY, OZ = triedreBase() def rotTrans(objet, orientation, point, normal, trace = False): """ @@ -41,33 +42,34 @@ def rotTrans(objet, orientation, point, normal, trace = False): @return trans : objet transformé (geomObject) """ logging.info("start") + planXY = geompy.MakePlaneLCS(None, 2000, 1) projXY = geompy.MakeProjection(normal, planXY) - [v1,v2] = geompy.ExtractShapes(projXY, geompy.ShapeType["VERTEX"], False) - xyz1 = geompy.PointCoordinates(v1) - xyz2 = geompy.PointCoordinates(v2) + + [v_1,v_2] = geompy.ExtractShapes(projXY, geompy.ShapeType["VERTEX"], False) + xyz1 = geompy.PointCoordinates(v_1) + xyz2 = geompy.PointCoordinates(v_2) x = xyz2[0] - xyz1[0] y = xyz2[1] - xyz1[1] sinalpha = y / math.sqrt(x*x + y*y) cosalpha = x / math.sqrt(x*x + y*y) alpha = math.asin(sinalpha) - if cosalpha < 0: + if ( cosalpha < 0. ): alpha = math.pi -alpha beta = geompy.GetAngleRadians(OZ, normal) - [v1,v2] = geompy.ExtractShapes(normal, geompy.ShapeType["VERTEX"], False) - xyz1 = geompy.PointCoordinates(v1) - xyz2 = geompy.PointCoordinates(v2) - z = xyz2[2] - xyz1[2] - if z < 0: + [v_1,v_2] = geompy.ExtractShapes(normal, geompy.ShapeType["VERTEX"], False) + xyz1 = geompy.PointCoordinates(v_1) + xyz2 = geompy.PointCoordinates(v_2) + if ( (xyz2[2] - xyz1[2]) < 0 ): beta = math.pi -beta rot0 = geompy.MakeRotation(objet, OX, orientation*math.pi/180.0) rot1 = geompy.MakeRotation(rot0, OZ, alpha) axe2 = geompy.MakeRotation(OY, OZ, alpha) rot2 = geompy.MakeRotation(rot1, axe2, beta -math.pi/2.) - logging.debug("alpha",alpha) - logging.debug("beta",beta) + logging.debug("alpha %f",alpha) + logging.debug("beta %f",beta) if trace: geomPublish(initLog.debug, rot1, 'rot1' ) geomPublish(initLog.debug, axe2, 'axe2' ) @@ -75,4 +77,5 @@ def rotTrans(objet, orientation, point, normal, trace = False): xyz = geompy.PointCoordinates(point) trans = geompy.MakeTranslation(rot2, xyz[0], xyz[1], xyz[2]) + return trans