Console Python

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

É uma boa maneira de explorar as possibilidades, as quais então podem ser coladas em scripts maiores.

Introdução

Acessando o Console Python embutido

Pressionando Shift-F4 em quaisquer dos tipos de editor do Blender (Janela de visualização 3D, Linha do tempo, etc.) você pode alterná-lo para um editor de console.

../_images/editors_python-console_default.png

O prontuário de comandos é típico para a linguagem Python 3.x, e o interpretador é carregado e estará pronto para receber comandos diretamente no prontuário >>>.

Primeiro olhar sobre o ambiente de console

Para verificar o que foi carregado dentro do ambiente do interpretador, digite dir() diretamente no prontuário e execute.

../_images/editors_python-console_dir.png

Completar automaticamente

Agora, digite bpy. e então pressione Ctrl-Barra de espaço e você irá ver a funcionalidade de auto-completar no console (linha de comando) em ação.

../_images/editors_python-console_completion.png

Você irá notar que uma lista de sub-módulos presentes dentro do bpy irá aparecer. Estes módulos encapsulam tudo o que podemos fazer com a API Python do Blender e são ferramentas bastante poderosas.

Vamos listar todos os conteúdos do módulo bpy.app.

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.

Nós faremos uso disto um bocado para ajudar você a aprender a nossa API mais rapidamente. Agora que você colocou as mãos e já tem uma noção sobre o assunto, vamos proceder com a investigação de alguns módulos presentes dentro do bpy.

Antes de brincar um pouco com os módulos

Caso você pesquise na janela de visualização 3D na cena padrão do Blender, você notará três objetos: Cubo, Lâmpada e Câmera (Cube, Lamp e Camera, em Inglês).

  • Todos os objetos existem em um contexto e podem haver diversos modos sob os quais eles poderão ser operados.
  • Em qualquer instância, somente um objeto estará ativo e pode haver mais de um objeto selecionado.
  • Todos os objetos são referenciados como dados dentro do arquivo Blender.
  • Existem operadores e funções que criam e modificam estes objetos.

Para todos os cenários listados acima (nem todos foram listados, há mais e pense em quantos…) o módulo bpy provê funcionalidade para acessar e modificar dados.

Exemplos

bpy.context

Nota

Para que os comandos listados abaixo mostrem a saída apropriada, certifique-se de ter objetos selecionados dentro da janela de visualização 3D.

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

Coloque as mãos na massa !

bpy.context.mode
Irá imprimir o modo atual da janela de visualização 3D (Objeto, Edição, Escultura, etc.).
bpy.context.object ou bpy.context.active_object
Irá fornecer a você, acesso ao objeto ativo na janela de visualização 3D.

Altera a localização no eixo X em 1 unidade:

bpy.context.object.location.x = 1

Move o objeto a partir de sua localização prévia 0,5 unidades no eixo X:

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

Change X, Y, Z location:

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

Altera somente os componentes X e Y:

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

Data type of object’s location:

type(bpy.context.object.location)

Agora, há bastante dados que fornecem a você acesso a:

dir(bpy.context.object.location)
bpy.context.selected_objects
Irá fornecer acesso a uma lista de todos os objetos selecionados.

Digite isto e então pressione Ctrl-Bara de espaço:

bpy.context.selected_objects

Para imprimir o nome do primeiro objeto dentro da lista:

bpy.context.selected_objects[0]

A parte um pouco mais complexa… Mas isso imprime uma lista de objetos que não incluem o objeto ativo:

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

bpy.data

bpy.data possui funções e atributos que irão fornecer acesso a todos os dados dentro do arquivo Blender.

Você pode acessar os seguintes dados dentro do arquivo Blender atual: objetos, malhas, materiais, texturas, cenas, telas, sons, scripts, etc.

São bastante dados.

Coloque as mãos na massa !

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

Exercício

After Return twice it prints the names of all objects belonging to the Blender scene with name «Scene»:

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

Desvincula o objeto ativo a partir da cena Blender com o nome “Scene”:

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

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

bpy.ops

O sistema de ferramentas é construído em torno do conceito de operadores. Os operadores são tipicamente executados a partir dos botões ou menus que podem ser chamados diretamente também a partir da linguagem de programação Python.

Veja a documentação da API que explica os bpy.ops para uma lista de todos os operadores.

Vamos criar um conjunto de cinco cubos dentro da janela de visualização 3D. Primeiramente, apague o objeto de cubo existente selecionando-o e pressionando o atalho X.

Coloque as mãos na massa !

Os seguintes comandos são usados para especificar que os objetos são criados na camada número 1. Portanto, inicialmente devemos definir uma variável de matriz para referência posterior:

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

Nós iremos criar uma referência para o operador que é utilizado para a criação de uma primitiva da malha cubo:

add_cube = bpy.ops.mesh.primitive_cube_add

Now in a for loop, we create the five objects like this (in the screenshot above, another method is used): Press Return twice after entering the command at the shell prompt:

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

Utilização

Apelidos

Algumas variáveis e módulos estão disponíveis para conveniência:

  • C: Fornece acesso rápido a bpy.context.
  • D: Fornece acesso rápido a bpy.data.
  • bpy: O módulo de nível mais alto da API Python do Blender.

Atalhos vinculados

  • Seta p/ cima / Seta p/ baixo – Permite ciclar entre o histórico de comandos.
  • Seta à esq. / Seta à dir. – Movimenta o cursor.
  • Ctrl-Seta à esq. / Ctrl-Seta à dir. – Movimenta o cursor, saltando entre palavas.
  • Backspace / Delete – Apaga os caracteres.
  • Tab – Indentar.
  • Shift-Tab – Remover indentação.
  • Ctrl-Backspace / Ctrl-Delete – Apaga as palavras.
  • Ctrl-Spacebar – Auto completar.
  • Return – Execute command.
  • Shift-Enter – Adiciona ao histórico de comandos sem executar.
  • Ctrl-C – Copia a seleção.
  • Ctrl-V – Cola na linha de comando.