Qtscreen uses QtVCP widgets for LinuxCNC integration.

Widget is the general name for the UI objects such as buttons and labels in PyQt.

Es stehen Ihnen alle Standard-Widgets im Qt Designer Editor zur Verfügung.

Es gibt auch spezielle Widgets für LinuxCNC, um die Integration zu erleichtern. Diese sind in zwei Teile geteilt, überschrieben wie folgt auf der rechten Seite des Editors:

  • Einer ist für nur HAL-Widgets.

  • Das andere ist für CNC-Steuerungs-Widgets.

Es steht Ihnen frei, sie auf Ihrer Tafel beliebig zu mischen.

Anmerkung
Diese Beschreibung der Widget-Eigenschaften kann aufgrund der weiteren Entwicklung und des Mangels an Personen, die Dokumentationen schreiben, leicht veraltet sein (eine gute Möglichkeit, dem Projekt etwas zurückzugeben). Die endgültigen Beschreibungen finden Sie im Quellcode.

1. Nur HAL-Widgets

Diese Widgets haben normalerweise HAL-Pins und reagieren nicht auf die Maschinensteuerung.

1.1. CheckBox Widget

Mit diesem Widget kann der Benutzer ein Kästchen ankreuzen, um einen HAL-Pin auf true oder false zu setzen.

Er basiert auf dem QCheckButton von PyQt.

1.2. DetachTabWidget - Container Widget With User Detachable Panels

This container widget works just like a QTabWidget -it displays multiple panels one at a time with tabs to select.
If you double click the tab or drag the tab, the tab will detach from the main window.
When a tab is detached, the contents are placed into a QDialog.
The tab can be re-attached by closing the dialog or by double clicking on its window frame.

It is based on PyQt’s QTabWidget.

1.3. DoubleScale - Eingabe-Widget für die Drehschaltfläche (engl. spin button)

Dieses Widget ist ein Spin-Button-Eingabe-Widget, das zum Setzen eines s32- und float-HAL-Pins verwendet wird.

Es hat einen internen Skalierungsfaktor, der standardmäßig auf 1 gesetzt ist und programmatisch oder über ein QtSignal eingestellt werden kann.

Der setInput-Slot kann mit einem Integer- oder Float-Signal verbunden werden.

[HALLabelName].setInput(some_value)

Dies ist ein Funktionsaufruf zur Änderung des internen Skalierungsfaktors.

Die HAL-Pins werden auf den Wert der internen Skala mal dem vom Widget angezeigten Wert gesetzt.

1.4. FocusOverlay - Focus Overlay Widget

Dieses Widget legt ein farbiges Overlay über den Bildschirm, normalerweise während ein Dialog angezeigt wird.

QtVCP Fokus-Überlagerung
Abbildung 1. Beispiel für ein Fokus-Overlay zur Bestätigung der Abschlussaufforderung

Wird verwendet, um ein "konzentriertes" Gefühl zu erzeugen und die Aufmerksamkeit auf wichtige Informationen zu lenken.

Es kann auch ein durchsichtiges Bild anzeigen.
Es kann auch Nachrichtentext und Schaltflächen anzeigen.

Dieses Widget kann mit ‚STATUS‘-Meldungen gesteuert werden.

1.5. Gauge - Rundes Messuhr-Widget

QtVCP `Gauge`: Rundes Messuhr-Widget
Abbildung 2. QtVCP Gauge: Rundes Messuhr-Widget

Round Gauge kann in einem LinuxCNC GUI verwendet werden, um einen Eingabeparameter auf dem Zifferblatt anzuzeigen.

Anpassbare Parameter

Es gibt mehrere Eigenschaften, die vom Benutzer eingestellt werden können, um das Erscheinungsbild der Anzeige anzupassen.

Die folgenden Parameter können entweder programmatisch oder über den Eigenschaftseditor von Qt Designer eingestellt werden.

halpin_option

Wenn Sie diese Option auf True setzen, werden 2 HAL-Pins erstellt:

  • Einer ist für die Eingabe des value (engl. für Wert) bestimmt

  • Die andere dient der Einstellung des "Sollwerts" (engl. setpoint).

Wenn diese Option nicht gesetzt ist, müssen value und setpoint programmatisch, d.h. in der Handler-Datei, verbunden werden.

max_reading

Dieser Wert bestimmt die höchste angezeigte Zahl auf der Anzeige.

max_value

Dies ist der maximal zu erwartende Wert des Werteingangssignals.
Mit anderen Worten, es ist der Skalenendwert.

num_ticks

Dies ist die Anzahl der Ticks/Anzeigewerte auf der Anzeigefläche.
Sie sollte auf eine Zahl eingestellt werden, die sicherstellt, dass die Textanzeigen auf der Anzeigefläche lesbar sind.
Der minimal zulässige Wert ist 2.

zone1_color

Zone1 erstreckt sich vom maximalen Messwert bis zum Schwellenwert.
Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

zone2_color

Zone2 erstreckt sich vom Schwellenwert bis zum Mindestwert, der 0 ist.
Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

bezel_color

Dies ist die Farbe des Außenrings des Messgeräts.

bezel_width

This is the width of the outer ring of the gauge.

threshold

Der Schwellenwert ist der Übergangspunkt zwischen den Zonen.
Er sollte auf einen Wert zwischen 0 und dem Maximalwert gesetzt werden.
Der höchstzulässige Wert wird auf den "Maximalwert" des Messgeräts gesetzt, der Mindestwert ist 0.

gauge_label

Dies ist der Text unter der Wertanzeige, nahe dem unteren Rand des Messgeräts.
Die Funktion des Messgeräts ist dann leicht erkennbar.

base_color

Farbe der Mess-Anzeige (engl. gauge).

base_gradient_color

The highlight color of the gauge.

center_color

The color of the center of the gauge.

center_gradient_color

The highlight color of the center of the gauge.

Nicht anpassbare Parameter

Es gibt 2 Eingänge, die nicht anpassbar sind. Sie können über HAL-Pins, programmatisch oder über Signale von anderen Widgets gesetzt werden:

value

Dies ist der eigentliche Eingangswert, der mit der Nadel des Messgeräts und in der digitalen Anzeige angezeigt wird.
Er muss auf einen Wert zwischen 0 und dem Maximalwert eingestellt werden.

setpoint

Dies ist ein Wert, der die Position einer kleinen Markierung auf der Messgeräteoberfläche bestimmt. Er muss auf einen Wert zwischen 0 und dem Maximalwert gesetzt werden.

1.6. GeneralHALInput - Allgemeine Signale/Steckplätze (engl. slot) Eingang Verbindung Widget

Dieses Widget wird verwendet, um ein beliebiges Qt-Widget über Signale/Slots mit HAL zu verbinden.

Sie wird _für Widgets verwendet, die auf HAL-Pin-Änderungen reagieren sollen.

1.7. GeneralHALOutput - Allgemeines Signal/Slot-Ausgangsverbindungs-Widget

Dieses Widget wird verwendet, um ein beliebiges Qt-Widget über Signale/Slots mit HAL zu verbinden.

Es wird _für Widgets verwendet, die HAL-Pins steuern sollen.

1.8. GridLayout - Grid Layout Widget

Dieses Widget steuert, ob die Widgets darin aktiviert oder deaktiviert sind.

Deaktivierte Widgets haben normalerweise eine andere Farbe und reagieren nicht auf Aktionen.

Es basiert auf dem QGridLayout von PyQt.

1.9. HalBar - HAL Bar Level Anzeige

QtVCP HalBar: Panel zeigt die HAL Bar Level Anzeige
Abbildung 3. QtVCP HalBar: Panel zeigt die HAL Bar Level Anzeige

This widget is used to indicate level or value, usually of a HAL s32/float pin.
You can also disable the HAL pin and use Qt signals or Python commands to change the level.

1.9.1. Balken (engl. bar) Eigenschaften

HalBar is a subclass of the Bar widget, so it inherits these properties:

  • stepColorList: eine Liste von Farbketten, die Anzahl der Farben definiert die Anzahl der Balken.

  • backgroundColor: eine QColor Definition der Hintergrundfarbe.

  • setMaximum: eine ganze Zahl, die den maximalen Indikationsgrad (engl. level of indication) definiert.

  • setMinimum: eine ganze Zahl, die den niedrigsten Indikationsgrad festlegt.

1.9.2. HalBar Eigenschaften

  • pinType: Zur Auswahl des HAL-Pin Typen:

    • NONE kein HAL-Pin wird hinzugefügt

    • S32 Ein S32 Ganzzahl-Pin wird hinzugefügt

    • FLOAT A Float Pin wird hinzugefügt

  • pinName: Um den HAL-Pinnamen zu ändern, sonst wird der Widget-Basisname verwendet.

1.9.3. HalBar Stylesheets

Die oben genannten Eigenschaften für Balken (engl. bar) können in Stylesheets festgelegt werden.
pinType und pinName Eigenschaften können nicht in Stylesheets geändert werden.

Anmerkung
In Stylesheets ist stepColorList eine einzelne Zeichenfolge von Farbnamen, die durch Kommas getrennt sind.
HalBar{
    qproperty-backgroundColor: #000;
    qproperty-stepColorList: 'green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red,red';
}

1.10. HALPad - HAL Buttons Joypad

QtVCP HALPad: HAL Buttons Joypad
Abbildung 4. QtVCP HALPad: HAL-Buttons Joypad

Dieses Widget sieht aus und funktioniert wie ein 5-Tasten-D-Pad, mit einem LED-Ring.

Jede Taste hat einen wählbaren Typ (Bit, S32 oder Float) als HAL-Pin.

Der LED-Mittelring hat wählbare Farben für Aus und Ein und wird über einen Bit-HAL-Pin gesteuert.

HALPad ENUMS

Es werden numerierte Konstanten verwendet:

  • Um Indikatorpositionen zu referenzieren:

    • NONE

    • LEFT

    • RIGHT

    • CENTER

    • TOP

    • BOTTOM

    • LEFTRIGHT

    • TOPBOTTOM

  • Für HAL-Pins Typ:

    • NONE

    • BIT

    • S32

    • FLOAT

Sie verwenden den Namen des Widgets im Qt Designer plus die Referenzkonstante:

self.w.halpadname.set_highlight(self.w.halpadname.LEFTRIGHT)
HALPad Eigenschaften
pin_name

Optionaler Name, der für den HAL Pin basename verwendet wird. Bleibt er leer, wird der Name des Qt Designer Widgets verwendet.

pin_type

Wählen Sie den HAL-Ausgangspin-Typ. Diese Eigenschaft wird nur beim Starten verwendet. Die Auswahl kann im Qt Designer eingestellt werden:

  • NONE

  • BIT

  • S32

  • FLOAT

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

Datei- oder Ressourcenpfad zu einem Bild, das an der beschriebenen Stelle der Schaltfläche angezeigt werden soll.
Wenn die Schaltfläche "Zurücksetzen" (engl. reset) in der Qt Designer-Editor-Eigenschaft gedrückt wird, wird das Bild nicht angezeigt (optionaler Text ist möglich).

left_text
right_text
center_text
top_text
bottom_text

Eine Textzeichenfolge, die an der beschriebenen Schaltflächenposition angezeigt werden soll.
Wenn das Feld leer gelassen wird, kann ein Bild für die Anzeige bestimmt werden.

true_color
false_color

Farbauswahl für den mittleren LED-Ring, der angezeigt werden soll, wenn der BASENAME.light.center HAL-Pin True oder False ist.

text_color

Auswahl der Farbe für den Text des Buttons.

text_font

Auswahl der Schriftart für den Text des Buttons.

HALPad Styles

Die oben genannten Eigenschaften können in Stylesheets festgelegt werden.

HALPad{
    qproperty-on_color: #000;
    qproperty-off_color: #444;
}

1.11. HALLabel - HAL Label Widget

Dieses Widget zeigt die an dieses gesendeten Werte an.

Werte können gesendet werden von:

  • HAL-Pins
    Der Eingangsstift kann als Bit, S32, Float oder kein Stift ausgewählt werden

  • Programmatisch

  • Ein QtSignal

Es gibt eine "textTemplate"-Eigenschaft, um den Rich-Text einzustellen und/oder den Text zu formatieren.
Eine grundlegende Formatierung könnte sein:

  • %r für Boolesche Werte

  • %d für ganze zahlen

  • %0.4f für Floats.

Ein Beispiel für einen Rich-Text könnte sein:

self.w.my_hal_label.setProperty(textTemplate,"""
<html>
<head/>
<body>
  <p><span style="font-size:12pt;font-weight:600;color:#f40c11;">%0.4f</span></p>
</body>
</html>
"""
)

Der setDisplay-Slot kann mit einem Integer-, Float- oder Bool-Signal verbunden werden.

Wenn die Eigenschaft pin_name nicht gesetzt ist, wird der Name des Widgets verwendet.

Es gibt Funktionsaufrufe zur Anzeige von Werten:

[HALLabelName].setDisplay(some_value)

Kann zur Einstellung der Anzeige (engl. display) verwendet werden, wenn kein HAL-Pin ausgewählt ist.

[HALLabelName].setProperty(textTemplate,"%d")

Legt die Vorlage für die Anzeige fest.

Es basiert auf PyQts QLabel.

1.12. LCDNumber - Widget zum Auslesen der LCD-Stilnummer

Dieses Widget zeigt HAL-Float/S32/Bit-Werte in einer LCD-ähnlichen Form an.

Es kann Zahlen im Dezimal-, Hexadezimal-, Binär- und Oktalformat anzeigen, indem es die Eigenschaft Modus setzt.

Bei der Verwendung von Floats können Sie eine Formatierung über eine Zeichenfolge festlegen.

Sie müssen die Eigenschaft digitCount auf eine geeignete Einstellung setzen, um die größte Zahl anzuzeigen.

Eigenschaften
pin_name

Optionsstring, der als HAL-Pin-Name verwendet werden soll.
Bei einem leeren String wird der Name des Widgets verwendet.

bit_pin_type

Wählt den Eingangspin als Typ BIT aus.

s32_pin_type

Wählt den Eingangsstift als Typ S32 aus.

float_pin_type

Wählen Sie den Eingangspin als Typ FLOAT.

floatTemplate

Eine Zeichenfolge, die als Vorlage im Python3-Format verwendet wird, um die LCD-Anzeige anzupassen.
Wird nur verwendet, wenn ein FLOAT-Pin ausgewählt ist, z.B. {:.2f} zeigt einen Gleitkommawert an, der auf 2 Zahlen nach der Dezimalstelle gerundet ist.
Bei einer leeren Einstellung kann die Dezimalstelle nach Bedarf verschoben werden.

Es basiert auf PyQts QLCDNumber.

1.13. LED - Anzeige-Widget

QtVCP LED: LED Anzeige-Widget
Abbildung 5. QtVCP LED: LED-Anzeige-Widget

Eine LED-ähnliche Anzeige, die optional der Logik eines HAL-Pins folgt.

halpin_option

Wählt aus, ob die LED einem Eingangs-HAL-Pin oder einem Programmzustand folgt.

diameter

Diameter of the LED (defaults to 15).

color

Color of the LED when on (defaults to green).

off_color

Color of the LED when off (defaults to black).

gradient

turns the gradient high light on or off (defaults to on).

on_gradient_color

Color highlight of the LED when on (defaults to white).

off_gradient_color

Color highlight of the LED when off (defaults to white).

alignment

Qt-Hinweis zur Ausrichtung.

state

Aktueller Zustand der LED

flashing

Schaltet die Blinkoption ein und aus.

flashRate

Legt die Blitzrate fest.

Die LED-Eigenschaften können in einem stylesheet mit folgendem Code definiert werden, welcher der .qss-Datei hinzugefügt wird, wobei name_of_led der im Qt Designer-Editor definierte Widget-Name ist:

LED #name_0f_led{
  qproperty-color: red;
  qproperty-diameter: 20;
  qproperty-flashRate: 150;
}

1.14. PushButton - HAL Pin Toggle Widget

Mit diesem Widget kann der Benutzer einen HAL-Pin per Tastendruck auf "true" oder "false" setzen.

Als Option kann es eine Umschalttaste (engl. toggle button) sein.

Für eine LED Indikator Option, siehe [sub:qtvcp:widgets:indicatedpushbutton][IndicatedPushButton] unten für weitere Informationen.

Es gibt auch andere Optionen.

Es basiert auf PyQts QPushButton.

1.15. RadioButton Widget

Mit diesem Widget kann ein Benutzer HAL-Pins auf true oder false setzen. Nur ein "RadioButton"-Widget einer Gruppe kann gleichzeitig "true" sein.

Er basiert auf dem QRadioButton von PyQt.

1.16. Slider - HAL-Pin-Wert-Anpassungs-Widget

Ermöglicht das Anpassen eines HAL-Pins mit einem verschiebbaren Zeiger.

1.17. TabWidget - Tab Widget

This widget allows the tab height to be adjusted with stylesheets

The TabWidget properties can be defined in a stylesheet with the following code added to the .qss file.
name_of_tab being the widget name defined in Qt Designer’s editor.
If you omit the #name_of_tab text, all TabWidgets tab height will be set.
This shows how to set a particular widget’s tab height:

TabWidget #name_of_tab{
  qproperty-tabsize: 1.5;
}

It is based on PyQt’s QTabWidget.

1.18. WidgetSwitcher - Multi-Widget-Layout-View-Switcher-Widget

Dies wird verwendet, um die Ansicht eines Multi-Widget-Layouts umzuschalten, um nur ein Widget anzuzeigen, d.h. um zwischen einer großen Ansicht eines Widgets und einer kleineren Multi-Widget-Ansicht zu wechseln.

Es unterscheidet sich von einem gestapelten Widget, da es ein Widget von einer beliebigen Stelle des Bildschirms ziehen und es auf seiner Seite mit einem anderen Layout als ursprünglich platzieren kann.

Das original Widget muss sich in einem layout befinden, damit der Switcher es wieder ablegen kann.

In Qt Designer werden Sie:

  • Das WidgetSwitcher widget auf dem Bildschirm hinzufügen.

  • Auf dem `WidgetSwitcher`rechts-klicken, um eine Seite hinzuzufügen.

  • Es bevölkern mit den Widgets/Layouts, die Sie in einem Standardformular sehen möchten.

  • So viele Seiten hinzufügen, wie es Ansichten zu wechseln gibt.

  • Fügen Sie auf jeder Seite ein Layout-Widget hinzu.
    Nach dem Hinzufügen des Layouts müssen Sie erneut mit der rechten Maustaste auf den Widget-Wechsler klicken und die Layout-Option festlegen.

  • Klicken Sie auf das Widget WidgetSwitcher und scrollen Sie dann zum unteren Rand des Eigenschaftseditors.

  • Suchen Sie die dynamische Eigenschaft widget_list und doppelklicken Sie rechts daneben.

  • Es erscheint ein Dialogfeld, in dem Sie die Namen der Widgets angeben können, die auf die Seiten verschoben werden sollen, die Sie dem WidgetSwitcher hinzugefügt haben.

Es gibt Funktionsaufrufe, um bestimmte Widgets anzuzeigen.
Durch den Aufruf einer dieser Funktionen steuern Sie, welches Widget gerade angezeigt wird:

[_WidgetSwitcherName_].show_id_widget(_number_)
[_WidgetSwitcherName_].show_named_widget(_widget_name_)
[_WidgetSwitcherName_].show_default()

Dies zeigt das "Seite 0"-Layout und stellt alle anderen Widgets wieder so ein, wie sie ursprünglich in Qt Designer erstellt wurden.

[_WidgetSwitcherName_].show_next()

Nächstes Widget anzeigen.

Es basiert auf dem QStack-Widget.

1.19. XEmbed - Widget zum Einbetten von Programmen

Ermöglicht die Einbettung eines Programms in das Widget.

Es funktionieren nur Programme, die das xembed-Protokoll verwenden, wie z.B.:

  • GladeVCP Virtuelle Control Panels

  • Integrierte virtuelle Tastatur

  • QtVCP Virtuelle Kontrollpanels

  • mplayer-Videoplayer

2. Widgets für Maschinensteuerungen

Diese Widgets interagieren mit dem Zustand der Maschinensteuerung.

2.1. ActionButton - Aktionssteuerungs-Widget der Maschinensteuerung

Diese Tasten werden für Steuerungsaktionen an der Maschinensteuerung verwendet.

Sie sind auf IndicatedPushButton aufgebaut und können daher mit LEDs überlagert werden.

Anmerkung
Wenn Sie mit der linken Maustaste auf dieses Widget doppelklicken, können Sie einen Dialog zum Einstellen einer dieser Aktionen aufrufen. Die Dialoge helfen dabei, die richtigen Daten für die ausgewählte Aktion festzulegen. Sie können diese Eigenschaften auch direkt im Eigenschaftseditor ändern.
Aktionen

Sie können eine der folgenden Optionen auswählen:

Estop
Machine On
Auto
mdi
manual
run
run_from_line status

Ermittelt die Zeilennummer aus der STATUS-Meldung gcode-line-selected.

run_from_line slot

Ermittelt die Zeilennummer aus dem Qt Designer int/str Slot setRunFromLine.

abort
pause
load dialog

Erfordert das Vorhandensein eines Dialog-Widgets.

Camview dialog

Erfordert das Vorhandensein des Dialog-Widgets "Camview".

origin offset dialog

Erfordert das Vorhandensein eines Dialogfensters für den Ursprungsversatz.

macro dialog

Erfordert das Vorhandensein eines Makro-Dialog-Widgets.

Launch Halmeter
Launch Status
Launch Halshow
Home

Setzen Sie die Gelenknummer auf -1 für all-home (engl. alle referenzieren).

Unhome

Setzen Sie die Gelenknummer auf -1 für all-unhome(engl. für alle Referezierungen aufheben).

Home Selected

Setzt das durch „STATUS“ ausgewählte Gelenk/Achse in die Ausgangsstellung.

Unhome Selected

Hebt die Referenzierung der STATUS ausgewählte Verbindung/Achse auf.

zero axis
zero G5X

Nullt die aktuellen Offsets des Benutzerkoordinatensystems.

zero G92

Nullt die optionalen G92-Offsets.

zero Z rotational

Setzt den Rotationsoffset auf Null.

jog joint positive

Legt die Gelenknummer fest.

jog joint negative

Legt die Gelenknummer fest.

jog selected positive

Ausgewählt mit einem anderen Widget oder STATUS.

jog selected negative

Ausgewählt mit einem anderen Widget oder STATUS.

jog increment

Metrische/imperiale/angulare Zahlen einstellen.

jog rate

Festlegen Sie die float/alt-Gleitkommanummer.

feed override

Festlegen Sie die float/alt-Gleitkommanummer.

rapid override (engl. für Eilgang-Anpassung)

Festlegen Sie die float/alt-Gleitkommanummer.

spindle override (engl. für Spindel-Anpassung)

Festlegen Sie die float/alt-Gleitkommanummer.

spindle fwd (engl. für Spindel vorwärts)
spindle backward (engl. für Spindel rückwärts)
spindle stop
spindle up (engl. für Spindel hoch)
spindle down (engl. für Spindel runter)
view change (engl. für Änderungen anschauen)

Setzen von view_type_string.

limits override (engl. für Grenzen neufestsetzen)
flood (engl. für das Flut-Kühlmittel)
mist (engl. für (Kühl-)Nebel)
block_delete (engl. für Block löschen)
optional stop
mdi command (engl. für MDI Befehl)

Setze command_string, d.h. ruft einen fest kodierten MDI-Befehl auf

INI-MDI-Nummer

Setzt ini_mdi_number, d.h. ruft einen INI-basierten MDI-Befehl auf

dro absolute
dro relative
dro dtg
Exit-Bildschirm

Beendet LinuxCNC

Override limits

Vorübergehende Überschreitung harter Grenzen

Dialoge starten

Öffnet Dialogfelder, wenn sie in der UI-Datei enthalten sind.

set DRO to relative (engl. für DRO auf relativ setzen)
set DRO to absolute
set DRO to distance-to-go (engl. für DRO auf Restweg setzen)

Attribute

Diese setzen Attribute der ausgewählten Aktion (Verfügbarkeit hängt vom Widget ab):

toggle float option (engl. für Wechsel-Buttons)

Ermöglicht das Umschalten zwischen zwei Raten.

joint number (engl. für Gelenknummer)

Wählt das Gelenk/die Achse aus, das/die von der Schaltfläche gesteuert wird.

incr imperial number

Legt das imperiale Jog-Inkrement fest (negativ setzen, um zu ignorieren).

incr mm number

Legt die metrische Schrittweite fest (zum Ignorieren negativ setzen).

incr angular number

Legt die Winkelschrittweite fest (zum Ignorieren negativ einstellen).

float number

Wird für jograte und overrides verwendet.

float alternate number

Für jograte und overrides, die zwischen zwei Fließkommazahlen wechseln können.

view type string

Kann sein:

  • p,

  • x, y, y2, z, z2,

  • zoom-in, zoom-out,

  • pan-up, pan-down, pan-left, pan-right,

  • rotate-up, rotate-down, rotate-cw, rotate-ccw

  • clear.

command string

MDI-Befehlszeichenfolge, die aufgerufen wird, wenn die MDI-Befehlsaktion ausgewählt wird.

ini_mdi_number

(ehemaliger (engl. legacy) Weg einer Umsetzung)
Ein Verweis auf den Abschnitt [MDI_COMMAND_LIST] der _INI-Datei.
Setzen Sie einen Integer, der eine Zeile unter der INI-Zeile [MDI_COMMAND] auswählt, beginnend bei 0.
Fügen Sie dann in der INI-Datei unter der Überschrift [MDI_COMMAND_LIST] entsprechende Zeilen hinzu.
Befehle werden durch ; getrennt.
Die button-Beschriftung (engl. label) wird durch beliebigen Text nach dem Komma gesetzt, das Symbol \n fügt einen Zeilenumbruch hinzu.

ini_mdi_key

(bevorzugte Weise)
Ein Verweis auf den Abschnitt [MDI_COMMAND_LIST] in der INI-Datei.
Diese Zeichenkette wird zu MDI_COMMAND_ hinzugefügt, um einen Eintrag zu bilden, nach dem
in der INI-Datei unter der Überschrift [MDI_COMMAND_LIST] gesucht wird.
Durch ; getrennte Befehle werden nacheinander ausgeführt.
Der Text des Schaltflächenetiketts kann mit beliebigem Text nach einem Komma gesetzt werden, das Symbol \n fügt einen Zeilenumbruch hinzu.

[MDI_COMMAND_LIST]
MDI_COMMAND_MACRO0 = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND_MACRO1 = G53 G0 Z0;G53 G0 X0 Y0, Goto\nMachn\nZero

Aktionbuttons sind eine Unterklasse von [sub:qtvcp:widgets:indicatedpushbutton][IndicatedPushButton]. Siehe die folgenden Abschnitte für weitere Informationen über:

2.2. ActionToolButton - Optionales Aktionsmenü-Schaltflächen-Widget

ActionToolButton buttons are similar in concept to action buttons, but they use QToolButtons to allow for optional actions to be selected by pushing and holding the button till the option menu pops up.

Derzeit gibt es nur eine Option: userView.

Es basiert auf PyQts QToolButton.

userView Benutzeransicht Widget aufzeichnen und einstellen

Die Werkzeugschaltfläche Benutzeransicht ermöglicht das Aufzeichnen und Zurückkehren zu einer beliebigen Grafikansicht.

Halten Sie die Taste gedrückt, um das Menü aufzurufen, und drücken Sie Ansicht aufzeichnen, um die aktuell angezeigte Grafikansicht aufzuzeichnen.

Klicken Sie normal auf die Schaltfläche, um zur zuletzt aufgezeichneten Position zurückzukehren.

Die aufgezeichnete Position wird beim Herunterfahren gespeichert, wenn eine Einstellungsdateioption eingerichtet ist.

Anmerkung
Aufgrund von Programmierungseinschränkungen wird die aufgezeichnete Position möglicherweise nicht exakt gleich angezeigt. Dies gilt insbesondere dann, wenn Sie beim Einstellen der gewünschten Ansicht den Ausschnitt verkleinern und wieder verkleinern.
Am besten wählen Sie eine Hauptansicht aus, ändern sie wie gewünscht, nehmen sie auf und klicken dann sofort auf die Schaltfläche, um zur aufgezeichneten Position zu wechseln. Wenn sie nicht Ihren Vorstellungen entspricht, ändern Sie die bestehende Position und nehmen Sie erneut auf.

2.3. AxisToolButton - Achsen-Widget auswählen und einstellen

Damit kann man eine Achse auswählen und einstellen.

Wenn die Schaltfläche abhakbar ist, zeigt sie an, welche Achse ausgewählt ist.

Wenn Sie die Taste gedrückt halten, wird ein Popup-Menü angezeigt, in dem Sie folgende Optionen auswählen können:

  • Nullen der Achse

  • Die Achse durch 2 teilen

  • Die Achse beliebig einstellen

  • Die Achse auf die zuletzt aufgezeichnete Zahl zurücksetzen

Sie müssen ein Eingabedialog-Widget ausgewählt haben, welcher der Zeichenkette dialog_code_string entspricht, normalerweise wird dieser aus dem screenOptions-Widget ausgewählt.

halpin_option

Wird einen HAL Pin auf true setzen, wenn die Achse ausgewählt ist.

joint_number

Sollte auf die entsprechende Gelenknummer (engl. joint number) gesetzt werden

axis_letter

Should be set to the appropriate axis letter

Dies sind die Klicke-und-halte (engl. click-and-hold) Menü Eigenschaften:

showLast

show the Set to last action

showDivide

show the Divide by 2 action

showGotoOrigin

show the Go to G53/G5x origin action

showZeroOrigin

show the Zero Origin action

showSetOrigin

show the Set Origin action

dialog_code_string

Sets which dialog will pop up with numerical entry, i.e. ENTRY or CALCULATOR to call a typing only entry dialog or a touch/typing calculator type entry dialog.

Hier ist ein Beispiel für einen Stylesheet-Eintrag:

AxisToolButton {
    /* Modify all the menu options */
    qproperty-showLast: false;
    qproperty-showDivide : true;
    qproperty-showGotoOrigin: true;
    qproperty-showZeroOrigin: true;
    qproperty-showSetOrigin: false;
    qproperty-dialog_code_string: CALCULATOR;
}

Es basiert auf PyQts QToolButton.

2.4. BasicProbe - Einfaches Fräs-Tast-Widget

QtVCP BasicProbe: Einfaches Fräs-Tast-Widget
Abbildung 6. QtVCP BasicProbe: Einfaches Fräs-Tast-Widget

Widget zum Sondieren auf einer Fräse. Wird vom QtDragon-Bildschirm verwendet.

2.5. CamView - Widget zur Werkstückausrichtung und Nullpunkteinstellung

Dieses Widget zeigt ein Bild von einer Webkamera.

Es legt ein einstellbares Kreis- und Fadenkreuzziel über das Bild.

CamView wurde im Hinblick auf eine präzise visuelle Positionierung entwickelt.

Diese Funktion dient der Ausrichtung des Werkstücks oder der Nullteilmerkmale mithilfe einer Webcam.

Es verwendet die Vision-Bibliothek OpenCV.

2.6. DROLabel - Widget zur Anzeige der Achsenposition

Damit wird die aktuelle Position einer Achse angezeigt.
Sie können auch auf das Label klicken und sehen eine Liste von Aktionen.

Qjoint_number

Joint index number (X=0 Y=1) of offset to display (10 will specify rotational offset).

Qreference_type

Tatsächlich, relativ oder noch zu fahrende Entfernung (0,1,2).

metric_template

Format der Anzeige, z.B. %10.3f.

imperial_template

Format der Anzeige, z.B. %9,4f.

angular_template

Anzeigeformat, z.B. %Rotational: 10.1f.

always_display_diameter

Wechsel-Schalter der Anzeige (engl. display)-Option

always_display_radius

Wechsel-Schalter der Anzeige (engl. display)-Option

display_as_per_m7m8

Toggles display option. Will follow the current M7/8 mode

follow_reference_changes

Toggles display option. Will follow the STATUS message reference mode, i.e. you can use Action buttons to set how it is currently displayed.

Dies sind die Click-on-menu Optionen:

showLast

show the Set to last action

showDivide

show the Divide by 2 action

showGotoOrigin

show the Go to G53/G5x origin action

showZeroOrigin

show the Zero Origin action

showSetOrigin

show the Set Origin action

dialogName

Sets which dialog window will pop up with numerical entry, i.e. ENTRY or CALCULATOR.

Das DROLabel-Widget enthält eine Eigenschaft isHomed, die mit einem Stylesheet verwendet werden kann, um die _Farbe des DRO_Label basierend auf dem Homing-Status der Gelenknummer in LinuxCNC zu ändern.

Hier ist ein Beispiel für einen Stylesheet-Eintrag, der:

  • Legt die Schriftart aller DRO_Label-Widgets fest,

  • Legt die Textvorlage (zur Einstellung der Auflösung) der DRO fest,

  • Dann wird die Textfarbe auf der Grundlage der Qt-Eigenschaft isHomed eingestellt.

  • zeigt alle Menü-Optionen.

DROLabel {
    font: 25pt "Lato Heavy";
    qproperty-imperial_template: '%9.4f';
    qproperty-metric_template: '%10.3f';
    qproperty-angular_template: '%11.2f';

    /* Modify all the menu options */
    qproperty-showLast: true;
    qproperty-showDivide : true;
    qproperty-showGotoOrigin: true;
    qproperty-showZeroOrigin: true;
    qproperty-showSetOrigin: true;
    qproperty-dialogName: CALCULATOR;
}

DROLabel[isHomed=false] {
    color: red;
}

DROLabel[isHomed=true] {
    color: green;
}

So geben Sie ein bestimmtes Widget anhand seines objectName in Qt Designer an:

DROLabel #dr0_x_axis [isHomed=false] {
    color: yellow;
}

Es basiert auf PyQts QLabel.

2.7. FileManager - Datei laden Selector Widget (engl. für Dateimanager)

QtVCP FileManager: Auswahl-Widget zum Laden von Dateien
Abbildung 7. QtVCP FileManager: Dateimanager-Widget

Dieses Widget wird verwendet, um zu ladende Dateien auszuwählen.

Sie verfügt über die Möglichkeit, die Namen mit Hardware wie einem Handgerät (engl. MPG) zu kennzeichnen.

Man kann die Funktion load(self,fname) mit einem Klassenpatch (engl. class patch) versehen, um das Laden von Dateien anzupassen.

Die Funktion getCurrentSelected() gibt ein Python-Tupel zurück, das den Dateipfad enthält und angibt, ob es sich um eine Datei handelt.

temp = FILEMANAGER.getCurrentSelected()
print('filepath={}'.format(temp[0]))
if temp[1]:
    print('Is a file')
Stylesheets Eigenschaften
doubleClickSelection (bool)

Legt fest, ob ein Doppelklick auf einen Ordner erforderlich ist oder nicht.
Das einfache Anklicken eines Ordners (False) ist standardmäßig aktiviert und ist für Touchscreen-Benutzer gedacht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#filemanager {
    qproperty-doubleClickSelection: True;
}
showListView (bool)

Bestimmt, ob die Datei-/Ordnerstruktur in Listenform angezeigt werden soll oder nicht.
Die Tabellenansicht (False) ist standardmäßig aktiviert.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#filemanager {
    qproperty-showListView: True;
}

Es basiert auf PyQt’s FIXME

2.8. GcodeDisplay - G-Code-Textanzeige-Widget

Dies zeigt G-Code in Textform an, wobei die aktuell laufende Zeile hervorgehoben wird.

Dies kann auch Folgendes anzeigen:

  • MDI history when LinuxCNC is in MDI mode.

  • Log entries when LinuxCNC is in MANUAL mode.

  • Preference file entries if you enter PREFERENCE in capitals into the MDILine widget.

Es hat ein Signal percentDone(int) (engl. für Prozent erledigt), das mit einem Slot verbunden werden kann (wie z.B. ein progressBar (engl. für Fortschrittsbalken), um den Prozentsatz der Ausführung anzuzeigen).

auto_show_mdi_status

Setzen Sie true, damit das Widget im MDI-Modus in den MDI-Verlauf wechselt.

auto_show_manual_status

Setzen Sie true, damit das Widget im manuellen Modus auf das Maschinenprotokoll umschaltet.

Die GcodeDisplay-Eigenschaften können in einem Stylesheet mit folgendem Code eingestellt werden, welcher der .qss-Datei hinzugefügt wird (die folgenden Farbauswahlen sind zufällig).

EditorBase{
    qproperty-styleColorBackground: lightblue;
    qproperty-styleColorCursor:white;
    qproperty-styleColor0: black;
    qproperty-styleColor1: #000000; /* black */
    qproperty-styleColor2: blue;
    qproperty-styleColor3: red;
    qproperty-styleColor4: green;
    qproperty-styleColor5: darkgreen;
    qproperty-styleColor6: darkred;
    qproperty-styleColor7: deeppink;
    qproperty-styleColorMarginText: White;
    qproperty-styleColorMarginBackground: blue;
    qproperty-styleFont0: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont1: "Times,18,-1,0,90,1,0,0,0,0";
    qproperty-styleFont2: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont3: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont4: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont5: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont6: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont7: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFontMargin: "Times,14,-1,0,90,0,0,0,0,0";
}

Für den Standard-G-Code-Lexer des Widgets GcodeDisplay:

  • styleColor0 = Default: Everything not part of the groups below

  • styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including () or anything after ; (when used outside of parenthesis) with the exception of the note below)

  • styleColor2 = G-code: G and the digits after

  • styleColor3 = M-code: M and the digits after

  • styleColor4 = Axis: XYZABCUVW

  • styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.)

  • styleColor6 = AxisValue: Values following XYZABCUVW

  • styleColor7 = OtherValue: Values following EFHIJKDQLRPST$

Anmerkung
Für Kommentare kann die Farbe "OtherValue" (Farbe 5) verwendet werden, um "print", "debug", "msg", "logopen", "logappend", "logclose" "log", "pyrun", "pyreload" "abort", "probeopen" "probeclose" innerhalb eines Klammerkommentars in einer G-Code-Zeile. Sowie "py," wenn eine Zeile mit ";py," beginnt. Beispiele: (print, text), (log, text), (msg, text), oder (debug, text). Nur das letzte der Beispiele wird hervorgehoben, wenn es mehrere in derselben Zeile gibt.

Schriftdefinitionen:

"style name, size, -1, 0, bold setting (0-99), italics (0-1),
underline (0-1),0,0,0"

Es basiert auf PyQts QsciScintilla.

2.9. GcodeEditor - G-Code-Programmeditor-Widget

Dies ist eine Erweiterung des Widgets "GcodeDisplay", welche die Bearbeitung erleichtert.

Es basiert auf PyQt’s QWidget welches das GcodeDisplay Widget beinhaltet.

2.10. GCodeGraphics - G-Code-Grafik-Backplot-Widget

QtVCP GcodeGraphics: G-Code-Grafik-Backplot-Widget
Abbildung 8. QtVCP GcodeGraphics: G-Code-Grafik-Backplot-Widget

Damit wird die aktuelle Position einer Achse angezeigt.

Stylesheets Eigenschaften
dro-font/dro-large-font (string)

Setzt die kleinen und großen DRO Schrifteigenschaften
Hier referenzieren wir mit dem Widget-Basisnamen; GCodeGraphics

GCodeGraphics{
    qproperty-dro_font:"monospace  bold 12";
}
GCodeGraphics{
    qproperty-dro_large_font:"Times 25";
}
_view (string)

Legt die Standardausrichtung der Ansicht beim Laden der GUI fest.
Gültige Auswahlmöglichkeiten für eine Drehmaschine sind p, y, y2. Für andere Bildschirme gelten die Optionen p, x, y, z, z2.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt (referenziert über den durch den widget-Anwender ausgewählten Namen):

#gcodegraphics{
    qproperty-_view: z;
}
_dro (bool)

Legt fest, ob die DRO angezeigt werden soll oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_dro: False;
}
_dtg (bool)

Legen Sie fest, ob die Reststrecke angezeigt werden soll.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_dtg: False;
}
_metric (bool)

Legt fest, ob die_ Einheiten standardmäßig_ in metrischen Einheiten angezeigt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_metric: False;
}
_overlay (bool)

Legt fest, ob das Overlay standardmäßig angezeigt werden soll oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_overlay: False;
}
_offsets (bool)

Legt fest, ob die Offsets standardmäßig angezeigt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_offsets: False;
}
_small_origin (bool)

Legt fest, ob standardmäßig der kleine Ursprung angezeigt wird.
Das folgende Beispiel zeigt, wie diese Eigenschaft festgelegt wird:

#gcodegraphics{
    qproperty-_small_origin: False;
}
overlay_color (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Overlayfarbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-overlay_color: blue;
}
overlay_alpha (float)

Legt die Standard-Overlay Durchsichtigkeit (engl. alpha value) fest. Dies beeinflusst die Opazität des Overlays, wenn zwischen 0,0 und 1,0 eingestellt.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-overlay_alpha: 0.15;
}
`background_color ` Hintergrundfarbe, (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Hintergrundfarbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-background_color: blue;
}
+_use_gradient_background+ (bool)

Legt fest, ob Standardmäßig ein Hintergrund mit Farbverlauf verwendet wird.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_use_gradient_background: False;
}
jog_color (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Jog-Farbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-jog_color: red;
}
Feed_color (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Farbe für den Vorschub fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-Feed_color: green;
}
Rapid_color (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Farbe für den Eilgang fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-Rapid_color: rgba(0, 0, 255, .5);
}
InhibitControls (bool)

Legt fest, ob externe Steuerelemente standardmäßig gesperrt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-InhibitControls:True;
}
MouseButtonMode (int)

Ändert das Verhalten der Maustaste zum Drehen, Verschieben oder Zoomen innerhalb der Vorschau.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-MouseButtonMode: 1;
}

Es gibt 12 gültige Modi:

Mode

Move

Zoom

Rotate (engl. drehen)

0

Links

Mitte

Rechts

1

Mitte

Rechts

Links

2

Mitte

Links

Rechts

3

Links

Rechts

Mitte

4

Rechts

Links

Mitte

5

Rechts

Mitte

Links

Die Modi 6-11 sind für Maschinen gedacht, die nur eine 2D-Vorschau benötigen, wie z. B. Plasmageräte oder einige Drehmaschinen, denen keine Drehtaste zugewiesen ist.

Mode

Move

Zoom

6

Links

Mitte

7

Mitte

Links

8

Rechts

Links

9

Links

Rechts

10

Mitte

Rechts

11

Rechts

Mitte

MouseWheelInvertZoom (bool)

Legt fest, ob beim Zoomen mit dem Mausrad die Zoomrichtung invertiert werden soll oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-MouseWheelInvertZoom:True;
}
ACTION Funktionen

Die Bibliothek ACTION kann das G-Code-Grafik-Widget steuern.

ACTION.RELOAD_DISPLAY()

Lädt das aktuelle Programm neu, das den Ursprung/die Offsets neu berechnet.

ACTION.SET_GRAPHICS_VIEW(_view_)

Folgende view-Befehle können gesendet werden:

  • clear

  • zoom-in

  • zoom-out

  • pan-up

  • pan-down

  • pan-right

  • pan-left

  • rotate-cw

  • rotate-ccw

  • rotate-up

  • rotate-down

  • overlay-dro-on

  • overlay-dro-off

  • overlay-offsets-on

  • overlay-offsets-off

  • alpha-mode-on

  • alpha-mode-off

  • inhibit-selection-on

  • inhibit-selection-off

  • dimensions-on

  • dimensions-off

  • grid-size

  • record-view

  • set-recorded-view

  • P

  • X

  • Y

  • Y2

  • Z

  • Z2

  • set-large-dro

  • set-small-dro

ACTION.ADJUST_PAN(_X,Y_)

Legen Sie direkt den relativen Blickwinkel in x- und y-Richtung fest.

ACTION.ADJUST_ROTATE(_X,Y_)

Legen Sie direkt die relative Drehung der Ansicht in x- und y-Richtung fest.

Es basiert auf dem OpenGL Widget von PyQt.

2.11. JointEnableWidget - FIXME

FIXME JointEnableWidget Dokumentation

2.12. JogIncrements - Auswahl-Widget für Jog-Inkremente

Mit diesem Widget kann der Benutzer Werte für die Schrittweite beim Joggen auswählen.

Die Joggingwerte stammen aus der INI-Datei unter:

  • [DISPLAY]INCREMENTS, or

  • [DISPLAY]ANGULAR_INCREMENTS

Dies wird für alle Widgets über STATUS verfügbar sein.

Sie können lineare oder Winkelinkremente durch die Eigenschaft linear_option im Eigenschafteneditor von Qt Designer auswählen.

Es basiert auf PyQts ComboBox.

2.13. MacroTab - Spezielles Makro-Widget

QtVCP MacroTab: Spezielles Makro-Widget
Abbildung 9. QtVCP MacroTab: Spezielles Makro-Widget

Mit diesem Widget kann der Benutzer spezielle Makroprogramme für die Erledigung kleinerer Aufgaben auswählen und anpassen.

Es verwendet Bilder zur visuellen Darstellung des Makros und für ein Symbol.

Es sucht nach speziellen Makros unter Verwendung der INI-Definition:

[RS274NGC]
SUBROUTINE_PATH =

Die Makros sind O-Wort-Unterprogramme mit speziellen Kommentaren für die Zusammenarbeit mit dem Launcher. Die ersten drei Zeilen müssen die untenstehenden Schlüsselwörter enthalten, die vierte ist optional.

Hier ist ein Beispiel für die ersten vier Zeilen einer O-Word-Datei:

; MACROCOMMAND = Entry1,Entry2
; MACRODEFAULTS = 0,true
; MACROIMAGE = my_image.svg,Icon layer number,Macro layer number
; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros
MACROCOMMAND

Dies ist die erste Zeile in der O-Wort-Datei.

Es handelt sich um eine durch Kommata getrennte Liste von Text, der über einem Eintrag angezeigt werden soll.
Es gibt eine für jede erforderliche Variable in der O-Wort-Funktion.

Wenn das Makro keine Variablen benötigt, lassen Sie es leer:

; MACROCOMMAND=
MACRODEFAULTS

Dies muss die zweite Zeile in der O-Wort-Datei sein.

Es handelt sich um eine durch Kommata getrennte Liste der Standardwerte für jede Variable in der O-Wort-Funktion.

Wenn Sie das Wort "true" oder "false" in der Liste verwenden, wird ein "checkbutton" angezeigt.

MACROIMAGE

Dies muss die dritte Zeile in der O-Wort-Datei sein.

  • SVG Images
    If using SVG image files, they must end with the .svg extension.

    Die Bilder müssen zu SVG-Ebenen hinzugefügt werden, die zur Definition der verschiedenen Bilder für Makro und Symbol verwendet werden.

    Wert ist eine durch Kommata getrennte Liste von drei geordneten Feldern:

    ; MACROIMAGE=filename.svg,macro_layer_name[,icon_layer_name]

    Mit:

    _dateiname_.svg

    Name der SVG-Bilddatei als erstes Feld.
    Es wird davon ausgegangen, dass sie sich im selben Ordner befindet wie die O-Wort-Datei.

    *macro_layer_name

    Name der Makrobildebene als zweites Feld.

    icon_layer_name

    Name der Ikonenebene als optionales drittes Feld. Fehlt der dritte Eintrag, wird für Makro und Symbol das gleiche Bild verwendet.

  • PNG/JPG Images:
    Value remains a comma separated list:

    ; MACROIMAGE=macro_image.(png|jpg)[,icon_image.(png|jpg)]

    Mit:

    _macro_image_.(png|jpg)

    Name der Bilddatei des Makros als erstes Feld.
    Es wird davon ausgegangen, dass sich die Bilddatei im selben Ordner befindet wie das Makro.

    _icon_image_.(png|jpg)

    Icon image file name as optional second field.
    If the second entry is missing the same image will be used for macro and image.

Wenn das Schlüsselwort vorhanden ist, aber die Einträge fehlen, werden keine Bilder verwendet.

MACROOPTIONS

Diese optionale Zeile muss die vierte Zeile in der O-Wort-Datei sein.

Es handelt sich um eine durch Kommata getrennte Liste von Schlüsselwörtern und Daten:

LOAD:yes

Zeigt einen Button zum Laden an.

SAVE:yes

Zeigt einen Button zum Speichern an.

2.14. MDILine - MDI-Befehlszeileneingabe-Widget

Hier kann man MDI-Befehle eingeben.

Eine Popup-Tastatur ist verfügbar.

Eingebettete Befehle

Es gibt auch eingebettete Befehle, die über dieses Widget verfügbar sind.

Geben Sie einen dieser Befehle ein, um das entsprechende Programm zu laden oder die Funktion aufzurufen:

HALMETER

Startet das LinuxCNC halmeter Dienstprogramm.

HALSHOW

Startet das LinuxCNC halshow Dienstprogramm.

HALSCOPE

Startet das LinuxCNC halscope Dienstprogramm.

STATUS

Startet das LinuxCNC status Dienstprogramm.

CALIBRATION

Startet die LinuxCNC Calibration

CLASSICLADDER

Startet die ClassicLadder GUI, wenn die ClassicLadder realtime HAL component durch die Konfigurationsdateien des Rechners geladen wurde.

PREFERENCE

Lädt die Einstellungsdatei in den GcodeEditor.

CLEAR HISTORY

Löscht den MDI-Verlauf.

net

Siehe halcmd net commands.
Wenn der Befehl nicht erfolgreich ist, wird ein Fehler ausgegeben.

  • Syntax: net <signal name> <pin name>

  • Beispiel: net plasmac:jog-inhibit motion.jog-stop

setp

Sets den Wert eines Pins oder einer parameter.
Gültige Werte hängen vom Objekttyp des Pins oder Parameters ab.
Dies führt zu einem Fehler, wenn die Datentypen nicht übereinstimmen oder der Pin mit einem Signal verbunden ist.

  • Syntax: setp <Pin/Parameter-Name> <Wert>

  • Beispiel: setp plasmac.resolution 100

unlinkp

Trennt einen Pin von einem Signal.
Ein Fehler tritt auf, wenn der Pin nicht vorhanden ist.
Running LinuxCNC von Terminal kann helfen, die Ursache zu bestimmen, wie Fehlermeldungen von hal_lib.c wird dort angezeigt werden.

  • Syntax: unlinkp <Pin-Name>

  • Beispiel: unlinkp motion.jog-stop

Anmerkung
Die Funktion MDILine spindle_inhibit kann von der Handler-Datei einer grafischen Benutzeroberfläche verwendet werden, um die Spindelbefehle M3, M4 und M5 bei Bedarf zu sperren.

Es basiert auf PyQts QLineEdit.

2.15. MDIHistory - MDI-Befehlsverlaufs-Widget

Zeigt eine scrollbare Liste vergangener MDI-Befehle an.

Für MDI-Befehle wird eine Bearbeitungszeile eingebettet. Auf die gleichen eingebetteten MDILine-Befehle kann von diesem Widget aus zugegriffen werden.

Der Verlauf wird in einer Datei aufgezeichnet, die in der INI unter der Überschrift [DISPLAY] definiert ist (dies ist die Standardeinstellung):

MDI_HISTORY_FILE = '~/.axis_mdi_history'

2.16. MDITouchy - Touchscreen-MDI-Eingabe-Widget

QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget
Abbildung 10. QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget

Dieses Widget zeigt Buttons und Eingabezeilen für die Eingabe von MDI-Befehlen an.

Basierend auf LinuxCNC’s Touchy Screen’s MDI-Eingabe-Prozess, dessen großen Buttons sind sehr nützlich für Touchscreens.

So verwenden Sie MDITouchy:

  • Drücken Sie zunächst eine der Tasten G/XY, G/RO, M oder T. Auf der linken Seite werden die Eingabefelder angezeigt, die ausgefüllt werden können.

  • Drücken Sie dann „Weiter“ und „Zurück“, um zwischen den Feldern zu navigieren.

  • Calc öffnet einen Taschenrechnerdialog.

  • Clear löscht den aktuellen Eintrag.

  • Set Tool wird einen Werkzeugwechsel fordern.

  • Set Origin ermöglicht das Festlegen des Ursprungs des aktuellen G6x-Systems.

  • Macro ruft alle verfügbaren Makro-ngc-Programme auf.

Das Widget erfordert einen expliziten Aufruf des MDITouchy-Python-Codes, um den MDI-Befehl tatsächlich auszuführen:

  • For handler file code
    If the widget was named mditouchy in Qt Designer, the command below would run the displayed MDI command:

    self.w.mditouchy.run_command()
  • For action button use
    If the widget was named mditouchy in Qt Designer, use the action button’s Call Python commands option and enter:

    INSTANCE.mditouchy.run_command()

Die Makro-Schaltfläche durchläuft die in der INI-Überschrift [ANZEIGE] definierten Makros.

Fügen Sie eine oder mehrere MACRO-Zeilen im folgenden Format hinzu:

MACRO = macro_name [param1] [... paramN]

Im folgenden Beispiel ist increment der Name des Makros, und es akzeptiert zwei Parameter, die xinc und yinc heißen.

MACRO = increment xinc yinc

Legen Sie nun das Makro in einer Datei mit dem Namen macro_name.ngc im Verzeichnis PROGRAM_PREFIX oder in einem beliebigen Verzeichnis im SUBROUTINE_PATH ab, das in der INI-Datei angegeben ist.

Um bei dem obigen Beispiel zu bleiben, würde es increment.ngc heißen und sein Inhalt könnte wie folgt aussehen:

O<increment> sub
G91 G0 X#1 Y#2
G90
O<increment> endsub

Beachten Sie, dass der Name des Unterprogramms exakt mit dem Dateinamen und dem Makronamen übereinstimmt, einschließlich Groß- und Kleinschreibung.

Wenn Sie das Makro durch Drücken der Schaltfläche Makro aufrufen, können Sie Werte für Parameter eingeben (in unserem Beispiel "xinc" und "yinc").
Diese werden als Positionsparameter an das Makro übergeben: #1, #2#N jeweils.
Parameter, die Sie leer lassen, werden als Wert 0 übergeben.

Wenn es mehrere verschiedene Makros gibt, drücken Sie wiederholt die Makrotaste, um sie zu durchlaufen.

Wenn Sie in diesem einfachen Beispiel -1 für xinc eingeben und die Ausführung des MDI-Zyklus aufrufen, wird eine schnelle G0-Bewegung ausgelöst, die eine Einheit nach links geht.

Diese Makrofunktion ist nützlich für das Antasten von Kanten/Löchern und andere Einrichtungsaufgaben sowie vielleicht für das Fräsen von Löchern oder andere einfache Operationen, die vom Bedienfeld aus durchgeführt werden können, ohne dass speziell geschriebene G-Code-Programme erforderlich sind.

2.17. OriginOffsetView - Ursprungsansicht und Einstellungs-Widget

QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget
Abbildung 11. QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget

Dieses Widget ermöglicht es, Offsets von Benutzer-spezifizierten Ursprüngen direkt zu visualisieren und zu ändern.

Es wird die Parameterdatei von LinuxCNC für vorgenommene oder gefundene Änderungen aktualisieren.

Die Einstellungen können in LinuxCNC nur nach der Referenzfahrt und im Ruhezustand des Motion Controllers geändert werden.

Die Anzeige und Eingabe wird zwischen metrischen und imperialen Maßeinheiten, basierend auf LinuxCNC’s aktuellen G20 / G21 Einstellung ändern.

Das aktuell genutzte Benutzersystem wird hervorgehoben.

Es können zusätzliche Aktionen integriert werden, um Einstellungen zu manipulieren.
Diese Aktionen hängen von zusätzlichem Code ab, der entweder zu einem kombinierten Widget, wie dem originoffsetview-Dialog, oder dem Bildschirm-Handler-Code hinzugefügt wird.
Typische Aktionen sind z.B. Clear Current User offsets oder Zero X.

Wenn Sie auf die Spalten und Zeilen klicken, können Sie die Einstellungen anpassen.

Für die Daten- oder Texteingabe kann ein Dialogfeld eingeblendet werden.

Der Abschnitt mit den Kommentaren wird in die Einstellungsdatei aufgenommen.

Es basiert auf PyQt’s QTableView, QAbstractTableModel, und ItemEditorFactory.
Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verfügbar.

Eigenschaften

OriginOffsetView hat die folgenden Eigenschaften:

dialog_code_string

Legt fest, welcher Dialog bei einer numerischen Eingabe erscheint.

test_dialog_code_string

Legt fest, welcher Dialog bei der Texteingabe angezeigt wird.

metric_template

Metrisches numerisches Datenformat.

imperial_template

Imperiales numerisches Datenformat.

styleCodeHighlight

Aktuell verwendete Farbe für die Hervorhebung des Benutzersystems.

Diese können eingestellt werden in:

  • Qt Designer, in

  • Python-Handler-Code

    self.w.originoffsetview.setProperty('dialog_code','CALCULATOR')
    self.w.originoffsetview.setProperty('metric_template','%10.3f')
  • Oder (gegebenenfalls) in Stylesheets

    OriginOffsetView{
      qproperty-styleColorHighlist: lightblue;
    }

2.18. RadioAxisSelector - FIXME

FIXME RadioAxisSelector-Dokumentation

2.19. RoundButton - Rundes ActionButton Widget

Runde Schaltflächen funktionieren genauso wie ActionButtons mit dem Unterschied, dass die Schaltfläche rund abgeschnitten ist.

Sie sollen sich nur optisch unterscheiden.

Sie haben zwei Pfadeigenschaften für die Anzeige von Bildern auf true und false.

2.20. StateLabel - Controller-Modi Statusbeschriftungsanzeige-Widget

Dadurch wird eine Beschriftung basierend auf den Zuständen der Maschinensteuerung true/false angezeigt.

Sie können zwischen verschiedenen Texten wählen, die auf wahr oder falsch basieren.

Eigenschaften der Zustandsauswahl

Die Zustände sind über diese Eigenschaften wählbar:

css_mode_status

True, wenn sich die Maschine in G96 befindet Constant Surface Speed Mode.

diameter_mode_status

True, wenn sich die Maschine in G7 befindet Drehmaschine Durchmesser Modus.

fpr_mode_status

True, wenn die Maschine im G95 Vorschub je Umdrehung Modus (engl. Feed per Revolution Mode) ist.

metric_mode_status

True, wenn sich die Maschine im G21 Metrischen Modus befindet.

Eigenschaften von Textvorlagen
true_textTemplate

Dies ist der Text, der gesetzt wird, wenn die Option True ist.
Sie können Qt rich text code für verschiedene Schriftarten/Farben usw. verwenden.
Eine typische Vorlage für den metrischen Modus im wahren Zustand könnte sein: Metrischer Modus

false_textTemplate

Dies ist der Text, der gesetzt wird, wenn die Option False ist.
Sie können Qt rich text code für verschiedene Schriftarten/Farben usw. verwenden.
Eine typische Vorlage für den metrischen Modus im falschen Zustand könnte sein: Imperialer Modus.

Es basiert auf PyQts QLabel.

2.21. StatusLabel - Anzeige-Widget für Controller-Variablen-Zustandsbeschriftung

Dadurch wird ein Etikett angezeigt, das auf dem auswählbaren Status der Maschinensteuerung basiert.
Sie können ändern, wie der Status angezeigt wird, indem Sie den Python-Formatierungscode in der Textvorlage ersetzen. Sie können auch Rich Text für verschiedene Schriftarten/Farben usw. verwenden.

Auswählbare Zustände

Diese Zustände sind wählbar:

actual_spindle_speed_status

Dient zur Anzeige der tatsächlichen Spindeldrehzahl, wie sie vom HAL-Pin "spindle.0.speed-i" gemeldet wird.
Sie wird in RPM umgewandelt.
Normalerweise wird ein "textTemplate" von "%d" verwendet.

actual_surface_speed_status

Dient zur Anzeige der tatsächlichen Schnittflächengeschwindigkeit auf einer Drehmaschine basierend auf der X-Achse und der Spindeldrehzahl.
Sie wird in Entfernung pro Minute umgerechnet.
Normalerweise wird ein "textTemplate" von "%4.1f" (Fuß pro Minute) und "altTextTemplate" von "%d" (Meter pro Minute) verwendet.

blendcode_status

Zeigt die aktuelle G64-Einstellung.

current_feedrate_status

Zeigt die Vorschubgeschwindigkeit.

current_FPU_status

Zeigt den aktuellen tatsächlichen Vorschub pro Einheit an.

fcode_status

Zeigt die aktuelle programmierte F-Code-Einstellung an.

feed_override_status

Zeigt die aktuelle Einstellung des Vorschub-Overrides in Prozent an.

filename_status

Zeigt den Namen der zuletzt geladenen Datei an.

filepath_status

Zeigt den Namen des zuletzt geladenen vollständigen Dateipfad an.

gcode_status

Zeigt alle aktiven G-Codes.

gcode_selected_status

Zeigt die aktuell ausgewählte G-Code-Zeile an.

halpin_status

Zeigt den HAL-Pin-Ausgang eines ausgewählten HAL-Pin.

jograte_status

Zeigt die aktuelle QtVCP-basierte Jog-Rate an.

jograte_angular_status

Zeigt die aktuelle QtVCP-basierte Winkeljograte an.

jogincr_status

Zeigt den aktuellen QtVCP-basierten Jog-Inkrement an.

jogincr_angular_status

Zeigt den aktuelle QtVCP-basierte Winkel Jog-Inkrement an.

machine_state_status

Zeigt den aktuellen Maschineninterpreter-Zustand unter Verwendung des aus der Maschinen-Zustandsliste (state_list) beschriebenen Textes an.
Die Interpreter-Zustände sind:

  • Estopped

  • Running

  • Stopped

  • Paused

  • Waiting

  • Reading

max_velocity_override_status

Zeigt die aktuelle Einstellung für die maximale Achsengeschwindigkeit an.

mcode_status

Zeigt alle aktiven M-Codes.

motion_type_status

Zeigt die aktuelle Art der Maschinenbewegung unter Verwendung des in der motion_type_list beschriebenen Textes an.

  • None

  • Rapid (engl. für Schnellauf)

  • Feed (engl. für Vorschub)

  • Arc (engl. für Bogen)

  • Tool Change (engl. für Werkzeugwechsel)

  • Probe (engl. für Sonde)

  • Rotary Index (engl. für Rotationsindex)

requested_spindle_speed_status

Zeigt die gewünschte Spindeldrehzahl an - die tatsächliche kann abweichen.

rapid_override_status

Zeigt die aktuelle Einstellung des Vorschub-Overrides in Prozent an.

spindle_override_status

Zeigt die aktuelle Spindel-Override-Einstellung in Prozent an.

timestamp_status

Zeigt die Zeit auf der Grundlage der Systemeinstellungen an.
Ein Beispiel für eine nützliche textTemplate-Einstellung: %I:%M:%S %p.
Siehe das Python-Zeitmodul für weitere Informationen.

tool comment_status

Gibt den Kommentartext des aktuell geladenen Werkzeugs zurück.

tool diameter_status

Gibt den Durchmesser des aktuell geladenen Werkzeugs zurück.

tool_number_status

Gibt die Werkzeugnummer des aktuell geladenen Werkzeugs zurück.

tool_offset_status

Gibt den Offset des aktuell geladenen Werkzeugs zurück, indiziert durch index_number zur Auswahl der Achse (0=x,1=y, u.s.w.).

user_system_status

Zeigt das aktive Benutzerkoordinatensystem (Einstellung G5x).

Weitere Eigenschaften
index_number

Integerwert, der den anzuzeigenden Werkzeugstatus-Index angibt.

state_label_list

Liste der für die verschiedenen Maschinenzustände verwendeten Bezeichnungen.

motion_label_list

Liste der für die verschiedenen Bewegungsarten verwendeten Bezeichnungen.

halpin_names

Name eines zu überwachenden Halpins (einschließlich des Basisnamens der HAL-Komponente).

textTemplate

Dies wird normalerweise für imperiale (G20) oder eckige numerische Einstellungen verwendet, obwohl nicht jede Option eine imperiale/metrische Umrechnung hat.
Dies verwendet Python-Formatierungsregeln, um die Textausgabe festzulegen.
Man kann %s für keine Konvertierung, %d für Integer-Konvertierung, %f für Float-Konvertierung, etc. verwenden.
Sie können auch Qt Rich Text Code verwenden.
Eine typische Vorlage für die Formatierung von imperialen Fließkommazahlen in Text wäre %9.4f oder %9.4f inch.

alt_textTemplate

Dies wird normalerweise für metrische (G21) numerische Einstellungen verwendet.
Dies verwendet Python Formatierungsregeln, um die Textausgabe festzulegen.
Eine typische Vorlage für die Formatierung von metrischen Fließkommazahlen in Text wäre "%10.3f" oder "%10.3f mm".

Es basiert auf PyQts QLabel.

2.22. StatusImageSwitcher - Controller-Statusbildumschalter

Der Status-Image-Switcher wechselt zwischen Images, die auf LinuxCNC-Zuständen basieren.

*watch_spindle

Wechselt zwischen 3 Bildern: stop, fwd, revs.

*watch_axis_homed

Watch Axis Homed würde zwischen 2 Bildern umschalten: axis not homed (engl. für Achse nicht referenziert), axis homed (Achse referenziert).

*watch_all_homed

Würde zwischen 2 Bildern wechseln: not all homed (nicht alle referenzert), all homed (alle referenziert).

*watch_hard_limits

Würde zwischen 2 Bildern oder einem pro Gelenk umschalten.

Hier ist ein Beispiel für die Verwendung zur Anzeige eines Symbols für die Referenzfahrt der Z-Achse:

QtVCP Status ImageSwitcher: Controller Status Image Switcher
Abbildung 12. QtVCP StatusImageSwitcher: Controller Status Image Switcher

Im Abschnitt zu Eigenschaften ist zu beachten:

  • watch_axis_homed ist angekreuzt

  • axis_letter ist auf Z gesetzt

Wenn Sie auf die image_list doppelklicken, wird ein Dialog angezeigt, über das Sie Bildpfade hinzufügen können.

Wenn Sie ein Bild als Symbol und ein klares Bild haben, sieht es so aus, als ob das Symbol angezeigt und versteckt wird.

Die Auswahl von Bildpfaden kann durch Auswahl der Eigenschaft pixmap und der Auswahl eines Bildes erfolgen.

Anmerkung
Die Einstellung pixmap dient nur zur Testanzeige und wird außerhalb von Qt Designer ignoriert.
  • Klicken Sie mit der rechten Maustaste auf den Bildnamen und Sie sollten Pfad kopieren sehen.

  • Klicken Sie auf Pfad kopieren (engl. copy path).

  • Doppelklicken Sie nun auf die Eigenschaft image list (engl. für Bildliste), damit der Dialog angezeigt wird.

  • Klicken Sie auf die Schaltfläche Neu.

  • Fügen Sie den Bildpfad in das Eingabefeld ein.

Wiederholen Sie dies für das nächste Bild.
Verwenden Sie ein klares Bild, um ein verborgenes Symbol darzustellen.

Sie können die Anzeige der Bilder in der Bilderliste testen, indem Sie die image number (engl. für Bildnummer) ändern. In diesem Fall ist 0 unhomed und 1 würde homed sein.
Dies ist nur für die Testanzeige und wird außerhalb von Qt Designer ignoriert.

2.23. StatusStacked - Umschaltbares Widget zur Anzeige des Modusstatus

Dieses Widget zeigt eines von drei Panels an, je nach Modus von LinuxCNC.

Damit können Sie automatisch verschiedene Widgets in den Modi Manuell, MDI und Auto anzeigen lassen.

TODO

Es basiert auf dem Widget QStacked von PyQt.

2.24. ScreenOption - Widget zum Einstellen allgemeiner Optionen

Dieses Widget fügt dem Bildschirm nichts Visuelles hinzu, sondern stellt wichtige Optionen ein.

Dies ist die bevorzugte Art, diese Optionen zu verwenden.

Eigenschaften

Diese Eigenschaften können im Qt-Designer, im Python-Handler-Code oder (falls angemessen) in Stylesheets festgelegt werden.

Diese beinhalten:

halCompBaseName

Wenn leer, verwendet QtVCP den Namen des Bildschirms als Basisnamen der HAL-Komponente.
Wenn gesetzt, verwendet QtVCP diesen String als Basisnamen der HAL-Komponente.
Wenn die -c Kommandozeilenoption beim Laden von QtVCP verwendet wird, dann wird der in der Kommandozeile angegebene Name verwendet - er hat Vorrang vor allen oben genannten Optionen.
Wenn Sie den Basisnamen in der handlerfile programmatisch festlegen, werden alle obigen Optionen außer Kraft gesetzt.
Diese Eigenschaft kann nicht in Stylesheets gesetzt werden.

notify_option

Einbindung in die Desktop-Benachrichtigungsblasen für Fehler und Meldungen.

notify_max_messages

Anzahl der Meldungen, die gleichzeitig auf dem Bildschirm angezeigt werden.

catch_close_option

Abfangen des Schließen-Ereignisses, um eine „Sind Sie sicher“-Eingabeaufforderung anzuzeigen.

close_overlay_color

Farbe der transparenten Ebene, die beim Verlassen angezeigt wird.

catch_error_option

Überwachung des LinuxCNC-Fehlerkanals.
Dies sendet auch die Nachricht über STATUS an alles, das sich registriert.

play_sounds_option

Abspielen von Sounds mit beep, espeak und dem Systemsound.

use_pref_file_option

Einrichten eines Präferenzdateipfades.
Die Verwendung des magischen Wortes WORKINGFOLDER im Pfad der Einstellungsdatei wird durch den gestarteten Konfigurationspfad ersetzt, z.B. WORKINFOLDER/my_preferences.

use_send_zmq_option

Wird verwendet, um ZMQ-basierte ausgehende Nachrichten zu initiieren.

use_receive_zmq_messages

Wird verwendet, um ZMQ-basierte eingehende Nachrichten zu initiieren.
Diese Nachrichten können verwendet werden, um Funktionen in der Handler-Datei aufzurufen, so dass externe Programme eng mit QtVCP-basierten Bildschirmen integriert werden können.

embedded_program_option

In der INI definierte Programme einbetten.

default_embed_tab

Dies ist die Eigenschaft für einen Standardort zum Einbetten externer Programme.
Sie sollte auf den Namen eines Registerkarten-Widgets in Qt Designer gesetzt werden.

focusOverlay_option

Focus_overlay legt ein transparentes Bild oder ein farbiges Feld über den Hauptbildschirm, um den Fokus auf ein externes Ereignis zu betonen - normalerweise ein Dialog.

messageDialog_option

Richtet den Nachrichtendialog ein - wird für allgemeine Nachrichten verwendet.

message_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Nachrichtendialog eingeblendet wird.

closeDialog_option

Richtet den Standarddialog zum Schließen des Bildschirms ein.

entryDialog_option

Richtet den numerischen Eingabedialog ein.

entryDialogSoftKey_option

Richtet eine schwebende Softwaretastatur ein, wenn der Eingabedialog fokussiert ist.

entry_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Eingabedialog angezeigt wird.

toolDialog_option

Richtet den manuellen Werkzeugwechsel-Dialog ein, inklusive HAL-Pin.

tool_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Werkzeugdialog angezeigt wird.

ToolUseDesktopNotify

Option zur Verwendung von Desktop-Benachrichtigungsdialogen für manuelle Werkzeugwechseldialoge.

ToolFrameless

Framesless-Dialoge können von Benutzern nicht einfach verschoben werden.

fileDialog_option

Richtet den Dateiauswahldialog ein.

file_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dateidialog angezeigt wird.

keyboardDialog_option

Richtet ein Tastatureingabe-Widget ein.

keyboard_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Tastaturdialog angezeigt wird.

vesaProbe_option

Richtet den Versa-Style-Probe-Dialog ein.

versaProbe_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog versaProbe angezeigt wird.

macroTabDialog_option

legt den Makro-Auswahldialog fest.

macroTab_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der macroTab-Dialog angezeigt wird.

camViewDialog_option

Richtet den Kameraausrichtungsdialog ein.

camView_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog camView angezeigt wird.

toolOffset_option

Richtet das Dialogfeld für die Anzeige/Editierung von Werkzeugkorrekturen ein.

toolOffset_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der toolOffset-Dialog angezeigt wird.

originOffset_option

Richtet das Dialogfeld für die Anzeige/Editierung des Ursprungs ein.

originOffset_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der originOffset-Dialog angezeigt wird.

calculatorDialog_option

Richtet das Eingabefenster für den Taschenrechner ein.

calculator_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn das Dialogfeld "Rechner" angezeigt wird.

machineLogDialog_option

Richtet einen Dialog ein, um Protokolle von der Maschine und QtVCP anzuzeigen.

machineLog_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der machineLog-Dialog angezeigt wird.

runFromLineDialog_option

Richtet einen Dialog ein, der die Startoptionen anzeigt, wenn die Maschinenausführung von einer beliebigen Zeile aus gestartet wird.

runFromLine_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der runFromLine-Dialog angezeigt wird.

user1Color

Optionale Farbe die Screen Designer in nutzen können.

user2Color

Optionale Farbe die Screen Designer in nutzen können.

user3Color

Optionale Farbe die Screen Designer in nutzen können.

user4Color

Optionale Farbe die Screen Designer in nutzen können.

user5Color

Optionale Farbe die Screen Designer in nutzen können.

user6Color

Optionale Farbe die Screen Designer in nutzen können.

user7Color

Optionale Farbe die Screen Designer in nutzen können.

user8Color

Optionale Farbe die Screen Designer in nutzen können.

user9Color

Optionale Farbe die Screen Designer in nutzen können.

user10Color

Optionale Farbe die Screen Designer in nutzen können.

Eigenschaften programmgesteuert festlegen

Der Screendesigner wählt die Standardeinstellungen des Widgets screenOptions aus.

Einmal ausgewählt, müssen die meisten nicht mehr geändert werden. Bei Bedarf können jedoch einige in der Handler-Datei oder in Stylesheets geändert werden.

  • In the handler file:
    Here we reference the widget by the Qt Designer user defined name:

    # red,green,blue,alpha 0-255
    color = QtGui.QColor(0, 255, 0, 191)
    self.w.screen_options.setProperty('close_overlay_color', color)
    self.w.screen_options.setProperty('play_sounds_option',False)
  • In style sheets:
    Here we can reference the widget by Qt Designer user defined name or by widget class name.

    /* red, green, blue 0-255, alpha 0-100% or 0.0 to 1.0 */
    /* the # sign is used to refer to Qt Designer defined widget name */
    /* matches/applied to only this named widget */
    #screen_options {
      qproperty-close_overlay_color: rgba(0, 255, 0, 0.75)
    }

Some settings are only checked on startup so will not cause changes after startup. In these cases you would need to make the changes in Qt Designer only.

Einträge in der Einstellungsdatei

Wenn die Option Voreinstellungsdatei ausgewählt ist, erstellt das Widget screenOption eine INI-basierte Voreinstellungsdatei.

Während andere QtVCP Widgets diese Liste ergänzen, fügt das screenOptions Widget diese Einträge unter den folgenden Überschriften hinzu:

[SCREEN_OPTIONS]
catch_errors (bool)
desktop_notify (bool)

Ob Fehler/Meldungen im Benachrichtigungsmechanismus des Systems angezeigt werden sollen.

notify_max_msgs (int)

Anzahl der angezeigten Fehler zu einem Zeitpunkt.

shutdown_check (bool)

Ob ein Bestätigungsdialog erscheinen soll.

sound_player_on (bool)

Schaltet alle Töne ein oder aus.

[MCH_MSG_OPTIONS]
mchnMsg_play_sound (bool)

Um Warntöne wiederzugeben, wenn ein Dialogfeld angezeigt wird.

mchnMsg_speak_errors (bool)

Verwendung von Espeak, um Fehlerbotschaften zu sprechen.

mchnMsg_speak_text (bool)

Espeak verwenden, um alle anderen Nachrichten zu sprechen.

mchnMsg_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

[USER_MSG_OPTIONS]
usermsg_play_sound (bool)

Um Warntöne wiederzugeben, wenn ein Dialogfeld angezeigt wird.

userMsg_sound_type (str)

Ton, der abgespielt wird, wenn Benutzermeldungen angezeigt werden. Siehe Hinweise unten.

userMsg_use_focusOverlay (bool)
[SHUTDOWN_OPTIONS]
shutdown_play_sound (bool)
shutdown_alert_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

shutdown_exit_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

shutdown_msg_title (str)

Kurzer Titelstring, der im Dialog angezeigt wird.

shutdown_msg_focus_text (str)

Großer Text, der in die Fokusebene eingeblendet wird.

shutdown_msg_detail (str)

Längere beschreibende Zeichenfolge zur Anzeige im Dialog.

NOTIFY_OPTIONS
notify_start_greeting (bool)

Ob ein Begrüßungsdialog beim Start angezeigt werden soll.

notify_start_title (str)

Kurzer Titelstring.
Wenn die Option "Sprechen" ebenfalls ausgewählt ist, wird der Titel mit Espeak gesprochen.

notify_start_detail (str)

Längere Zeichenfolge zur Beschreibung.

notify_start_timeout (int)

Zeit in Sekunden bis zur Anzeige vor dem Schließen.

*_sound_type Einträge
  • System Sounds
    In Debian/Ubuntu/Mint based installations these system sounds should be available as sound-type entries above:

    • ERROR

    • READY

    • DONE

    • ATTENTION

    • RING

    • LOGIN

    • LOGOUT

    • BELL (engl. für Glocke)

    Diese Sound-Optionen erfordern die Installation von python3-gst1.0.

  • Audio Files
    You can also specify a file path to an arbitrary audio file.
    You can use ~ in path to substitute for the user home file path.

  • Kernel Beeps
    If the beep kernel module is installed and it is not disabled, these sound-type entries are available:

    • BEEP

    • BEEP_RING

    • BEEP_START

  • Text-To-Speech
    If the Espeak module (python3-espeak) is installed, you can use the SPEAK entry to pronounce text:

  • SPEAK '_my message_'

2.25. StatusSlider - Controller-Einstellungs-Schieberegler-Widget

Mit diesem Widget kann der Benutzer eine LinuxCNC-Einstellung mit einem Schieberegler anpassen.

Die Kurzbeschreibung kann folgendes anpassen:

  • Jogging-Rate

  • Winkel-Jog-Rate

  • Vorschubgeschwindigkeit

  • Spindel-Override-Rate

  • Eilgang Übersteuerungsrate (engl. rapid override rate)

Eigenschaften

StatusSlider hat die folgenden Eigenschaften:

halpin_option

Legt die Option fest, um einen HAL-Gleitkomma-Pin zu erstellen, der den aktuellen Wert widerspiegelt.

rapid_rate

Wählt einen Schieberegler für die Übersteuerungsrate des Eilgangs.

feed_rate

Wählt einen Schieberegler für die Vorschub-Neufestsetzung (engl. feed override rate).

spindle_rate

Wählt einen Schieberegler für die Übersteuerungsrate des Eilgangs.

jograte_rate

Wählt einen linearen Jograte-Schieberegler aus.

jograte_angular_rate

Wählt einen eckigen Jograte-Schieberegler aus.

max_velocity_rate

Wählt einen Schieberegler für die maximale Geschwindigkeitsrate aus.

alertState

String zum Definieren der Stiländerung: read-only (enlg. nur lesen), under (engl. für unter), over (engl. für über) und normal.

alertUnder

Legt den Float-Wert fest, der dem Stylesheet eine "Unter"-Warnung signalisiert.

alertOver

Legt den Gleitkommawert fest, der dem Stylesheet die Warnung "Über" signalisiert.

Diese können eingestellt werden in:

  • Qt Designer

  • Python-Handler-Code,

    self.w.status_slider.setProperty('spindle_rate',True)
    self.w.status_slider.setProperty('alertUnder',35)
    self.w.status_slider.setProperty('alertOver',100)
  • Oder (gegebenenfalls) in Stylesheets.

    /* Warnfarben für Übersteuerungen, wenn sie außerhalb des normalen Bereichs liegen*/
    /* Name des Widget-Objekts ist slider_spindle_ovr */
    
    #slider_spindle_ovr[alertState='over'] {
        background: red;
    }
    #slider_spindle_ovr[alertState='under'] {
        background: yellow;
    }

Es basiert auf PyQt’s QSlider.

2.26. StateLED - Controller-Status-LED-Widget

Dieses Widget zeigt den Status des ausgewählten LinuxCNC-Status an.

Zustände

Die Statusoptionen sind:

is_paused_status
is_estopped_status
is_on_status
is_idle_status_
is_homed_status
is_flood_status
is_mist_status
is_block_delete_status
is_optional_stop_status
is_joint_homed_status
is_limits_overridden_status
is_manual_status
is_mdi_status
is_auto_status
is_spindle_stopped_status
is_spindle_fwd_status
is_spindle_rev_status
is_spindle_at_speed_status
is_neg_limit_tripped
is_pos_limit_tripped
is_limits_tripped

Eigenschaften

Es gibt Eigenschaften, die geändert werden können:

halpin_option

Fügt einen Ausgangspin hinzu, der den ausgewählten Zustand wiedergibt.

invert_state_status

Invertieren des LED-Status im Vergleich zum LinuxCNC-Status.

diameter

Durchmesser der LED.

color

Farbe der LED im eingeschalteten Zustand.

off_color

Farbe der LED im ausgeschalteten Zustand.

alignment

Qt-Hinweis zur Ausrichtung.

state

Aktueller Zustand der LED (zum Testen in Qt Designer).

flashing

Schaltet die Blinkoption ein und aus.

flashRate

Legt die Blitzrate fest.

Die LED-Eigenschaften können in einem Stylesheet mit folgendem Code definiert werden, welcher der Datei .qss hinzugefügt wird.

State_LED #name_of_led{       <1>
  qproperty-color: red;
  qproperty-diameter: 20;
  qproperty-flashRate: 150;
}
  1. name_of_led wäre der im Editor von Qt Designer definierte Name.

Es basiert auf dem LED-Widget.

2.27. StatusAdjustmentBar - Widget zum Einstellen von Controller-Werten

Dieses Widget ermöglicht die Einstellung von Werten über Schaltflächen, während ein Balken angezeigt wird.

Außerdem gibt es einen optionalen Hoch/Tief-Knopf, der gedrückt gehalten werden kann, um die Stufen einzustellen.

Die Kurzbeschreibung kann folgendes anpassen:

  • Jogging-Rate

  • Winkel-Jog-Rate

  • Vorschubgeschwindigkeit

  • Spindel-Override-Rate

  • Eilgang Übersteuerungsrate (engl. rapid override rate)

Sie basiert auf PyQt’s QProgressBar.

2.28. SystemToolButton - Widget zur Auswahl des Benutzersystems

Mit diesem Widget können Sie manuell ein G5x Benutzersystem auswählen, indem Sie es gedrückt halten.

Wenn Sie den Text der Schaltfläche nicht festlegen, wird sie automatisch auf das aktuelle System aktualisiert.

Es basiert auf PyQts QToolButton.

2.29. StateEnableGridlayout - Controller State Enabled Container Widget

_Deaktivieren Sie die Widgets darin je nach LinuxCNCs aktuellem Zustand_.

Dies ist ein Container, in dem andere Widgets platziert werden können.

Eingebettete Widgets werden ausgegraut, wenn die Funktion StateEnableGridlayout deaktiviert ist.

Es kann selektiv reagieren auf:

  • Maschine ein

  • Interpreter idle

  • Notaus aus

  • Alle referenziert (engl. all-homed)

Es basiert auf PyQt’s QGridLayout.

2.30. StatusImageSwitcher - Controller-Statusbild-Umschalt-Widget

Dieses Widget wird Bilder basierend auf dem LinuxCNC-Status anzeigen.

Sie können sehen:

  • Den Zustand der Spindel,

  • den Status der Referenzierung aller Achsen,

  • den Zustand der Referenzierung einer bestimmten Achse,

  • den Zustand der harten Grenzen.

Es basiert auf PyQt’s FIXME

2.31. ToolOffsetView - Widget zum Anzeigen und Bearbeiten von Werkzeug-Offsets

QtVCP `ToolOffsetView` - Widget zum Anzeigen und Bearbeiten von Werkzeug-Offsets
Abbildung 13. QtVCP ToolOffsetView - Widget zum Anzeigen und Bearbeiten von Werkzeug-Offsets

Dieses Widget zeigt Werkzeug-Offsets an und ermöglicht deren Änderung.

Es wird die Werkzeugtabelle von LinuxCNC für vorgenommene oder gefundene Änderungen aktualisieren.

Die Einstellungen können in LinuxCNC nur nach der Referenzfahrt und im Ruhezustand des Motion Controllers geändert werden.

Die Anzeige und der Eintrag wechseln zwischen metrisch und imperial, basierend auf der aktuellen G20/G21 Einstellung von LinuxCNC.

Das aktuell verwendete Werkzeug wird hervorgehoben, und das aktuell ausgewählte Werkzeug wird in einer anderen Farbe hervorgehoben.

Das Kontrollkästchen neben jedem Werkzeug kann auch für eine Aktion ausgewählt werden, die von zusätzlichem Code abhängt, der entweder zu einem kombinierten Widget, wie dem Dialogfeld ToolOffsetView oder dem Code des Bildschirmhandlers, hinzugefügt wird.
Typische Aktionen sind "Ausgewähltes Werkzeug laden", "Ausgewählte Werkzeuge löschen", usw.

Wenn Sie auf die Spalten und Zeilen klicken, können Sie die Einstellungen anpassen.

Für die Daten- oder Texteingabe kann ein Dialogfeld eingeblendet werden.

Der Kommentarbereich (engl. comments section) wird in der Regel im Dialog für den manuellen Werkzeugwechsel angezeigt.

Bei Verwendung einer Drehbankkonfiguration kann es Spalten für X- und Z-Verschleiß geben.

Um diese Spalten zur Einstellung des Werkzeugverschleißes zu verwenden, ist eine neu zugeordnete Werkzeugwechselroutine erforderlich.

Es basiert auf PyQt’s QTableView, QAbstractTableModel, und ItemEditorFactory.
Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verfügbar.

Eigenschaften

ToolOffsetView hat Eigenschaften, die im Qt Designer, im Python-Handler-Code oder (falls zutreffend) in Stylesheets eingestellt werden können:

dialog_code_string

Legt fest, welcher Dialog bei einer numerischen Eingabe erscheint.

text_dialog_code_string

Legt fest, welcher Dialog bei der Texteingabe angezeigt wird.

metric_template

Metrisches numerisches Datenformat.

imperial_template

Imperiales numerisches Datenformat.

styleCodeHighlight

Hervorhebungsfarbe des aktuellen Werkzeugs.

styleCodeSelected

Ausgewählte Hervorhebungsfarbe.

In einer Handler-Datei:

self.w.tooloffsetview.setProperty('dialog_code','CALCULATOR')
self.w.tooloffsetview.setProperty('metric_template','%10.3f')

und in Stylesheets:

ToolOffsetView{
  qproperty-styleColorHighlist: lightblue;
  qproperty-styleColorSelected: #444;
}
Funktionen

Die Funktion ToolOffsetView hat einige Funktionen, die für Screenbuilder nützlich sind, um Aktionen hinzuzufügen:

add_tool()

Fügt ein leeres Dummy-Werkzeug (99) hinzu, das der Benutzer nach Belieben bearbeiten kann.

delete_tools()

Löscht die in der Checkbox ausgewählten Werkzeuge.

get_checked_list()

Gibt eine Liste der durch Ankreuzfelder ausgewählten Werkzeuge zurück.

set_all_unchecked()

Hebt die Markierung aller ausgewählten Werkzeuge auf.

Beispiel für eine Handler-Datei, welche die oben genannten Funktionen ausführt.
self.w.tooloffsetview.add_tool()
self.w.tooloffsetview.delete_tools()
toolList = self.w.tooloffsetview.get_checked_list()
self.w.tooloffsetview.set_all_unchecked()

2.32. VersaProbe - Fräsen-Tast-Widget

QtVCP VersaProbe: Fräs-Tast-Widget
Abbildung 14. QtVCP VersaProbe: Fräsen-Tast-Widget

Widget zum Sondieren auf einer Fräse. Wird vom QtDragon-Bildschirm verwendet.

3. Dialog-Widgets

Dialoge werden verwendet, um unmittelbar benötigte Informationen gezielt darzustellen oder abzufragen.

Die typischerweise verwendeten Dialoge können mit dem ScreenOptions widget geladen werden.

Sie können sie auch direkt zur UI hinzufügen - allerdings muss jedes Dialogfeld einen eindeutigen Startnamen haben, sonst werden mehrere Dialogfelder nacheinander angezeigt.

Dialoge aus Python-Code verwenden

Sie können Dialoge direkt mit Python-Code anzeigen, aber eine sicherere Methode ist die Verwendung von STATUS-Nachrichten, um den Dialog zu starten und die gesammelten Informationen zurückzugeben.

  • Register to STATUS channel:
    To set this up, first register to catch the general message from STATUS:

    STATUS.connect('general',self.return_value)
  • Add a function to call a dialog:
    This function must build a message dict to send to the dialog.
    This message will be passed back in the general message with the addition of the return variable.
    It is possible to add extra user information to the message. The dialog will ignore these and pass them back.

    NAME

    Startet den Codenamen des anzuzeigenden Dialogs.

    ID

    Eine eindeutige ID, damit wir nur den angeforderten Dialog bearbeiten.

    TITLE

    Der Titel, der für das Dialogfeld verwendet werden soll.

    def show_dialog(self):
        mess = {'NAME':'ENTRY','ID':'__test1__',
                'TITLE':'Test Entry'}
        ACTION.CALL_DIALOG, mess)
  • Add a callback function that processes the general message:
    Keep in mind this function will get all general messages so the dict keynames are not guaranteed to be there. Using the .get() function and/or using try/except is advisable. This function should:

    • check the name and id is the same as we sent,

    • then extract the return value and any user variables.

    # Verarbeitung der STATUS return message
    def return_value(self, w, message):
        rtn = message.get('RETURN')
        code = bool(message.get('ID') == '__test1__')
        name = bool(message.get('NAME') == 'ENTRY')
        if code and name and not rtn is None:
            print('Entry return value from {} = {}'.format(code, rtn))

3.1. LcncDialog - Allgemeines Nachrichtendialog-Widget

Dies ist ein Allgemeines Nachrichten-Dialog-Widget.

Wenn ein Fokus-Overlay-Widget vorhanden ist, kann es signalisieren, dass es angezeigt werden soll.

Wenn die Klangbibliothek eingerichtet ist, kann sie Klänge abspielen.

Es gibt Optionen, die gesetzt werden können, wenn ein Dialog angefordert wird, diese würden der Nachricht dict hinzugefügt.

TITLE

Titel des Dialogfensters.

MESSAGE

Titel Nachrichtentext in Fettdruck.

MORE

Standardtext unter der Überschrift.

DETAILS

Ursprünglicher versteckter Text.

TYPE (OK|YESNO|OKCANCEL)
ICON (QUESTION|INFO|CRITICAL|WARNING)
PINNAME

Noch nicht implementiert.

FOCUSTEXT (overlay text|None)

Text, der angezeigt werden soll, wenn das Fokus-Overlay verwendet wird. Verwenden Sie None für keinen Text.

FOCUSCOLOR (QColor(_R, G, B, A_))

Farbe, die verwendet werden soll, wenn das Fokus-Overlay verwendet wird.

PLAYALERT

Abzuspielender Ton, falls vorhanden, z.B. SPEAK <Spoken_message> .

Bei der Verwendung der Funktion "Abfrage-Dialog" von "STATUS" ist der "Standard-Startname" MESSAGE.

Sie basiert auf der QMessagebox von PyQt.

3.2. ToolDialog - Dialog-Widget für den manuellen Werkzeugwechsel

QtVCP ToolDialog: Dialog zum manuellen Werkzeugwechsel
Abbildung 15. QtVCP ToolDialog: Dialog zum manuellen Werkzeugwechsel

Dies wird als Aufforderung zum manuellen Werkzeugwechsel verwendet.

Es verfügt über HAL Pins, die mit dem controller der Maschine verbunden werden können. Die Pins haben den gleichen Namen wie die ursprüngliche AXIS manuelle Werkzeugeingabeaufforderung und funktionieren gleich.

Der Werkzeugwechsel-Dialog kann nur über HAL-Pins aufgerufen werden.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

Sie basiert auf der QMessagebox von PyQt.

3.3. FileDialog - Dialog Widget zum Laden und Speichern von Dateien

QtVCP FileDialog: Widget zum Laden und Speichern von Dateien
Abbildung 16. QtVCP FileDialog: Widget für das Laden und Speichern von Dateien

Dies wird zum Laden von G-Code-Dateien verwendet.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

Wenn Sie die Request-Dialog-Funktion von STATUS verwenden, lauten die Standard-Startnamen LOAD oder SAVE.

Es gibt options, die beim Anfordern eines Dialogs gesetzt werden können, diese würden dem Meldungsdiktat hinzugefügt:

EXTENSIONS
FILENAME
DIRECTORY

Ein Beispiel für einen Python-Aufruf, für einen Load-Dialog:

mess = {'NAME':'LOAD','ID':'_MY_DIALOG_',
            'TITLE':'Load Some text File',
            'FILENAME':'~/linuxcnc/nc_files/someprogram.txt',
            'EXTENSIONS':'Text Files (*.txt);;ALL Files (*.*)'
            }
ACTION.CALL_DIALOG(mess)

Und für einen Speicherdialog

mess = {'NAME':'SAVE','ID':'_MY_DIALOG_',
            'TITLE':'Save Some text File',
            'FILENAME':'~/linuxcnc/nc_files/someprogram.txt',
            'EXTENSIONS':'Text Files (*.txt);;ALL Files (*.*)'
            }
ACTION.CALL_DIALOG(mess)

Sie basiert auf der QMessagebox von PyQt.

3.4. OriginOffsetDialog - Dialogfeld-Widget für die Einstellung des Ursprungsversatzes

QtVCP `OriginOffsetDialog`: Widget zur Einstellung des Ursprungsversatzes
Abbildung 17. QtVCP OriginOffsetDialog: Widget zur Einstellung des Ursprungsversatzes

Mit diesem Widget kann man die Nullpunktverschiebung des Benutzersystems direkt in einem Dialogformular ändern.

Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.

Bei Verwendung der request-dialog-Funktion von STATUS ist der standardmäßige Startname ORIGINOFFSET.

Es basiert auf PyQts QDialog.

3.5. ToolOffsetDialog - Dialogfenster-Widget zur Einstellung des Werkzeugversatzes

QtVCP `ToolOffsetDialog`: Werkzeug-Offset-Einstellungsdialog-Widget
Abbildung 18. QtVCP ToolOffsetDialog: Werkzeug-Offset-Einstellungsdialog-Widget

Mit diesem Widget kann man die Werkzeugversätze direkt in einem Dialogformular ändern.

Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.

Bei Verwendung der request-dialog-Funktion von STATUS ist der standardmäßige Startname TOOLOFFSET.

Es basiert auf PyQts QDialog.

3.6. MachineLog - Widget für die Anzeige des Journals für Maschinenereignisse

FIXME MachineLog-Dokumentation

3.7. MacroTabDialog - Dialog-Widget zum Starten von Makros

Dies ist ein Dialog zum Anzeigen des Makrotab-Widgets.

MacroTab zeigt eine Auswahl von Makroprogrammen an, die mit Symbolen ausgeführt werden.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

Bei Verwendung der ``STATUS`` request-dialog-Funktion lautet der Standardstartname MACROTAB.

Es basiert auf PyQts QDialog.

3.8. CamViewDialog - Dialogfeld-Widget für die WebCam-Werkstück-Ausrichtung

Dies ist ein Dialog zur Anzeige des CamView-Widgets für die Ausrichtung von Werkstücken mit der Webcam.

Bei Verwendung der ``STATUS`` request-dialog-Funktion lautet der Standardstartname `CAMVIEW `.

Es basiert auf PyQts QDialog.

3.9. EntryDialog - Widget zum Bearbeiten des Zeilendialogs

Dies ist ein Dialog zum Anzeigen einer Bearbeitungszeile für die Informationseingabe, wie z. B. den Versatz zum Ursprung (engl. origin offset).

Es liefert den Eintrag über STATUS-Nachrichten unter Verwendung eines Python DICT.

Das DICT enthält mindestens den Namen des angeforderten Dialogs und einen ID-Code.

Bei Verwendung der ``STATUS`` request-dialog-Funktion lautet der Standardstartname `ENTRY `.

Es basiert auf PyQts QDialog.

3.10. CalculatorDialog - Rechner-Dialog-Widget

QtVCP CalculatorDialog: Rechner-Dialog-Widget
Abbildung 19. QtVCP CalculatorDialog: Rechner-Dialog-Widget

Dies ist ein Dialogfeld zur Anzeige eines Taschenrechners für numerische Eingaben, wie z. B. den Ursprungsversatz.

Es liefert den Eintrag über STATUS-Nachrichten unter Verwendung eines Python DICT.

Das DICT enthält mindestens den Namen des angeforderten Dialogs und einen ID-Code.

Wenn Sie die Funktion 'request-dialog von 'STATUS' verwenden, lautet der Standardstartname CALCULATOR.

Es basiert auf PyQts QDialog.

3.11. RunFromLine - Ausführen-ab-Zeile Dialog-Widget

QtVCP RunFromLine: Run-From-Line Dialog Widget
Abbildung 20. QtVCP RunFromLine: Run-From-Line-Dialog-Widget

Dialog zum Voreinstellen der Spindeleinstellungen vor dem Ausführen eines Programms in einer bestimmten Zeile.

Es basiert auf PyQts QDialog.

3.12. VersaProbeDialog - Dialogfeld-Widget für die Berührungsprüfung von Bauteilen

QtVCP VersaProbeDialog: Werkstück Touch Probing Dialog Widget
Abbildung 21. QtVCP VersaProbeDialog: Dialog-Widget für Werkstück Touch Probing

Dies ist ein Dialog zur Anzeige eines Werkstück-Suchbildschirms auf der Basis von Verser Probe v2.

Es basiert auf PyQts QDialog.

3.13. MachineLogDialog - Maschinen- und Debugging-Protokolldialog-Widget

QtVCP `MachineLogDialog`: Dialog-Widget für Maschinen- und Debugging-Protokolle
Abbildung 22. QtVCP MachineLogDialog: Dialog-Widget für Maschinen- und Debugging-Protokolle

Dies ist ein Dialog zur Anzeige des Maschinen-Logfiles und des QtVCPs Debugging Logs.

Es basiert auf PyQts QDialog.

4. Andere Widgets

Weitere verfügbare Widgets:

4.1. NurbsEditor - NURBS-Bearbeitungs-Widget

QtVCP NurbsEditor: NURBS-Bearbeitungs-Widget
Abbildung 23. QtVCP NurbsEditor: NURBS-Bearbeitungs-Widget

Mit dem Nurbs-Editor können Sie eine NURBS-basierte Geometrie auf dem Bildschirm manipulieren und anschließend NURBS in G-Code konvertieren.

Sie können den G-Code am Bildschirm bearbeiten und ihn dann an LinuxCNC senden.

Es basiert auf PyQts QDialog.

4.2. Joypad - 5-Tasten-D-Pad-Widget

Es ist die Basisklasse für das HALPad-Widget.

Dieses Widget sieht aus und funktioniert wie ein 5-Tasten-D-Pad, mit einer LED-Anzeige in einem Ring.

Sie können jede der Schaltflächenpositionen mit Text oder Symbolen versehen.

Sie können sich mit Ausgangssignalen verbinden, wenn die Tasten gedrückt werden.

Es gibt auch Eingabe-Slots, um die Farbe des Indikators(s.) zu ändern

ENUMS

Es gibt aufgezählte Konstanten, die zur Referenzierung von Indikatorpositionen verwendet werden.
Sie werden im Eigenschaftseditor des Qt Designer-Editors oder im Python-Code verwendet.

NONE
LEFT, L
RIGHT, R
CENTER, C
TOP, T
BOTTOM, B
LEFTRIGHT, X
TOPBOTTOM, A

Für Python-Handler-Code verwenden Sie den Widget-Namen in Qt Designer plus die Referenzkonstante:

self.w.joypadname.set_highlight(self.w.joypadname.LEFT)
Nützliche Funktionen, die überschrieben werden können
def _pressedOutput(self, btncode):
    self.joy_btn_pressed.emit(btncode)
    self[''.format(btncode.lower())].emit(True)

def _releasedOutput(self, btncode):
    self.joy_btn_released.emit(btncode)
    self['joy_{}_pressed'.format(btncode.lower())].emit(False)

Wie kodiert, geben diese Funktionen PyQt5-Signale (joy_btn_pressed und joy<letter>_pressed) für jeden gedrückten oder losgelassenen Knopf_ aus.

Signal joy_btn_pressed gibt einen String-Code für die Taste aus.
Signal joy_<letter>_pressed gibt einen Bool-Wert aus.

Sie können die Funktionen überschreiben, um etwas anderes zu implementieren, indem Sie ein benutzerdefiniertes Widget erstellen:

Aufrufbare Funktionen
reset_highlight()

Löscht die Hervorhebungsanzeige.

set_highlight(_button_, state=_True_)

Setzen Sie den Hervorhebungsanzeiger an der Position button auf den Zustand state.
Sie können Strings Buchstaben (LRCTBXA) oder Position ENUMS für das Argument der Schaltfläche verwenden.

set_button_icon(_button_, _pixmap_)

Legt die Pixmap für das Symbol der Schaltfläche fest.

set_button_text(_button_, _text_)

Legt den Text für das Symbol der Schaltfläche fest.

set_tooltip(_button_, _text_)

Legt den beschreibenden Text für die Popup-Tooltip-Schaltflächen fest.

setLight(_state_)

Setzt den Highlight-Indikator auf die Farbe True oder False.
Die Funktion set_highlight() muss vorher verwendet werden, um den zu verwendenden Indikator zu setzen.

Signale

Diese Signale werden gesendet, wenn Tasten gedrückt werden.

Sie können im Qt Designer-Editor oder im Python-Code verbunden werden.

Die ersten beiden geben eine Zeichenfolge aus zur Angabe der gedrückten Schaltfläche:

joy_btn_pressed (string)
joy_btn_released (string)
joy_l_pressed (bool)
joy_l_released (bool)
joy_r_pressed (bool)
joy_r_released (bool)
joy_c_pressed (bool)
joy_c_released (bool)
joy_t_pressed (bool)
joy_t_released (bool)
joy_b_pressed (bool)
joy_b_released (bool)

Sie basieren auf PyQt’s Signal (QtCore.pyqtSignal())

Steckplätze (engl. slots)

Slots können im Qt Designer-Editor oder in Python-Code verbunden werden:

set_colorStateTrue()
set_colorStateFalse()
set_colorState(_bool_)
set_true_color(str)
set_true_color(_qcolor_)
set_false_color(_str_)
set_false_color(_qcolor_)

Eigenschaften

Diese können in Stylesheets oder Python-Code festgelegt werden:

highlightPosition

Position des Indikators festlegen.

setColorState

Den Farbzustand des Indikators auswählen.

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

Ein Dateipfad oder Ressourcenpfad zu einem Bild, das an der beschriebenen Schaltflächenposition angezeigt werden soll.
Wenn die Schaltfläche "Zurücksetzen" in der Qt Designer-Editor-Eigenschaft gedrückt wird, dann wird das Bild nicht angezeigt (optional kann Text angezeigt werden).

left_text
right_text
center_text
top_text
bottom_text

Eine Textzeichenfolge, die an der beschriebenen Schaltflächenposition angezeigt werden soll.
Wenn das Feld leer gelassen wird, kann ein Bild für die Anzeige bestimmt werden.

true_color
false_color

Farbauswahl für den mittleren LED-Ring, der angezeigt werden soll, wenn der BASENAME.light.center HAL-Pin True oder False ist.

text_color

Auswahl der Farbe für den Text des Buttons.

button_font

Auswahl der Schriftart für den Text des Buttons.

Die obigen Eigenschaften könnten gesetzt werden in:

  • Stylesheets:
    You would usually use the Qt Designer widget name with # prefix to set individual widget properties, otherwise you would use the JoyPad class name to set all JoyPad widgets the same:

    #joypadname{
      qproperty-true_color: #000;
      qproperty-false_color: #444;
    }
  • In Python handler code:

    self.w.joypadename.setProperty('true_color','green')
    self.w.joypadename.setProperty('false_color','red')

4.3. WebWidget

Dieses Widget erstellt eine html/pdf-Anzeigeseite mit den QtWebKit- oder QtWebEngine-Bibliotheken. Der neuere QtWebEngine wird bevorzugt, wenn beide auf dem System sind.
Wird die QtWebEngine-Bibliothek mit dem Qt Designer-Editor verwendet, wird in Qesigner ein Platzhalter QWidget angezeigt. Dies wird durch das gelaufene QtWebEngine Widget ersetzt.

5. BaseClass/Mixin-Widgets

Diese Widgets werden verwendet, um verschiedene Eigenschaften und Verhaltensweisen in anderen Widgets zu kombinieren.

Sie werden als ausklappbare Kopfzeile in der Eigenschaftsspalte von Qt Designer angezeigt.

5.1. IndicatedPushButtons

Diese Klasse verändert das Verhalten von QPushButton.

5.1.1. LED-Anzeige Option

indicator_option puts a LED on the top of the button.

QtVCP Drucktaste: Angezeigte Aktionstaste, LED-Anzeigeoption
Abbildung 24. QtVCP PushButton: Angezeigte Aktionstaste, LED-Anzeigeoption

Es kann ein Dreieck, Kreis, obere Leiste oder seitliche Leiste sein.
Die Größe und Position können angepasst werden.

Es wird angezeigt:

  • den aktuellen Zustand der Schaltfläche, oder

  • den Zustand eines HAL-Pins, oder

  • LinuxCNC status.

Eigenschaften

Diese Eigenschaften sind verfügbar, um den Indikator anzupassen (nicht alle sind auf jede LED-Form anwendbar):

on_color
off_color
flashIndicator
flashRate
indicator_size
circle_diameter
shape_option
right_edge_offset
top_edge_offset
height_fraction
width_fraction
corner_radius

Indikator-Eckenradius.

Die Farbe der LED-Anzeige kann in einem stylesheet definiert werden, indem der folgende Code zur .qss-Datei hinzugefügt wird:

Indicated_PushButton{
  qproperty-on_color: #000;
  qproperty-off_color: #444;
}

Oder für einen bestimmten Button:

Indicated_PushButton #button_estop{
  qproperty-on_color: black;
  qproperty-off_color: yellow;
}
Optionen

IndicatedPushButton hat exklusive Optionen:

indicator_HAL_pin_option

Fügt ein halpin namens <buttonname>-led hinzu, der den Status der Schaltflächenanzeige steuert.

indicator_status_option

Lässt die LED den Status dieser wählbaren LinuxCNC-Status anzeigen:

  • Is Estopped

  • Is On

  • All Homed

  • Is Joint Homed

  • Idle

  • Paused

  • Flood

  • Mist (engl. Nebel)

  • Block Delete

  • Optionaler Stop

  • Manual

  • MDI

  • Auto

  • Spindle Stopped

  • Spindel vorwärts

  • Spindel rückwärts

  • On Limits

Einige indicator_status_options enthält eine Eigenschaft, die mit einem stylesheet verwendet werden kann, um die Farbe der Schaltfläche basierend auf dem Zustand der Eigenschaft in LinuxCNC zu ändern.
Derzeit sind diese Status-Eigenschaften können verwendet werden, um Auto-Stil Schaltflächen:

  • is_estopped_status schaltet die Eigenschaft isEstop um

  • is_on_status schaltet die Eigenschaft isStateOn um

  • is_manual_status, is_mdi_status, is_auto_status schalten die Eigenschaften isManual, isMDI, und isAuto um.

  • is_homed_status schaltet die Eigenschaft isAllHomed um

Hier ist ein Beispiel-Stylesheet-Eintrag, der den Hintergrund von Mode-Button-Widgets festlegt, wenn sich LinuxCNC in diesem Modus befindet:

ActionButton[isManual=true] {
    background: red;
}
ActionButton[isMdi=true] {
    background: blue;
}
ActionButton[isAuto=true] {
    background: green;
}

So geben Sie ein bestimmtes Widget anhand seines objectName in Qt Designer an:

ActionButton #estop button [isEstopped=false] {
    color: yellow;
}

5.1.2. Aktiviert durch den LinuxCNC-Status

Oft, mit der Schaltfläche deaktiviert und aktiviert auf der Grundlage der Zustand der LinuxCNC Motion Controller ist notwendig.

Es gibt mehrere Eigenschaften, die zur Unterstützung ausgewählt werden können:

isAllHomedSentive
isOnSensitive
isIdleSensitive
isRunSensitive
isRunPausedSensitive
isManSensitive
isMDISensitive
isAutoSensitive

Sie können mehrere Eigenschaften für kombinierte Anforderungen auswählen.

5.1.3. Text ändert sich im Zustand

Die Auswahl der Option checked_state_text_option erlaubt es einer checkbox, den Text basierend auf ihrem checked state zu ändern.

Es verwendet die folgenden Eigenschaften, um den Text für jeden Zustand anzugeben:

true_state_string
false_state_string

\\n wird in einen Zeilenumbruch umgewandelt.

Sie können diese in Stylesheets festlegen/ändern:

ActionButton #action_aux{
  qproperty-true_state_string: "Air\\nOn";
  qproperty-false_state_string: "Air\\nOff";
}

5.1.4. Python-Befehle für den Zustand aufrufen

Die python_command_option ermöglicht es, kleine Schnipsel von Python-Code auf Knopfdruck auszuführen, ohne die Handler-Datei bearbeiten zu müssen. Es kann jedoch Funktionen in der Handler-Datei aufrufen.

Bei Verwendung der command_string-Eigenschaften.

true_python_cmd_string

Ein Python-Befehl, der aufgerufen wird, wenn der Button auf True umgeschaltet wird.

false_python_cmd_string

Ein Python-Befehl, der aufgerufen wird, wenn die Schaltfläche auf False umgeschaltet wird.

Besondere Wörter in Großbuchstaben geben Zugang zu den folgenden Informationen:

INSTANCE

Ermöglicht den Zugriff auf die Instanzen der Widgets und die Handler-Funktionen.
Z.B.: INSTANCE.my_handler_function_call(True)

ACTION

Ermöglicht den Zugriff auf die ACTION Bibliothek von QtVCP.
Z.B. ACTION.TOGGLE_FLOOD()

PROGRAM_LOADER

Ermöglicht den Zugriff auf die PROGRAM_LOADER Bibliothek von QtVCP.
Z.B., PROGRAM_LOADER.load_halshow()

HAL

Ermöglicht den Zugriff auf das Python-Modul von HAL.
Z.B.: HAL.set_p('motion.probe-input','1')

6. Nur-Import-Widgets

Diese Widgets sind normalerweise die Basisklasse Widget für andere QtVCP-Widgets.

Sie sind nicht direkt im Qt-Designer-Editor verfügbar, können aber importiert und manuell eingefügt werden.

Sie könnten auch unterklassifiziert werden, um ein ähnliches Widget mit neuen Funktionen zu erstellen.

6.1. Automatische Höhe

Widget zur Messung von zwei Höhen mit einer Sonde.
Für die Einrichtung.

6.2. G-Code Dienstprogramm

Widgets für die Durchführung gängiger Bearbeitungsprozesse.

6.3. Facing

Eine Fläche oder ein definierter Bereich mit unterschiedlichen Strategien bearbeiten, auch facen.

6.4. Loch-Kreis (engl. hole circle)

Bohren mehrerer Löcher auf einem Lochkreis.

6.5. Qt NGCGUI

QtVCP NGCGUI: Gezeigt von QtDragon

QtVCPs Version des NGC-Unterprogramm-Selektors (Gezeigt wie in QtDragon verwendet).

6.5.1. INI-Einstellungen

LinuxCNC muss wissen, wo es nachschauen muss, um die Unterprogramme auszuführen.
Wenn das Unterprogramm andere Unterprogramme oder benutzerdefinierte M-Codes aufruft, müssen diese Pfade ebenfalls hinzugefügt werden.

[RS274NGC]
SUBROUTINE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs

QtVCP muss wissen, von wo aus Unterprogramme geöffnet werden sollen.
Sie können auch Unterprogramme angeben, die in Tabs vorgeöffnet werden sollen.

[DISPLAY]
# NGCGUI Unterprogramm Pfad.
# Dieser Pfad muss auch in [RS274NGC] SUBROUTINE_PATH stehen
NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib
# vorgewählte Programme Tabs
# nur Dateinamen angeben, Dateien müssen sich im NGCGUI_SUBFILE_PATH befinden
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc

6.5.2. Buttons

  • NEW TAB - fügt eine neue leere Registerkarte zu NGCGUI hinzu

  • SELECT PREAMBLE - Wählen Sie eine Datei aus, die Präambel-G-Code enthält

  • SELECT SUBFILE - Wählen Sie eine NGCGUI-Unterprogrammdatei

  • SELECT POST - Wählen Sie eine Datei, die Post-G-Code hinzufügt

  • REREAD FILE - Erneutes Laden einer Unterprogrammdatei

  • CREATE FEATURE - Merkmal zur Liste hinzufügen

  • RESTART FEATURE - alle Features aus der Liste entfernen

  • FINALIZE GCODE - Erstellen Sie den vollständigen G-Code und senden Sie ihn an LinuxCNC/an eine Datei

6.5.3. Hinzufügen benutzerdefinierter Unterroutinen

Sie können Ihre eigenen Unterroutinen zur Verwendung mit NGCGUI erstellen. Sie müssen diese Regeln befolgen:

  • Um ein Unterprogramm für die Verwendung mit NGCGUI zu erstellen, müssen der Dateiname und der Name des Unterprogramms identisch sein.

  • Das Unterprogramm muss sich in einem Ordner innerhalb des INI-Suchpfades von LinuxCNC befinden.

  • In der ersten Zeile kann ein Kommentar des Typs info stehen:

  • Das Unterprogramm muss von den Tags sub und endsub umgeben sein.

  • Die verwendeten Variablen müssen nummerierte Variablen sein und dürfen keine Nummer überspringen.

  • Kommentare und Voreinstellungen können enthalten sein.

  • Wenn sich eine Bilddatei mit demselben Namen in dem Ordner befindet, wird sie angezeigt.

(info: feedrate -- einfaches Beispiel für die Einstellung der Vorschubgeschwindigkeit)
o<feedrate> sub
    #<feedrate> = #1 (= 6 Feed Rate) ; Kommentare in Klammern werden in ngcui angezeigt
    f#<feedrate>
o<feedrate> endsub
QtVCP NGCGUI Benutzerdefiniertes Sub

6.6. Qt PDF

Ermöglicht das Hinzufügen von ladbaren PDFs zu einem Bildschirm.

6.7. Qt Vismach

Verwenden Sie dies, um OpenGl simulierte Maschinen zu erstellen/hinzuzufügen.

6.8. Hal Auswahl Box

Dieses Widget ist eine Combobox zur Auswahl eines Pins oder Signals auf dem System.

from qtvcp.widgets.hal_selectionbox import HALSelectionBox

    def buildComboBox(self):
        # combo box for HAL pin selection
        combobox = HALSelectionBox()
        combobox.setShowTypes([combobox.PINS,combobox.SIGNALS])
        combobox.setPinTypes([combobox.HAL_BIT], direction = [combobox.HAL_IN])
        combobox.setSignalTypes([combobox.HAL_BIT], driven = [False,True])
        combobox.hal_init()
        combobox.selectionUpdated.connect(lambda w: self.signalSelected(w))

    def signalSelected(self, sig):
        print('Watching:',sig)

Dies sind Funktionsaufrufe

# set the list of types to show from: PINS SIGNALS
combobox.setShowTypes([combobox.PINS])

# set the pin types to show: HAL_BIT,HAL_FLOAT,HAL_S32,HAL_U32
# and a list of directions: HAL_IN HAL_OUT
combobox.setPinTypes(types=[combobox.HAL_BIT], direction = [HAL_IN])

# set the signal types to show: HAL_BIT,HAL_FLOAT,HAL_S32,HAL_U32
# and a list of driven/undriven (by a connected pin) to show
combobox.setSignalTypes( types=[combobox.HAL_BIT], driven = [True,True])