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:
authorCampbell Barton <ideasman42@gmail.com>2006-07-06 23:02:22 +0400
committerCampbell Barton <ideasman42@gmail.com>2006-07-06 23:02:22 +0400
commite8d39a3ca327c3cea1d8fa7f809b10ab854bf7bd (patch)
tree99ec4d957e7e5edac0a30f8a8d266a1a7d320e66 /release/scripts
parent96c6457b26f36bd80a8b8d65b76a90c994f6d25f (diff)
updated raw import/export nice error messages, optimized with LC's removed meshtools depencancy, use Mesh instead of NMesh
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/raw_export.py75
-rw-r--r--release/scripts/raw_import.py89
2 files changed, 90 insertions, 74 deletions
diff --git a/release/scripts/raw_export.py b/release/scripts/raw_export.py
index b8469adc5f4..02eb5ad3f36 100644
--- a/release/scripts/raw_export.py
+++ b/release/scripts/raw_export.py
@@ -1,8 +1,8 @@
#!BPY
"""
-Name: 'Raw Triangle (.raw)...'
-Blender: 232
+Name: 'Raw Faces (.raw)...'
+Blender: 242
Group: 'Export'
Tooltip: 'Export selected mesh to Raw Triangle Format (.raw)'
"""
@@ -53,49 +53,48 @@ Usage:<br>
#
# ***** END GPL LICENCE BLOCK *****
-import Blender, meshtools
-import sys
-#import time
+import Blender
+import BPyMesh
# =================================
# === Write RAW Triangle Format ===
# =================================
def write(filename):
- #start = time.clock()
+ start = Blender.sys.time()
+ if not filename.lower().endswith('.raw'):
+ filename += '.raw'
+
+ scn= Blender.Scene.GetCurrent()
+ object= scn.getActiveObject()
+ if not object:
+ Blender.Draw.PupMenu('Error%t|Select 1 active object')
+ return
+
+ file = open(filename, 'wb')
+
+ mesh = BPyMesh.getMeshFromObject(object, None, True, False, scn)
+ if not mesh:
+ Blender.Draw.PupMenu('Error%t|Could not get mesh data from active object')
+ return
+
+ mesh.transform(object.matrixWorld)
+
+
file = open(filename, "wb")
-
- objects = Blender.Object.GetSelected()
- objname = objects[0].name
- meshname = objects[0].data.name
- mesh = Blender.NMesh.GetRaw(meshname)
- obj = Blender.Object.Get(objname)
-
-
- std=sys.stdout
- sys.stdout=file
- for face in mesh.faces:
- if len(face.v) == 3: # triangle
- v1, v2, v3 = face.v
- faceverts = tuple(v1.co) + tuple(v2.co) + tuple(v3.co)
- print "% f % f % f % f % f % f % f % f % f" % faceverts
- else: # quadrilateral
- v1, v2, v3, v4 = face.v
- faceverts1 = tuple(v1.co) + tuple(v2.co) + tuple(v3.co)
- faceverts2 = tuple(v3.co) + tuple(v4.co) + tuple(v1.co)
- print "% f % f % f % f % f % f % f % f % f" % faceverts1
- print "% f % f % f % f % f % f % f % f % f" % faceverts2
- sys.stdout=std
+ for f in mesh.faces:
+ for v in f.v:
+ file.write('%.6f %.6f %.6f ' % tuple(v.co))
+ file.write('\n')
+ file.close()
+
+ end = Blender.sys.time()
+ message = 'Successfully exported "%s" in %.4f seconds' % ( Blender.sys.basename(filename), end-start)
+ print message
- Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
- file.close()
- #end = time.clock()
- #seconds = " in %.2f %s" % (end-start, "seconds")
- message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
- meshtools.print_boxed(message)
+def main():
+ Blender.Window.FileSelector(write, 'RAW Export', Blender.sys.makename(ext='.raw'))
-def fs_callback(filename):
- if filename.find('.raw', -4) <= 0: filename += '.raw'
- write(filename)
-Blender.Window.FileSelector(fs_callback, "Export Raw")
+if __name__=='__main__':
+ main()
diff --git a/release/scripts/raw_import.py b/release/scripts/raw_import.py
index a452bb4b40e..d3e509e192d 100644
--- a/release/scripts/raw_import.py
+++ b/release/scripts/raw_import.py
@@ -1,8 +1,8 @@
#!BPY
"""
-Name: 'Raw Triangle (.raw)...'
-Blender: 232
+Name: 'Raw Faces (.raw)...'
+Blender: 242
Group: 'Import'
Tooltip: 'Import Raw Triangle File Format (.raw)'
"""
@@ -59,50 +59,67 @@ tolerance.
#
# ***** END GPL LICENCE BLOCK *****
-import Blender, meshtools
-#import time
+import Blender
# ================================
# === Read RAW Triangle Format ===
# ================================
def read(filename):
- #start = time.clock()
+ t = Blender.sys.time()
file = open(filename, "rb")
# Collect data from RAW format
- faces = []
- for line in file.readlines():
- try:
- f1, f2, f3, f4, f5, f6, f7, f8, f9 = map(float, line.split())
- faces.append([(f1, f2, f3), (f4, f5, f6), (f7, f8, f9)])
- except: # Quad
- f1, f2, f3, f4, f5, f6, f7, f8, f9, A, B, C = map(float, line.split())
- faces.append([(f1, f2, f3), (f4, f5, f6), (f7, f8, f9), (A, B, C)])
-
+ def line_to_face(line):
+ # Each triplet is an xyz float
+ line_split= map(float, line.split())
+ if len(line_split)==9: # Tri
+ f1, f2, f3, f4, f5, f6, f7, f8, f9 = line_split
+ return [(f1, f2, f3), (f4, f5, f6), (f7, f8, f9)]
+ if len(line_split)==12: # Quad
+ f1, f2, f3, f4, f5, f6, f7, f8, f9, A, B, C = line_split
+ return [(f1, f2, f3), (f4, f5, f6), (f7, f8, f9), (A, B, C)]
+
+ faces = [ line_to_face(line) for line in file.readlines()]
+ file.close()
+
# Generate verts and faces lists, without duplicates
verts = []
coords = {}
index = 0
- for i in range(len(faces)):
- for j in range(len(faces[i])):
- vertex = faces[i][j]
- if not coords.has_key(vertex):
- coords[vertex] = index
- index += 1
- verts.append(vertex)
- faces[i][j] = coords[vertex]
-
+
+ for f in faces:
+ if f: # Line might be blank
+ for i, v in enumerate(f):
+ try:
+ f[i]= coords[v]
+ except:
+ f[i]= coords[v] = index
+ index += 1
+ verts.append(v)
+
+ me= Blender.Mesh.New()
+ me.verts.extend(verts)
+ me.faces.extend(faces)
+
+
objname = Blender.sys.splitext(Blender.sys.basename(filename))[0]
-
- meshtools.create_mesh(verts, faces, objname)
- Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
- file.close()
- #end = time.clock()
- #seconds = " in %.2f %s" % (end-start, "seconds")
- message = "Successfully imported " + Blender.sys.basename(filename)# + seconds
- meshtools.print_boxed(message)
-
-def fs_callback(filename):
- read(filename)
-
-Blender.Window.FileSelector(fs_callback, "Import Raw")
+ scn= Blender.Scene.GetCurrent()
+ for obj in scn.getChildren():
+ obj.sel= 0
+
+ me.name= objname
+ ob= Blender.Object.New('Mesh', objname)
+ ob.link(me)
+ scn.link(ob)
+ ob.sel= 1
+ ob.Layers= scn.Layers
+ Blender.Redraw()
+
+ print 'Successfully imported "%s" in %.4f seconds' % (Blender.sys.basename(filename), Blender.sys.time()-t)
+
+
+def main():
+ Blender.Window.FileSelector(read, 'RAW Import', Blender.sys.makename(ext='.raw'))
+
+if __name__=='__main__':
+ main()