- based on a request by Campbell (he also provided a patch for scene.Layer) access to layers was improved a little, keeping the old method (ob.Layers is a bitmask) and adding the nicer one (ob.layers is a list of ints).  Done for objects and scenes.  House-cleaning: .Layer was renamed to .Layers (actually just using strncmp instead of strcmp, so both work, same done for Window.ViewLayers).
- finally committing patch by Ken Hughes to let .clearScriptLinks() accept a parameter (list of strings) to clear only specified texts.
- doc updates and fixes (JMS reported a problem in nmesh.transform() example code).

Thanks all who contributed.
This commit is contained in:
2005-04-21 19:44:52 +00:00
parent c5214c1571
commit 589ce4a005
24 changed files with 657 additions and 347 deletions

View File

@@ -3,7 +3,10 @@
"""
The Blender.Scene submodule.
B{New}: OnSave script link event: L{Scene.getScriptLinks}.
B{New}:
- L{Scene.clearScriptLinks} accepts a parameter now.
- L{Scene.getLayers}, L{Scene.setLayers} and the L{layers<Scene.layers>} and
L{Layers<Scene.Layers>} Scene attributes.
Scene
=====
@@ -75,7 +78,28 @@ class Scene:
The Scene object
================
This object gives access to Scene data in Blender.
@type name: string
@cvar name: The Scene name.
@type Layers: integer (bitmask)
@cvar Layers: The Scene layers (check also the easier to use
L{layers<Scene.Scene.layers>}). This value is a bitmask with at least
one position set for the 20 possible layers starting from the low order
bit. The easiest way to deal with these values in in hexadecimal
notation.
Example::
scene.Layers = 0x04 # sets layer 3 ( bit pattern 0100 )
scene.Layers |= 0x01
print scene.Layers # will print: 5 ( meaning bit pattern 0101)
After setting the Layers value, the interface (at least the 3d View and
the Buttons window) needs to be redrawn to show the changes.
@type layers: list of integers
@cvar layers: The Scene layers (check also L{Layers<Scene.Scene.Layers>}).
This attribute accepts and returns a list of integer values in the
range [1, 20].
Example::
scene.layers = [3] # set layer 3
scene.layers = scene.layers.append(1)
print scene.layers # will print: [1, 3]
"""
def getName():
@@ -91,6 +115,25 @@ class Scene:
@param name: The new name.
"""
def getLayers():
"""
Get the layers set for this Scene.
@rtype: list of integers
@return: a list where each number means the layer with that number is
set.
"""
def setLayers(layers):
"""
Set the visible layers for this scene.
@type layers: list of integers
@param layers: a list of integers in the range [1, 20], where each available
index makes the layer with that number visible.
@note: if this Scene is the current one, the 3D View layers are also
updated, but the screen needs to be redrawn (at least 3D Views and
Buttons windows) for the changes to be seen.
"""
def copy(duplicate_objects = 1):
"""
Make a copy of this Scene.
@@ -139,6 +182,11 @@ class Scene:
Get all objects linked to this Scene.
@rtype: list of Blender Objects
@return: A list with all Blender Objects linked to this Scene.
@note: L{Object.Get} will return all objects currently in Blender, which
means all objects from all available scenes. In most cases (exporter
scripts, for example), it's probably better to use this
scene.GetChildren instead, since it will only access objects from this
particular scene.
"""
def getCurrentCamera():
@@ -179,11 +227,12 @@ class Scene:
'event' type) or None if there are no script links at all.
"""
def clearScriptLinks ():
def clearScriptLinks (links = None):
"""
Delete all this Scene's script links.
@rtype: bool
@return: 0 if some internal problem occurred or 1 if successful.
Delete script links from this Scene. If no list is specified, all
script links are deleted.
@type links: list of strings
@param links: None (default) or a list of Blender L{Text} names.
"""
def addScriptLink (text, event):