Optionstypen
Die Klasse Option bietet Factory-Methoden, um typisierte, dauerhafte Optionen zu definieren, die in den Dialogen von Tool- und Format-Plugins UI-Elemente erzeugen.
Gemeinsame Parameter
Alle Options-Factories akzeptieren diese Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
label | str | Anzeigetext (erstes positionelles Argument) |
default | wechselnd | Standardwert |
tooltip | str | Tooltip-Text |
enabled_when | callable | Callback, das self erhält und bool liefert — bei False wird das Element ausgegraut |
name | str | Nur als Schlüsselwort. Überschreibt den generierten Optionsschlüssel |
Option.integer()
Drehfeld für ganzzahlige Werte.
count = Option.integer("Count", default=1, min=0, max=1000)| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | int | 0 | Standardwert |
min | int | 0 | Minimalwert |
max | int | 999999 | Maximalwert |
Option.real()
Dezimal-Drehfeld für Fließkommawerte.
scale = Option.real("Scale Factor", default=1.0, min=0.001, max=1e6, decimals=4)| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | float | 0.0 | Standardwert |
min | float | 0.0 | Minimalwert |
max | float | 1e9 | Maximalwert |
decimals | int | 2 | Angezeigte Nachkommastellen |
Option.boolean()
Kontrollkästchen für Wahrheitswerte.
flatten = Option.boolean("Flatten hierarchy", default=False)| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | bool | False | Standardwert |
Option.string()
Einzeiliges Textfeld.
name = Option.string("Output name", default="output")| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | str | "" | Standardwert |
Option.choice()
Auswahlliste.
mode = Option.choice("Mode", choices=["Fast", "Precise", "Custom"], default="Fast")| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
choices | list[str] | erforderlich | Verfügbare Optionen |
default | str | erste Auswahl | Standardauswahl |
Option.path()
Dateipfadauswahl mit Durchsuchen-Schaltfläche.
output = Option.path("Output file", file_filter="CSV Files (*.csv)")| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | str | "" | Standardpfad |
file_filter | str | "*.*" | Filterzeichenkette für Dateitypen |
Option.color()
Schaltfläche zur Farbauswahl.
fill = Option.color("Fill color", default="#FF0000")| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | str | "#000000" | Standardfarbe (hexadezimal) |
Option.cell_choice()
Auswahlliste mit allen Zellennamen der aktuellen Zeichnung.
target = Option.cell_choice("Target cell")| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
default | str | "" | Standard-Zellenname |
Option.table()
Editierbares Raster mit typisierten Spalten. Siehe auch Tutorial zur Panel-Zusammenstellung.
entries = Option.table( "My Table", columns=[ TableColumn(key="name", label="Name", col_type="string"), TableColumn(key="value", label="Value", col_type="real", decimals=3), ],)| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
columns | list[TableColumn] | erforderlich | Spaltendefinitionen |
default | list[dict] | [] | Vorgabezeilen |
Der Wert ist eine list[dict], in der jedes Dictionary Spaltenschlüssel auf Werte abbildet.
TableColumn
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
key | str | Dictionary-Schlüssel für diese Spalte |
label | str | Spaltenüberschrift |
col_type | str | string, integer, real, choice, cell_choice |
default | Any | Standardwert für neue Zeilen |
choices | list[str] | Optionen für choice-Spalten |
decimals | int | Nachkommastellen für real-Spalten |
min_value | int|float | Minimum für numerische Spalten |
max_value | int|float | Maximum für numerische Spalten |
Bedingte Sichtbarkeit
Verwenden Sie enabled_when, um Optionen dynamisch zu aktivieren und zu deaktivieren:
class MyTool(Tool): mode = Option.choice("Mode", choices=["Simple", "Advanced"]) threshold = Option.real( "Threshold", default=0.5, enabled_when=lambda self: self.mode == "Advanced", ) iterations = Option.integer( "Iterations", default=10, enabled_when=lambda self: self.mode == "Advanced", )Steht mode auf „Simple“, sind die Felder threshold und iterations ausgegraut.
Optionsschlüssel
Jede Option wird unter einem Zeichenkettenschlüssel dauerhaft gespeichert. Wird eine Option als Klassenattribut verwendet, erzeugt LinkCAD diesen Schlüssel als PyPlugin.<Klasse>.<Attribut>. Die reservierte Wurzel PyPlugin hält Plugin-Optionen aus dem Einstellungs-Namensraum der Anwendung heraus, und das Klassensegment hält zwei Plugins auseinander, die beide eine Option flatten nennen:
class AsciiWriter(FormatWriter): flatten = Option.boolean("Flatten hierarchy", default=False) # persisted as "PyPlugin.AsciiWriter.flatten"Der Attributname wird unverändert übernommen, Schlüssel und lesendes Python-Attribut sind also gleich geschrieben. Jede Option ist unter diesem Schlüssel auch über die Befehlszeile setzbar:
linkcad --PyPlugin.AsciiWriter.flatten=1 ...Übergeben Sie das reine Schlüsselwortargument name, um den Schlüssel selbst zu wählen:
flatten = Option.boolean("Flatten hierarchy", default=False, name="MyFormatFlatten")Optionswerte werden auf die Instanz geladen, bevor run(), read() oder write() aufgerufen wird; innerhalb dieser Methoden ist self.flatten also der aktuelle Wert. Das Attribut lässt sich auch direkt setzen — genau das macht ein Plugin aus dem Skripteditor steuerbar, ohne seinen Dialog zu öffnen.