[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12129] trunk/blender: Made the remaining UV py scripts work with editmesh now.

Campbell Barton cbarton at metavr.com
Mon Sep 24 11:40:10 CEST 2007


Revision: 12129
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12129
Author:   campbellbarton
Date:     2007-09-24 11:40:09 +0200 (Mon, 24 Sep 2007)

Log Message:
-----------
Made the remaining UV py scripts work with editmesh now.
DrawShadow option didnt check the final derived mesh had CD_MTFACE's can would crash when enabled with mirror modifier.

Modified Paths:
--------------
    trunk/blender/release/scripts/uv_export.py
    trunk/blender/release/scripts/uv_seams_from_islands.py
    trunk/blender/source/blender/src/drawimage.c

Modified: trunk/blender/release/scripts/uv_export.py
===================================================================
--- trunk/blender/release/scripts/uv_export.py	2007-09-24 03:03:43 UTC (rev 12128)
+++ trunk/blender/release/scripts/uv_export.py	2007-09-24 09:40:09 UTC (rev 12129)
@@ -183,12 +183,16 @@
 	
 	time1= Blender.sys.time()
 
-	if obj.type != "Mesh":
+	if not obj or obj.type != "Mesh":
 		BPyMessages.Error_NoMeshActive()
 		return
-
+	
+	is_editmode = Blender.Window.EditMode()
+	if is_editmode: Blender.Window.EditMode(0)
+	
 	mesh = obj.getData(mesh=1)
 	if not mesh.faceUV:
+		if is_editmode: Blender.Window.EditMode(1)
 		BPyMessages.Error_NoMeshUvActive()
 		return
 
@@ -207,6 +211,8 @@
 	
 	UVFaces = ExtractUVFaces(mesh, bAllFaces.val)
 	
+	if is_editmode: Blender.Window.EditMode(1)
+		
 	if not bSVG.val:
 		print "TGA export is running..."
 		UV_Export_TGA(UVFaces, bSize.val, bWSize.val, bWrap.val, name)

Modified: trunk/blender/release/scripts/uv_seams_from_islands.py
===================================================================
--- trunk/blender/release/scripts/uv_seams_from_islands.py	2007-09-24 03:03:43 UTC (rev 12128)
+++ trunk/blender/release/scripts/uv_seams_from_islands.py	2007-09-24 09:40:09 UTC (rev 12129)
@@ -37,7 +37,6 @@
 	# add seams
 	SEAM = Mesh.EdgeFlags.SEAM
 	for ed in me.edges:
-		print len(set(edge_uvs[ed.key]))
 		if len(set(edge_uvs[ed.key])) > 1:
 			ed.flag |= SEAM
 
@@ -59,7 +58,7 @@
 	# editmode if its enabled, we cant make
 	# changes to the mesh data while in editmode.
 	is_editmode = Window.EditMode()
-	if is_editmode: Window.EditMode(1)
+	if is_editmode: Window.EditMode(0)
 	
 	Window.WaitCursor(1)
 	
@@ -68,8 +67,10 @@
 	# Run the mesh editing function
 	seams_from_islands(me)
 	
+	if is_editmode: Window.EditMode(1)
+	
 	# Timing the script is a good way to be aware on any speed hits when scripting
-	print 'My Script finished in %.2f seconds' % (sys.time()-t)
+	print 'UV Seams from Islands finished in %.2f seconds' % (sys.time()-t)
 	Window.WaitCursor(0)
 	
 	

Modified: trunk/blender/source/blender/src/drawimage.c
===================================================================
--- trunk/blender/source/blender/src/drawimage.c	2007-09-24 03:03:43 UTC (rev 12128)
+++ trunk/blender/source/blender/src/drawimage.c	2007-09-24 09:40:09 UTC (rev 12129)
@@ -481,29 +481,34 @@
 		return; /* only draw shadow mesh */
 	} else if (G.sima->flag & SI_DRAWSHADOW) {
 		/* draw shadow mesh - this is the mesh with the modifier applied */
-		DerivedMesh *finalDM, *cageDM;
-		
 		glColor3ub(112, 112, 112);
-		if (G.editMesh->derivedFinal && G.editMesh->derivedFinal->drawUVEdges) {
-			G.editMesh->derivedFinal->drawUVEdges(G.editMesh->derivedFinal);
-		}
-
-		/* draw final mesh with modifiers applied */
-		cageDM = editmesh_get_derived_cage_and_final(&finalDM, CD_MASK_BAREMESH | CD_MASK_MTFACE);
-		
-		if 		(finalDM->drawUVEdges &&
-				DM_get_face_data_layer(finalDM, CD_MTFACE) &&
-				/* When sync selection is enabled, all faces are drawn (except for hidden)
-				 * so if cage is the same as the final, theres no point in drawing the shadowmesh. */
-				!((G.sima->flag & SI_SYNC_UVSEL && cageDM==finalDM))
+		if (	em->derivedFinal &&
+				em->derivedFinal->drawUVEdges &&
+				CustomData_has_layer(&em->derivedFinal->faceData, CD_MTFACE)
 		) {
+			/* we can use the existing final mesh */
 			glColor3ub(112, 112, 112);
-			finalDM->drawUVEdges(finalDM);
+			G.editMesh->derivedFinal->drawUVEdges(G.editMesh->derivedFinal);
+		} else {
+			DerivedMesh *finalDM, *cageDM;
+			
+			/* draw final mesh with modifiers applied */
+			cageDM = editmesh_get_derived_cage_and_final(&finalDM, CD_MASK_BAREMESH | CD_MASK_MTFACE);
+			
+			if 		(finalDM->drawUVEdges &&
+					DM_get_face_data_layer(finalDM, CD_MTFACE) &&
+					/* When sync selection is enabled, all faces are drawn (except for hidden)
+					 * so if cage is the same as the final, theres no point in drawing the shadowmesh. */
+					!((G.sima->flag & SI_SYNC_UVSEL && cageDM==finalDM))
+			) {
+				glColor3ub(112, 112, 112);
+				finalDM->drawUVEdges(finalDM);
+			}
+			
+			if (cageDM != finalDM)
+				cageDM->release(cageDM);
+			finalDM->release(finalDM);
 		}
-		
-		if (cageDM != finalDM)
-			cageDM->release(cageDM);
-		finalDM->release(finalDM);
 	}
 	
 	/* draw transparent faces */





More information about the Bf-blender-cvs mailing list