diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-12-17 15:13:15 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-12-17 16:04:36 +0400 |
commit | f5076d54cb3a95ab583cddb7de07ed746d2e2be6 (patch) | |
tree | 421505d1a20dcb53fd8bfeb97e67e9a97a30566a /source/blender/editors/curve | |
parent | db795b66fa865ad99bc52fb3c9b053b9bb332f9b (diff) |
'Transform' Python Function for armature, curve and lattice.
patch by Paolo Acampora with some edits.
Diffstat (limited to 'source/blender/editors/curve')
-rw-r--r-- | source/blender/editors/curve/editcurve.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index e6ea74b380b..bc97515f055 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -1370,6 +1370,37 @@ void CU_select_swap(Object *obedit) } } +/******************** transform operator **********************/ + +void ED_curve_transform(Curve *cu, float mat[4][4]) +{ + Nurb *nu; + BPoint *bp; + BezTriple *bezt; + int a; + + float scale = mat4_to_scale(mat); + + for (nu = cu->nurb.first; nu; nu = nu->next) { + if (nu->type == CU_BEZIER) { + a = nu->pntsu; + for (bezt = nu->bezt; a--; bezt++) { + mul_m4_v3(mat, bezt->vec[0]); + mul_m4_v3(mat, bezt->vec[1]); + mul_m4_v3(mat, bezt->vec[2]); + bezt->radius *= scale; + } + BKE_nurb_handles_calc(nu); + } + else { + a = nu->pntsu * nu->pntsv; + for (bp = nu->bp; a--; bp++) + mul_m4_v3(mat, bp->vec); + } + } + DAG_id_tag_update(&cu->id, 0); +} + /******************** separate operator ***********************/ static int separate_exec(bContext *C, wmOperator *op) |