Python 控制台

The Python Console is a quick way to execute commands, with access to the entire Python API, command history and auto-complete. The command prompt is typical for Python 3.x, the interpreter is loaded and is ready to accept commands at the prompt >>>.

The Python Console is a good way to explore the possibilities of Blender built-in Python. The Python Console can be used to test small bits of Python code which can then be pasted into larger scripts.

../_images/editors_python-console_default.png

Python 控制台。

界面

标题栏菜单

视图菜单

视图缩放

Increases/Decreases the font size of the console text.

移动到前一个单词 Ctrl-左←

将光标移动到前一个单词的开头。如果光标位于单词的中间,则光标将移动到当前单词的开头。

移动到后一个单词 Ctrl-右→

将光标移动到下一个单词的末尾。如果光标位于单词的中间,则光标将移动到当前单词的末尾。

移动到行首 Home

将光标移动到行首。

移动到行尾 End

将光标移动到行尾。

控制台菜单

清除全部

Refreshes the console giving the view a fresh start. Note that command history is not cleared.

清除行 Shift-回车

从提示符行中删除所有内容。

删除前一单词 Ctrl-回退键

删除光标和前一个单词开头之间的所有内容(按句号分隔)。如果光标位于单词的中间,则删除到当前单词开头的所有内容。

删除下一单词 Ctrl-Delete

删除光标和下一个单词末尾之间的所有内容。如果光标位于单词的中间,则删除到当前单词末尾的所有内容。

复制为脚本 Shift-Ctrl-C

Copies the full history buffer to the clipboard, this can be pasted into a text file to be used as a Python script.

复制 Ctrl-C

Copy the selection.

粘贴 Ctrl-V

Paste into the command line.

缩进 Tab

在光标处插入一个制表符。

取消缩进 Shift-Tab

取消选中行缩进。

在历史记录中后退 上↑

Changes the current command to previous command as they appear in the command history.

在历史记录中前进 下↓

Changes the current command to next command as they appear in the command history.

自动补全 Tab

See Auto Completion for more information.

主视图

键位绑定

  • Left / Right -- Cursor motion.

  • Ctrl-Left / Ctrl-Right -- Cursor motion, by word.

  • 回退键 / Delete -- 擦除字符。

  • Ctrl-回退键 / Ctrl-Delete -- 擦除单词。

  • 回车 -- 执行命令。

  • Shift-回车 -- 添加到命令历史记录而不执行。

用法

别名

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

  • C:快速访问 bpy.context

  • D:快速访问 bpy.data

  • bpy:顶层级 Blender Python API 模块。

初探控制台环境

To check what is loaded into the interpreter environment, type dir() at the prompt and execute it.

../_images/editors_python-console_dir.png

自动补全

Now, type bpy. and then press Tab and you will see the Console auto-complete feature in action.

../_images/editors_python-console_completion.png

You will notice that a list of submodules inside of bpy appear. These modules encapsulate all that we can do with Blender Python API and are very powerful tools.

Lets list all the contents of bpy.app module.

Notice the green output above the prompt where you enabled auto-completion. What you see is the result of auto completion listing. In the above listing all are module attributed names, but if you see any name end with (, then that is a function.

We will make use of this a lot to help our learning the API faster. Now that you got a hang of this, lets proceed to investigate some of modules in bpy.

Before Tinkering with the Modules

If you look at the 3D Viewport in the default Blender scene, you will notice three objects: Cube, Light and Camera.

  • All objects exist in a context and there can be various modes under which they are operated upon.

  • At any instance, only one object is active and there can be more than one selected object.

  • All objects are data in the blend-file.

  • There are operators/functions that create and modify these objects.

For all the scenarios listed above (not all were listed, mind you...) the bpy module provides functionality to access and modify data.

示例

bpy.context

Note

要使以下命令显示正确的输出,请确保在3D视图中有选中的物体。

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

Will print the current 3D Viewport mode (Object, Edit, Sculpt, etc.).

bpy.context.objectbpy.context.active_object

Will give you access to the active object in the 3D Viewport.

Change the X location to a value of 1:

bpy.context.object.location.x = 1

Move the object from previous X location by 0.5 unit:

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

修改 X, Y, Z 位置:

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

Change only the X, Y components:

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

The data type of object's location:

type(bpy.context.object.location)

Now that is a lot of data that you have access to:

dir(bpy.context.object.location)
bpy.context.selected_objects

Will give access to a list of all selected objects.

输入此内容然后按 Tab:

bpy.context.selected_objects

To print out the name of first object in the list:

bpy.context.selected_objects[0]

The complex one... But this prints a list of objects not including the active object:

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

bpy.data

bpy.data has functions and attributes that give you access to all the data in the blend-file.

You can access following data in the current blend-file: objects, meshes, materials, textures, scenes, screens, sounds, scripts, etc.

That is a lot of data.

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

bpy.ops

The tool system is built around the concept of operators. Operators are typically executed from buttons or menus but can be called directly from Python too.

See the bpy.ops API documentation for a list of all operators.