Revision: 23271 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23271 Author: campbellbarton Date: 2009-09-16 12:09:57 +0200 (Wed, 16 Sep 2009)
Log Message: ----------- - rna/python api object.create_render_mesh(...) support for getting a mesh from metaballs and curves (bevel, surface, text etc). - povray converts curves to meshes on export, (metaballs don't need meshing). - use 'extend' bool rather then 'seltype' enum for object_select operators for consistency. Modified Paths: -------------- trunk/blender/release/io/engine_render_pov.py trunk/blender/source/blender/editors/object/object_select.c trunk/blender/source/blender/editors/space_node/node_select.c trunk/blender/source/blender/editors/space_view3d/view3d_select.c trunk/blender/source/blender/makesrna/intern/rna_object_api.c Modified: trunk/blender/release/io/engine_render_pov.py =================================================================== --- trunk/blender/release/io/engine_render_pov.py 2009-09-16 09:55:06 UTC (rev 23270) +++ trunk/blender/release/io/engine_render_pov.py 2009-09-16 10:09:57 UTC (rev 23271) @@ -275,7 +275,7 @@ for ob in sel: ob_num+= 1 - if ob.type in ('LAMP', 'CAMERA', 'EMPTY'): + if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META'): continue me = ob.data Modified: trunk/blender/source/blender/editors/object/object_select.c =================================================================== --- trunk/blender/source/blender/editors/object/object_select.c 2009-09-16 09:55:06 UTC (rev 23270) +++ trunk/blender/source/blender/editors/object/object_select.c 2009-09-16 10:09:57 UTC (rev 23271) @@ -53,6 +53,7 @@ #include "BKE_property.h" #include "BKE_report.h" #include "BKE_scene.h" +#include "BKE_utildefines.h" #include "WM_api.h" #include "WM_types.h" @@ -117,22 +118,16 @@ /********************** Selection Operators **********************/ -static EnumPropertyItem prop_select_types[] = { - {0, "EXCLUSIVE", 0, "Exclusive", ""}, - {1, "EXTEND", 0, "Extend", ""}, - {0, NULL, 0, NULL, NULL} -}; - /************************ Select by Type *************************/ static int object_select_by_type_exec(bContext *C, wmOperator *op) { - short obtype, seltype; + short obtype, extend; obtype = RNA_enum_get(op->ptr, "type"); - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); - if (seltype == 0) { + if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } @@ -166,9 +161,9 @@ /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "seltype", prop_select_types, 0, "Selection", "Extend selection or clear selection then select"); + /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); RNA_def_enum(ot->srna, "type", object_type_items, 1, "Type", ""); - } /*********************** Selection by Links *********************/ @@ -192,7 +187,7 @@ Tex *tex=0; int a, b; int nr = RNA_enum_get(op->ptr, "type"); - short changed = 0, seltype; + short changed = 0, extend; /* events (nr): * Object Ipo: 1 * ObData: 2 @@ -202,9 +197,9 @@ * PSys: 6 */ - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); - if (seltype == 0) { + if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } @@ -327,9 +322,9 @@ /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); RNA_def_enum(ot->srna, "type", prop_select_linked_types, 0, "Type", ""); - RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select"); - } /*********************** Selected Grouped ********************/ @@ -575,11 +570,11 @@ Scene *scene= CTX_data_scene(C); Object *ob; int nr = RNA_enum_get(op->ptr, "type"); - short changed = 0, seltype; + short changed = 0, extend; - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); - if (seltype == 0) { + if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } @@ -628,8 +623,8 @@ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", ""); - RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select"); } /************************* Select by Layer **********************/ @@ -637,12 +632,12 @@ static int object_select_by_layer_exec(bContext *C, wmOperator *op) { unsigned int layernum; - short seltype; + short extend; - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); layernum = RNA_int_get(op->ptr, "layer"); - if (seltype == 0) { + if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } @@ -676,8 +671,9 @@ /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); RNA_def_int(ot->srna, "layer", 1, 1, 20, "Layer", "", 1, 20); - RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select"); } /************************** Select Inverse *************************/ @@ -878,9 +874,9 @@ static int object_select_mirror_exec(bContext *C, wmOperator *op) { char tmpname[32]; - short seltype; + short extend; - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); CTX_DATA_BEGIN(C, Base*, primbase, selected_bases) { @@ -894,7 +890,7 @@ } CTX_DATA_END; - if (seltype == 0) ED_base_object_select(primbase, BA_DESELECT); + if (extend == 0) ED_base_object_select(primbase, BA_DESELECT); } CTX_DATA_END; @@ -920,7 +916,7 @@ /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select"); + RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); } @@ -981,11 +977,11 @@ static int object_select_random_exec(bContext *C, wmOperator *op) { float percent; - short seltype; + short extend; - seltype = RNA_enum_get(op->ptr, "seltype"); + extend= RNA_boolean_get(op->ptr, "extend"); - if (seltype == 0) { + if (extend == 0) { CTX_DATA_BEGIN(C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } @@ -1020,8 +1016,9 @@ /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.0f, "Percent", "percentage of objects to randomly select", 0.0001f, 1.0f); - RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select"); } Modified: trunk/blender/source/blender/editors/space_node/node_select.c =================================================================== --- trunk/blender/source/blender/editors/space_node/node_select.c 2009-09-16 09:55:06 UTC (rev 23270) +++ trunk/blender/source/blender/editors/space_node/node_select.c 2009-09-16 10:09:57 UTC (rev 23271) @@ -224,12 +224,6 @@ /* ****** Border Select ****** */ -static EnumPropertyItem prop_select_types[] = { - {NODE_EXCLUSIVE, "EXCLUSIVE", 0, "Exclusive", ""}, /* right mouse */ - {NODE_EXTEND, "EXTEND", 0, "Extend", ""}, /* left mouse */ - {0, NULL, 0, NULL, NULL} -}; - static int node_borderselect_exec(bContext *C, wmOperator *op) { SpaceNode *snode= CTX_wm_space_node(C); @@ -288,8 +282,6 @@ RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); - - RNA_def_enum(ot->srna, "type", prop_select_types, 0, "Type", ""); } /* ****** Select/Deselect All ****** */ Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c =================================================================== --- trunk/blender/source/blender/editors/space_view3d/view3d_select.c 2009-09-16 09:55:06 UTC (rev 23270) +++ trunk/blender/source/blender/editors/space_view3d/view3d_select.c 2009-09-16 10:09:57 UTC (rev 23271) @@ -1592,7 +1592,7 @@ RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); - RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everyting first."); + RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); } /* ****** Mouse Select ****** */ Modified: trunk/blender/source/blender/makesrna/intern/rna_object_api.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_object_api.c 2009-09-16 09:55:06 UTC (rev 23270) +++ trunk/blender/source/blender/makesrna/intern/rna_object_api.c 2009-09-16 10:09:57 UTC (rev 23271) @@ -38,32 +38,94 @@ #include "BKE_customdata.h" #include "BKE_DerivedMesh.h" +#include "BKE_displist.h" +#include "BKE_object.h" +#include "BKE_main.h" #include "DNA_mesh_types.h" +#include "DNA_curve_types.h" #include "DNA_scene_types.h" /* copied from init_render_mesh (render code) */ -static Mesh *rna_Object_create_render_mesh(Object *ob, Scene *scene) +static Mesh *rna_Object_create_render_mesh(Object *ob, bContext *C, Scene *scene) { CustomDataMask mask = CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL; + Object *tmpobj = NULL; DerivedMesh *dm; Mesh *me; - /* TODO: other types */ - if(ob->type != OB_MESH) - return NULL; + switch(ob->type) { + case OB_FONT: + case OB_CURVE: + case OB_SURF: + { + int cage = 0; //XXX -todo + Curve *tmpcu = NULL; + + /* copies object and modifiers (but not the data) */ + tmpobj= copy_object( ob ); + tmpcu = (Curve *)tmpobj->data; + tmpcu->id.us--; + + /* if getting the original caged mesh, delete object modifiers */ + if( cage ) + object_free_modifiers(tmpobj); + + /* copies the data */ + tmpobj->data = copy_curve( (Curve *) ob->data ); + +#if 0 + /* copy_curve() sets disp.first null, so currently not need */ + { + Curve *cu; + cu = (Curve *)tmpobj->data; + if( cu->disp.first ) + MEM_freeN( cu->disp.first ); + cu->disp.first = NULL; + } - dm= mesh_create_derived_render(scene, ob, mask); +#endif - if(!dm) + /* get updated display list, and convert to a mesh */ + makeDispListCurveTypes( scene, tmpobj, 0 ); + nurbs_to_mesh( tmpobj ); + @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs