mesh cleanup optimized with some LC's
renameobjectbyblock - made more readable, only operate on objects in the current scene. optimized dict usage.
This commit is contained in:
parent
309fb2ec26
commit
5f761a4707
@ -55,10 +55,7 @@ def rem_free_verts(me):
|
|||||||
for v in e: # loop on edge verts
|
for v in e: # loop on edge verts
|
||||||
vert_users[v.index]+=1
|
vert_users[v.index]+=1
|
||||||
|
|
||||||
verts_free= []
|
verts_free= [i for i, users in enumerate(vert_users) if not users]
|
||||||
for i, users in enumerate(vert_users):
|
|
||||||
if not users:
|
|
||||||
verts_free.append(i)
|
|
||||||
|
|
||||||
if verts_free:
|
if verts_free:
|
||||||
pass
|
pass
|
||||||
@ -68,14 +65,17 @@ def rem_free_verts(me):
|
|||||||
def rem_free_edges(me, limit=None):
|
def rem_free_edges(me, limit=None):
|
||||||
''' Only remove based on limit if a limit is set, else remove all '''
|
''' Only remove based on limit if a limit is set, else remove all '''
|
||||||
def sortPair(a,b):
|
def sortPair(a,b):
|
||||||
return min(a,b), max(a,b)
|
if a>b:
|
||||||
|
return b,a
|
||||||
|
else:
|
||||||
|
return a,b
|
||||||
|
|
||||||
edgeDict= {} # will use a set when python 2.4 is standard.
|
edgeDict= {} # will use a set when python 2.4 is standard.
|
||||||
|
|
||||||
for f in me.faces:
|
for f in me.faces:
|
||||||
v= f.v
|
fidxs= [v.index for v in f.v]
|
||||||
for i in xrange(len(v)):
|
for i in xrange(len(fidxs)):
|
||||||
edgeDict[sortPair(v[i].index, v[i-1].index)]= None
|
edgeDict[sortPair(fidxs[i], fidxs[i-1])]= None
|
||||||
|
|
||||||
edges_free= []
|
edges_free= []
|
||||||
for e in me.edges:
|
for e in me.edges:
|
||||||
|
@ -46,37 +46,27 @@ from Blender.Draw import *
|
|||||||
from Blender.BGL import *
|
from Blender.BGL import *
|
||||||
|
|
||||||
|
|
||||||
O = Object.Get()
|
|
||||||
taglist=[]
|
O = Scene.GetCurrent().getChildren()
|
||||||
stringlist=[[],[]]
|
stringlist=[[],[]]
|
||||||
|
|
||||||
|
|
||||||
def renew(taglist):
|
def renew():
|
||||||
global O
|
global O
|
||||||
MAJ='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
|
||||||
O = Object.Get()
|
#O = Object.Get()
|
||||||
if CVS==0:
|
O= Scene.GetCurrent().getChildren()
|
||||||
param= [ [p.getName(),O.index(p),str(p.getType())] for p in O ]
|
#param= [ [p.name, i, p.getType()] for i, p in enumerate(O) ]
|
||||||
else:
|
|
||||||
param= [ [p.getName(),O.index(p),str(p.getType()),O[O.index(p)].isSelected()] for p in O ]
|
|
||||||
PARAM={}
|
PARAM={}
|
||||||
evt=9
|
evt=9
|
||||||
stringlist=[[],[],[]]
|
stringlist=[[],[],[]]
|
||||||
for p in param:
|
for i, ob in enumerate(O):
|
||||||
if p[0] in taglist or len(p)>3:
|
obname= ob.name
|
||||||
if CVS==0:
|
PARAM[obname] = [Create(ob.sel), evt, i, ob.getType(), Create(obname), evt+1, ob]
|
||||||
PARAM[p[0]]=[Create(1),evt,p[1],p[2],Create(p[0]),evt+1]
|
|
||||||
elif p[3]==1:
|
|
||||||
PARAM[p[0]]=[Create(1),evt,p[1],p[2],Create(p[0]),evt+1]
|
|
||||||
elif p[3]==0:
|
|
||||||
PARAM[p[0]]=[Create(0),evt,p[1],p[2],Create(p[0]),evt+1]
|
|
||||||
stringlist[0].append(evt+1)
|
stringlist[0].append(evt+1)
|
||||||
stringlist[1].append(p[0])
|
stringlist[1].append(obname)
|
||||||
stringlist[2].append(evt)
|
|
||||||
else:
|
|
||||||
PARAM[p[0]]=[Create(0),evt,p[1],p[2],Create(p[0]),evt+1]
|
|
||||||
stringlist[0].append(evt+1)
|
|
||||||
stringlist[1].append(p[0])
|
|
||||||
stringlist[2].append(evt)
|
stringlist[2].append(evt)
|
||||||
evt+=2
|
evt+=2
|
||||||
return PARAM,stringlist
|
return PARAM,stringlist
|
||||||
@ -89,22 +79,19 @@ alignment={'BEGIN' : [Create(1),5],
|
|||||||
'FULL' : [Create(0),8]}
|
'FULL' : [Create(0),8]}
|
||||||
|
|
||||||
def rename():
|
def rename():
|
||||||
global NEWNAME, alignment, O, taglist, PARAM, stringlist
|
global NEWNAME, alignment, O, PARAM, stringlist
|
||||||
taglist=[]
|
newname= NEWNAME.val
|
||||||
for p in PARAM.keys():
|
for obname, value in PARAM.iteritems():
|
||||||
if PARAM[p][0].val==1:
|
if value[0].val: # Selected
|
||||||
if alignment['END'][0].val:
|
if alignment['END'][0].val:
|
||||||
O[PARAM[p][2]].setName(p+NEWNAME.val)
|
value[6].setName(obname+newname)
|
||||||
taglist.append(p+NEWNAME.val)
|
|
||||||
elif alignment['BEGIN'][0].val:
|
elif alignment['BEGIN'][0].val:
|
||||||
O[PARAM[p][2]].setName(NEWNAME.val+p)
|
value[6].setName(newname+obname)
|
||||||
taglist.append(NEWNAME.val+p)
|
|
||||||
elif alignment['FULL'][0].val:
|
elif alignment['FULL'][0].val:
|
||||||
O[PARAM[p][2]].setName(NEWNAME.val)
|
value[6].setName(newname)
|
||||||
taglist.append(O[PARAM[p][2]].getName())
|
PARAM, stringlist = renew()
|
||||||
PARAM, stringlist =renew(taglist)
|
|
||||||
|
|
||||||
PARAM, stringlist = renew(taglist)
|
PARAM, stringlist = renew()
|
||||||
|
|
||||||
def EVENT(evt,val):
|
def EVENT(evt,val):
|
||||||
pass
|
pass
|
||||||
@ -116,17 +103,17 @@ def BUTTON(evt):
|
|||||||
elif (evt==2):
|
elif (evt==2):
|
||||||
rename()
|
rename()
|
||||||
elif (evt==3):
|
elif (evt==3):
|
||||||
PARAM, stringlist = renew(taglist)
|
PARAM, stringlist = renew()
|
||||||
|
|
||||||
elif (evt in [5,6,7,8]):
|
elif (evt in [5,6,7,8]):
|
||||||
for k in alignment.keys():
|
for k in alignment.iterkeys():
|
||||||
if alignment[k][1]!=evt:
|
if alignment[k][1]!=evt:
|
||||||
alignment[k][0].val=0
|
alignment[k][0].val=0
|
||||||
|
|
||||||
|
|
||||||
elif (evt in stringlist[0]):
|
elif (evt in stringlist[0]):
|
||||||
O[PARAM[stringlist[1][(evt-9)/2]][2]].setName(PARAM[stringlist[1][(evt-9)/2]][4].val)
|
O[PARAM[stringlist[1][(evt-9)/2]][2]].setName(PARAM[stringlist[1][(evt-9)/2]][4].val)
|
||||||
PARAM, stringlist = renew(taglist)
|
PARAM, stringlist = renew()
|
||||||
|
|
||||||
elif (evt in stringlist[2]):
|
elif (evt in stringlist[2]):
|
||||||
try:
|
try:
|
||||||
@ -156,20 +143,20 @@ def DRAW():
|
|||||||
|
|
||||||
glRasterPos2f(20, ligne*2-10)
|
glRasterPos2f(20, ligne*2-10)
|
||||||
Text("Object Name Editor")
|
Text("Object Name Editor")
|
||||||
NEWNAME=String('Add string : ', 4, 150, ligne*2-16, 150, 18, NEWNAME.val,120 )
|
NEWNAME=String('Add String: ', 4, 150, ligne*2-16, 150, 18, NEWNAME.val,120 )
|
||||||
|
|
||||||
key=alignment.keys()
|
key= alignment.keys()
|
||||||
key.sort()
|
key.sort()
|
||||||
n=150+150+4
|
n=150+150+4
|
||||||
for k in key:
|
for k in key:
|
||||||
alignment[k][0]=Toggle(k,alignment[k][1],n,ligne*2-16, 40, 18, alignment[k][0].val)
|
alignment[k][0]= Toggle(k,alignment[k][1],n,ligne*2-16, 40, 18, alignment[k][0].val)
|
||||||
n+=40+4
|
n+=40+4
|
||||||
|
|
||||||
max=size[3] / 22 -2
|
max=size[3] / 22 -2
|
||||||
pos = 1
|
pos = 0
|
||||||
decal = 20
|
decal = 20
|
||||||
|
|
||||||
keys=[[PARAM[k][1],k] for k in PARAM.keys()]
|
keys=[[PARAM[k][1],k] for k in PARAM.iterkeys()]
|
||||||
keys.sort()
|
keys.sort()
|
||||||
|
|
||||||
|
|
||||||
@ -181,9 +168,11 @@ def DRAW():
|
|||||||
else:
|
else:
|
||||||
pos+=1
|
pos+=1
|
||||||
PARAM[p][0]=Toggle('S',PARAM[p][1],decal,pos*22+22,20,20, PARAM[p][0].val,"Select this one for a group renaming")
|
PARAM[p][0]=Toggle('S',PARAM[p][1],decal,pos*22+22,20,20, PARAM[p][0].val,"Select this one for a group renaming")
|
||||||
PARAM[p][4]=String('> ',PARAM[p][5],decal+20,pos*22+22,90,20, PARAM[p][4].val,200, "string button to rename immediately but only this object")
|
PARAM[p][4]=String('',PARAM[p][5],decal+20,pos*22+22,90,20, PARAM[p][4].val,200, "string button to rename immediately but only this object")
|
||||||
|
|
||||||
glRasterPos2f(decal+115,pos*22+22)
|
glRasterPos2f(decal+115,pos*22+24)
|
||||||
Text(PARAM[p][3][:4])
|
Text(PARAM[p][3][:4])
|
||||||
Register(DRAW,EVENT,BUTTON)
|
|
||||||
|
if __name__=='__main__':
|
||||||
|
Register(DRAW,EVENT,BUTTON)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user