Zum Inhalt springen

Python-Scripting

LinkCAD enthält einen eingebetteten Python-Interpreter für benutzerdefinierte Automatisierung, Tool-Entwicklung und die Erstellung von Format-Plugins. Python-Skripte können auf die Zeichnungsdatenbank, die Geometrie-API und das Plugin-Framework linkcad.v1 zugreifen.

Funktionen

  • Benutzerdefinierte Tools — Menüeinträge erstellen, die Zeichnungsgeometrie verarbeiten
  • Format-Plugins — Import-/Exportformate mit FormatReader, FormatWriter, DrawingBuilder und WriterController hinzufügen
  • Interaktive Konsole — Zeichnungen live erkunden und bearbeiten
  • Skripteditor — Skripte direkt in LinkCAD schreiben und ausführen

Die Python-API bleibt im stabilen Namensraum linkcad.v1. Die aktuellen Ergänzungen an Format-Plugins und Datenbank gehören zu v1; es gibt keinen v2-Migrationspfad. Das Paket liefert außerdem Typ-Stubs mit, ein Editor bietet also von Haus aus Vervollständigung und Typprüfung für linkcad.* — siehe Einrichtung & Voraussetzungen.

Erste Schritte

  1. Einrichtung & Anforderungen — Python-Umgebung und Voraussetzungen
  2. Ihr erstes Skript — „Hello World“ in der Python-Konsole
  3. Ein Tool-Plugin schreiben — ein ins Menü integriertes Tool erstellen
  4. Ein Format-Plugin schreiben — ein neues Dateiformat hinzufügen
  5. Tutorial zur Panel-Zusammenstellung — vollständiges praxisnahes Beispiel

API-Referenz

  • Optionstypen — integer, real, boolean, string, choice, path, color, table, cell_choice
  • Tool-Dekorator@tool()-Dekorator und Tool-Basisklasse
  • Format-Dekoratoren@format_reader(), @format_writer() und Basisklassen
  • API-Module — alle Module: linkcad.v1.plugin, linkcad.v1.db, linkcad.v1.geom, linkcad.v1.edit, linkcad.v1.env, linkcad.v1.conv, linkcad.v1.libgraph, linkcad.v1.controller

Kurzes Beispiel

Ein einfaches Tool, das Formen pro Ebene zählt:

from collections import Counter
from linkcad.v1.plugin import tool, Tool
@tool(
name="Layer Statistics",
menu="Tools/Analysis",
tooltip="Count shapes per layer",
)
class LayerStats(Tool):
def run(self, drawing) -> dict:
counts = Counter(
shape.layer.name
for cell in drawing.cells
for shape in cell.shapes
if shape.layer is not None
)
return {
"layers": dict(counts),
"summary": f"{len(counts)} layers, {sum(counts.values())} shapes",
}

drawing.cells und cell.shapes sind Eigenschaften, keine Methoden. In der gesamten API gilt: ein Substantiv ist eine Eigenschaft, ein Verb ist eine Methode, ein Getter/Setter-Paar ist eine schreib- und lesbare Eigenschaft, und Geometrie wird von dem Objekt erzeugt, dem sie gehören wird — drawing.add_cell(name), cell.add_polygon(layer, vertices).

linkcad und linkcad.v1 veröffentlichen die Module der API, nicht deren Inhalte; importieren Sie also das Modul, das Sie brauchen: from linkcad.v1 import db, dann db.Drawing.