Hoofdstuk 46Python Console
Een interactieve Python-prompt binnen Blender zelf, direct op de lopende sessie
De Python Console is een interactieve regel-voor-regel Python-prompt met directe toegang tot de lopende Blender-sessie (bpy). Waar de Text Editor voor complete scripts dient, is dit de plek om snel één ding uit te proberen of een waarde op te vragen.
RECCONCEPT00:00:00:00schooliumWaarvoor de Python Console dient
Typ een regel Python en druk Enter: het resultaat verschijnt meteen eronder, net als in elke interactieve Python-shell. Omdat de console in dezelfde sessie draait als de rest van Blender, zie je effecten direct terug in de 3D-viewport — bpy.context.object.location.x = 2 verplaatst het actieve object meteen.
Wat hij niet doet: hij bewaart niets automatisch tussen sessies (in tegenstelling tot een Text-datablock) en hij is niet bedoeld voor lange scripts — meerdere regels tikken kan, maar wordt al snel onhandig zonder de gewone editorfuncties (zoeken, uitcommentariëren, regelnummers) van de Text Editor.
RECBLENDER 5.1 · EDITOR-PYTHON-CONSOLE00:00:00:001920×1080Autocomplete en het gebruik van Tab
De Tab-toets vult aan op basis van wat er al getypt is — begin je bpy.context.o en druk Tab, dan toont de console de mogelijke vervolgnamen (object, objects, ...). Dit is de snelste manier om de enorme bpy-API te verkennen zonder de documentatie te moeten opzoeken: tik een paar letters, Tab, en lees wat er beschikbaar is op dat punt in de datastructuur.
Pijl-omhoog/omlaag doorloopt de geschiedenis van eerder getypte regels binnen deze sessie, net als in een terminal.
RECBLENDER 5.1 · D46-CONSOLE-MASTER00:00:00:00576×130Context kopiëren vanuit de Info-editor
Elke operator die je met de muis uitvoert (een object verplaatsen, een modifier toevoegen) verschijnt als Python-regel in de Info-editor (hoofdstuk 47). Rechtsklik op zo'n regel en kies Copy (Ctrl+C) om de exacte bpy.ops-aanroep naar het klembord te zetten, en plak hem in de Python Console om meteen uit te voeren — de brug tussen 'ik weet hoe het met de muis moet' en 'ik wil dit in een script automatiseren'.
RECBLENDER 5.1 · D46-INFO-CONTEXTMENU00:00:00:00499×151Sneltoetsen — Console
| Toets | Actie | Operator |
|---|---|---|
| Ctrl+LEFT_ARROW | Move Cursor | console.move |
| Ctrl+Shift+LEFT_ARROW | Move Cursor | console.move |
| Ctrl+RIGHT_ARROW | Move Cursor | console.move |
| Ctrl+Shift+RIGHT_ARROW | Move Cursor | console.move |
| HOME | Move Cursor | console.move |
| Shift+HOME | Move Cursor | console.move |
| END | Move Cursor | console.move |
| Shift+END | Move Cursor | console.move |
| Ctrl+WHEELUPMOUSE | Context Int Cycle | wm.context_cycle_int |
| Ctrl+WHEELDOWNMOUSE | Context Int Cycle | wm.context_cycle_int |
| Ctrl+NUMPAD_PLUS | Context Int Cycle | wm.context_cycle_int |
| Ctrl+NUMPAD_MINUS | Context Int Cycle | wm.context_cycle_int |
| LEFT_ARROW | Move Cursor | console.move |
| Shift+LEFT_ARROW | Move Cursor | console.move |
| RIGHT_ARROW | Move Cursor | console.move |
| Shift+RIGHT_ARROW | Move Cursor | console.move |
| UP_ARROW | History Cycle | console.history_cycle |
| DOWN_ARROW | History Cycle | console.history_cycle |
| DEL | Delete | console.delete |
| BACK_SPACE | Delete | console.delete |
| Shift+BACK_SPACE | Delete | console.delete |
| Ctrl+DEL | Delete | console.delete |
| Ctrl+BACK_SPACE | Delete | console.delete |
| Shift+RET | Clear Line | console.clear_line |
| Shift+NUMPAD_ENTER | Clear Line | console.clear_line |
| RET | Console Execute | console.execute |
| NUMPAD_ENTER | Console Execute | console.execute |
| Ctrl+Shift+C | Copy to Clipboard (as Script) | console.copy_as_script |
| Ctrl+C | Copy to Clipboard | console.copy |
| Ctrl+X | Copy to Clipboard | console.copy |
| Ctrl+V | Paste from Clipboard | console.paste |
| LEFTMOUSE | Set Selection | console.select_set |
| Ctrl+A | Select All | console.select_all |
| LEFTMOUSE | Select Word | console.select_word |
| Ctrl+TAB | Insert | console.insert |
| TAB | Indent or Autocomplete | console.indent_or_autocomplete |
| Shift+TAB | Unindent | console.unindent |
| RIGHTMOUSE | Console | wm.call_menu |
| APP | Console | wm.call_menu |
| Ctrl+Alt+Shift+Cmd+TEXTINPUT | Insert | console.insert |
Veelvoorkomend: 'mijn variabele is weg' en scripting-basis
Variabelen die je in de console aanmaakt, blijven alleen bestaan zolang Blender open blijft — sluit je het bestand of herstart je Blender, dan is de hele consolesessie weg, ook al blijft de scene zelf natuurlijk bewaard als je opgeslagen hebt. Voor iets dat je wil hergebruiken, kopieer je de werkende regels naar een Text-datablock (hoofdstuk 45) zodra ze doen wat je wil.
De meest gebruikte startpunten zijn bpy.context (wat er nú actief/geselecteerd is) en bpy.data (alle datablocks in het bestand, ongeacht selectie) — het eerste voor 'doe iets met wat ik nu heb geselecteerd', het tweede voor 'doorzoek alles in het bestand'.
RECBLENDER 5.1 · D46-CONSOLE-MASTER00:00:00:00921×140Zelf proberen: objecten opvragen en wijzigen
Open start_console.blend met een paar objecten in de scene.
- 1Typ bpy.context.object.name en bekijk de naam van het actieve object.
- 2Typ bpy.data.objects en Tab om de lijst van alle objectnamen te zien.
- 3Verander de locatie van het actieve object met bpy.context.object.location.z = 3.
- 4Voer een operator uit met bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5).
- 5Zoek in de Info-editor de regel die deze laatste operator zelf gegenereerd heeft.