Zum Inhalt springen

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:

ParameterTypBeschreibung
labelstrAnzeigetext (erstes positionelles Argument)
defaultwechselndStandardwert
tooltipstrTooltip-Text
enabled_whencallableCallback, das self erhält und bool liefert — bei False wird das Element ausgegraut
namestrNur 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)
ParameterTypStandardBeschreibung
defaultint0Standardwert
minint0Minimalwert
maxint999999Maximalwert

Option.real()

Dezimal-Drehfeld für Fließkommawerte.

scale = Option.real("Scale Factor", default=1.0, min=0.001, max=1e6, decimals=4)
ParameterTypStandardBeschreibung
defaultfloat0.0Standardwert
minfloat0.0Minimalwert
maxfloat1e9Maximalwert
decimalsint2Angezeigte Nachkommastellen

Option.boolean()

Kontrollkästchen für Wahrheitswerte.

flatten = Option.boolean("Flatten hierarchy", default=False)
ParameterTypStandardBeschreibung
defaultboolFalseStandardwert

Option.string()

Einzeiliges Textfeld.

name = Option.string("Output name", default="output")
ParameterTypStandardBeschreibung
defaultstr""Standardwert

Option.choice()

Auswahlliste.

mode = Option.choice("Mode", choices=["Fast", "Precise", "Custom"], default="Fast")
ParameterTypStandardBeschreibung
choiceslist[str]erforderlichVerfügbare Optionen
defaultstrerste AuswahlStandardauswahl

Option.path()

Dateipfadauswahl mit Durchsuchen-Schaltfläche.

output = Option.path("Output file", file_filter="CSV Files (*.csv)")
ParameterTypStandardBeschreibung
defaultstr""Standardpfad
file_filterstr"*.*"Filterzeichenkette für Dateitypen

Option.color()

Schaltfläche zur Farbauswahl.

fill = Option.color("Fill color", default="#FF0000")
ParameterTypStandardBeschreibung
defaultstr"#000000"Standardfarbe (hexadezimal)

Option.cell_choice()

Auswahlliste mit allen Zellennamen der aktuellen Zeichnung.

target = Option.cell_choice("Target cell")
ParameterTypStandardBeschreibung
defaultstr""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),
],
)
ParameterTypStandardBeschreibung
columnslist[TableColumn]erforderlichSpaltendefinitionen
defaultlist[dict][]Vorgabezeilen

Der Wert ist eine list[dict], in der jedes Dictionary Spaltenschlüssel auf Werte abbildet.

TableColumn

EigenschaftTypBeschreibung
keystrDictionary-Schlüssel für diese Spalte
labelstrSpaltenüberschrift
col_typestrstring, integer, real, choice, cell_choice
defaultAnyStandardwert für neue Zeilen
choiceslist[str]Optionen für choice-Spalten
decimalsintNachkommastellen für real-Spalten
min_valueint|floatMinimum für numerische Spalten
max_valueint|floatMaximum 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.