made scn.objects more flexible... you can now things like...
scn.objects.selected = [] # deselect all scn.objects.selected = scn.objects # select all scn.objects.context = [ob1, ob2...] Added epydoc examples and updates importer scripts to use this de-select-all method.
This commit is contained in:
@@ -794,8 +794,7 @@ def load_3ds(filename, PREF_UI= True):
|
|||||||
|
|
||||||
scn= Scene.GetCurrent()
|
scn= Scene.GetCurrent()
|
||||||
SCN_OBJECTS = scn.objects
|
SCN_OBJECTS = scn.objects
|
||||||
for ob in SCN_OBJECTS:
|
SCN_OBJECTS.selected = [] # de select all
|
||||||
ob.sel= 0
|
|
||||||
|
|
||||||
importedObjects= [] # Fill this list with objects
|
importedObjects= [] # Fill this list with objects
|
||||||
process_next_chunk(file, current_chunk, importedObjects)
|
process_next_chunk(file, current_chunk, importedObjects)
|
||||||
|
|||||||
@@ -548,9 +548,8 @@ Blender.Text.unlink(scripting)
|
|||||||
#Go to frame that correspond to selected "vertex"
|
#Go to frame that correspond to selected "vertex"
|
||||||
Blender.Set('curframe', TestFRAME[k])
|
Blender.Set('curframe', TestFRAME[k])
|
||||||
|
|
||||||
#un select all objects
|
scene.objects.selected = [] #un select all objects
|
||||||
for _ob in Blender.Object.GetSelected():
|
|
||||||
_ob.sel= False
|
|
||||||
#FIXED TestLIST[j][0].sel=0, but no j. So ob.sel and above variable changed in obj
|
#FIXED TestLIST[j][0].sel=0, but no j. So ob.sel and above variable changed in obj
|
||||||
ob.sel= True
|
ob.sel= True
|
||||||
Blender.Run('Edit_Trajectory')
|
Blender.Run('Edit_Trajectory')
|
||||||
|
|||||||
@@ -311,8 +311,7 @@ def bvh_node_dict2objects(bvh_nodes, IMPORT_START_FRAME= 1):
|
|||||||
IMPORT_START_FRAME= 1
|
IMPORT_START_FRAME= 1
|
||||||
|
|
||||||
scn= Blender.Scene.GetCurrent()
|
scn= Blender.Scene.GetCurrent()
|
||||||
for ob in scn.objects:
|
scn.objects.selected = []
|
||||||
ob.sel= 0
|
|
||||||
|
|
||||||
objects= []
|
objects= []
|
||||||
|
|
||||||
@@ -444,14 +443,10 @@ def bvh_node_dict2armature(bvh_nodes, IMPORT_START_FRAME= 1):
|
|||||||
|
|
||||||
scn= Blender.Scene.GetCurrent()
|
scn= Blender.Scene.GetCurrent()
|
||||||
|
|
||||||
for ob in scn.objects:
|
scn.objects.selected = []
|
||||||
ob.sel= 0
|
|
||||||
|
|
||||||
scn.link(arm_ob)
|
scn.link(arm_ob)
|
||||||
arm_ob.sel= 1
|
scn.objects.context = [arm_ob]
|
||||||
arm_ob.Layers= scn.Layers
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Now Apply the animation to the armature
|
# Now Apply the animation to the armature
|
||||||
|
|
||||||
|
|||||||
@@ -672,7 +672,7 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
|
|||||||
|
|
||||||
|
|
||||||
# deselect all
|
# deselect all
|
||||||
for ob in Scene.GetCurrent().objects: ob.sel= False
|
Scene.GetCurrent().objects.selected = []
|
||||||
new_objects= [] # put new objects here
|
new_objects= [] # put new objects here
|
||||||
|
|
||||||
print '\tbuilding geometry;\n\tverts:%i faces:%i materials: %i smoothgroups:%i ...' % ( len(verts_loc), len(faces), len(unique_materials), len(unique_smooth_groups) ),
|
print '\tbuilding geometry;\n\tverts:%i faces:%i materials: %i smoothgroups:%i ...' % ( len(verts_loc), len(faces), len(unique_materials), len(unique_smooth_groups) ),
|
||||||
|
|||||||
@@ -222,8 +222,7 @@ def read(filename):
|
|||||||
tobj.logcon ("Importing file:")
|
tobj.logcon ("Importing file:")
|
||||||
tobj.logcon (filename)
|
tobj.logcon (filename)
|
||||||
|
|
||||||
for ob in Blender.Scene.GetCurrent().objects:
|
Blender.Scene.GetCurrent().objects.selected = []
|
||||||
ob.sel= 0
|
|
||||||
|
|
||||||
start = Blender.sys.time()
|
start = Blender.sys.time()
|
||||||
file = open(filename, "rb")
|
file = open(filename, "rb")
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ def polysFromMesh(me):
|
|||||||
|
|
||||||
def mesh2polys():
|
def mesh2polys():
|
||||||
scn= Scene.GetCurrent()
|
scn= Scene.GetCurrent()
|
||||||
for ob in scn.objects:
|
scn.objects.selected = []
|
||||||
ob.sel= 0
|
|
||||||
meshOb= scn.objects.active
|
meshOb= scn.objects.active
|
||||||
if meshOb==None or meshOb.type != 'Mesh':
|
if meshOb==None or meshOb.type != 'Mesh':
|
||||||
Draw.PupMenu( 'ERROR: No Active Mesh Selected, Aborting' )
|
Draw.PupMenu( 'ERROR: No Active Mesh Selected, Aborting' )
|
||||||
|
|||||||
@@ -83,6 +83,14 @@ PyObject *M_Object_Get( PyObject * self, PyObject * args ); /* from Object.c */
|
|||||||
#define SCENE_DEL_CHECK_PY(bpy_scene) if (!(bpy_scene->scene)) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "Scene has been removed" ) )
|
#define SCENE_DEL_CHECK_PY(bpy_scene) if (!(bpy_scene->scene)) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "Scene has been removed" ) )
|
||||||
#define SCENE_DEL_CHECK_INT(bpy_scene) if (!(bpy_scene->scene)) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "Scene has been removed" ) )
|
#define SCENE_DEL_CHECK_INT(bpy_scene) if (!(bpy_scene->scene)) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "Scene has been removed" ) )
|
||||||
|
|
||||||
|
|
||||||
|
enum obj_consts {
|
||||||
|
EXPP_OBSEQ_NORMAL = 0,
|
||||||
|
EXPP_OBSEQ_SELECTED,
|
||||||
|
EXPP_OBSEQ_CONTEXT,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------Python API function prototypes for the Scene module--*/
|
/*-----------------------Python API function prototypes for the Scene module--*/
|
||||||
static PyObject *M_Scene_New( PyObject * self, PyObject * args,
|
static PyObject *M_Scene_New( PyObject * self, PyObject * args,
|
||||||
PyObject * keywords );
|
PyObject * keywords );
|
||||||
@@ -1118,6 +1126,71 @@ static PyObject *SceneObSeq_getObjects( BPy_SceneObSeq *self, void *mode)
|
|||||||
return SceneObSeq_CreatePyObject(self->bpyscene, NULL, (int)((long)mode));
|
return SceneObSeq_CreatePyObject(self->bpyscene, NULL, (int)((long)mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SceneObSeq_setObjects( BPy_SceneObSeq *self, PyObject *value, void *_mode_)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
ONLY SUPPORTS scn.objects.selected and scn.objects.context
|
||||||
|
cannot assign to scn.objects yet!!!
|
||||||
|
*/
|
||||||
|
PyObject *item;
|
||||||
|
Scene *scene= self->bpyscene->scene;
|
||||||
|
Object *blen_ob;
|
||||||
|
Base *base;
|
||||||
|
int size, mode = (int)_mode_;
|
||||||
|
|
||||||
|
SCENE_DEL_CHECK_INT(self->bpyscene);
|
||||||
|
|
||||||
|
/* scn.objects.selected = scn.objects - shortcut to select all */
|
||||||
|
if (BPy_SceneObSeq_Check(value)) {
|
||||||
|
BPy_SceneObSeq *bpy_sceneseq = (BPy_SceneObSeq *)value;
|
||||||
|
if (self->bpyscene->scene != bpy_sceneseq->bpyscene->scene)
|
||||||
|
return EXPP_ReturnIntError( PyExc_ValueError,
|
||||||
|
"Cannot assign a SceneObSeq type from another scene" );
|
||||||
|
if (bpy_sceneseq->mode != EXPP_OBSEQ_NORMAL)
|
||||||
|
return EXPP_ReturnIntError( PyExc_ValueError,
|
||||||
|
"Can only assign scn.objects to scn.objects.context or scn.objects.selected" );
|
||||||
|
|
||||||
|
for (base= scene->base.first; base; base= base->next) {
|
||||||
|
base->flag |= SELECT;
|
||||||
|
base->object->flag |= SELECT;
|
||||||
|
|
||||||
|
if (mode==EXPP_OBSEQ_CONTEXT && G.vd) {
|
||||||
|
base->object->lay= base->lay= G.vd->lay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!PySequence_Check(value))
|
||||||
|
return EXPP_ReturnIntError( PyExc_ValueError,
|
||||||
|
"Error, must assign a sequence of objects to scn.objects.selected" );
|
||||||
|
|
||||||
|
/* for context and selected, just deselect, dont remove */
|
||||||
|
for (base= scene->base.first; base; base= base->next) {
|
||||||
|
base->flag &= ~SELECT;
|
||||||
|
base->object->flag &= ~SELECT;
|
||||||
|
}
|
||||||
|
|
||||||
|
size = PySequence_Length(value);
|
||||||
|
while (size) {
|
||||||
|
size--;
|
||||||
|
item = PySequence_GetItem(value, size);
|
||||||
|
if ( PyObject_TypeCheck(item, &Object_Type) ) {
|
||||||
|
blen_ob= ((BPy_Object *)item)->object;
|
||||||
|
base = object_in_scene( blen_ob, scene );
|
||||||
|
if (base) {
|
||||||
|
blen_ob->flag |= SELECT;
|
||||||
|
base->flag |= SELECT;
|
||||||
|
if (mode==EXPP_OBSEQ_CONTEXT && G.vd) {
|
||||||
|
blen_ob->lay= base->lay= G.vd->lay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Py_DECREF(item);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *SceneObSeq_CreatePyObject( BPy_Scene *self, Base *iter, int mode )
|
static PyObject *SceneObSeq_CreatePyObject( BPy_Scene *self, Base *iter, int mode )
|
||||||
{
|
{
|
||||||
@@ -1133,9 +1206,9 @@ static int SceneObSeq_len( BPy_SceneObSeq * self )
|
|||||||
Scene *scene= self->bpyscene->scene;
|
Scene *scene= self->bpyscene->scene;
|
||||||
SCENE_DEL_CHECK_INT(self->bpyscene);
|
SCENE_DEL_CHECK_INT(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode == 0) /* all obejcts */
|
if (self->mode == EXPP_OBSEQ_NORMAL)
|
||||||
return BLI_countlist( &( scene->base ) );
|
return BLI_countlist( &( scene->base ) );
|
||||||
else if (self->mode == 1) { /* selected obejcts */
|
else if (self->mode == EXPP_OBSEQ_SELECTED) {
|
||||||
int len=0;
|
int len=0;
|
||||||
Base *base;
|
Base *base;
|
||||||
for (base= scene->base.first; base; base= base->next) {
|
for (base= scene->base.first; base; base= base->next) {
|
||||||
@@ -1144,7 +1217,7 @@ static int SceneObSeq_len( BPy_SceneObSeq * self )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return len;
|
return len;
|
||||||
} else if (self->mode == 2) { /* user context */
|
} else if (self->mode == EXPP_OBSEQ_CONTEXT) {
|
||||||
int len=0;
|
int len=0;
|
||||||
Base *base;
|
Base *base;
|
||||||
|
|
||||||
@@ -1176,15 +1249,15 @@ static PyObject *SceneObSeq_item( BPy_SceneObSeq * self, int i )
|
|||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
/* objects */
|
/* objects */
|
||||||
if (self->mode==0)
|
if (self->mode==EXPP_OBSEQ_NORMAL)
|
||||||
for (base= scene->base.first; base && i!=index; base= base->next, index++) {}
|
for (base= scene->base.first; base && i!=index; base= base->next, index++) {}
|
||||||
/* selected */
|
/* selected */
|
||||||
else if (self->mode==1)
|
else if (self->mode==EXPP_OBSEQ_SELECTED)
|
||||||
for (base= scene->base.first; base && i!=index; base= base->next)
|
for (base= scene->base.first; base && i!=index; base= base->next)
|
||||||
if (base->flag & SELECT)
|
if (base->flag & SELECT)
|
||||||
index++;
|
index++;
|
||||||
/* context */
|
/* context */
|
||||||
else if (self->mode==2)
|
else if (self->mode==EXPP_OBSEQ_CONTEXT)
|
||||||
if (G.vd)
|
if (G.vd)
|
||||||
for (base= scene->base.first; base && i!=index; base= base->next)
|
for (base= scene->base.first; base && i!=index; base= base->next)
|
||||||
if ((base->flag & SELECT) && (base->lay & G.vd->lay))
|
if ((base->flag & SELECT) && (base->lay & G.vd->lay))
|
||||||
@@ -1233,10 +1306,10 @@ static PyObject *SceneObSeq_getIter( BPy_SceneObSeq * self )
|
|||||||
|
|
||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode==1) /* selected */
|
if (self->mode==EXPP_OBSEQ_SELECTED)
|
||||||
while (base && !(base->flag & SELECT))
|
while (base && !(base->flag & SELECT))
|
||||||
base= base->next;
|
base= base->next;
|
||||||
else if (self->mode==2) { /* context */
|
else if (self->mode==EXPP_OBSEQ_CONTEXT) {
|
||||||
if (!G.vd)
|
if (!G.vd)
|
||||||
base= NULL; /* will never iterate if we have no */
|
base= NULL; /* will never iterate if we have no */
|
||||||
else
|
else
|
||||||
@@ -1269,10 +1342,10 @@ static PyObject *SceneObSeq_nextIter( BPy_SceneObSeq * self )
|
|||||||
object= Object_CreatePyObject( self->iter->object );
|
object= Object_CreatePyObject( self->iter->object );
|
||||||
base= self->iter->next;
|
base= self->iter->next;
|
||||||
|
|
||||||
if (self->mode==1) /* selected */
|
if (self->mode==EXPP_OBSEQ_SELECTED)
|
||||||
while (base && !(base->flag & SELECT))
|
while (base && !(base->flag & SELECT))
|
||||||
base= base->next;
|
base= base->next;
|
||||||
else if (self->mode==2) { /* context */
|
else if (self->mode==EXPP_OBSEQ_CONTEXT) {
|
||||||
if (!G.vd)
|
if (!G.vd)
|
||||||
base= NULL; /* will never iterate if we have no */
|
base= NULL; /* will never iterate if we have no */
|
||||||
else
|
else
|
||||||
@@ -1280,7 +1353,6 @@ static PyObject *SceneObSeq_nextIter( BPy_SceneObSeq * self )
|
|||||||
base= base->next;
|
base= base->next;
|
||||||
}
|
}
|
||||||
self->iter= base;
|
self->iter= base;
|
||||||
|
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1290,7 +1362,7 @@ static PyObject *SceneObSeq_link( BPy_SceneObSeq * self, PyObject *pyobj )
|
|||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
/* this shold eventually replace Scene_link */
|
/* this shold eventually replace Scene_link */
|
||||||
if (self->mode != 0)
|
if (self->mode != EXPP_OBSEQ_NORMAL)
|
||||||
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||||
"Cannot link to objects.selection or objects.context!" ));
|
"Cannot link to objects.selection or objects.context!" ));
|
||||||
|
|
||||||
@@ -1317,7 +1389,7 @@ static PyObject *SceneObSeq_new( BPy_SceneObSeq * self, PyObject *args )
|
|||||||
|
|
||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode != 0)
|
if (self->mode != EXPP_OBSEQ_NORMAL)
|
||||||
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||||
"Cannot add new to objects.selection or objects.context!" );
|
"Cannot add new to objects.selection or objects.context!" );
|
||||||
|
|
||||||
@@ -1455,16 +1527,16 @@ typeError:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *SceneObSeq_unlink( BPy_SceneObSeq * self, PyObject *args )
|
static PyObject *SceneObSeq_unlink( BPy_SceneObSeq * self, PyObject *args )
|
||||||
{
|
{
|
||||||
PyObject *pyobj;
|
PyObject *pyobj;
|
||||||
Object *blen_ob;
|
Object *blen_ob;
|
||||||
|
Scene *scene;
|
||||||
Base *base= NULL;
|
Base *base= NULL;
|
||||||
|
|
||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode != 0)
|
if (self->mode != EXPP_OBSEQ_NORMAL)
|
||||||
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||||
"Cannot add new to objects.selection or objects.context!" ));
|
"Cannot add new to objects.selection or objects.context!" ));
|
||||||
|
|
||||||
@@ -1473,23 +1545,25 @@ static PyObject *SceneObSeq_unlink( BPy_SceneObSeq * self, PyObject *args )
|
|||||||
"expected a python object as an argument" ) );
|
"expected a python object as an argument" ) );
|
||||||
|
|
||||||
blen_ob = ( ( BPy_Object * ) pyobj )->object;
|
blen_ob = ( ( BPy_Object * ) pyobj )->object;
|
||||||
|
|
||||||
|
scene = self->bpyscene->scene;
|
||||||
|
|
||||||
/* is the object really in the scene? */
|
/* is the object really in the scene? */
|
||||||
base = object_in_scene( blen_ob, self->bpyscene->scene );
|
base = object_in_scene( blen_ob, scene);
|
||||||
|
|
||||||
if( base ) { /* if it is, remove it */
|
if( base ) { /* if it is, remove it */
|
||||||
/* check that there is a data block before decrementing refcount */
|
/* check that there is a data block before decrementing refcount */
|
||||||
if( (ID *)blen_ob->data )
|
if( (ID *)base->object->data )
|
||||||
((ID *)blen_ob->data)->us--;
|
((ID *)base->object->data)->us--;
|
||||||
else if( blen_ob->type != OB_EMPTY )
|
else if( blen_ob->type != OB_EMPTY )
|
||||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||||
"Object has no data!" );
|
"Object has no data!" );
|
||||||
|
|
||||||
if (self->bpyscene->scene->basact==base)
|
if (scene->basact==base)
|
||||||
self->bpyscene->scene->basact= NULL; /* in case the object was selected */
|
scene->basact= NULL; /* in case the object was selected */
|
||||||
|
|
||||||
BLI_remlink( &(self->bpyscene->scene)->base, base );
|
BLI_remlink( &scene->base, base );
|
||||||
blen_ob->id.us--;
|
base->object->id.us--;
|
||||||
MEM_freeN( base );
|
MEM_freeN( base );
|
||||||
}
|
}
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
@@ -1503,7 +1577,7 @@ PyObject *SceneObSeq_getActive(BPy_SceneObSeq *self)
|
|||||||
|
|
||||||
SCENE_DEL_CHECK_PY(self->bpyscene);
|
SCENE_DEL_CHECK_PY(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode!=0)
|
if (self->mode!=EXPP_OBSEQ_NORMAL)
|
||||||
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
return (EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||||
"cannot get active from objects.selected or objects.context" ));
|
"cannot get active from objects.selected or objects.context" ));
|
||||||
|
|
||||||
@@ -1526,7 +1600,7 @@ static int SceneObSeq_setActive(BPy_SceneObSeq *self, PyObject *value)
|
|||||||
|
|
||||||
SCENE_DEL_CHECK_INT(self->bpyscene);
|
SCENE_DEL_CHECK_INT(self->bpyscene);
|
||||||
|
|
||||||
if (self->mode!=0)
|
if (self->mode!=EXPP_OBSEQ_NORMAL)
|
||||||
return (EXPP_ReturnIntError( PyExc_TypeError,
|
return (EXPP_ReturnIntError( PyExc_TypeError,
|
||||||
"cannot set active from objects.selected or objects.context" ));
|
"cannot set active from objects.selected or objects.context" ));
|
||||||
|
|
||||||
@@ -1586,10 +1660,10 @@ static PyObject *SceneObSeq_repr( BPy_SceneObSeq * self )
|
|||||||
{
|
{
|
||||||
if( !(self->bpyscene->scene) )
|
if( !(self->bpyscene->scene) )
|
||||||
return PyString_FromFormat( "[Scene ObjectSeq Removed]" );
|
return PyString_FromFormat( "[Scene ObjectSeq Removed]" );
|
||||||
else if (self->mode==1)
|
else if (self->mode==EXPP_OBSEQ_SELECTED)
|
||||||
return PyString_FromFormat( "[Scene ObjectSeq Selected \"%s\"]",
|
return PyString_FromFormat( "[Scene ObjectSeq Selected \"%s\"]",
|
||||||
self->bpyscene->scene->id.name + 2 );
|
self->bpyscene->scene->id.name + 2 );
|
||||||
else if (self->mode==2)
|
else if (self->mode==EXPP_OBSEQ_CONTEXT)
|
||||||
return PyString_FromFormat( "[Scene ObjectSeq Context \"%s\"]",
|
return PyString_FromFormat( "[Scene ObjectSeq Context \"%s\"]",
|
||||||
self->bpyscene->scene->id.name + 2 );
|
self->bpyscene->scene->id.name + 2 );
|
||||||
|
|
||||||
@@ -1600,13 +1674,13 @@ static PyObject *SceneObSeq_repr( BPy_SceneObSeq * self )
|
|||||||
|
|
||||||
static PyGetSetDef SceneObSeq_getseters[] = {
|
static PyGetSetDef SceneObSeq_getseters[] = {
|
||||||
{"selected",
|
{"selected",
|
||||||
(getter)SceneObSeq_getObjects, (setter)NULL,
|
(getter)SceneObSeq_getObjects, (setter)SceneObSeq_setObjects,
|
||||||
"sequence of selected objects",
|
"sequence of selected objects",
|
||||||
(void *)1},
|
(void *)EXPP_OBSEQ_SELECTED},
|
||||||
{"context",
|
{"context",
|
||||||
(getter)SceneObSeq_getObjects, (setter)NULL,
|
(getter)SceneObSeq_getObjects, (setter)SceneObSeq_setObjects,
|
||||||
"sequence of user context objects",
|
"sequence of user context objects",
|
||||||
(void *)2},
|
(void *)EXPP_OBSEQ_CONTEXT},
|
||||||
{"active",
|
{"active",
|
||||||
(getter)SceneObSeq_getActive, (setter)SceneObSeq_setActive,
|
(getter)SceneObSeq_getActive, (setter)SceneObSeq_setActive,
|
||||||
"active object",
|
"active object",
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ extern PyTypeObject SceneObSeq_Type;
|
|||||||
|
|
||||||
#define BPy_Scene_Check(v) \
|
#define BPy_Scene_Check(v) \
|
||||||
((v)->ob_type == &Scene_Type)
|
((v)->ob_type == &Scene_Type)
|
||||||
|
#define BPy_SceneObSeq_Check(v) \
|
||||||
|
((v)->ob_type == &SceneObSeq_Type)
|
||||||
|
|
||||||
/*---------------------------Python BPy_Scene structure definition----------*/
|
/*---------------------------Python BPy_Scene structure definition----------*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -63,7 +65,7 @@ typedef struct {
|
|||||||
|
|
||||||
PyObject *Scene_Init( void );
|
PyObject *Scene_Init( void );
|
||||||
PyObject *Scene_CreatePyObject( Scene * cam );
|
PyObject *Scene_CreatePyObject( Scene * cam );
|
||||||
Scene *Scene_FromPyObject( PyObject * pyobj );
|
/*Scene *Scene_FromPyObject( PyObject * pyobj );*/ /* not used yet */
|
||||||
int Scene_CheckPyObject( PyObject * pyobj );
|
int Scene_CheckPyObject( PyObject * pyobj );
|
||||||
Scene *GetSceneByName( char *name );
|
Scene *GetSceneByName( char *name );
|
||||||
|
|
||||||
|
|||||||
@@ -315,6 +315,27 @@ class SceneObjects:
|
|||||||
=========================================
|
=========================================
|
||||||
This object gives access to the Objects in a Scene in Blender.
|
This object gives access to the Objects in a Scene in Blender.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
from Blender import Scene
|
||||||
|
scn = Scene.GetCurrent()
|
||||||
|
|
||||||
|
scn.objects.selected = [] # select none
|
||||||
|
scn.objects.selected = scn.objects # select all
|
||||||
|
scn.objects.context = scn.objects # select all and move into the scenes display layer
|
||||||
|
|
||||||
|
# get a list of mesh objects
|
||||||
|
obs = [ob for ob in scn.objects if ob.type == 'Mesh']
|
||||||
|
|
||||||
|
# Select only these mesh objects
|
||||||
|
scn.objects.selected = obs
|
||||||
|
|
||||||
|
# print all object names
|
||||||
|
for ob in scn.objects: print ob.name
|
||||||
|
|
||||||
|
# make a list of objects that you can add and remove to
|
||||||
|
# will not affect the current scene
|
||||||
|
scene_obs = list(scn.objects)
|
||||||
|
|
||||||
@ivar selected: an iterator over all the selected objects in a scene.
|
@ivar selected: an iterator over all the selected objects in a scene.
|
||||||
@type selected: sequence of L{Object}
|
@type selected: sequence of L{Object}
|
||||||
@ivar context: an iterator over all the visible selected objects in a scene.
|
@ivar context: an iterator over all the visible selected objects in a scene.
|
||||||
|
|||||||
Reference in New Issue
Block a user