[[Vorlage(Archiviert)]]

{{{#!vorlage Warnung
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
}}}

## Bitte die Angaben zu dem letzten erfolgreichen Test dieser Anleitung eintragen:
{{{#!vorlage Hinweis
Diese Howto-Anleitung wurde zuletzt von [user:Vej:] am 17.08.2016 unter '''Ubuntu 16.04''' und '''Blender 2.76b''' erfolgreich getestet.
}}}
[[Inhaltsverzeichnis()]]

= Problembeschreibung =
[:blender:Blender] lässt sich mittels Skripten in der Skriptsprache [:Python:] erweitern. Um umfangreichere Skripte, die sich womöglich über zahlreiche Module erstrecken, besser einbinden zu können, kann man diese als Plugin zusammenfassen. Dieses Howto erklärt die Schritte die dazu notwendig sind. Es geht nicht auf die Erstellung der Python-Skripte selber ein.

= Anleitung =
== Init-Script erstellen ==
Damit ein Plugin eingebunden werden kann, muss ein gültiges Python-Modul vorliegen. Beim Laden eines Plugins wird das Hauptskript namens '''`__init__.py`''' aufgerufen. Dieses muss alle anderen Module nachladen. Außerdem muss es über die Funktionen `register()` und `unregister()` verfügen, die beim Laden bzw. Entladen des Plugins aufgerufen werden. Obwohl sie beliebigen Code enthalten dürfen, werden sie in der Regel dazu verwendet, plugineigene Datenstrukturen und Klassen zu registrieren.

Ein minimales Beispiel für eine '''`__init__.py`''' am Ende dieses Abschnittes könnte so aussehen:

{{{#!code python
import bpy
class Testklasse(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.nutzlos"
    bl_label = "Tut nichts"

    @classmethod
    def poll(cls, context):
        return true

    def execute(self, context):
        return {'FINISHED'}


def register():
    bpy.utils.register_class(Testklasse)


def unregister():
    bpy.utils.unregister_class(Testklasse)
}}}

== Header hinzufügen ==
Ein Plugin in Python benötigt einige Informationen am Beginn der '''`__init__.py`'''. Diese werden in der folgenden Form angegeben:
## Die letzten beiden Strings sind Teil von Aufzählungslisten und werden nach Blender-Konvention in einfachen Anführungszeichen angegeben, die in Python einem Dictionary entspricht.
{{{#!code python
bl_info = {
    "author": "Max Mustermann",
    "name": "Plugin von Max",
    "description": "Beschreibungstext",
    "warning": "",
    "version": (0, 0),
    "blender": (2, 72, 0), 
    "support": 'TESTING',
    "category": 'Kategoriename'
}
}}}

Die Bedeutung der einzelnen Einträge ist dieser Tabelle zu entnehmen:
{{{#!vorlage Tabelle
<rowclass="titel"-3> Headerinformationen
+++
<rowclass="kopf"> Schlüsselwort
Format
Bedeutung
+++
author 
String 
Der Name des Autors bzw. der Autorin
+++
name 
String
Der Anzeigename des Plugins
+++
description 
String
Eine Beschreibung, die an bestimmten Stellen der Blenderoberfläche angezeigt wird.
+++
warning 
String 
Hier kann vor irgendetwas gewarnt werden. Dies wird vor der Installation grafisch hervorgehoben.
+++
version 
Tupel oder Tripel 
Eine zwei- bis dreistellige Versionsnummer für das Plugin.
+++
blender
Tripel
Die dreistellige Versionsnummer von Blender, unter der das Plugin laufen soll.
+++
support 
String
Ein Eintrag aus  `'OFFICIAL'`,`'COMMUNITY'` und `'TESTING'`, der den Supportstatus angibt. Neu erstellte und unveröffentlichte Plugins sollten `'TESTING'` angeben.
+++
category 
String 
Eine Kategorie (siehe untenstehende Liste).
}}}
Bei den Kategorien hat man die Wahl zwischen den folgenden dreiundzwanzig Einträgen:
 * `'3D View'`
 * `'Add Mesh'`
 * `'Add Curve'`
 * `'Animation'`
 * `'Developement'`
 * `'Game Engine'`
 * `'Import-Export'`
 * `'Lighting'`
 * `'Material'`
 * `'Mesh'`
 * `'Node'`
 * `'Object'`
 * `'Physics'`
 * `'Pyconstraint'`
 * `'Pydriver'`
 * `'Pynode'`
 * `'Paint'`
 * `'Render'`
 * `'Rigging'`
 * `'System'`
 * `'Text Editor'`
 * `'UV'`
 * `'User Interface'`



== Einbinden ==
Das so erhaltene Plugin umfasst neben der Headerdatei alle geladenen Module, die nicht von Python oder Blender bereitgestellt werden.
Es kann entweder über die graphische Oberfläche installiert oder händisch in einen beliebig benannten Unterordner des Pluginordners '''~/.config/blender/<Versionsnummer>/scripts/addons ''' kopiert werden.

= Links =
 * [:Python:]
 * [:blender:Blender:]
 * [http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Guidelines/Addons] {en} – Eine ausführliche Anleitung für die Pluginerstellung
 * [http://wiki.blender.org/index.php/Dev:Doc/Process/Addons] {en} – Wie Addons für Blender veröffentlicht werden
 * [:Howto:] {Übersicht} - Übersicht aller Howto-Artikel

## Weitere [:Wiki/Tag:Tags] sind nicht gestattet!
#tag: Howto