diff options
Diffstat (limited to 'release/scripts/unweld.py')
-rw-r--r-- | release/scripts/unweld.py | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/release/scripts/unweld.py b/release/scripts/unweld.py deleted file mode 100644 index 3385e66e2d8..00000000000 --- a/release/scripts/unweld.py +++ /dev/null @@ -1,247 +0,0 @@ -#!BPY -""" Registration info for Blender menus: <- these words are ignored -Name: 'Unweld vertex/ices' -Blender: 243 -Group: 'Mesh' -Tip: 'Unweld all faces from a (or several) selected and common vertex. Made vertex bevelling' -""" - -__author__ = "Jean-Michel Soler (jms)" -__url__ = ("blender", "blenderartists.org", -"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.6 " -__bpydoc__ = """\ -This script unwelds faces from one or several selected vertex/vertices. - -Usage: - -In edit mode Select at least one vertex, then run this script. - -The options are: - -- unbind points;<br> - a new point is added to each face connected to the selected one. - -- with noise;<br> - the new points location is varied with noise - -- middle face;<br> - the new point is located at the center of face to which it is connected -""" - -# ------------------------------------------ -# Un-Weld script 0.4.6 -# name="UnWeld" -# Tip= 'Unweld all faces from a selected and common vertex.' -# date='06/08/2006' -# split all faces from one selected vertex -# (c) 2004 J-M Soler released under GPL licence -#---------------------------------------------- -# Official Page : -# website = 'http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple' -# Communicate problems and errors on: -# community = '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 choice, 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. -# 08/08 : -# -- minor correction to completely disconnect face. -#---------------------------------------------- -# Page officielle : -# http://jmsoler.free.fr/didacticiel/blender/tutor/cpl_faces2vertex.htm#exemple -# Commsoler 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 / -# -- presque unvertex bevelling sur un vertex solitaire : cree -# un trou dans la facette autour du sommet -# 03/06 : -# -- une sorte de vertex extruder en biseau, controle par -# movement horizontal de la souris -# 08/08 : -# -- correction mineure pour s'assurer que les faces soient -# entierment deconnectees -#---------------------------------------------- - -import Blender -from Blender import Noise -from Blender.Draw import * -from Blender.BGL import * -import BPyMessages -# $Id$ - -NR=Noise.random -DECAL=0.03 -t=[0.0,0.0,0.0] -pl=[] -orig=[] - -DEBUG = 0 -SUBSURF=0 -DIM=Create(1.0) - -def Buffer(v,t): - if DEBUG : print dir(v) - for n in range(len(v)): t[n]=t[n]+v[n] - return t - -def freeBuffer(t): - for n in range(3): t[n]=0.0 - return t - -def ModalBuffer(t,f): - for n in range(3): t[n]/=len(f) - return t - -def applyModalValue(v,t): - for n in range(len(v)): v[n]=t[n] - return v - -def docF(f0,f): - - if f0 and f: - f0.mat=f.mat - if f.uv : - f0.uv=f.uv - if f.col : - f0.col=f.col - if f.image : - f0.image=f.image - f0.smooth=f.smooth - f0.mode=f.mode - f0.flag=f.flag - return f0 - - -def connectedFacesList(me,thegood): - listf2v={} - #tri des faces connectees aux sommets selectionnes - for f in me.faces: - for v in f.v: - if v==thegood: - 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 createAdditionalFace(me,thegood,listf2v): - global t - for f in listf2v[thegood.index]: - f0=Blender.NMesh.Face() - if result==3: t=freeBuffer(t) - for v in f.v: - if result==3: t=Buffer(v,t) - if v!=thegood: - f0.append(v) - else: - if result==2: - nv=Blender.NMesh.Vert(thegood.co[0]+NR()*DECAL, - thegood.co[1]+NR()*DECAL, - thegood.co[2]+NR()*DECAL) - else: - nv=Blender.NMesh.Vert(thegood.co[0], - thegood.co[1], - thegood.co[2]) - nv.sel=1 - me.verts.append(nv) - f0.append(me.verts[me.verts.index(nv)]) - localise=me.verts.index(nv) - docF(f0,f) - if result==3: - t=ModalBuffer(t,f0.v) - me.verts[localise]=applyModalValue(me.verts[localise],t) - me.faces.append(f0) - del me.verts[me.verts.index(thegood)] - for f in listf2v[thegood.index]: - del me.faces[me.faces.index(f)] - return me - -def collecte_edge(listf2v,me,thegood): - back=0 - edgelist = [] - vertlist = [] - if DEBUG : print listf2v - for face in listf2v[thegood.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 xrange(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==thegood.index or vert1==thegood.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 i, edge in enumerate(edgelist): - #print edge - if len(edge)==4: - del edgelist[i] - - edges=len(edgelist) - if DEBUG : print 'number of edges : ',edges," Edge list : " ,edgelist - return edges, edgelist - -import bpy -OBJECT= bpy.data.scenes.active.objects.active - -if OBJECT and OBJECT.type=='Mesh': - if OBJECT.getData(mesh=1).multires: - BPyMessages.Error_NoMeshMultiresEdit() - elif not BPyMessages.Warning_MeshDistroyLayers(OBJECT.getData(mesh=1)): - pass - else: - EDITMODE=Blender.Window.EditMode() - Blender.Window.EditMode(0) - name = "Unweld %t|Unbind Points %x1|With Noise %x2|Middle Face %x3" - result = Blender.Draw.PupMenu(name) - if result: - me=OBJECT.getData() - - for v in me.verts: - if v.sel: - thegood=v - if DEBUG : print thegood - listf2v=connectedFacesList(me,thegood) - if listf2v: - me=createAdditionalFace(me,thegood,listf2v) - #OBJECT.link(me) - me.update() - - OBJECT.makeDisplayList() - - Blender.Window.EditMode(EDITMODE) - -else: - BPyMessages.Error_NoMeshActive() |