i have made an ArcPy code to virtualy snap the lines , so the script calculats the bearing of the lines , snap the origin of the vector, then build new lines from new snapped points using the bearing.
but i have noticed a weird error using the function BearingDistanceToLine_management in arcpy it add an angle of to the bearings , without understanding the cause of the error i have eliminated the difference by 180 - 57.935
import arcpy
#arcpy.AddField_management("directions" , "bearing" , "FLOAT" )
arcpy.CalculateField_management("directions" , "bearing" , "180 - 57.935 + math.atan2(( !Shape.firstpoint.X! - !Shape.lastpoint.X! ),( !Shape.firstpoint.Y! - !Shape.lastpoint.Y! ) ) * (180 / math.pi)" , "PYTHON_9.3")
arcpy.Snap_edit("borne" , [["D_GPS", "VERTEX", "5"]] )
arcpy.MakeFeatureLayer_management("borne" , "borne_join")
#arcpy.AddField_management("borne_join" , "X" , "DOUBLE" )
#arcpy.AddField_management("borne_join" , "Y" , "DOUBLE" )
arcpy.CalculateField_management("borne_join" , "X" , "!Shape.lastpoint.X!" , "PYTHON_9.3")
arcpy.CalculateField_management("borne_join" , "Y" , "!Shape.lastpoint.Y!" , "PYTHON_9.3")
#arcpy.AddField_management("borne_join" , "distance" , "SHORT" )
arcpy.CalculateField_management("borne_join" , "distance" , "5" , "PYTHON_9.3")
arcpy.MakeFeatureLayer_management("directions" , "dir_join")
arcpy.AddJoin_management("dir_join" , "borne_id" , "borne_join" , "id" )
arcpy.BearingDistanceToLine_management("dir_join" , "new_dir" , "sde.sde.borne.X" , "sde.sde.borne.Y" , "sde.sde.borne.distance" , "METERS" , "sde.sde.directions.bearing" , "DEGREES" , "GEODESIC" )
arcpy.Delete_management("borne_join")
arcpy.Delete_management("dir_join")