Scripts:
authorWillian Padovani Germano <wpgermano@gmail.com>
Wed, 28 Jul 2004 17:46:29 +0000 (17:46 +0000)
committerWillian Padovani Germano <wpgermano@gmail.com>
Wed, 28 Jul 2004 17:46:29 +0000 (17:46 +0000)
- Campbell Barton updated his sel_same.py script;
- Added to Mesh scripts a call to Window.EditMode(0) to leave editmode before changing meshes.

BPython:
- small doc fixes / updates;
- added a call to undo_push_mesh inside Window.EditMode(0).

Mesh scripts could change the mesh but not the editmesh -- that would then overwrite the changed mesh.  Made all mesh scripts leave edit mode before changing a mesh.

release/scripts/disp_paint.py
release/scripts/knife.py
release/scripts/rvk1_torvk2.py
release/scripts/sel_same.py
release/scripts/unweld044.py
source/blender/python/api2_2x/Window.c
source/blender/python/api2_2x/doc/API_intro.py
source/blender/python/api2_2x/doc/Ipo.py
source/blender/python/api2_2x/doc/NMesh.py

index 934ab6f9c547dff8c7483b2672f7bc128cf815fd..8dac2a26dbf69cb11b6351580500b124089d5340 100644 (file)
@@ -378,7 +378,7 @@ def draw():
                  
 
 def event(evt, val):    
                  
 
 def event(evt, val):    
-    if (evt== QKEY and not val): Exit()
+    if ((evt== QKEY or evt== ESCKEY) and not val): Exit()
 
 def bevent(evt):
     global MODEMenu, NSIZE, ng, TMATList
 
 def bevent(evt):
     global MODEMenu, NSIZE, ng, TMATList
@@ -430,4 +430,5 @@ def bevent(evt):
 
     Blender.Redraw()
  
 
     Blender.Redraw()
  
+Window.EditMode(0)
 Register(draw, event, bevent)
 Register(draw, event, bevent)
index dfe3135dd689ca2d9a2b507cb711e375cfb2f2b9..4a7943d89022a573c6b8107241a4575a6086e0c7 100644 (file)
@@ -657,7 +657,7 @@ def draw():
        msg = ''
        
 def event(evt, val):
        msg = ''
        
 def event(evt, val):
-       if evt == Draw.QKEY and not val:
+       if (evt == Draw.QKEY or evt == Draw.ESCKEY) and not val:
                Draw.Exit()
        if evt == Draw.CKEY and not val:
                CutMesh()
                Draw.Exit()
        if evt == Draw.CKEY and not val:
                CutMesh()
index 0671e44938b4c7e2fd90cfd18262eff3c3c606ec..8350f82d84b20d36547c2e7163494ea903074044 100644 (file)
@@ -107,4 +107,5 @@ def rvk2rvk():
     Draw.PupMenu('Error| You need to select two meshes.') 
   
 
     Draw.PupMenu('Error| You need to select two meshes.') 
   
 
+Blender.Window.EditMode(0)
 rvk2rvk()
 rvk2rvk()
index 38c216116ba5e993b560e552f04410a03afdc419..15941272f1c089154fb44289684e8ccdda21ec88 100644 (file)
@@ -61,13 +61,12 @@ else:
     mesh = object.getData()
     
     # We have a mesh so find AF.
     mesh = object.getData()
     
     # We have a mesh so find AF.
-    for f in mesh.faces:
-      if f.flag & NMesh.FaceFlags['ACTIVE']:
-        af = f
+    af = mesh.getActiveFace()
+    if af: af = mesh.faces[af]
 
 if af == None:
   error('no active face')
 
 if af == None:
   error('no active face')
-  
+
 else: # Okay everything seems sane
   
   #=====================================
 else: # Okay everything seems sane
   
   #=====================================
@@ -152,7 +151,7 @@ else: # Okay everything seems sane
         avcolIdx = 0
         while avcolIdx < len(f1.col):
           match = 0
         avcolIdx = 0
         while avcolIdx < len(f1.col):
           match = 0
-      
+          
           vcolIdx = 0
           while vcolIdx < len(f2.col):
             if colCompare(f1.col[avcolIdx], f2.col[vcolIdx], limit):
           vcolIdx = 0
           while vcolIdx < len(f2.col):
             if colCompare(f1.col[avcolIdx], f2.col[vcolIdx], limit):
@@ -164,8 +163,6 @@ else: # Okay everything seems sane
           avcolIdx += 1
         return 1
       
           avcolIdx += 1
         return 1
       
-      
-      
       # Makes sure face 2 has matching UVs within the limit.
       def faceUvCompare(f1, f2, limit):
         for auv in f1.uv:
       # Makes sure face 2 has matching UVs within the limit.
       def faceUvCompare(f1, f2, limit):
         for auv in f1.uv:
@@ -193,7 +190,6 @@ else: # Okay everything seems sane
       #====================#
       
       
       #====================#
       
       
-      
       #=============================#
       # Blender functions/shortcuts #
       #=============================#
       #=============================#
       # Blender functions/shortcuts #
       #=============================#
@@ -212,7 +208,6 @@ else: # Okay everything seems sane
         elif len(f.v) == 3:
           return (measure(f.v[0].co, f.v[1].co), measure(f.v[1].co, f.v[2].co), measure(f.v[2].co, f.v[0].co) )
       
         elif len(f.v) == 3:
           return (measure(f.v[0].co, f.v[1].co), measure(f.v[1].co, f.v[2].co), measure(f.v[2].co, f.v[0].co) )
       
-      
       def faceCent(f):
         x = y = z = 0
         for v in f.v:
       def faceCent(f):
         x = y = z = 0
         for v in f.v:
@@ -229,7 +224,9 @@ else: # Okay everything seems sane
       #========================================#
       def fShouldCompare(f):
         # Only calculate for faces that will be affected.
       #========================================#
       def fShouldCompare(f):
         # Only calculate for faces that will be affected.
-        if faceOp == 1 and f.flag == 1:
+        if len(f.v) < 3: # cant be an edge
+          return 0
+        elif faceOp == 1 and f.flag == 1:
           return 0
         elif faceOp == 0 and f.flag == 0:
           return 0
           return 0
         elif faceOp == 0 and f.flag == 0:
           return 0
@@ -247,10 +244,13 @@ else: # Okay everything seems sane
             else:               setFUnSel(f)
       
       def get_same_image():
             else:               setFUnSel(f)
       
       def get_same_image():
-        for f in mesh.faces:
-          if fShouldCompare(f):
-            if af.image == f.image: setFSel(f)
-            else:                   setFUnSel(f)
+        if mesh.hasFaceUV() == 0:
+          error('mesh has no uv image')
+        else:
+          for f in mesh.faces:
+            if fShouldCompare(f):
+              if af.image == f.image: setFSel(f)
+              else:                   setFUnSel(f)
       
       def get_same_mode():
         for f in mesh.faces:
       
       def get_same_mode():
         for f in mesh.faces:
@@ -280,9 +280,7 @@ else: # Okay everything seems sane
             if compare(afArea, faceArea(f), limit): setFSel(f)
             else:                                   setFUnSel(f)
       
             if compare(afArea, faceArea(f), limit): setFSel(f)
             else:                                   setFUnSel(f)
       
-        
       def get_same_prop(limit):
       def get_same_prop(limit):
-        
         # Here we get the perimeter and use it for a proportional limit modifier.
         afEdgeLens = getEdgeLengths(af)
         perim = 0
         # Here we get the perimeter and use it for a proportional limit modifier.
         afEdgeLens = getEdgeLengths(af)
         perim = 0
@@ -326,10 +324,10 @@ else: # Okay everything seems sane
               setFSel(f)
             else:
               setFUnSel(f)
               setFSel(f)
             else:
               setFUnSel(f)
+      
       #=====================#
       # End Sel same funcs  #
       #=====================#
       #=====================#
       # End Sel same funcs  #
       #=====================#
-      
       limit = 1 # some of these dont use the limit so it needs to be set, to somthing.
       # act on the menu item selected
       if method == 1: # Material
       limit = 1 # some of these dont use the limit so it needs to be set, to somthing.
       # act on the menu item selected
       if method == 1: # Material
@@ -365,4 +363,4 @@ else: # Okay everything seems sane
       
       # If limit is not set then dont bother
       if limit != None:
       
       # If limit is not set then dont bother
       if limit != None:
-        mesh.update()
+        mesh.update(0)
index d93ef474703f005cc26aafb28bcba404ca7013eb..06551a0de53d2cbd9fbc4d169f477e90e3f68f63 100644 (file)
@@ -1,7 +1,7 @@
 #!BPY
 """ Registration info for Blender menus: <- these words are ignored
 Name: 'UnWeld'
 #!BPY
 """ Registration info for Blender menus: <- these words are ignored
 Name: 'UnWeld'
-Blender: 232
+Blender: 234
 Group: 'Mesh'
 Tip: 'Unweld all faces from a selected and common vertex. Made vertex bevelling.'
 """
 Group: 'Mesh'
 Tip: 'Unweld all faces from a selected and common vertex. Made vertex bevelling.'
 """
@@ -57,6 +57,8 @@ from Blender import Noise
 from Blender.Draw import *
 from Blender.BGL import *
 
 from Blender.Draw import *
 from Blender.BGL import *
 
+Blender.Window.EditMode(0)
+
 Nr=Noise.random
 decal=0.03
 t=[0.0,0.0,0.0]
 Nr=Noise.random
 decal=0.03
 t=[0.0,0.0,0.0]
@@ -196,7 +198,7 @@ def D():
 def E(evt,val):
  global mouse_x,x,pl,orig,me,debut
  global mouse_y,y, MouseClickG,MouseClickD,MouseClickM
 def E(evt,val):
  global mouse_x,x,pl,orig,me,debut
  global mouse_y,y, MouseClickG,MouseClickD,MouseClickM
- if (evt== QKEY): Exit()
+ if (evt== QKEY or evt== ESCKEY): Exit()
  
  if (evt == MOUSEX): 
        mouse_x = val
  
  if (evt == MOUSEX): 
        mouse_x = val
index 754831e89a8704a41e41d9f6798082222be0db16..fd66819b0d5f4e8ae11a8ac6f6baa5302c8379bc 100644 (file)
@@ -42,6 +42,7 @@
 #include <BIF_mywindow.h>
 #include <BSE_headerbuttons.h>
 #include <BSE_filesel.h>
 #include <BIF_mywindow.h>
 #include <BSE_headerbuttons.h>
 #include <BSE_filesel.h>
+#include <BIF_editmesh.h> /* for undo_push_mesh() */
 #include <BIF_screen.h>
 #include <BIF_space.h>
 #include <BIF_drawtext.h>
 #include <BIF_screen.h>
 #include <BIF_space.h>
 #include <BIF_drawtext.h>
@@ -666,7 +667,6 @@ static PyObject *M_Window_SetViewQuat(PyObject *self, PyObject *args)
 {
        int ok = 0;
        float val[4];
 {
        int ok = 0;
        float val[4];
-       float *vec;
 
        if (!G.vd) {
                Py_INCREF (Py_None);
 
        if (!G.vd) {
                Py_INCREF (Py_None);
@@ -715,7 +715,6 @@ static PyObject *M_Window_SetViewOffset(PyObject *self, PyObject *args)
 {
        int ok = 0;
        float val[3];
 {
        int ok = 0;
        float val[3];
-       float *vec;
 
        if (!G.vd) {
                Py_INCREF (Py_None);
 
        if (!G.vd) {
                Py_INCREF (Py_None);
@@ -773,7 +772,10 @@ static PyObject *M_Window_EditMode(PyObject *self, PyObject *args)
                if (status) {
                                if (!G.obedit) enter_editmode();
                }
                if (status) {
                                if (!G.obedit) enter_editmode();
                }
-               else if (G.obedit) exit_editmode(1);
+               else if (G.obedit) {
+                       undo_push_mesh("From script"); /* use better solution after 2.34 */
+                       exit_editmode(1);
+               }
        }
 
        return Py_BuildValue("h", G.obedit?1:0);
        }
 
        return Py_BuildValue("h", G.obedit?1:0);
index ad85ebb56b80f445146714a7097ef23908311977..2dae78929a7ba160c5eff32aaa5451bd0db9f9d4 100644 (file)
@@ -20,7 +20,7 @@ The Blender Python API Reference
   - L{Draw} (*)
   - L{Effect}
   - L{Image} (*)
   - L{Draw} (*)
   - L{Effect}
   - L{Image} (*)
-  - L{Ipo}
+  - L{Ipo} (*)
   - L{Lamp} (*)
   - L{Lattice}
   - L{Library}
   - L{Lamp} (*)
   - L{Lattice}
   - L{Library}
index 84ee673cdde9fba76aa3f7bba74c8dc9315ca794..64f78efd38c3942c033bc8873bdd012a8e12b47a 100644 (file)
@@ -3,6 +3,8 @@
 """
 The Blender.Ipo submodule
 
 """
 The Blender.Ipo submodule
 
+B{New}: Ipo updates to both the program and bpython acess.
+
 This module provides access to the Ipo Data in Blender. An Ipo is composed of
 several Ipocurves.
 
 This module provides access to the Ipo Data in Blender. An Ipo is composed of
 several Ipocurves.
 
@@ -91,8 +93,8 @@ class Ipo:
       8. Key Ipo: Speed, 'Key 1' - 'Key 31'.
       9. Action Ipo: LocX, LocY, LocZ, SizeX, SizeY, SizeZ,
       QuatX, QuatY, QuatZ, QuatW.
       8. Key Ipo: Speed, 'Key 1' - 'Key 31'.
       9. Action Ipo: LocX, LocY, LocZ, SizeX, SizeY, SizeZ,
       QuatX, QuatY, QuatZ, QuatW.
-      10.Sequence Ipo: Fac.
-      11.Constraint Ipo: Inf.
+      10. Sequence Ipo: Fac.
+      11. Constraint Ipo: Inf.
       
     @type curvename : string
     @rtype: IpoCurve object
       
     @type curvename : string
     @rtype: IpoCurve object
index 664e061463e08fb7f27ee6b30dbc3811e76bdb30..b98793e3798cc4ac478adf933d8f6d963f7bea43 100644 (file)
@@ -400,7 +400,7 @@ class NMesh:
     @rtype: bool
     @return: True if successful or False if this NMesh wasn't linked to a real
        Blender Mesh yet (or was, but the Mesh had no keys).
     @rtype: bool
     @return: True if successful or False if this NMesh wasn't linked to a real
        Blender Mesh yet (or was, but the Mesh had no keys).
-    @warn: Currently the mesh keys from meshs that are grabbed with
+    @warn: Currently the mesh keys from meshes that are grabbed with
        NMesh.GetRaw() or .GetRawFromObject() are preserved, so if you want to
        clear them or don't want them at all, remember to call this method.  Of
        course NMeshes created with NMesh.New() don't have mesh keys until you
        NMesh.GetRaw() or .GetRawFromObject() are preserved, so if you want to
        clear them or don't want them at all, remember to call this method.  Of
        course NMeshes created with NMesh.New() don't have mesh keys until you