[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14852] trunk/blender/release/scripts: -> FLT import bug (loose vertices)

Geoffrey Bantle hairbat at yahoo.com
Thu May 15 21:35:19 CEST 2008


Revision: 14852
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14852
Author:   briggs
Date:     2008-05-15 21:35:17 +0200 (Thu, 15 May 2008)

Log Message:
-----------
-> FLT import bug  (loose vertices)

New faceweld code broke the import of meshes with loose
vertices. Also added exception handling to the importer
and exporter so that UI doesnt quite when errors are encountered.
Instead traceback is printed to stderr and control returns to
the script UI

Modified Paths:
--------------
    trunk/blender/release/scripts/flt_export.py
    trunk/blender/release/scripts/flt_import.py

Modified: trunk/blender/release/scripts/flt_export.py
===================================================================
--- trunk/blender/release/scripts/flt_export.py	2008-05-15 19:30:30 UTC (rev 14851)
+++ trunk/blender/release/scripts/flt_export.py	2008-05-15 19:35:17 UTC (rev 14852)
@@ -44,6 +44,8 @@
 from flt_filewalker import FileFinder
 from flt_properties import *
 import shutil
+import trace
+import sys
 
 FF = FileFinder()
 records = process_recordDefs()
@@ -1460,6 +1462,9 @@
 
 FLTAttrib = None
 
+
+FLTWarn = None
+
 def setshadingangle(ID,val):
 	global options
 	options.state['shading_default'] = val
@@ -1523,6 +1528,8 @@
 
 	global FLTAttrib
 	
+	global FLTWarn
+	
 	#choose base path for export
 	if evt == 4:
 		Blender.Window.FileSelector(setBpath, "DB Root", options.state['basepath'])
@@ -1557,8 +1564,13 @@
 	
 	#Export DB
 	if evt == 1:
-		dbexport()
-	
+		try:
+			dbexport()		
+		except Exception, inst:
+			import traceback
+			FLTWarn = Draw.PupBlock("Export Error", ["See console for output!"])
+			traceback.print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
+
 	#exit
 	if evt == 2:
 		Draw.Exit()

Modified: trunk/blender/release/scripts/flt_import.py
===================================================================
--- trunk/blender/release/scripts/flt_import.py	2008-05-15 19:30:30 UTC (rev 14851)
+++ trunk/blender/release/scripts/flt_import.py	2008-05-15 19:35:17 UTC (rev 14852)
@@ -61,6 +61,7 @@
 FLTScale = None
 FLTShadeImport = None
 FLTAttrib = None
+FLTWarn = None
 
 Vector= Blender.Mathutils.Vector
 FLOAT_TOLERANCE = 0.01
@@ -890,6 +891,17 @@
 		return weldmesh 		
 
 	def weldFuseFaces(self,weldmesh):
+
+		#retain original loose vertices
+		looseverts = dict()
+		for vert in self.mesh.verts:
+			looseverts[vert] = 0
+		for edge in self.mesh.edges:
+			looseverts[edge.v1] += 1
+			looseverts[edge.v2] += 1
+
+
+
 		#slight modification here: we need to walk around the mesh as many times as it takes to have no more matches
 		done = 0
 		while not done:
@@ -937,7 +949,7 @@
 				vertuse[vert] += 1
 		delverts = list()
 		for vert in self.mesh.verts:
-			if not vertuse[vert] and vert.index != 0:
+			if not vertuse[vert] and vert.index != 0 and looseverts[vert]:
 				delverts.append(vert)
 		
 		self.mesh.verts.delete(delverts)	
@@ -2405,6 +2417,10 @@
 
 def event(evt,val):
 	pass
+
+from Blender.BGL import *
+from Blender import Draw
+
 def but_event(evt):
 	
 	global FLTBaseLabel
@@ -2418,6 +2434,8 @@
 	global FLTShadeImport
 	global FLTAttrib
 	
+	global FLTWarn
+	
 	#Import DB
 	if evt == 1:
 		if global_prefs['verbose'] >= 1:
@@ -2429,7 +2447,14 @@
 			print
 		
 		GRR = GlobalResourceRepository()
-		select_file(global_prefs['fltfile'], GRR)
+		
+		try:
+			select_file(global_prefs['fltfile'], GRR)
+		except:
+			import traceback
+			FLTWarn = Draw.PupBlock("Export Error", ["See console for output!"])
+			traceback.print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
+	
 	#choose base path for export
 	if evt == 4:
 		Blender.Window.FileSelector(setBpath, "DB Root", global_prefs['fltfile'])
@@ -2450,10 +2475,7 @@
 	for key in global_prefs:
 		d[key] = global_prefs[key]
 		Blender.Registry.SetKey('flt_import', d, 1) 
-	
 
-from Blender.BGL import *
-from Blender import Draw
 def gui():
 	
 	global FLTBaseLabel





More information about the Bf-blender-cvs mailing list