Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/obdatacopier.py')
-rw-r--r--release/scripts/obdatacopier.py142
1 files changed, 142 insertions, 0 deletions
diff --git a/release/scripts/obdatacopier.py b/release/scripts/obdatacopier.py
new file mode 100644
index 00000000000..82cabdb8b36
--- /dev/null
+++ b/release/scripts/obdatacopier.py
@@ -0,0 +1,142 @@
+#!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.'
+"""
+
+# ----------------------------------------------------------
+# Object DATA copier 0.1.1
+# (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 *
+
+
+O = Object.GetSelected()
+
+def renew():
+ global O
+ MAJ='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ O = Object.GetSelected()
+ param= [ p for p in dir(O[0].getData()) if (p.find('set')!=0 and p.find('get')!=0 and (MAJ.find(p[0])==-1 or (p in ['R','G','B']))) ]
+ PARAM={}
+ evt=4
+ doc='doc'
+ for p in param:
+ try:
+ if p=='mode':
+ try:
+ exec "doc=str(%s.Modes)+' ; value : %s'"%( O[0].getType(), str(O[0].getData().mode) )
+ except:
+ exec """doc= '%s'+' value = '+ str(O[0].getData().%s)"""%(p,p)
+ elif p=='type':
+ try:
+ exec "doc=str(%s.Types)+' ; value : %s'"%( O[0].getType(), str(O[0].getData().type) )
+ except:
+ exec """doc= '%s'+' value = '+ str(O[0].getData().%s)"""%(p,p)
+ else:
+ exec """doc= '%s'+' value = '+ str(O[0].getData().%s)"""%(p,p)
+ if doc.find('built-in')!=-1:
+ exec """doc= 'This is a function ! Doc = '+ str(O[0].getData().%s.__doc__)"""%(p)
+ except:
+ doc='Doc...'
+ PARAM[p]=[Create(0),evt,doc]
+ evt+=1
+ return PARAM
+
+def copy():
+ global PARAM
+ OBJECT=None
+ TYPE=None
+
+ for O in Blender.Object.GetSelected():
+ if O.getType()!='Mesh' and O.getType()!='Empty' :
+ if OBJECT==None and TYPE==None:
+ OBJECT=O.getData()
+ TYPE= O.getType()
+
+ elif O.getType()==TYPE:
+ for p in PARAM.keys():
+ if PARAM[p][0].val==1:
+ try:
+ exec "O.getData().%s=OBJECT.%s"%(p,p)
+ except:
+ errormsg = "Type Error|It's not possible to copy %s to %s types." % (p,TYPE)
+ Blender.Draw.PupMenu(errormsg)
+
+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, O
+ 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)
+ Text(O[0].getType()+" DATA copier")
+
+
+ max=size[3] / 22 -2
+ pos = 1
+ 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)