Python 控制台

The Python Console is a quick way to execute commands, with access to the entire Python API, command history and auto-complete.

其探索的可能性,然后可以粘贴到大脚本的好办法。

简介

访问内置的Python控制台

通过按 Shift-F4 在任何Blender编辑器类型(3D视图,时间线等),你可以把它改成一个控制台编辑器。

../_images/editors_python-console_default.png

命令提示符是典型的 Python 3.x,解释器已加载,并准备接受提示符 >>> 后的命令。

先看看控制台环境

若要检查什么加载到翻译环境,请在提示符下键入``dir()`` 并执行。

../_images/editors_python-console_dir.png

自动完成工作

现在,键入 bpy. ,然后按 Ctrl-Spacebar ,你会看到控制台自动完成功能在运行中。

../_images/editors_python-console_completion.png

你会注意到出现在 bpy 子模块的列表。这些模块封装所有我们Blender Python API 能做的工作,是非常强大的工具。

让我们列出 bpy.app 模块的所有内容。

注意在启用自动完成的提示符之上的绿色输出。你看到的是自动完成列表的结果。在上面的列表中,所有的都是模块属性名称,但是如果你看到任何以``(`` 结尾的名字,那么这是一个函数。

我们将利用这一点来帮助我们更快地学习API。现在你已经掌握了这一点,让我们继续研究 bpy 中的一些模块。

摆弄模块前

如果你在 3D 视图查看默认 Blender场景,你将注意到 三个物体: 立方体、 灯和摄像机。

  • 所有对象的都存在上下文,可以有各种模式下对他们进行操作。
  • 在任何情况下,只有一个物体处于活动状态,并且可以有多个选定的物体。
  • 所有物体都是blend文件中的数据。
  • 有创建和修改这些对象的运算符/函数。

对于上面列出的所有方案 (并非全部列出, 请注意...) "bpy" 模块提供了访问和修改数据的功能。

示例

bpy.context

Note

要使下面的命令显示正确的输出, 请确保在3D 视图中有选定的对象。

../_images/editors_python-console_bpy-context.png

试试看!

bpy.context.mode
将打印当前 3D 视图模式 (物体、 编辑、 雕刻等.)。
bpy.context.object 或 bpy.context.active_object
将访问3D视图中的活动物体。

将X位置值更改为1:

bpy.context.object.location.x = 1

将前一个X位置的物体移动0.5个单位:

bpy.context.object.location.x += 0.5

更改 x、 y、 z 位置值:

bpy.context.object.location = (1, 2, 3)

只更改X,Y组件:

bpy.context.object.location.xy = (1, 2)

物体的数据类型位置:

type(bpy.context.object.location)

现在,你可以有权访问许多数据:

dir(bpy.context.object.location)
bpy.context.selected_objects
访问到所有选定物体的列表。

然后按 Ctrl-Spacebar:

bpy.context.selected_objects

打印列表中第一个物体的名称:

bpy.context.selected_objects[0]

复杂的一个......但是这会打印一个不包含活动物体的物体列表:

[obj for obj in bpy.context.selected_objects if obj != bpy.context.object]

bpy.data

bpy.data 具有可以访问.blend文件中所有数据的函数和属性。

你可以访问当前.blend文件中的以下数据: 物体、 网格、 材质、 纹理、 场景、 屏幕、 声音、 脚本,等等。

这是大量的数据。

试试看!

../_images/editors_python-console_bpy-data.png

练习

Return 两次后它将打印所有属于名称为“Scene”的Blender场景的物体:

for obj in bpy.data.scenes['Scene'].objects: print(obj.name)

将活动物体与名为“Scene”的Blender场景取消关联:

bpy.data.scenes['Scene'].objects.unlink(bpy.context.active_object)
bpy.data.materials['Material'].shadows

bpy.data.materials['Material'].shadows = False

bpy.ops

这个工具系统是围绕操作者的概念构建的。运算符通常从按钮或菜单执行, 但也可以直接从 Python 调用。

bpy.ops 所有的操作符 API documentation 列表。

让我们在3D视图中创建一组五个立方体。首先,选中它并按下 X 删除现有的立方体物体。

试试看!

下面的命令用于指定在1层中创建物体。首先, 我们定义一个数组变量以供以后参考:

mylayers = [False] * 20
mylayers[0] = True

我们创建一个用于创建立方体网格基础物体的操作符的引用:

add_cube = bpy.ops.mesh.primitive_cube_add

现在在一个 for循环 中,我们创建五个物体(在上面的屏幕截图中使用了另一种方法创建,)像这样: 在shell提示下输入命令后按两次 Return

for index in range(5):
    add_cube(location=(index * 3, 0, 0), layers=mylayers)
../_images/editors_python-console_bpy-ops.png

使用方法

别名管理

一些变量和模块可以方便使用:

  • C: 快速访问 'Bpy.context ' 。
  • D: 快速访问 bpy.data
  • bpy: 顶级Blender Python API模块。

键绑定

  • Up / Down -- Cycle 命令历史。
  • Left / Right -- 光标运动。
  • Ctrl-Left / Ctrl-Right -- 光标运动,用文字。
  • Backspace / Delete -- 擦除字符。
  • Tab --缩进。
  • Shift-Tab -- 取消缩进。
  • Ctrl-Backspace / Ctrl-Delete -- 擦除文字。
  • Ctrl-Spacebar --自动完成。
  • Return -- 执行命令。
  • Shift-Return -- 添加到命令历史记录而不执行。
  • Ctrl-C -- 复制选择。
  • Ctrl-V -- 粘贴到命令行。