diff --git a/release/scripts/disp_paint.py b/release/scripts/disp_paint.py index 934ab6f9c54..8dac2a26dbf 100644 --- a/release/scripts/disp_paint.py +++ b/release/scripts/disp_paint.py @@ -378,7 +378,7 @@ def draw(): 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 @@ -430,4 +430,5 @@ def bevent(evt): Blender.Redraw() +Window.EditMode(0) Register(draw, event, bevent) diff --git a/release/scripts/knife.py b/release/scripts/knife.py index dfe3135dd68..4a7943d8902 100644 --- a/release/scripts/knife.py +++ b/release/scripts/knife.py @@ -657,7 +657,7 @@ def draw(): 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() diff --git a/release/scripts/rvk1_torvk2.py b/release/scripts/rvk1_torvk2.py index 0671e44938b..8350f82d84b 100644 --- a/release/scripts/rvk1_torvk2.py +++ b/release/scripts/rvk1_torvk2.py @@ -107,4 +107,5 @@ def rvk2rvk(): Draw.PupMenu('Error| You need to select two meshes.') +Blender.Window.EditMode(0) rvk2rvk() diff --git a/release/scripts/sel_same.py b/release/scripts/sel_same.py index 38c216116ba..15941272f1c 100644 --- a/release/scripts/sel_same.py +++ b/release/scripts/sel_same.py @@ -61,13 +61,12 @@ else: 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') - + else: # Okay everything seems sane #===================================== @@ -152,7 +151,7 @@ else: # Okay everything seems sane 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): @@ -164,8 +163,6 @@ else: # Okay everything seems sane avcolIdx += 1 return 1 - - # 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 # #=============================# @@ -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) ) - 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. - 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 @@ -247,10 +244,13 @@ else: # Okay everything seems sane 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: @@ -280,9 +280,7 @@ else: # Okay everything seems sane if compare(afArea, faceArea(f), limit): setFSel(f) else: setFUnSel(f) - def get_same_prop(limit): - # 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) + #=====================# # 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 @@ -365,4 +363,4 @@ else: # Okay everything seems sane # If limit is not set then dont bother if limit != None: - mesh.update() + mesh.update(0) diff --git a/release/scripts/unweld044.py b/release/scripts/unweld044.py index d93ef474703..06551a0de53 100644 --- a/release/scripts/unweld044.py +++ b/release/scripts/unweld044.py @@ -1,7 +1,7 @@ #!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.' """ @@ -57,6 +57,8 @@ from Blender import Noise 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] @@ -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 - if (evt== QKEY): Exit() + if (evt== QKEY or evt== ESCKEY): Exit() if (evt == MOUSEX): mouse_x = val diff --git a/source/blender/python/api2_2x/Window.c b/source/blender/python/api2_2x/Window.c index 754831e89a8..fd66819b0d5 100644 --- a/source/blender/python/api2_2x/Window.c +++ b/source/blender/python/api2_2x/Window.c @@ -42,6 +42,7 @@ #include #include #include +#include /* for undo_push_mesh() */ #include #include #include @@ -666,7 +667,6 @@ static PyObject *M_Window_SetViewQuat(PyObject *self, PyObject *args) { int ok = 0; float val[4]; - float *vec; 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]; - float *vec; 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(); } - 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); diff --git a/source/blender/python/api2_2x/doc/API_intro.py b/source/blender/python/api2_2x/doc/API_intro.py index ad85ebb56b8..2dae78929a7 100644 --- a/source/blender/python/api2_2x/doc/API_intro.py +++ b/source/blender/python/api2_2x/doc/API_intro.py @@ -20,7 +20,7 @@ The Blender Python API Reference - L{Draw} (*) - L{Effect} - L{Image} (*) - - L{Ipo} + - L{Ipo} (*) - L{Lamp} (*) - L{Lattice} - L{Library} diff --git a/source/blender/python/api2_2x/doc/Ipo.py b/source/blender/python/api2_2x/doc/Ipo.py index 84ee673cdde..64f78efd38c 100644 --- a/source/blender/python/api2_2x/doc/Ipo.py +++ b/source/blender/python/api2_2x/doc/Ipo.py @@ -3,6 +3,8 @@ """ 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. @@ -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. - 10.Sequence Ipo: Fac. - 11.Constraint Ipo: Inf. + 10. Sequence Ipo: Fac. + 11. Constraint Ipo: Inf. @type curvename : string @rtype: IpoCurve object diff --git a/source/blender/python/api2_2x/doc/NMesh.py b/source/blender/python/api2_2x/doc/NMesh.py index 664e061463e..b98793e3798 100644 --- a/source/blender/python/api2_2x/doc/NMesh.py +++ b/source/blender/python/api2_2x/doc/NMesh.py @@ -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). - @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