[[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 Headerinformationen +++ 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//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