[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19243] trunk/blender/release/scripts/ ply_import.py: [#18388] PLY Import fails if line ending is not \n

Campbell Barton ideasman42 at gmail.com
Tue Mar 10 07:58:43 CET 2009


Revision: 19243
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19243
Author:   campbellbarton
Date:     2009-03-10 07:58:42 +0100 (Tue, 10 Mar 2009)

Log Message:
-----------
[#18388] PLY Import fails if line ending is not \n
bugfix, read the header as ascii text - open(filename, 'rU'), only the body as binary.

Modified Paths:
--------------
    trunk/blender/release/scripts/ply_import.py

Modified: trunk/blender/release/scripts/ply_import.py
===================================================================
--- trunk/blender/release/scripts/ply_import.py	2009-03-09 21:17:19 UTC (rev 19242)
+++ trunk/blender/release/scripts/ply_import.py	2009-03-10 06:58:42 UTC (rev 19243)
@@ -160,13 +160,16 @@
 	obj_spec = object_spec()
 
 	try:
-		file = open(filename, 'rb')
+		file = open(filename, 'rU') # Only for parsing the header, not binary data
 		signature = file.readline()
-		if (signature != 'ply\n'):
+		
+		if not signature.startswith('ply'):
 			print 'Signature line was invalid'
 			return None
+		
 		while 1:
 			tokens = re.split(r'[ \n]+', file.readline())
+			
 			if (len(tokens) == 0):
 				continue
 			if (tokens[0] == 'end_header'):
@@ -197,14 +200,22 @@
 					obj_spec.specs[-1].properties.append(property_spec(tokens[4], type_specs[tokens[2]], type_specs[tokens[3]]))
 				else:
 					obj_spec.specs[-1].properties.append(property_spec(tokens[2], None, type_specs[tokens[1]]))
+		
+		if format != 'ascii':
+			file.close() # was ascii, now binary
+			file = open(filename, 'rb')
+			
+			# skip the header...
+			while not file.readline().startswith('end_header'):
+				pass
+		
 		obj = obj_spec.load(format_specs[format], file)
-
+		
 	except IOError, (errno, strerror):
 		try:	file.close()
 		except:	pass
 		
 		return None
-
 	try:	file.close()
 	except:	pass
 	





More information about the Bf-blender-cvs mailing list