forked from bartvdbraak/blender
uvcalc_smart_project.py - fixed error in rare cases.
xfig_export.py - NMesh to Mesh, minor improvements/cleanup. unweld.py - fixed error when a vert had no faces, also some small speedups and changes.
This commit is contained in:
parent
a61638013e
commit
ab77b4aade
@ -100,7 +100,7 @@ SUBSURF=0
|
|||||||
DIM=Create(1.0)
|
DIM=Create(1.0)
|
||||||
|
|
||||||
def Buffer(v,t):
|
def Buffer(v,t):
|
||||||
print dir(v)
|
if DEBUG : print dir(v)
|
||||||
for n in range(len(v)): t[n]=t[n]+v[n]
|
for n in range(len(v)): t[n]=t[n]+v[n]
|
||||||
return t
|
return t
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ def connectedFacesList(me,thegood):
|
|||||||
for f in me.faces:
|
for f in me.faces:
|
||||||
for v in f.v:
|
for v in f.v:
|
||||||
if v==thegood:
|
if v==thegood:
|
||||||
if v.index not in listf2v.keys():
|
if v.index not in listf2v: # .keys()
|
||||||
listf2v[me.verts.index(v)]=[f]
|
listf2v[me.verts.index(v)]=[f]
|
||||||
elif f not in listf2v[me.verts.index(v)]:
|
elif f not in listf2v[me.verts.index(v)]:
|
||||||
listf2v[me.verts.index(v)].append(f)
|
listf2v[me.verts.index(v)].append(f)
|
||||||
@ -189,7 +189,7 @@ def collecte_edge(listf2v,me,thegood):
|
|||||||
vlist = [0,1,2,0]
|
vlist = [0,1,2,0]
|
||||||
else:
|
else:
|
||||||
vlist = [0,1]
|
vlist = [0,1]
|
||||||
for i in range(len(vlist)-1):
|
for i in xrange(len(vlist)-1):
|
||||||
vert0 = min(face.v[vlist[i]].index,face.v[vlist[i+1]].index)
|
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)
|
vert1 = max(face.v[vlist[i]].index,face.v[vlist[i+1]].index)
|
||||||
edgeinlist = 0
|
edgeinlist = 0
|
||||||
@ -204,16 +204,17 @@ def collecte_edge(listf2v,me,thegood):
|
|||||||
edge = [vert0,vert1,1,me.faces.index(face)]
|
edge = [vert0,vert1,1,me.faces.index(face)]
|
||||||
edgelist.append(edge)
|
edgelist.append(edge)
|
||||||
|
|
||||||
for edge in edgelist:
|
for i, edge in enumerate(edgelist):
|
||||||
#print edge
|
#print edge
|
||||||
if len(edge)==4:
|
if len(edge)==4:
|
||||||
del edgelist[edgelist.index(edge)]
|
del edgelist[i]
|
||||||
|
|
||||||
edges=len(edgelist)
|
edges=len(edgelist)
|
||||||
if DEBUG : print 'number of edges : ',edges," Edge list : " ,edgelist
|
if DEBUG : print 'number of edges : ',edges," Edge list : " ,edgelist
|
||||||
return edges, edgelist
|
return edges, edgelist
|
||||||
|
|
||||||
OBJECT=Blender.Scene.GetCurrent().getActiveObject()
|
import bpy
|
||||||
|
OBJECT= bpy.data.scenes.active.objects.active
|
||||||
|
|
||||||
if OBJECT and OBJECT.type=='Mesh':
|
if OBJECT and OBJECT.type=='Mesh':
|
||||||
if OBJECT.getData(mesh=1).multires:
|
if OBJECT.getData(mesh=1).multires:
|
||||||
@ -227,22 +228,20 @@ if OBJECT and OBJECT.type=='Mesh':
|
|||||||
result = Blender.Draw.PupMenu(name)
|
result = Blender.Draw.PupMenu(name)
|
||||||
if result:
|
if result:
|
||||||
me=OBJECT.getData()
|
me=OBJECT.getData()
|
||||||
sole=0
|
|
||||||
vSelection=[]
|
|
||||||
for v in me.verts:
|
for v in me.verts:
|
||||||
if v.sel==1:
|
if v.sel:
|
||||||
vSelection.append(v)
|
|
||||||
for v in vSelection:
|
|
||||||
thegood=v
|
thegood=v
|
||||||
if DEBUG : print thegood
|
if DEBUG : print thegood
|
||||||
listf2v=connectedFacesList(me,thegood)
|
listf2v=connectedFacesList(me,thegood)
|
||||||
|
if listf2v:
|
||||||
me=createAdditionalFace(me,thegood,listf2v)
|
me=createAdditionalFace(me,thegood,listf2v)
|
||||||
#OBJECT.link(me)
|
#OBJECT.link(me)
|
||||||
me.update()
|
me.update()
|
||||||
|
|
||||||
OBJECT.makeDisplayList()
|
OBJECT.makeDisplayList()
|
||||||
|
|
||||||
Blender.Window.EditMode(EDITMODE)
|
Blender.Window.EditMode(EDITMODE)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
name = "Nothing to do! Did you select at least one vertex?"
|
BPyMessages.Error_NoMeshActive()
|
||||||
result = Blender.Draw.PupMenu(name)
|
|
||||||
|
@ -644,6 +644,9 @@ def getUvIslands(faceGroups, me):
|
|||||||
faceGroupIdx-=1
|
faceGroupIdx-=1
|
||||||
faces = faceGroups[faceGroupIdx]
|
faces = faceGroups[faceGroupIdx]
|
||||||
|
|
||||||
|
if not faces:
|
||||||
|
continue
|
||||||
|
|
||||||
# Build edge dict
|
# Build edge dict
|
||||||
edge_users = {}
|
edge_users = {}
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
#!BPY
|
#!BPY
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Name: 'xfig export (.fig)'
|
Name: 'xfig export (.fig)'
|
||||||
Blender: 237
|
Blender: 244
|
||||||
Group: 'Export'
|
Group: 'Export'
|
||||||
Tooltip: 'Export selected mesh to xfig Format (.fig)'
|
Tooltip: 'Export selected mesh to xfig Format (.fig)'
|
||||||
"""
|
"""
|
||||||
@ -29,7 +28,7 @@ __bpydoc__ = """\
|
|||||||
# 'Raw triangle export' (Anthony D'Agostino, http://www.redrival.com/scorpius)|
|
# 'Raw triangle export' (Anthony D'Agostino, http://www.redrival.com/scorpius)|
|
||||||
|
|
||||||
import Blender
|
import Blender
|
||||||
from Blender import NMesh, Draw, BGL
|
from Blender import Draw, BGL
|
||||||
from Blender.Window import DrawProgressBar
|
from Blender.Window import DrawProgressBar
|
||||||
#, meshtools
|
#, meshtools
|
||||||
import sys
|
import sys
|
||||||
@ -40,8 +39,8 @@ import sys
|
|||||||
# =================================
|
# =================================
|
||||||
|
|
||||||
#globals definition and init
|
#globals definition and init
|
||||||
mystring = ""
|
mystring = ''
|
||||||
mymsg = ""
|
mymsg = ''
|
||||||
toggle=0
|
toggle=0
|
||||||
sel3files=0
|
sel3files=0
|
||||||
maxX=-1000000000
|
maxX=-1000000000
|
||||||
@ -64,107 +63,57 @@ SpacePopup=0
|
|||||||
#end of globals definition
|
#end of globals definition
|
||||||
|
|
||||||
|
|
||||||
def getmaxmin():
|
def getmaxmin(ob, mesh):
|
||||||
"""Gets the max-min coordinates of the mesh"""
|
"""Gets the max-min coordinates of the mesh"""
|
||||||
|
|
||||||
global maxX,maxY,maxZ,minX,minY,minZ
|
global maxX,maxY,maxZ,minX,minY,minZ
|
||||||
"""Getting the extremes of the mesh to be exported"""
|
"""Getting the extremes of the mesh to be exported"""
|
||||||
objects = Blender.Object.GetSelected()
|
|
||||||
objname = objects[0].name
|
|
||||||
meshname = objects[0].getData(name_only=1)
|
|
||||||
mesh = Blender.NMesh.GetRaw(meshname)
|
|
||||||
obj = Blender.Object.Get(objname)
|
|
||||||
#initializing max-min find.
|
|
||||||
# ...is there a standard python function to find those values?
|
|
||||||
face =mesh.faces[1]
|
|
||||||
if len(face.v)==3:
|
|
||||||
v1,v2,v3=face.v
|
|
||||||
if len(face.v)==4:
|
|
||||||
v1,v2,v3,v4=face.v
|
|
||||||
if len(face.v)==2:
|
|
||||||
v1,v2=face.v
|
|
||||||
#is the next condition a nonsense for a face? ...Anyway, to be sure....
|
|
||||||
if len(face.v)==1:
|
|
||||||
v1=face.v
|
|
||||||
|
|
||||||
maxX,maxY,maxZ = v1
|
maxX=maxY=maxZ = -1000000000
|
||||||
minX, minY, minZ = v1
|
minX=minY=minZ = 1000000000
|
||||||
|
|
||||||
for face in mesh.faces:
|
for face in mesh.faces:
|
||||||
#if (face.flag & Blender.NMesh.FaceFlags['ACTIVE']):
|
for v in face:
|
||||||
if len(face.v) == 3: # triangle
|
x,y,z = v.co
|
||||||
v1, v2, v3 = face.v
|
maxX = max(maxX, x)
|
||||||
x1,y1,z1 = v1.co
|
maxY = max(maxY, y)
|
||||||
x2,y2,z2 = v2.co
|
maxZ = max(maxZ, z)
|
||||||
x3,y3,z3 = v3.co
|
minX = min(minX, x)
|
||||||
maxX = max (maxX, x1, x2, x3)
|
minY = min(minY, y)
|
||||||
maxY = max (maxY, y1, y2, y3)
|
minZ = min(minZ, z)
|
||||||
maxZ = max (maxZ, z1, z2, z3)
|
|
||||||
minX = min (minX, x1, x2, x3)
|
|
||||||
minY = min (minY, y1, y2, y3)
|
|
||||||
minZ = min (minZ, z1, z2, z3)
|
|
||||||
elif len(face.v)==2:
|
|
||||||
v1,v2=face.v
|
|
||||||
x1,y1,z1 = v1.co
|
|
||||||
x2,y2,z2 = v2.co
|
|
||||||
maxX = max (maxX, x1, x2)
|
|
||||||
maxY = max (maxY, y1, y2)
|
|
||||||
maxZ = max (maxZ, z1, z2)
|
|
||||||
minX = min (minX, x1, x2)
|
|
||||||
minY = min (minY, y1, y2)
|
|
||||||
minZ = min (minZ, z1, z2)
|
|
||||||
elif len(face.v)==1:
|
|
||||||
v1=face.v
|
|
||||||
x1,y1,z1 = v1.co
|
|
||||||
maxX = max (maxX, x1)
|
|
||||||
maxY = max (maxY, y1)
|
|
||||||
maxZ = max (maxZ, z1)
|
|
||||||
minX = min (minX, x1)
|
|
||||||
minY = min (minY, y1)
|
|
||||||
minZ = min (minZ, z1)
|
|
||||||
elif len(face.v)==4:
|
|
||||||
v1,v2,v3,v4=face.v
|
|
||||||
x1,y1,z1 = v1.co
|
|
||||||
x2,y2,z2 = v2.co
|
|
||||||
x3,y3,z3 = v3.co
|
|
||||||
x4,y4,z4 = v4.co
|
|
||||||
maxX = max (maxX, x1, x2, x3, x4)
|
|
||||||
maxY = max (maxY, y1, y2, y3, y4)
|
|
||||||
maxZ = max (maxZ, z1, z2, z3, z4)
|
|
||||||
minX = min (minX, x1, x2, x3, x4)
|
|
||||||
minY = min (minY, y1, y2, y3, y4)
|
|
||||||
minZ = min (minZ, z1, z2, z3, z4)
|
|
||||||
def xfigheader():
|
def xfigheader():
|
||||||
global export_type
|
global export_type
|
||||||
print "#FIG 3.2 Produced by xfig version 3.2.5-alpha5"
|
print '#FIG 3.2 Produced by xfig version 3.2.5-alpha5'
|
||||||
print "Landscape"
|
print 'Landscape'
|
||||||
print"Center"
|
print 'Center'
|
||||||
if boolmode==0:
|
if boolmode==0:
|
||||||
print"Inches"
|
print 'Inches'
|
||||||
else:
|
else:
|
||||||
print"Metric"
|
print 'Metric'
|
||||||
#print export_type
|
#print export_type
|
||||||
print"Letter"
|
print 'Letter'
|
||||||
print"100.00"
|
print '100.00'
|
||||||
print"Single"
|
print 'Single'
|
||||||
print "-2"
|
print '-2'
|
||||||
print "1200 2"
|
print '1200 2'
|
||||||
|
|
||||||
def xytransform (face):
|
def xytransform(face):
|
||||||
"""gives the face vertexes coordinates in the xfig format/translation (view xy)"""
|
"""gives the face vertexes coordinates in the xfig format/translation (view xy)"""
|
||||||
v4=None
|
v4=None
|
||||||
x4=y4=z4=None
|
x4=y4=z4=None
|
||||||
if len(face.v)==3:
|
if len(face)==3:
|
||||||
v1,v2,v3=face.v
|
v1,v2,v3=face.v
|
||||||
else:
|
else:
|
||||||
v1,v2,v3,v4=face.v
|
v1,v2,v3,v4=face.v
|
||||||
|
|
||||||
x1,y1,z1 = v1.co
|
x1,y1,z1 = v1.co
|
||||||
x2,y2,z2 = v2.co
|
x2,y2,z2 = v2.co
|
||||||
x3,y3,z3 = v3.co
|
x3,y3,z3 = v3.co
|
||||||
y1=-y1
|
y1=-y1
|
||||||
y2=-y2
|
y2=-y2
|
||||||
y3=-y3
|
y3=-y3
|
||||||
if v4 !=None:
|
if v4:
|
||||||
x4,y4,z4 = v4.co
|
x4,y4,z4 = v4.co
|
||||||
y4=-y4
|
y4=-y4
|
||||||
return x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4
|
return x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4
|
||||||
@ -173,7 +122,7 @@ def xztransform(face):
|
|||||||
"""gives the face vertexes coordinates in the xfig format/translation (view xz)"""
|
"""gives the face vertexes coordinates in the xfig format/translation (view xz)"""
|
||||||
v4=None
|
v4=None
|
||||||
x4=y4=z4=None
|
x4=y4=z4=None
|
||||||
if len(face.v)==3:
|
if len(face)==3:
|
||||||
v1,v2,v3=face.v
|
v1,v2,v3=face.v
|
||||||
else:
|
else:
|
||||||
v1,v2,v3,v4=face.v
|
v1,v2,v3,v4=face.v
|
||||||
@ -190,7 +139,7 @@ def xztransform(face):
|
|||||||
z2=-z2+maxZ-minY +space
|
z2=-z2+maxZ-minY +space
|
||||||
z3=-z3+maxZ-minY +space
|
z3=-z3+maxZ-minY +space
|
||||||
|
|
||||||
if v4 !=None:
|
if v4:
|
||||||
x4,y4,z4 = v4.co
|
x4,y4,z4 = v4.co
|
||||||
y4=-y4
|
y4=-y4
|
||||||
z4=-z4+maxZ-minY +space
|
z4=-z4+maxZ-minY +space
|
||||||
@ -200,7 +149,7 @@ def yztransform(face):
|
|||||||
"""gives the face vertexes coordinates in the xfig format/translation (view xz)"""
|
"""gives the face vertexes coordinates in the xfig format/translation (view xz)"""
|
||||||
v4=None
|
v4=None
|
||||||
x4=y4=z4=None
|
x4=y4=z4=None
|
||||||
if len(face.v)==3:
|
if len(face)==3:
|
||||||
v1,v2,v3=face.v
|
v1,v2,v3=face.v
|
||||||
else:
|
else:
|
||||||
v1,v2,v3,v4=face.v
|
v1,v2,v3,v4=face.v
|
||||||
@ -209,147 +158,136 @@ def yztransform(face):
|
|||||||
x1,y1,z1 = v1.co
|
x1,y1,z1 = v1.co
|
||||||
x2,y2,z2 = v2.co
|
x2,y2,z2 = v2.co
|
||||||
x3,y3,z3 = v3.co
|
x3,y3,z3 = v3.co
|
||||||
y1=-y1
|
y1=-y1; y2=-y2; y3=-y3
|
||||||
y2=-y2
|
|
||||||
y3=-y3
|
|
||||||
z1=-(z1-maxZ-maxX-space)
|
z1=-(z1-maxZ-maxX-space)
|
||||||
z2=-(z2-maxZ-maxX-space)
|
z2=-(z2-maxZ-maxX-space)
|
||||||
z3=-(z3-maxZ-maxX-space)
|
z3=-(z3-maxZ-maxX-space)
|
||||||
|
|
||||||
if v4 !=None:
|
if v4:
|
||||||
x4,y4,z4 = v4.co
|
x4,y4,z4 = v4.co
|
||||||
y4=-y4
|
y4=-y4
|
||||||
z4=-(z4-maxZ-maxX-space)
|
z4=-(z4-maxZ-maxX-space)
|
||||||
return x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4
|
return x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4
|
||||||
|
|
||||||
def figdata(expview):
|
def figdata(ob, expview):
|
||||||
"""Prints all the xfig data (no header)"""
|
"""Prints all the xfig data (no header)"""
|
||||||
objects = Blender.Object.GetSelected()
|
mesh = ob.getData(mesh=1)
|
||||||
objname = objects[0].name
|
|
||||||
meshname = objects[0].getData(name_only=1)
|
|
||||||
mesh = Blender.NMesh.GetRaw(meshname)
|
|
||||||
obj = Blender.Object.Get(objname)
|
|
||||||
facenumber = len(mesh.faces)
|
facenumber = len(mesh.faces)
|
||||||
for face in mesh.faces:
|
for face in mesh.faces:
|
||||||
if len(face.v) == 3: # triangle
|
if len(face) == 3: # triangle
|
||||||
print "2 3 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4"
|
print '2 3 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4'
|
||||||
if expview=="xy":
|
if expview=='xy':
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xytransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xytransform(face)
|
||||||
faceverts = int(x1*scale),int(y1*scale),int(x2*scale),int(y2*scale),int(x3*scale),int(y3*scale), int(x1*scale),int(y1*scale)
|
faceverts = int(x1*scale),int(y1*scale),int(x2*scale),int(y2*scale),int(x3*scale),int(y3*scale), int(x1*scale),int(y1*scale)
|
||||||
elif expview=="xz":
|
elif expview=='xz':
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xztransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xztransform(face)
|
||||||
faceverts = int(x1*scale),int(z1*scale),int(x2*scale),int(z2*scale),int(x3*scale),int(z3*scale), int(x1*scale),int(z1*scale)
|
faceverts = int(x1*scale),int(z1*scale),int(x2*scale),int(z2*scale),int(x3*scale),int(z3*scale), int(x1*scale),int(z1*scale)
|
||||||
elif expview=="yz":
|
elif expview=='yz':
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=yztransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=yztransform(face)
|
||||||
faceverts = int(z1*scale),int(y1*scale),int(z2*scale),int(y2*scale),int(z3*scale),int(y3*scale),int(z1*scale),int(y1*scale)
|
faceverts = int(z1*scale),int(y1*scale),int(z2*scale),int(y2*scale),int(z3*scale),int(y3*scale),int(z1*scale),int(y1*scale)
|
||||||
print "\t% i % i % i % i % i % i % i % i" % faceverts
|
print '\t% i % i % i % i % i % i % i % i' % faceverts
|
||||||
else:
|
else: # Quad
|
||||||
if len(face.v) == 4: #quadrilateral
|
print '2 3 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5'
|
||||||
print "2 3 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5"
|
if expview=='xy':
|
||||||
if expview=="xy":
|
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xytransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xytransform(face)
|
||||||
faceverts = int(x1*scale),int(y1*scale),int(x2*scale),int(y2*scale),int(x3*scale),int(y3*scale),int(x4*scale),int(y4*scale), int(x1*scale),int(y1*scale)
|
faceverts = int(x1*scale),int(y1*scale),int(x2*scale),int(y2*scale),int(x3*scale),int(y3*scale),int(x4*scale),int(y4*scale), int(x1*scale),int(y1*scale)
|
||||||
|
|
||||||
elif expview=="xz":
|
elif expview=='xz':
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xztransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=xztransform(face)
|
||||||
faceverts = int(x1*scale),int(z1*scale),int(x2*scale),int(z2*scale),int(x3*scale),int(z3*scale),int(x4*scale),int(z4*scale), int(x1*scale),int(z1*scale)
|
faceverts = int(x1*scale),int(z1*scale),int(x2*scale),int(z2*scale),int(x3*scale),int(z3*scale),int(x4*scale),int(z4*scale), int(x1*scale),int(z1*scale)
|
||||||
|
|
||||||
elif expview=="yz":
|
elif expview=='yz':
|
||||||
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=yztransform(face)
|
x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4=yztransform(face)
|
||||||
faceverts = int(z1*scale),int(y1*scale),int(z2*scale),int(y2*scale),int(z3*scale),int(y3*scale),int(z4*scale),int(y4*scale), int(z1*scale),int(y1*scale)
|
faceverts = int(z1*scale),int(y1*scale),int(z2*scale),int(y2*scale),int(z3*scale),int(y3*scale),int(z4*scale),int(y4*scale), int(z1*scale),int(y1*scale)
|
||||||
print "\t% i % i % i % i % i % i % i % i % i % i" % faceverts
|
print '\t% i % i % i % i % i % i % i % i % i % i' % faceverts
|
||||||
else:
|
|
||||||
pass #it should not occour, but....
|
|
||||||
|
|
||||||
|
|
||||||
def writexy(filename):
|
|
||||||
|
def writexy(ob, filename):
|
||||||
"""writes the x-y view file exported"""
|
"""writes the x-y view file exported"""
|
||||||
global maxX, maxY, maxZ
|
global maxX, maxY, maxZ
|
||||||
global minX, minY, minZ
|
global minX, minY, minZ
|
||||||
global space
|
global space
|
||||||
global scale
|
global scale
|
||||||
#start = time.clock()
|
#start = time.clock()
|
||||||
file = open(filename, "wb")
|
file = open(filename, 'wb')
|
||||||
std=sys.stdout
|
std=sys.stdout
|
||||||
sys.stdout=file
|
sys.stdout=file
|
||||||
xfigheader()
|
xfigheader()
|
||||||
figdata("xy")# xydata()
|
figdata(ob, 'xy')# xydata()
|
||||||
sys.stdout=std
|
sys.stdout=std
|
||||||
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
||||||
file.close()
|
file.close()
|
||||||
#end = time.clock()
|
#end = time.clock()
|
||||||
#seconds = " in %.2f %s" % (end-start, "seconds")
|
#seconds = " in %.2f %s" % (end-start, "seconds")
|
||||||
message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
|
print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
|
||||||
print message
|
|
||||||
|
|
||||||
def writexz(filename):
|
def writexz(filename):
|
||||||
"""writes the x-z view file exported"""
|
"""writes the x-z view file exported"""
|
||||||
global space,maxX,maxY,maxZ, scale
|
global space,maxX,maxY,maxZ, scale
|
||||||
#start = time.clock()
|
#start = time.clock()
|
||||||
file = open(filename, "wb")
|
file = open(filename, 'wb')
|
||||||
std=sys.stdout
|
std=sys.stdout
|
||||||
sys.stdout=file
|
sys.stdout=file
|
||||||
xfigheader()
|
xfigheader()
|
||||||
figdata("xz")#xzdata()
|
figdata(ob, 'xz')#xzdata()
|
||||||
sys.stdout=std
|
sys.stdout=std
|
||||||
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
||||||
file.close()
|
file.close()
|
||||||
#end = time.clock()
|
#end = time.clock()
|
||||||
#seconds = " in %.2f %s" % (end-start, "seconds")
|
#seconds = " in %.2f %s" % (end-start, "seconds")
|
||||||
message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
|
print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
|
||||||
print message
|
|
||||||
|
|
||||||
def writeyz(filename):
|
def writeyz(filename):
|
||||||
"""writes the y-z view file exported"""
|
"""writes the y-z view file exported"""
|
||||||
global maxX, maxY, maxZ, minX, minY, minZ,scale
|
global maxX, maxY, maxZ, minX, minY, minZ,scale
|
||||||
#start = time.clock()
|
#start = time.clock()
|
||||||
file = open(filename, "wb")
|
file = open(filename, 'wb')
|
||||||
|
|
||||||
std=sys.stdout
|
std=sys.stdout
|
||||||
sys.stdout=file
|
sys.stdout=file
|
||||||
|
|
||||||
xfigheader()
|
xfigheader()
|
||||||
figdata("yz")#yzdata()
|
figdata(ob, 'yz')#yzdata()
|
||||||
sys.stdout=std
|
sys.stdout=std
|
||||||
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
||||||
file.close()
|
file.close()
|
||||||
#end = time.clock()
|
#end = time.clock()
|
||||||
#seconds = " in %.2f %s" % (end-start, "seconds")
|
#seconds = " in %.2f %s" % (end-start, "seconds")
|
||||||
message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
|
print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
|
||||||
print message
|
|
||||||
|
|
||||||
def writeall(filename):
|
def writeall(ob, filename):
|
||||||
"""writes all 3 views
|
"""writes all 3 views
|
||||||
|
|
||||||
Every view is a combined object in the resulting xfig. file."""
|
Every view is a combined object in the resulting xfig. file."""
|
||||||
global maxX, maxY, maxZ, minX, minY, minZ,scale
|
global maxX, maxY, maxZ, minX, minY, minZ,scale
|
||||||
#start = time.clock()
|
#start = time.clock()
|
||||||
file = open(filename, "wb")
|
file = open(filename, 'wb')
|
||||||
|
|
||||||
std=sys.stdout
|
std=sys.stdout
|
||||||
sys.stdout=file
|
sys.stdout=file
|
||||||
|
|
||||||
xfigheader()
|
xfigheader()
|
||||||
print "#upper view (7)"
|
print '#upper view (7)'
|
||||||
print "6 % i % i % i % i ", minX, minY, maxX, maxY
|
print '6 % i % i % i % i ', minX, minY, maxX, maxY
|
||||||
figdata("xy") #xydata()
|
figdata(ob, 'xy') #xydata()
|
||||||
print "-6"
|
print '-6'
|
||||||
print "#bottom view (1)"
|
print '#bottom view (1)'
|
||||||
print "6 %i %i %i %i", minX, -minZ+maxZ-minY +space, maxX,-maxZ+maxZ-minY +space
|
print '6 %i %i %i %i', minX, -minZ+maxZ-minY +space, maxX,-maxZ+maxZ-minY +space
|
||||||
figdata ("xz") #xzdata()
|
figdata(ob, 'xz') #xzdata()
|
||||||
print "-6"
|
print '-6'
|
||||||
|
|
||||||
print "#right view (3)"
|
print '#right view (3)'
|
||||||
print "6 %i %i %i %i", minX, minZ-maxZ-maxX-space, maxX,maxZ-maxZ-maxX-space
|
print '6 %i %i %i %i', minX, minZ-maxZ-maxX-space, maxX,maxZ-maxZ-maxX-space
|
||||||
figdata ("yz") #yzdata()
|
figdata(ob, 'yz') #yzdata()
|
||||||
print "-6"
|
print '-6'
|
||||||
|
|
||||||
sys.stdout=std
|
sys.stdout=std
|
||||||
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
|
||||||
file.close()
|
file.close()
|
||||||
#end = time.clock()
|
#end = time.clock()
|
||||||
#seconds = " in %.2f %s" % (end-start, "seconds")
|
#seconds = " in %.2f %s" % (end-start, "seconds")
|
||||||
message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
|
print 'Successfully exported ', Blender.sys.basename(filename)# + seconds
|
||||||
|
|
||||||
|
|
||||||
#********************************************************USER INTERFACE*****************************************************
|
#********************************************************USER INTERFACE*****************************************************
|
||||||
@ -359,38 +297,38 @@ def gui(): # the function to draw the screen
|
|||||||
global mystring, mymsg, toggle, sel3files, scale
|
global mystring, mymsg, toggle, sel3files, scale
|
||||||
global guiret1, guiret2, guiret3, guiret4, guiret5, guiret6, guiret7
|
global guiret1, guiret2, guiret3, guiret4, guiret5, guiret6, guiret7
|
||||||
global ScalePopup, SpacePopup, boolmode, guiscale,hidden_flag
|
global ScalePopup, SpacePopup, boolmode, guiscale,hidden_flag
|
||||||
if len(mystring) > 90: mystring = ""
|
if len(mystring) > 90: mystring = ''
|
||||||
BGL.glClearColor(0,0,1,1)
|
# BGL.glClearColor(0,0,1,1)
|
||||||
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
|
# BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
|
||||||
BGL.glColor3f(1,1,1)
|
BGL.glColor3f(1,1,1)
|
||||||
guiret2=Draw.PushButton("Cancel", 2, 10, 10, 55, 20,"Cancel")
|
guiret2=Draw.PushButton('Cancel', 2, 10, 10, 55, 20,'Cancel')
|
||||||
guiret3=Draw.Toggle("1 file per view", 3, 10, 40, 110,20, sel3files, "3 files")
|
guiret3=Draw.Toggle('1 file per view', 3, 10, 40, 110,20, sel3files, 'Export a file for each view')
|
||||||
guiret4=Draw.PushButton("Export", 4, 70, 10, 70, 20, "Select filename and export")
|
guiret4=Draw.PushButton('Export', 4, 70, 10, 70, 20, 'Select filename and export')
|
||||||
|
|
||||||
ScalePopup=Draw.Number("Scale", 5, 10,70, 110,20, guiscale, 0.0001, 1000.1, "Scaling factor")
|
ScalePopup=Draw.Number('Scale', 5, 10,70, 110,20, guiscale, 0.0001, 1000.1, 'Scaling factor')
|
||||||
SpacePopup=Draw.Number("Space", 6, 10,90, 110,20, space, 0, 10000, "Space between projections")
|
SpacePopup=Draw.Number('Space', 6, 10,90, 110,20, space, 0, 10000, 'Space between projections')
|
||||||
|
|
||||||
guiret5=Draw.Toggle("cm", 7, 120,70, 40,20, boolmode, "set scale to 1 blender unit = 1 cm in xfig")
|
|
||||||
guiret6=Draw.Toggle("in", 8, 162,70, 40,20, not boolmode, "set scale to 1 blender unit = 1 in in xfig")
|
|
||||||
# guiret7 = guiret6=Draw.Toggle("only visible", 9, 120,90, 82,20, hidden_flag, "hidden faces")
|
|
||||||
|
|
||||||
|
guiret5=Draw.Toggle('cm', 7, 120,70, 40,20, boolmode, 'set scale to 1 blender unit = 1 cm in xfig')
|
||||||
|
guiret6=Draw.Toggle('in', 8, 162,70, 40,20, not boolmode, 'set scale to 1 blender unit = 1 in in xfig')
|
||||||
|
|
||||||
BGL.glRasterPos2i(72, 16)
|
BGL.glRasterPos2i(72, 16)
|
||||||
if toggle: toggle_state = "down"
|
if toggle: toggle_state = 'down'
|
||||||
else: toggle_state = "up"
|
else: toggle_state = 'up'
|
||||||
#Draw.Text("The toggle button is %s." % toggle_state, "small")
|
#Draw.Text('The toggle button is %s.' % toggle_state, 'small')
|
||||||
BGL.glRasterPos2i(10, 230)
|
BGL.glRasterPos2i(10, 230)
|
||||||
#Draw.Text("Type letters from a to z, ESC to leave.")
|
#Draw.Text('Type letters from a to z, ESC to leave.')
|
||||||
BGL.glRasterPos2i(20, 200)
|
BGL.glRasterPos2i(20, 200)
|
||||||
Draw.Text(mystring)
|
Draw.Text(mystring)
|
||||||
BGL.glColor3f(1,0.4,0.3)
|
BGL.glColor3f(1,0.4,0.3)
|
||||||
BGL.glRasterPos2i(340, 70)
|
BGL.glRasterPos2i(340, 70)
|
||||||
Draw.Text(mymsg, "tiny")
|
Draw.Text(mymsg, 'tiny')
|
||||||
|
|
||||||
|
|
||||||
def event(evt, val): # the function to handle input events
|
def event(evt, val): # the function to handle input events
|
||||||
Draw.Redraw(1)
|
Draw.Redraw(1)
|
||||||
|
|
||||||
|
import bpy
|
||||||
|
|
||||||
def button_event(evt): # the function to handle Draw Button events
|
def button_event(evt): # the function to handle Draw Button events
|
||||||
global toggle, guiret5,scale, space, SpacePopup, boolmode, dimscale, guiscale
|
global toggle, guiret5,scale, space, SpacePopup, boolmode, dimscale, guiscale
|
||||||
global hidden_flag, sel3files
|
global hidden_flag, sel3files
|
||||||
@ -404,7 +342,13 @@ def button_event(evt): # the function to handle Draw Button events
|
|||||||
sel3files = 1-sel3files
|
sel3files = 1-sel3files
|
||||||
Draw.Redraw(1)
|
Draw.Redraw(1)
|
||||||
if evt==4:
|
if evt==4:
|
||||||
Blender.Window.FileSelector(fs_callback, "Export fig")
|
try: ob = bpy.data.scenes.active.objects.active
|
||||||
|
except: ob = None
|
||||||
|
if not ob or ob.type != 'Mesh':
|
||||||
|
BPyMessages.Error_NoMeshActive()
|
||||||
|
return
|
||||||
|
|
||||||
|
Blender.Window.FileSelector(fs_callback, 'Export fig', Blender.sys.makename(ext='.fig'))
|
||||||
Draw.Exit()
|
Draw.Exit()
|
||||||
return
|
return
|
||||||
if evt==5:
|
if evt==5:
|
||||||
@ -429,13 +373,24 @@ def button_event(evt): # the function to handle Draw Button events
|
|||||||
|
|
||||||
Draw.Register(gui, event, button_event) # registering the 3 callbacks
|
Draw.Register(gui, event, button_event) # registering the 3 callbacks
|
||||||
|
|
||||||
|
import BPyMessages
|
||||||
def fs_callback(filename):
|
def fs_callback(filename):
|
||||||
if filename.find('.fig', -4) > 0: filename = filename[:-4]
|
if filename.lower().endswith('.fig'): filename = filename[:-4]
|
||||||
getmaxmin()
|
|
||||||
|
try: ob = bpy.data.scenes.active.objects.active
|
||||||
|
except: ob = None
|
||||||
|
if not ob or ob.type != 'Mesh':
|
||||||
|
BPyMessages.Error_NoMeshActive()
|
||||||
|
return
|
||||||
|
|
||||||
|
mesh = ob.getData(mesh=1)
|
||||||
|
getmaxmin(ob, mesh)
|
||||||
|
|
||||||
if sel3files:
|
if sel3files:
|
||||||
writexy(filename+"_XY.fig")
|
|
||||||
writexz(filename+"_XZ.fig")
|
writexy(ob, filename + '_XY.fig')
|
||||||
writeyz(filename+"_YZ.fig")
|
writexz(ob, filename + '_XZ.fig')
|
||||||
writeall(filename+"_ALL.fig")
|
writeyz(ob, filename + '_YZ.fig')
|
||||||
|
writeall(ob, filename + '.fig')
|
||||||
print scale
|
print scale
|
||||||
Draw.Exit()
|
Draw.Exit()
|
||||||
|
Loading…
Reference in New Issue
Block a user