diff options
author | Willian Padovani Germano <wpgermano@gmail.com> | 2005-04-16 09:42:52 +0400 |
---|---|---|
committer | Willian Padovani Germano <wpgermano@gmail.com> | 2005-04-16 09:42:52 +0400 |
commit | e7469acd16d14492cfdb70ce77001eb07bf0d48c (patch) | |
tree | f21f94687ac5beafda1c3dc4e34e5e3bb44d9088 /release/scripts | |
parent | d65fc84a6815673b9c4085bd4b3e4830167f59fb (diff) |
Scripts: missed removing this one (was updated by jms and renamed to unweld.py simply)
Diffstat (limited to 'release/scripts')
-rw-r--r-- | release/scripts/unweld044.py | 393 |
1 files changed, 0 insertions, 393 deletions
diff --git a/release/scripts/unweld044.py b/release/scripts/unweld044.py deleted file mode 100644 index 12a00b0fc89..00000000000 --- a/release/scripts/unweld044.py +++ /dev/null @@ -1,393 +0,0 @@ -#!BPY -""" Registration info for Blender menus: <- these words are ignored -Name: 'Unweld' -Blender: 234 -Group: 'Mesh' -Tip: 'Unweld all faces from a selected and common vertex. Made vertex bevelling' -""" - -__author__ = "Jean-Michel Soler (jms)" -__url__ = ("blender", "elysiun", -"Script's homepage, http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple", -"Communicate problems and errors, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender") -__version__ = "0.4.4 beta" - -__bpydoc__ = """\ -This script unwelds faces from a selected vertex. - -There's also experimental support for static or dynamic (move mouse in the -Scripts window) vertex bevel. - -Usage: - -Select a vertex, then run this script. Its options are: - -- unbind points;<br> -- with noise;<br> -- middle face;<br> -- static bevel vertex;<br> -- moving bevel vertex; -""" - -# $Id$ -# -# ------------------------------------------ -# Un-Weld script 0.4.4 beta -# -# split all faces from one selected vertex -# (c) 2004 J-M Soler released under Blender Artistic License -#---------------------------------------------- -# Official Page : -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple -# 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 -#--------------------------------------------- -# Changelog -#---------------------------------------------- -# 25/05 : -# -- separate choise, normal (same place) or spread at random, middle of the face -# -- works on several vertices too -# -- Quite vertex bevelling on <<lone>> vertex : create hole in faces around this -# vertex -# 03/06 : -# -- a sort of "bevelled vertex" extrusion controled by horizontal mouse -# displacement. just a beta test to the mouse control. -#---------------------------------------------- -# Page officielle : -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple -# Communiquer les problemes et erreurs sur: -# http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender -# Blender Artistic License -# http://download.blender.org/documentation/html/x21254.html -#--------------------------------------------- -# Changelog -#---------------------------------------------- -# 25/05 : -# -- separation du choix, normal ou dispersion hasardeuse, milieu de face -# -- sommets multiples / -# -- Quite vertex bevelling on lone vertex : create hole in faces around the -# vertex -# 03/06 : -# -- a sort of "bevelled vertex" extrusion controled by horizontal mouse -# displacement -#---------------------------------------------- - -import Blender -from Blender import Noise -from Blender.Draw import * -from Blender.BGL import * - -Blender.Window.EditMode(0) - -Nr=Noise.random -decal=0.03 -t=[0.0,0.0,0.0] -pl=[] -orig=[] - -DEBUG = 0 -SUBSURF=0 -DIM=Create(1.0) - -def Tampon(v,t): - for n in range(len(v)): t[n]=t[n]+v[n] - return t - -def freeTampon(t): - for n in range(3): t[n]=0.0 - return t - -def TamponMoyen(t,f): - for n in range(3): t[n]/=len(f) - return t - -def appliqueMoyenne(v,t): - for n in range(len(v)): v[n]=t[n] - return v - -def docF(f0,f): - try: - f0.mat=f.mat - f0.uv=f.uv - f0.col=f.col - f0.image=f.image - return f0 - except: - pass - -def listConnecterFace(me,lebon): - listf2v={} - #tri des faces connectees aux sommets selectionnes - for f in me.faces: - for v in f.v: - if v==lebon: - if v.index not in listf2v.keys(): - listf2v[me.verts.index(v)]=[f] - elif f not in listf2v[me.verts.index(v)]: - listf2v[me.verts.index(v)].append(f) - return listf2v - -def creerFaceSupplementaire(me,lebon,listf2v): - global t - for f in listf2v[lebon.index]: - f0=Blender.NMesh.Face() - if result==3: t=freeTampon(t) - for v in f.v: - if result==3: t=Tampon(v,t) - if v!=lebon: - f0.append(v) - else: - if result==2: - nv=Blender.NMesh.Vert(lebon.co[0]+Nr()*decal,lebon.co[1]+Nr()*decal,lebon.co[2]+Nr()*decal) - else: - nv=Blender.NMesh.Vert(lebon.co[0],lebon.co[1],lebon.co[2]) - me.verts.append(nv) - f0.append(me.verts[me.verts.index(nv)]) - localise=me.verts.index(nv) - docF(f0,f) - - if result==3: - t=TamponMoyen(t,f0.v) - me.verts[localise]=appliqueMoyenne(me.verts[localise],t) - me.faces.append(f0) - del me.verts[me.verts.index(lebon)] - for f in listf2v[lebon.index]: - del me.faces[me.faces.index(f)] - return me - -def collecte_edge(listf2v,me,lebon): - back=0 - edgelist = [] - vertlist = [] - if DEBUG : print listf2v - for face in listf2v[lebon.index]: - if len(face.v) == 4: - vlist = [0,1,2,3,0] - elif len(face.v) == 3: - vlist = [0,1,2,0] - else: - vlist = [0,1] - for i in range(len(vlist)-1): - vert0 = min(face.v[vlist[i]].index,face.v[vlist[i+1]].index) - vert1 = max(face.v[vlist[i]].index,face.v[vlist[i+1]].index) - edgeinlist = 0 - if vert0==lebon.index or vert1==lebon.index: - for edge in edgelist: - if ((edge[0]==vert0) and (edge[1]==vert1)): - edgeinlist = 1 - edge[2] = edge[2]+1 - edge.append(me.faces.index(face)) - break - if edgeinlist==0: - edge = [vert0,vert1,1,me.faces.index(face)] - edgelist.append(edge) - - for edge in edgelist: - #print edge - if len(edge)==4: - del edgelist[edgelist.index(edge)] - - edges=len(edgelist) - if DEBUG : print 'number of edges : ',edges," Edge list : " ,edgelist - return edges, edgelist - -MouseClickG= Blender.Draw.LEFTMOUSE -MouseClickD= Blender.Draw.RIGHTMOUSE -MouseClickM= Blender.Draw.MIDDLEMOUSE - -mouse_x=1 -mouse_y=1 - -x=1 -y=1 - -debut=0 - -def D(): - size=Buffer(GL_FLOAT, 4) - glGetFloatv(GL_SCISSOR_BOX, size) - size= size.list - glColor3f(0.1, 0.1, 0.15) - glRasterPos2f(10, size[3]-16) - Text("Quit = Q Key") - glRasterPos2f(10, size[3]-36) - Text("Mouse to the Right = Increase") - glRasterPos2f(10, size[3]-56) - Text("Mouse to the Left = Decrease") - -def E(evt,val): - global mouse_x,x,pl,orig,me,debut - global mouse_y,y, MouseClickG,MouseClickD,MouseClickM - if (evt== QKEY): Exit() - - if (evt == MOUSEX): - mouse_x = val - pos=x-mouse_x - x=mouse_x - if pos==0: - pos=1 - deplace(pl,orig,abs(pos)/pos) - - if (evt == MOUSEY): mouse_y = val - -def BE(evt): - pass - - -def deplace(pl,orig,n): - global me, OBJECT - for p in pl: - #print p, orig,len(me.verts) - me.verts[p].co[0]+=n*orig[0] - me.verts[p].co[1]+=n*orig[1] - me.verts[p].co[2]+=n*orig[2] - me.update() - Blender.Redraw() - - -def VertexBevel(result): - global t,pl, orig,me, SUBSURF - unique=0 - for v in me.verts: - if v.sel==1: - lebon=v - unique+=1 - - if unique==1: - edges=0 - edgelist=[] - vertlist=[] - orig=lebon.no[:] - listf2v=listConnecterFace(me,lebon) - edges, edgelist = collecte_edge(listf2v,me,lebon) - for f in listf2v[lebon.index]: - f0=Blender.NMesh.Face() - for v in f.v: - if v!=lebon: - f0.append(v) - else: - nv=Blender.NMesh.Vert(lebon.co[0],lebon.co[1],lebon.co[2]) - nv.sel=1 - me.verts.append(nv) - f0.append(me.verts[me.verts.index(nv)]) - for e in edgelist: - if e[-1]==me.faces.index(f) or e[-2]==me.faces.index(f): - if me.verts.index(nv) not in e: - e.insert(0,me.verts.index(nv)) - docF(f0,f) - me.faces.append(f0) - vertlist.append([me.verts.index(nv),me.faces.index(f)]) - for e in edgelist : - del e[e.index(lebon.index)] - f0=Blender.NMesh.Face() - for n in range(3): - f0.v.append(me.verts[e[n]]) - me.faces.append(f0); - - for ve in vertlist: - t=freeTampon(t) - for v in me.faces[ve[1]].v: - t=Tampon(v,t) - t=TamponMoyen(t,me.faces[ve[1]].v) - ve.append(t[:]) - me.verts[ve[0]]=appliqueMoyenne(me.verts[ve[0]],t) - - def swap(x,y): - return y,x - - p=[[edgelist[0][0],edgelist[0][1]]] - while len(p)!=len(edgelist): - for n in range(1,len(edgelist)) : - if p[-1][1]== edgelist[n][0]: - p.append([edgelist[n][0],edgelist[n][1]]) - n+=1 - elif p[-1][1]== edgelist[n][1]: - edgelist[n][0],edgelist[n][1]=swap(edgelist[n][0],edgelist[n][1]) - p.append([edgelist[n][0],edgelist[n][1]]) - n+=1 - if len(p)%2==0: - P0=p[:(len(p))/2] ; P1=p[len(p)/2:]; P1.reverse() - for s in range(len(P0)-1): - f0=Blender.NMesh.Face() - table=[P0[s][0],P0[s][1],P1[s+1][0],P1[s+1][1]] - for t in table:f0.v.append(me.verts[t]) - me.faces.append(f0) - elif len(p) >3 : - P0=p[:(len(p)-1)/2];P1=p[(len(p)-1)/2:-1]; P1.reverse() - for s in range(len(P0)-1): - f0=Blender.NMesh.Face() - table=[P0[s][0],P0[s][1],P1[s+1][0],P1[s+1][1]] - for t in table:f0.v.append(me.verts[t]) - me.faces.append(f0) - f0=Blender.NMesh.Face() - table=[p[-1][0],P0[0][0],P1[-1][1]] - for t in table:f0.v.append(me.verts[t]) - me.faces.append(f0) - - elif len(p) ==3 : - if DEBUG :print P0,P1 - f0=Blender.NMesh.Face() - table=[p[0][0],p[0][1],p[1][1]] - for t in table:f0.v.append(me.verts[t]) - me.faces.append(f0) - - for f in listf2v[lebon.index]: - del me.faces[me.faces.index(f)] - del me.verts[me.verts.index(lebon)] - me.update() - - if me.mode&Blender.NMesh.Modes['SUBSURF']: - me.mode-=Blender.NMesh.Modes['SUBSURF'] - SUBSURF=1 - me.update() - OBJECT[0].makeDisplayList() - - if result==5: - pl=[] - for s in me.verts: - if s.sel==1: - pl.append(s.index) - Blender.Draw.Register(D,E,BE) - - """ - if SUBSURF==1 : - me.mode+=Blender.NMesh.Modes['SUBSURF'] - me.update() - OBJECT[0].makeDisplayList() - """ - else: - name = " It could leave only one selected vertex %t | ok %x1 ?" - result = Blender.Draw.PupMenu(name) - -OBJECT=Blender.Object.GetSelected() - -if len(OBJECT)!=0: - if OBJECT[0].getType()=='Mesh': - name = "Unweld %t|Unbind Points %x1|With Noise %x2|Middle Face %x3|Static Bevel Vertex %x4|Moving Bevel Vertex %x5|" - result = Blender.Draw.PupMenu(name) - if result: - me=OBJECT[0].getData() - unique=0 - if result<4: - #tri des sommets selectionnes - for v in me.verts: - if v.sel==1: - lebon=v - if DEBUG : print lebon - #dictionnaires des faces connectees aux sommets selectionnes - listf2v=listConnecterFace(me,lebon) - me=creerFaceSupplementaire(me,lebon,listf2v) - OBJECT[0].link(me) - OBJECT[0].makeDisplayList() - else: - VertexBevel(result) - OBJECT[0].makeDisplayList() - - else: - name = "Nothing to do! Are you sure ?" - result = Blender.Draw.PupMenu(name) - - |