diff options
Diffstat (limited to 'release/scripts/obdatacopier.py')
-rw-r--r-- | release/scripts/obdatacopier.py | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/release/scripts/obdatacopier.py b/release/scripts/obdatacopier.py deleted file mode 100644 index 2f5617951de..00000000000 --- a/release/scripts/obdatacopier.py +++ /dev/null @@ -1,215 +0,0 @@ -#!BPY - -""" Registration info for Blender menus: <- these words are ignored -Name: 'Data Copier' -Blender: 232 -Group: 'Object' -Tip: 'Copy data from active object to other selected ones.' -""" - -__author__ = "Jean-Michel Soler (jms), Campbell Barton (Ideasman42)" -__url__ = ("blender", "blenderartists.org", -"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_lampdatacopier.htm", -"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender") -__version__ = "0.1.2" - -__bpydoc__ = """\ -Use "Data Copier" to copy attributes from the active object to other selected ones of -its same type. - -This script is still in an early version but is already useful for copying -attributes for some types of objects like lamps and cameras. - -Usage: - -Select the objects that will be updated, select the object whose data will -be copied (they must all be of the same type, of course), then run this script. -Toggle the buttons representing the attributes to be copied and press "Copy". -""" - -# ---------------------------------------------------------- -# Object DATA copier 0.1.2 -# (c) 2004 jean-michel soler -# ----------------------------------------------------------- -#---------------------------------------------- -# Page officielle/official page du blender python Object DATA copier: -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_lampdatacopier.htm -# Communiquer les problemes et erreurs sur: -# To Communicate problems and errors on: -# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender -#--------------------------------------------- -# Blender Artistic License -# http://download.blender.org/documentation/html/x21254.html -#--------------------------------------------- - -import Blender -from Blender import * -from Blender.Draw import * -from Blender.BGL import * - - -scn= Blender.Scene.GetCurrent() - -type_func_method= type(dir) -type_func= type(lambda:i) -type_dict= type({}) -# type_list= type([]) - -IGNORE_VARS = 'users', 'fakeUser', 'edges', 'faces', 'verts', 'elements' - -def renew(): - scn= Blender.Scene.GetCurrent() - act_ob= scn.objects.active - if act_ob==None: - return {} - - act_ob_type= act_ob.getType() - act_ob_data= act_ob.getData(mesh=1) - - if act_ob_data==None: # Surf? - return {} - - PARAM={} - evt=4 - doc='doc' - - for prop_name in dir(act_ob_data): - if not prop_name.startswith('__') and prop_name not in IGNORE_VARS: - # Get the type - try: exec 'prop_type= type(act_ob_data.%s)' % prop_name - except: prop_type= None - - if prop_type != None and prop_type not in (type_func_method, type_func, type_dict): - - # Now we know that the attribute can be listed in the UI Create a button and tooltip. - - # Tooltip - try: - if prop_name=='mode': - try: - exec "doc=str(%s.Modes)+' ; value : %s'"%( act_ob_type, str(act_ob_data.mode) ) - except: - exec """doc= '%s'+' value = '+ str(act_ob.getData(mesh=1).%s)"""%(prop_name, prop_name) - elif prop_name=='type': - try: - exec "doc=str(%s.Types)+' ; value : %s'"%( act_ob_type, str(act_ob_data.type) ) - except: - exec """doc= '%s'+' value = '+ str(act_ob.getData(mesh=1).%s)"""%(prop_name, prop_name) - else: - exec """doc= '%s'+' value = '+ str(act_ob_data.%s)"""%(prop_name, prop_name) - if doc.find('built-in')!=-1: - exec """doc= 'This is a function ! Doc = '+ str(act_ob_data.%s.__doc__)"""% prop_name - except: - doc='Doc...' - - # Button - PARAM[prop_name]= [Create(0), evt, doc] - evt+=1 - - return PARAM - -def copy(): - global PARAM - - scn= Blender.Scene.GetCurrent() - act_ob= scn.getActiveObject() - if act_ob==None: - Blender.Draw.PupMenu('Error|No Active Object.') - return - - act_ob_type= act_ob.getType() - - if act_ob_type in ('Empty', 'Surf'): - Blender.Draw.PupMenu('Error|Copying Empty or Surf object data isnt supported.') - return - - act_ob_data= act_ob.getData(mesh=1) - - print '\n\nStarting copy for object "%s"' % act_ob.name - some_errors= False - for ob in scn.objects.context: - if ob != act_ob and ob.getType() == act_ob_type: - ob_data= None - for prop_name, value in PARAM.iteritems(): - if value[0].val==1: - - # Init the object data if we havnt alredy - if ob_data==None: - ob_data= ob.getData(mesh=1) - - try: - exec "ob_data.%s = act_ob_data.%s"%(prop_name, prop_name) - except: - some_errors= True - print 'Cant copy property "%s" for type "%s"' % (prop_name, act_ob_type) - if some_errors: - Blender.Draw.PupMenu('Some attributes could not be copied, see console for details.') - -PARAM= renew() - -def EVENT(evt,val): - pass - -def BUTTON(evt): - global PARAM - if (evt==1): - Exit() - - if (evt==2): - copy() - Blender.Redraw() - - if (evt==3): - PARAM= renew() - Blender.Redraw() - -def DRAW(): - global PARAM - - scn= Blender.Scene.GetCurrent() - act_ob= scn.objects.active - - glColor3f(0.7, 0.7, 0.7) - glClear(GL_COLOR_BUFFER_BIT) - glColor3f(0.1, 0.1, 0.15) - - size=Buffer(GL_FLOAT, 4) - glGetFloatv(GL_SCISSOR_BOX, size) - size= size.list - for s in [0,1,2,3]: size[s]=int(size[s]) - ligne=20 - - Button("Exit",1,20,4,80,ligne) - Button("Copy",2,102,4,80,ligne) - Button("Renew",3,184,4,80,ligne) - - glRasterPos2f(20, ligne*2-8) - if act_ob: - Text(act_ob.getType()+" DATA copier") - else: - Text("Please select an object") - - - max=size[3] / 22 -2 - pos = 0 - decal = 20 - key=PARAM.keys() - key.sort() - for p in key: - if pos==max: - decal+=102 - pos=1 - else: - pos+=1 - - PARAM[p][0]=Toggle(p, - PARAM[p][1], - decal, - pos*22+22, - 100, - 20, - PARAM[p][0].val, - str(PARAM[p][2])) - - -Register(DRAW,EVENT,BUTTON) |