1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# Blender.Library submodule
"""
The Blender.Library submodule.
Library
=======
This module provides access to objects stored in .blend files. With it scripts
can append from Blender files to the current scene, like the File->Append
menu entry in Blender does. It allows programmers to use .blend files as
data files for their scripts.
@warn: This module is being considered for deprecation. Users should
consider using the L{new Library<LibData>} module and stay tuned to see
which module is supported in the end.
Example::
import Blender
from Blender import Library
def f(name):
open_library(name)
def open_library(name):
Library.Open(name)
groups = Library.LinkableGroups()
for db in groups:
print "DATABLOCK %s:" % db
for obname in Library.Datablocks(db):
print obname
if 'Object' in groups:
for obname in Library.Datablocks('Object'):
Library.Load(obname, 'Object', 0) # note the 0...
Library.Update()
Library.Close()
b.Redraw()
b.Window.FileSelector(f, "Choose Library", "*.blend")
"""
def Open (filename):
"""
Open an existing .blend file. If there was already one open file, it is
closed first.
@type filename: string
@param filename: The filename of a Blender file. Filenames starting with "//" will be loaded relative to the blend file's location.
@rtype: bool
@return: 1 if successful. An IOError exception is thrown if the file cannot be opened.
"""
def Close ():
"""
Close the currently open library file, if any.
"""
def getName ():
"""
Get the filename of the currently open library file.
@rtype: string
@return: The open library filename.
"""
def LinkableGroups ():
"""
Get all the linkable group names from the currently open library file. These
are the available groups for linking with the current scene. Ex: 'Object',
'Mesh', 'Material', 'Text', etc.
@rtype: list of strings
@return: the list of linkable groups.
"""
def Datablocks (group):
"""
Get all datablock objects of the given 'group' available in the currently
open library file.
@type group: string
@param group: datablock group, see L{LinkableGroups}.
"""
def Load (datablock, group, update = 1, linked = 0):
"""
Load the given datablock object from the current library file
@type datablock: string
@type group: string
@type update: bool
@type linked: bool
@param datablock: an available object name, as returned by L{Datablocks}.
@param group: an available group name, as returned by L{LinkableGroups}.
@param update: defines if Blender should be updated after loading this
object. This means linking all objects and remaking all display lists,
so it is potentially very slow.
@param linked: Will keep objects linked to their source blend file, the update option or later updating will unlink the data from the original blend and make it local.
@warn: If you plan to load more than one object in sequence, it is
B{definitely recommended} to set 'update' to 0 in all calls to this
function and after them call L{Update}.
"""
def Update ():
"""
Update all links and display lists in Blender. This function should be
called after a series of L{Load}(datablock, group, B{0}) calls to make
everything behave nicely.
@warn: to use this function, remember to set the third L{Load} parameter to
zero or each loading will automatically update Blender, which will slow
down your script and make you look like a lousy programmer.
Enough warnings :)?
"""
|