#!BPY

""" Registration info for Blender menus: <- these words are ignored
Name: 'Rvk1toRvk2'
Blender: 232
Group: 'Misc'
Tip: 'Copy the rvk (1, or armature, lattice, or anything else mesh deformation except surface sbdivision) of the active object to rvk (2) of the second selected object.'
"""
#----------------------------------------------
#   jm soler  05/2004 :  'Rvk1toRvk2'
#        Copy the rvk (1, or armature, lattice, or 
#        any mesh deformation except surface 
#        sbdivision) of the active object to rvk (2) of 
#        the second selected object. Create rvk or modify 
#        absolute key if needed.
#----------------------------------------------
# Page officielle :
#   http://jmsoler.free.fr/util/blenderfile/py/rvk1_torvk2.py
# Communiquer les problemes et erreurs sur:
#   http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender
#---------------------------------------------
#  changelog : 
#        - a test on mesh parity between getraw and getrawfromobject  
#          when there is active subsurf division.     
#---------------------------------------------

import Blender
from Blender import NMesh,Draw,Object

def rvk2rvk():
  try:
    SUBMODIF=0
    RVK2=Object.GetSelected()[0]
    RVK1=Object.GetSelected()[1]
    
    FRAME=Blender.Get('curframe')
  
    DATA2=RVK2.getData()
    if DATA2.getMode()%NMesh.Modes['SUBSURF']:
      SUBSURF2=DATA2.getSubDivLevels()
      if SUBSURF2[0]!=0:
         name = "The active object has a subsurf level different from 0 ... %t| Let script do the the modification for you ? %x1| you prefer do it yourself ? %x2 " 
         result = Draw.PupMenu(name)
         if result==1:      
             DATA2.mode=DATA2.mode or NMesh.Modes['SUBSURF']
             SUBMODIF=1 
             DATA2.update()
             RVK2.makeDisplayList() 
             Blender.Redraw()
         else:
             return
              
    RVK2NAME=Object.GetSelected()[0].getName()
    mesh=RVK1.getData()
    meshrvk2=NMesh.GetRawFromObject(RVK2NAME)
    for v in meshrvk2.verts:
       i= meshrvk2.verts.index(v)
       v1=mesh.verts[i]
       for n in range(len(v.co)):
            v1.co[n]=v.co[n]
    
    mesh.update() 
    mesh.insertKey(FRAME,'relative')
    mesh.update()
    RVK1.makeDisplayList() 

    if SUBMODIF==1:
         DATA2.mode=DATA2.mode+NMesh.Modes['SUBSURF']
         SUBMODIF=0
         DATA2.update()
         RVK2.makeDisplayList() 

     Blender.Redraw()
  except:
    print 'problem  : not object selected or not mesh' 
  

rvk2rvk()