images/ngcgui.png
Abbildung 1. NGCGUI eingebettet in AXIS

1. Übersicht

  • NGCGUI ist eine Tcl-Anwendung zur Arbeit mit Unterroutinen. Es ermöglicht Ihnen, eine Konversationsschnittstelle mit LinuxCNC zu haben. Sie können die Unterroutinen in der Reihenfolge organisieren, in der Sie sie ausführen und die Unterroutinen in einer Datei für ein vollständiges Teileprogramm verketten müssen.

  • NGCGUI kann als eigenständige Anwendung ausgeführt oder in mehrere Registerkarten in der AXIS GUI eingebettet werden.

  • PYNGCGUI ist eine alternative Python-Implementierung von NGCGUI.

  • PyNGCGUI kann als eigenständige Anwendung laufen oder als Registerkarte (mit einem eigenen Satz von mehreren Unterprogramm-Registerkarten) in jede GUI eingebettet werden, die eine Einbettung der GladeVCP-Anwendungen AXIS, Touchy, Gscreen und GMOCCAPY unterstützt.

NGCGUI oder PyNGCGUI verwenden:

  • Für jedes in der INI-Datei angegebene Unterprogramm gibt es Registerkarten (engl. tabs).

  • Neue Subroutinen-Registerkarten können mit dem custom tab spontan hinzugefügt werden.

  • Jede Registerkarte eines Unterprogramms enthält Eingabefelder für alle Unterprogrammparameter.

  • Die Eingabefelder können einen Standardwert und eine Bezeichnung haben, die durch spezielle Kommentare in der Unterprogrammdatei gekennzeichnet sind.

  • Unterprogrammaufrufe können miteinander verkettet werden, um ein mehrschrittiges Programm zu bilden.

  • Jede G-Code-Subroutine in einer einzigen Datei, die den NGCGUI-Konventionen entspricht, kann verwendet werden.

  • Jedes gcmc-Programm (G-Code-Meta-Compiler), das den NGCGUI-Konventionen für die Kennzeichnung von Variablen entspricht, kann verwendet werden. (Die ausführbare Datei gcmc muss separat installiert werden, siehe: https://www.vagrearg.org/content/gcmc)

Anmerkung

NGCGUI und PyNGCGUI implementieren die gleichen Funktionen und verarbeiten beide .ngc- und .gcmc-Dateien, die einigen NGCGUI-spezifischen Konventionen entsprechen. In diesem Dokument bezieht sich der Begriff "NGCGUI" im Allgemeinen auf beide Anwendungen.

2. Beispiel-Konfigurationen

Eine Reihe von Demonstrations-Konfigurationen sind in der sim-Verzeichnis der Sample Configurations von der LinuxCNC Konfiguration Picker angeboten befindet. Der Konfigurationspicker befindet sich im Hauptmenü des Systems: Anwendungen > CNC > LinuxCNC

Es sind Beispiele für AXIS, Touchy, Gscreen und GMOCCAPY enthalten. Diese Beispiele demonstrieren sowohl kartesische 3-Achsen-Konfigurationen (wie Fräsmaschinen) als auch Drehbank-Konfigurationen (XZ). Einige Beispiele zeigen die Verwendung einer Pop-up-Tastatur für Touchscreen-Systeme und andere Beispiele demonstrieren die Verwendung von Dateien, die für die Anwendung gcmc (G-code Meta Compiler) erstellt wurden. Die berührungsempfindlichen Beispiele zeigen auch die Einbindung eines GladeVCP-Backplot-Viewers (gremlin_view).

Die einfachste Anwendung ist die folgende:

Sample Configurations/sim/axis/ngcgui/ngcgui_simple

Ein umfassendes Beispiel für die Kompatibilität von gcmc finden Sie unter:

Sample Configurations/sim/axis/ngcgui/ngcgui_gcmc

Ein umfassendes Beispiel, das als GladeVCP-App eingebettet ist und gcmc verwendet, finden Sie unter:

Sample Configurations/sim/gscreen/ngcgui/pyngcgui_gcmc

Die Beispielsimulationskonfigurationen verwenden Bibliotheksdateien, die Beispiel-G-Code-Unterprogrammdateien (.ngc) und G-Code-Meta-Compilerdateien (.gcmc) enthalten:

  • nc_files/ngcgui_lib

    • ngcgui.ngc - Ein leicht verständliches Beispiel mit Unterroutinen

    • arc1.ngc - Kreisbogen mit Fräserradiuskompensation

    • arc2.ngc - Bogen angegeben durch Zentrum, Offset, Breite, Winkel (ruft arc1 auf)

    • backlash.ngc - Routine zur Messung eines Achsenspiels mit Wählanzeige

    • db25.ngc - erstellt einen DB25-Plug-Ausschnitt

    • gosper.ngc - eine Rekursionsdemo (FlowSnake)

    • helix.ngc - Helix- oder D-Loch-Schneiden

    • helix_rtheta.ngc - Helix oder D-Loch, die durch Radius und Winkel positioniert sind

    • hole_circle.ngc - gleichmäßig verteilte Löcher auf einem Kreis

    • ihex.ngc - internes Sechseck (hexagon)

    • iquad.ngc - internal quadrilateral

    • ohex.ngc - äußeres (engl. outside) hexagon

    • oquad.ngc - äußeres (engl. outside) quadrilateral

    • qpex_mm.ngc - Demo von qpockets (mm-basiert)

    • qpex.ngc - Demo von qpockets (zollbasiert)

    • qpocket.ngc - vierseitige Tasche (lateinisch/englisch quadrilateral pocket)

    • rectangle_probe.ngc - sondiert einen rechteckigen Bereich

    • simp.ngc - ein einfaches Beispiel für ein Unterprogramm, das zwei Kreise erzeugt

    • slot.ngc - Schlitz aus der Verbindung zweier Endpunkte

    • xyz.ngc - Maschinentrainer, der auf eine Kastenform beschränkt ist

    • Custom - Erzeugt Benutzer-angepasste Registrierkarten (engl. tabs)

    • ttt - True Type Tracer, um Texte zu erstellen, die graviert werden sollen

  • nc_files/ngcgui_lib/lathe

    • ngcgui-lathe' - Beispiel-Unterprogramm für Drehmaschinen

    • g76base.ngc - GUI für G76 Gewindebohren

    • g76diam.ngc' - Gewinde nach Haupt- und Nebendurchmesser spezifiziert

    • id.ngc - bohrt den Innendurchmesser

    • od.ngc - dreht den Außendurchmesser

    • taper-od.ngc' - dreht einen Kegel auf dem Außendurchmesser

    • Custom - Erzeugt Benutzer-angepasste Registrierkarten (engl. tabs)

  • nc_files/gcmc_lib

    • drill.gcmc - Löcher im Rechteckmuster bohren

    • square.gcmc' - einfache Demo von variablen Tags für gcmc-Dateien

    • star.gcmc - GCMC-Demo zur Veranschaulichung von Funktionen und Arrays

    • wheels.gcmc - GCMC Demo komplexer Muster

Um eine Demonstration zu versuchen, wählen Sie eine Sim-Konfiguration und starten Sie das LinuxCNC-Programm.

Wenn Sie die AXIS GUI verwenden, drücken Sie auf "Notaus" (engl. E-Stop) images/tool_estop.png und dann auf "Machine Power" images/tool_power.png und dann auf "Refefernzierfahrt aller Achsen" (engl. Home All). Wählen Sie eine NGCGUI-Registerkarte, füllen Sie alle leeren Felder mit sinnvollen Werten aus und drücken Sie auf "Feature anlegen" (engl. create feature) und dann auf "Finalize". Drücken Sie abschließend auf die Schaltfläche "Ausführen" images/tool_run.png , um die Ausführung zu beobachten. Experimentieren Sie, indem Sie mehrere Merkmale und Merkmale aus verschiedenen Registerkarten erstellen.

Um mehrere Unterprogramme zu erstellen, die in einer einzigen Datei zusammengefasst sind, gehen Sie zu jeder Registerkarte, füllen Sie die Leerstellen aus und drücken Sie "Feature erstellen". Drücken Sie nun auf "Abschließen" und beantworten Sie die Aufforderung zum Erstellen von

Andere GUIs haben eine ähnliche Funktionalität, aber die Schaltflächen und Namen können unterschiedlich sein.

Anmerkung

Die Demonstrationskonfigurationen erstellen Registerkarten für nur einige der mitgelieferten Beispiele. Jede GUI mit einem angepassten Registrierkarte kann jede der Bibliotheks-Beispiel-Subroutinen oder jede Benutzerdatei öffnen, wenn sie sich im LinuxCNC-Subroutinenpfad befindet.

Um spezielle Tastenbelegungen zu sehen, klicken Sie in eine ngcgui-Registerkarte, um den Fokus zu erhalten, und drücken Sie dann STRG-K.

Die Demonstrationsunterprogramme sollten auf den simulierten Maschinenkonfigurationen laufen, die in der Distribution enthalten sind. Ein Benutzer sollte immer das Verhalten und den Zweck eines Programms verstehen, bevor er es auf einer echten Maschine ausführt.

3. Bibliothek (engl. library)-Verzeichnisse (engl. locations)

In LinuxCNC-Installationen, die aus .deb-Paketen installiert wurden, verwenden die Simulationskonfigurationen für NGCGUI symbolische Links zu nicht vom Benutzer beschreibbaren LinuxCNC-Bibliotheken für:

  • nc_files/ngcgui_lib NGCGUI-kompatible Unterdateien

  • nc_files/ngcgui_lib/lathe NGCGUI-kompatible Drehmaschinen-Unterdateien

  • nc_files/gcmc_lib NGCGUI-gcmc-kompatible Programme

  • nc_files/ngcgui_lib/utilitysubs Hilfs-Unterprogramme

  • nc_files/ngcgui_lib/mfiles Benutzer-M-Dateien

Diese Bibliotheken werden durch INI-Datei-Elemente gefunden, in denen die Suchpfade von LinuxCNC (und NGCGUI) stehen:

[RS274NGC]
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH     = ../../nc_files/ngcgui_lib/mfiles
Anmerkung

Dabei handelt es sich um lange Zeilen (die nicht über mehrere Zeilen fortgesetzt werden), in denen die in einem Suchfeld verwendeten Verzeichnisse angegeben werden. Die Verzeichnisnamen werden durch Doppelpunkte (:) getrennt. Zwischen den Verzeichnisnamen sollten keine Leerzeichen stehen.

Ein Benutzer kann neue Verzeichnisse für seine eigenen Unterprogramme und M-Dateien erstellen und sie zu den Suchpfaden hinzufügen.

So könnte ein Benutzer beispielsweise Verzeichnisse vom Terminal aus mit den folgenden Befehlen erstellen:

mkdir /home/myusername/mysubs
mkdir /home/myusername/mymfiles

Und dann die vom System bereitgestellten Dateien in diesen vom Benutzer beschreibbaren Verzeichnisse anlegen oder dorthin kopieren. Ein Benutzer könnte zum Beispiel eine NGCGUI-kompatible Unterdatei namens:

/home/myusername/mysubs/example.ngc

Um Dateien in neuen Verzeichnissen zu verwenden, muss die INI-Datei bearbeitet werden, um die neuen Unterdateien einzuschließen und den Suchpfad/die Suchpfade zu ergänzen. Für dieses Beispiel:

[RS274NGC]
...
SUBROUTINE_PATH = /home/myusername/mysubs:../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH     = /home/myusername/mymfiles:../../nc_files/ngcgui_lib/mfiles

[DISPLAY]
...
NGCGUI_SUBFILE = example.ngc
...

LinuxCNC (und NGCGUI) verwenden die erste gefundene Datei bei der Suche nach Verzeichnissen im Suchpfad. Mit diesem Verhalten können Sie eine ngcgui_lib Unterdatei ersetzen, indem Sie eine Unterdatei mit einem identischen Namen in einem Verzeichnis platzieren, das früher in der Pfadsuche gefunden wird. Weitere Informationen finden Sie im INI-Kapitel des Integrators Manual.

4. Standalone-Nutzung

4.1. Eigenständiges NGCGUI

Zur Verwendung geben Sie in ein Terminal ein:

ngcgui --help
Usage:
  ngcgui --help | -?
  ngcgui [Options] -D <nc-Dateien Verzeichnisname>
  ngcgui [Options] -i <LinuxCNC INI Dateiname>
  ngcgui [Options]

Optionen:
  [-S subroutine_file]
  [-p preamble_file]
  [-P postamble_file]
  [-o output_file]
  [-a autosend_file] (automatisches Senden an AXIS Standard:auto.ngc)
  [--noauto] (keine automatische Übertragung an AXIS)
  [-N | --nom2] (kein m2-Terminator (% verwenden))
  [--font [big|small|fontspec]] (Voreinstellung: "Helvetica -10 normal")
  [--horiz|--vert] (Voreinstellung: --horiz)
  [--cwidth comment_width] (Breite des Kommentarfeldes)
  [--vwidth varname_width] (Breite des Feldes varname)
  [--quiet] (weniger Kommentare in der Ausgabedatei)
  [--noiframe] (Voreinstellung: Rahmen zeigt Bild an)
Anmerkung

Als eigenständige Anwendung bearbeitet NGCGUI eine einzelne Unterprogrammdatei, die mehrfach aufgerufen werden kann. Mehrere eigenständige NGCGUI-Anwendungen können unabhängig voneinander gestartet werden.

4.2. Eigenständiges (engl. standalone) PyNGCGUI

Zur Verwendung geben Sie in ein Terminal ein:

pyngcgui --help
Verwendung:
pyngcgui [Optionen] [<sub_filename>]
Optionen, die Werte erfordern:
    [-d | --demo] [0|1|2] (0: DEMO eigenständige Toplevel)
                          (1: DEMO neues Notizbuch einbetten)
                          (2: DEMO innerhalb eines bestehenden Notizbuchs einbetten)
    [-S | --subfile <sub_filename>]
    [-p | --preamble <preamble_filename>]
    [-P | --postamble <postamble_filename>]
    [-i | --ini <inifile_name>]
    [-a | --autofile <auto_filename>]
    [-t | --test <testno>]
    [-K | --keyboardfile <glade_file>] (benutzerdefinierte popupkeyboard glade-Datei verwenden)
Solo-Optionen:
    [-v | --verbose]
    [-D | --debug]
    [-N | --nom2] (kein m2-Terminator (% verwenden))
    [-n | --noauto] (speichern, aber Ergebnis nicht automatisch senden)
    [-k | --keyboard] (Standard-Popupkeybaord verwenden)
    [-s | --sendtoaxis] (generierte NGC-Datei an Achsen-GUI senden)
Anmerkungen:
      Ein Satz von Dateien besteht aus einer Präambel, einer Unterdatei und einer Postambel.
      Die Präambel und Postambel sind optional.
      Ein Satz von Dateien kann über cmdline angegeben werden.
      Mehrere Dateisätze können über eine INI-Datei angegeben werden.
      Wenn --ini NICHT angegeben ist:
         Suche nach einem laufenden LinuxCNC und verwende dessen INI-Datei
Anmerkung

Als eigenständige Anwendung kann PyNGCGUI eine INI-Datei (oder eine laufende LinuxCNC-Anwendung) lesen, um Registerkarten für mehrere Unterdateien zu erstellen.

5. NGCGUI einbetten

5.1. NGCGUI in AXIS einbetten

Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY]. (Siehe weitere Abschnitte unten für zusätzlich benötigte Elemente)

  • TKPKG = Ngcgui 1.0 - das NGCGUI-Paket

  • TKPKG = Ngcguittt 1.0 - das True Type Tracer-Paket zum Generieren von Text für die Gravur (optional, muss TKPKG = Ngcgui folgen).

  • NGCGUI_FONT = Helvetica -12 normal - Legt die verwendete Schriftart fest

  • NGCGUI_PREAMBLE = in_std.ngc' - Die Präambel-Datei, die am Anfang des Unterprogramms hinzugefügt wird. Bei der Verkettung mehrerer Unterprogramme wird sie nur einmal hinzugefügt.

  • NGCGUI_SUBFILE = simp.ngc - Erstellt eine Registerkarte aus der benannten Unterroutine.

  • NGCGUI_SUBFILE = "" - Erzeugt eine benutzerdefinierte Registerkarte

  • #NGCGUI_OPTIONS = opt1 opt2 … - NGCGUI-Optionen:

    • nonew — Verhindert die Erstellung einer neuen benutzerdefinierten Registerkarte

    • noremove — Verbietet das Löschen einer Registerkartenseite

    • noauto — Nicht automatisch ausführen (makeFile, dann manuell ausführen)

    • noiframe — Kein internes Bild, Bild auf separater oberster Ebene

  • TTT = truetype-tracer - Name des truetype tracer-Programms (es muss im Benutzer-PATH sein)

  • TTT_PREAMBLE = in_std.ngc - Optional, gibt den Dateinamen der Präambel an, die für ttt erstellten Unterdateien verwendet wird. (alternativ: mm_std.ngc)

Anmerkung

Die optionalen truetype-tracer-Elemente werden verwendet, um eine NGCGUI-kompatible Registerkarte anzugeben für die Anwendung von truetype-tracer. Die truetype-tracer-Anwendung muss unabhängig installiert werden und sich im Benutzer-PATH befinden.

5.2. PyNGCGUI als GladeVCP-Registerkarte in ein GUI einbetten

Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY] zur Verwendung mit den grafischen Benutzeroberflächen AXIS, Gscreen oder Touchy. (Weitere benötigte Elemente finden Sie in den folgenden Abschnitten)

EMBED_ Items
  • EMBED_TAB_NAME = PyNGCGUI - Name, der auf der eingebetteten Registerkarte erscheinen soll

  • EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui - ruft GladeVCP auf

  • EMBED_TAB_LOCATION = name_of_location - wo sich die eingebettete Seite befindet

Anmerkung

Der EMBED_TAB_LOCATION-Spezifizierer wird nicht für die AXIS-GUI verwendet. Während PyNGCGUI in AXIS eingebettet werden kann, ist die Integration vollständiger, wenn NGCGUI verwendet wird (mit TKPKG = Ngcgui 1.0). Um die EMBED_TAB_LOCATION für andere GUIs festzulegen, vgl. den Abschnitt zu DISPLAY des INI-Konfigurationskapitels.

Anmerkung

Das Truetype Tracer GUI-Frontend ist derzeit nicht für GladeVCP-Anwendungen verfügbar.

5.3. Zusätzliche INI-Datei-Elemente, die für NGCGUI oder PyNGCGUI erforderlich sind

Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY] für jede GUI, die entweder NGCGUI oder PyNGCGUI einbindet.

  • NGCGUI_FONT = Helvetica -12 normal' - gibt den Namen und die Größe der Schriftart an, normal|fett (engl. bold)

  • NGCGUI_PREAMBLE = in_std.ngc' - die Präambel-Datei, die den Unterprogrammen vorangestellt wird. Bei der Verkettung mehrerer gemeinsamer Subroutinenaufrufe wird diese Präambel nur einmal hinzugefügt. Für mm-basierte Maschinen verwenden Sie mm_std.ngc

  • NGCGUI_SUBFILE = filename1.ngc - erstellt eine Registerkarte aus der Unterroutine filename1

  • NGCGUI_SUBFILE = filename2.ngc - erstellt eine Registerkarte aus der Unterroutine filename2

  • … usw.

  • NGCGUI_SUBFILE = gcmcname1.gcmc - erstellt eine Registerkarte aus der Datei gcmcname1

  • NGCGUI_SUBFILE = gcmcname2.gcmc - erstellt eine Registerkarte aus der Datei gcmcname2

  • … usw.

  • NGCGUI_SUBFILE = "" - erstellt eine benutzerdefinierte Registerkarte, die jede Unterroutine im Suchpfad öffnen kann

  • NGCGUI_OPTIONS = opt1 opt2 … - NGCGUI-Optionen

    • nonew - Erstellen eines neuen benutzerdefinierten Tabs nicht zugelassen

    • noremove - das Entfernen von Tab-Seiten nicht zugelassen

    • noauto - kein automatisches Senden (makeFile verwenden, dann speichern oder manuell senden)

    • noiframe - kein internes Bild, Bilder auf separatem Top-Level-Widget anzeigen

    • nom2 - nicht mit m2 abschließen, sondern %-Terminator verwenden. Diese Option beseitigt alle Nebeneffekte der m2-Terminierung

  • GCMC_INCLUDE_PATH = dirname1:dirname2' - sucht Verzeichnisse nach gcmc-Include-Dateien

Dies ist ein Beispiel für die Einbettung von NGCGUI in AXIS. Die Unterprogramme müssen sich in einem Verzeichnis befinden, das durch den [RS274NGC]SUBROUTINE_PATH angegeben ist. Einige Beispielsubroutinen verwenden andere Subroutinen, daher sollten Sie sicherstellen, dass Sie die Abhängigkeiten, falls vorhanden, in einem SUBROUTINE_PATH-Verzeichnis haben. Einige Unterprogramme können benutzerdefinierte M-Dateien verwenden, die sich in einem durch [RS274NGC]USER_M_PATH angegebenen Verzeichnis befinden müssen.

Der G-Code-Meta-Compiler (gcmc) kann Anweisungen wie diese enthalten:

include("filename.inc.gcmc");

Standardmäßig schließt gcmc das aktuelle Verzeichnis ein, das für LinuxCNC das Verzeichnis ist, das die LinuxCNC INI-Datei enthält. Zusätzliche Verzeichnisse können der gcmc-Suchreihenfolge mit dem Element GCMC_INCLUDE_PATH vorangestellt werden.

Beispiel einer AXIS-GUI-basierten INI
[RS274NGC]
...
SUBROUTINE_PATH   = ../../nc_files/ngcgui_lib:../../ngcgui_lib/utilitysubs
USER_M_PATH       = ../../nc_files/ngcgui_lib/mfiles

[DISPLAY]
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# Ngcgui muss vor Ngcguittt stehen

NGCGUI_FONT       = Helvetica -12 normal
# nur Dateinamen angeben, Dateien müssen sich im [RS274NGC]SUBROUTINE_PATH befinden
NGCGUI_PREAMBLE   = in_std.ngc
NGCGUI_SUBFILE    = simp.ngc
NGCGUI_SUBFILE    = xyz.ngc
NGCGUI_SUBFILE    = iquad.ngc
NGCGUI_SUBFILE    = db25.ngc
NGCGUI_SUBFILE    = ihex.ngc
NGCGUI_SUBFILE    = gosper.ngc
# angeben von "" für eine benutzerdefinierte Registerkarte
NGCGUI_SUBFILE    = ""
#NGCGUI_SUBFILE   = "" verwenden, wenn ein Bildrahmen angegeben ist,
# wenn das Öffnen anderer Dateien erforderlich ist
# Bilder werden in ein Fenster der obersten Ebene gestellt
NGCGUI_OPTIONS    =
#NGCGUI_OPTIONS   = opt1 opt2 ...
# opt items:
#   nonew      -- disallow making a new custom tab
#   noremove   -- disallow removing any tab page
#   noauto     -- no auto send (makeFile, then manually send)
#   noiframe   -- no internal image, image on separate top level
GCMC_INCLUDE_PATH = /home/myname/gcmc_includes

TTT               = truetype-tracer
TTT_PREAMBLE      = in_std.ngc

PROGRAM_PREFIX    = ../../nc_files
Anmerkung

Die obige Datei ist keine vollständige AXIS GUI INI — die gezeigten Elemente sind diejenigen, die von NGCGUI verwendet werden. Viele zusätzliche Elemente werden von LinuxCNC erforderlich, um eine vollständige INI-Datei haben.

5.4. Truetype Tracer

Ngcgui_ttt bietet Unterstützung für truetype-tracer (v4). Es erstellt eine AXIS-Registerkarte, die es dem Benutzer ermöglicht, eine neue NGCGUI-Registerkarte zu erstellen, nachdem er Text eingegeben und eine Schriftart sowie andere Parameter ausgewählt hat. (Truetype-tracer muss unabhängig installiert werden).

Um ngcgui_ttt in AXIS einzubetten, geben Sie zusätzlich zu den NGCGUI-Elementen die folgenden Elemente an:

Element: [DISPLAY]TKPKG = Ngcgui_ttt version_number
Beispiel: [DISPLAY]TKPKG = Ngcgui_ttt 1.0
Hinweis: Obligatorisch, gibt das Laden von ngcgui_ttt in einer AXIS-Registerkarte namens ttt.
         Muss auf den Eintrag TKPKG = Ngcgui folgen.

Element: [DISPLAY]TTT = pfad_zum_truetype-tracer
Beispiel: [DISPLAY]TTT = truetype-tracer
Note: Optional, wenn nicht angegeben, wird der Pfad /usr/local/bin/truetype-tracer versucht.
         Angabe mit absolutem Pfadnamen oder als einfacher ausführbarer Befehl.
         In diesem Fall wird die PATH-Umgebung des Benutzers verwendet, um das Programm zu finden.

Element: [DISPLAY]TTT_PREAMBLE = preamble_filename
Beispiel: [DISPLAY]TTT_PREAMBLE = in_std.ngc
Hinweis: Optional, gibt den Dateinamen der Präambel an, für die von ttt erstellten Unterdateien.

5.5. INI-Datei Pfad-Spezifikationen

NGCGUI verwendet den LinuxCNC-Suchpfad, um Dateien zu finden. Der Suchpfad beginnt mit dem Standardverzeichnis, das angegeben wird durch:

[DISPLAY]PROGRAM_PREFIX = verzeichnis_name

gefolgt von mehreren Verzeichnissen, angegeben durch:

[RS274NGC]SUBROUTINE_PATH = Verzeichnis1_Name:Verzeichnis1_Name:Verzeichnis3_Name ...
Verzeichnisse

Verzeichnisse (engl. directories) können als absolute Pfade oder relative Pfade angegeben werden.

  • Beispiel: [DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files

  • Beispiel: [DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files

  • Beispiel: [DISPLAY]PROGRAM_PREFIX = .. /.. /nc_files

Absolute Pfade

Ein absoluter Pfad, der mit einem "/" beginnt, gibt einen vollständigen Dateisystemstandort an. Ein Pfad, der mit "~/" beginnt, gibt einen Pfad an, der im Home-Verzeichnis des Benutzers beginnt. Ein Pfad, der mit "~Benutzername/" beginnt, legt einen Pfad fest, der im Home-Verzeichnis des Benutzers beginnt.

Relative Pfade

Relative Pfade basieren auf dem Startverzeichnis, also dem Verzeichnis, das die INI-Datei enthält. Die Verwendung relativer Pfade kann das Verschieben von Konfigurationen erleichtern, erfordert aber ein gutes Verständnis der Linux-Pfadangaben.

  • ./d0 ist dasselbe wie d0, z. B. ein Verzeichnis mit dem Namen d0 im Startup-Verzeichnis

  • ../d1 bezieht sich auf ein Verzeichnis d1 im übergeordneten Verzeichnis

  • ../../d2 verweist auf ein Verzeichnis d2 im übergeordneten Verzeichnis des übergeordneten Verzeichnisses

  • ../../../d3 usw.

Mehrere Verzeichnisse können mit [RS274NGC]SUBROUTINE_PATH angegeben werden, indem sie durch Doppelpunkte getrennt werden. Das folgende Beispiel veranschaulicht das Format für mehrere Verzeichnisse und zeigt die Verwendung von relativen und absoluten Pfaden.

Beispiel für mehrere Verzeichnisse:
[RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs:/tmp/tmpngc

Dies ist eine lange Zeile, fahren Sie nicht in mehreren Zeilen fort. Wenn LinuxCNC und/oder NGCGUI nach Dateien suchen, wird die erste Datei, die bei der Suche gefunden wird, verwendet.

LinuxCNC (und NGCGUI) muss in der Lage sein, alle Unterprogramme einschließlich der Hilfsroutinen zu finden, die aus den NGCGUI Unterdateien aufgerufen werden. Es ist zweckmäßig, Utility-Subs in einem separaten Verzeichnis zu platzieren, wie im obigen Beispiel angegeben.

Die Distribution enthält das Verzeichnis ngcgui_lib und Demodateien für Präambeln, Subdateien, Postambeln und Hilfsdateien. Um das Verhalten der Dateien zu ändern, können Sie eine beliebige Datei kopieren und sie an einer früheren Stelle des Suchpfads platzieren. Das erste Verzeichnis, das durchsucht wird, ist [DISPLAY]PROGRAM_PREFIX. Sie können dieses Verzeichnis verwenden, aber es ist besser, eigene Verzeichnisse zu erstellen und sie an den Anfang des [RS274NGC]SUBROUTINE_PATH zu stellen.

Im folgenden Beispiel werden die Dateien in /home/myname/linuxcnc/mysubs vor den Dateien in ../../nc_files/ngcgui_lib gefunden.

Beispiel für das Hinzufügen eines Benutzerverzeichnisses:
[RS274NGC]SUBROUTINE_PATH = /home/myname/linuxcnc/mysubs:../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs

Neue Benutzer können versehentlich versuchen, Dateien zu verwenden, die nicht so strukturiert sind, dass sie mit den Anforderungen von NGCGUI kompatibel sind. NGCGUI wird wahrscheinlich zahlreiche Fehler melden, wenn die Dateien nicht nach seinen Konventionen kodiert sind. Gute Praxis legt nahe, dass ngcgui-kompatible Unterdateien in ein dafür vorgesehenes Verzeichnis gelegt werden sollten und dass Präambel-, Postambel- und Hilfsdateien in separaten Verzeichnissen liegen sollten, um Versuche, sie als Unterdateien zu verwenden, zu unterbinden. Dateien, die nicht für die Verwendung als Unterdateien vorgesehen sind, können einen speziellen Kommentar enthalten: "(not_a_subfile)", so dass NGCGUI sie automatisch mit einer entsprechenden Meldung zurückweist.

5.6. Zusammenfassung der Details der INI-Datei für die Verwendung von NGCGUI

[RS274NGC]SUBROUTINE_PATH = dirname1:dirname2:dirname3 …

Beispiel: [RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
Hinweis: Optional, aber sehr nützlich, um Unterdateien und Utility-Dateien zu organisieren.

[RS274NGC]USER_M_PATH = dirname1:dirname2:dirname3 …

Beispiel: [RS274NGC]USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
Hinweis: Optional, wird benötigt, um benutzerdefinierte M-files zu finden.

[DISPLAY]EMBED_TAB_NAME = Name, der auf der eingebetteten Registerkarte angezeigt wird

Beispiel: [DISPLAY]EMBED_TAB_NAME = Pyngcgui
Hinweis: Die Einträge: EMBED_TAB_NAME, EMBED_TAB_COMMAND, EMBED_TAB_LOCATION definieren eine eingebettete Anwendung für mehrere LinuxCNC-GUIs.

[DISPLAY]EMBED_TAB_COMMAND = Programmname gefolgt von Argumenten

Beispiel: [DISPLAY]EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui
Hinweis: Für GladeVCP-Anwendungen siehe das GladeVCP Kapitel.

[DISPLAY]EMBED_TAB_LOCATION = Name_des_Ortes (engl. location)

Beispiel: [DISPLAY]EMBED_TAB_LOCATION = notebook_main
Hinweis: Siehe Beispiel-INI-Dateien für mögliche Orte.
Nicht erforderlich für die AXIS GUI.

[DISPLAY]PROGRAM_PREFIX = Verzeichnisname

Beispiel: [DISPLAY]PROGRAM_PREFIX = ../../nc_files
Hinweis: Erforderlich, benötig für zahlreiche LinuxCNC-Funktionen.
Es ist das erste Verzeichnis, das bei der Suche nach Dateien verwendet wird.

[DISPLAY]TKPKG = NGCGUI version_number

Beispiel: [DISPLAY]TKPKG = Ngcgui 1.0
Hinweis: Nur für AXIS GUI-Einbettung erforderlich.
Spezifiziert das Laden von NGCGUI AXIS Registerkarten.

[DISPLAY]NGCGUI_FONT = Schriftart_deskriptor

Beispiel: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal
Hinweis: Optional, font_descriptor ist ein tcl-kompatibler Font-Spezifikator mit Elementen für fonttype -fontsize fontweight.
Voreinstellung ist: Helvetica -10 normal.
Kleinere Schriftgrößen können für kleine Bildschirme nützlich sein.
Größere Schriftgrößen können für Touchscreen-Anwendungen hilfreich sein.

[ANZEIGE] NGCGUI_SUBFILE = subfile_filename

Beispiel: [DISPLAY]NGCGUI_SUBFILE = simp.ngc
Beispiel: [ANZEIGE]NGCGUI_SUBFILE = square.gcmc
Beispiel: [DISPLAY]NGCGUI_SUBFILE = "" + Beispiel: [DISPLAY]NGCGUI_SUBFILE = ""
Hinweis: Verwenden Sie ein oder mehrere Elemente, um NGCGUI-kompatible Unterdateien oder gcmc-Programme anzugeben, die beim Start eine Registerkarte benötigen.
Eine "Benutzerdefinierte" Registerkarte wird erstellt, wenn der Dateiname "" lautet.
Ein Benutzer kann eine "Custom"-Registerkarte verwenden, um das Dateisystem zu durchsuchen und Präambel-, Subfile- und Postambel-Dateien zu identifizieren.

[DISPLAY]NGCGUI_PREAMBLE = preamble_filename

Beispiel: [DISPLAY]NGCGUI_PREAMBLE = in_std.ngc
Hinweis_: Optional, wenn angegeben, wird die Datei einer Unterdatei vorangestellt.
Dateien, die mit "Benutzerdefinierten" Registerkarten erstellt werden, verwenden die mit der Seite angegebene Preamble.

[ANZEIGE] NGCGUI_POSTAMBLE = postamble_filename

Beispiel: [DISPLAY]NGCGUI_PREAMBLE = in_std.ngc
Hinweis_: Optional, wenn angegeben, wird die Datei einer Unterdatei vorangestellt.
Dateien, die mit "Benutzerdefinierten" Registerkarten erstellt werden, verwenden die mit dieser Seite angegebene Postamble ("Abspann").

[DISPLAY]NGCGUI_OPTIONS = opt1 opt2 …

Beispiel: [DISPLAY]NGCGUI_OPTIONS = nonew noremove
Hinweis: Mehrere Optionen werden durch Leerzeichen getrennt.
Standardmäßig konfiguriert NGCGUI die Registerkarten derart, dass:
1) ein Benutzer neue Registerkarten erstellen kann;
2) ein Benutzer Registerkarten entfernen kann (mit Ausnahme der letzten verbleibenden Registerkarte);
3) fertiggestellte Dateien automatisch an LinuxCNC gesendet werden;
4) ein Bildrahmen (iframe) wird zur Verfügung gestellt, um ein Bild für die Unterdatei anzuzeigen (falls ein Bild bereitgestellt wird);
5) die an LinuxCNC gesendete NGCGUI Ergebnisdatei wird mit einem M2 beendet (und verursacht M2 Nebeneffekte).

Die Optionen nonew, noremove, noauto, noiframe, nom2 schalten diese Standardverhaltensweisen jeweils aus.

Standardmäßig wird, wenn eine Bilddatei (.png,.gif,jpg,pgm) in demselben Verzeichnis wie die Unterdatei gefunden wird, das Bild im iframe angezeigt. Bei Angabe der Option "noiframe" werden zusätzliche Schaltflächen zur Verfügung gestellt für die Auswahl von Präambel, Subdatei und Postambel sowie zusätzliche Kontrollkästchen. Die Auswahl der Kontrollkästchen sind immer mit speziellen Tasten verfügbar:
Strg-R Umschalten von "Werte beim Lesen von Subfiles beibehalten",
Strg-E Umschalten "Unterprogramm erweitern",
Strg-a Umschalten "Automatisches Senden",
Strl-k listet alle Tasten und Funktionen auf.

Wenn noiframe angegeben ist und eine Bilddatei gefunden wird, so wird das Bild in einem separaten Fenster angezeigt und alle Funktionen sind auf der Registerkarte verfügbar. Die NGCGUI_OPTIONS gelten für alle NGCGUI-Registerkarten mit der Ausnahme, dass die Optionen nonew, noremove und noiframe nicht für durch den Anwender gestaltete (engl. custom) Registerkarten gelten. Verwenden Sie keine "Custom"-Registerkarten, wenn Sie die Möglichkeit des Benutzers einschränken wollen, Unterdateien auszuwählen oder zusätzliche Registerkarten zu erstellen.

[DISPLAY]GCMC_INCLUDE_PATH = dirname1:dirname2:…

Beispiel: [DISPLAY]GCMC_INCLUDE_PATH = /home/myname/gcmc_includes:/home/myname/gcmc_includes2
Hinweis: Optional, jedes Verzeichnis wird einbezogen, wenn gcmc aufgerufen wird mit der Option: --include dirname.

FIXME Keyboard shortcuts do not work in version _fr.

6. Dateianforderungen für NGCGUI-Kompatibilität

6.1. Anforderungen an eine G-code-Unterroutine (.ngc) in einer Datei

Eine NGCGUI-kompatible Unterdatei enthält eine einzelne Unterprogrammdefinition. Der Name der Subroutine muss derselbe sein wie der Dateiname (ohne das Suffix .ngc). LinuxCNC unterstützt benannte oder nummerierte Subroutinen, aber nur benannte Subroutinen sind mit NGCGUI kompatibel. Für weitere Informationen siehe das Kapitel O-Codes.

Die erste unkommentierte Zeile sollte eine sub-Anweisung sein.
Die letzte unkommentierte Zeile sollte eine endsub-Anweisung sein.

examp.ngc:
(info: info_text_zu_erscheinen_oben_auf_der_Tabellenseite)
; Kommentarzeile beginnend mit Semikolon
( Kommentarzeile mit Klammern)
o<examp> sub
  KÖRPER_DER_UNTERROUTINE
o<examp> endsub
; Kommentarzeile beginnend mit Semikolon
( Kommentarzeile mit Klammern)

Der Hauptteil (Körper, engl. body) des Unterprogramms sollte mit einer Reihe von Anweisungen beginnen, die lokale benannte Parameter für jeden für den Unterprogrammaufruf erwarteten Positionsparameter definieren. Diese Definitionen müssen fortlaufend sein, beginnend mit #1 und endend mit der zuletzt verwendeten Parameternummer. Für jeden dieser Parameter müssen Definitionen angegeben werden (keine Auslassungen).

Nummerierung der Parameter
#<xparm> = #1
#<yparm> = #2
#<zparm> = #3

LinuxCNC betrachtet alle nummerierten Parameter im Bereich #1 bis #30 als Aufrufparameter, so dass NGCGUI Eingabefelder für jedes Auftreten von Parametern in diesem Bereich zur Verfügung stellt. Es ist eine gute Praxis, um die Verwendung von nummerierten Parametern #1 bis #30 überall sonst in der Subroutine zu vermeiden. Die Verwendung lokaler, benannter Parameter wird für alle internen Variablen empfohlen.

Jede definierende Anweisung kann optional einen speziellen Kommentar und einen Standardwert für den Parameter enthalten.

Ausdruck/Anweisung (engl. statement) Prototyp
#<vname> = #n (=Standard_Wert)
oder
#<vname> = #n (kommentar_text)
oder
#<vname> = #n (=Standardwert_Kommentar_text)
Beispiele für Parameter
#<xparm> = #1 (=0.0)
#<yparm> = #2 (Ystart)
#<zparm> = #3 (=0.0 Z Start Einstellung)

Wenn ein default_value angegeben ist, wird dieser beim Start in das Eingabefeld für den Parameter eingetragen. Wenn comment_text angegeben ist, wird dieser anstelle des Parameternamens zur Identifizierung der Eingabe verwendet.

Globale benannte Parameter

Hinweise zu globalen benannten Parametern und NGCGUI:

(globale benannte Parameter haben einen führenden Unterstrich im Namen, wie #<_irgendeinglobalername>)

Wie in vielen Programmiersprachen ist die Verwendung von globalen Parametern mächtig, kann aber oft zu unerwarteten Konsequenzen führen. In LinuxCNC werden bestehende globale benannte Parameter bei der Ausführung von Unterprogrammen gültig sein und Unterprogramme können globale benannte Parameter ändern oder erstellen.

Von der Übergabe von Informationen an Unterprogramme unter Verwendung globaler benannter Parameter wird abgeraten, da eine solche Verwendung die Einrichtung und Pflege eines genau definierten globalen Kontexts erfordert, der schwer zu pflegen ist. Die Verwendung der nummerierten Parameter Nr. 1 bis Nr. 30 als Unterprogramm-Eingaben sollte ausreichen, um eine breite Palette von Design-Anforderungen zu erfüllen.

FIXME are input global named parameters supported or not ?

NGCGUI unterstützt einige globale benannte Eingabeparameter, aber deren Verwendung ist veraltet und hier nicht dokumentiert.

Während von global benannten Eingabeparametern abgeraten wird, müssen LinuxCNC-Subroutinen global benannte Parameter für die Rückgabe von Ergebnissen verwenden. NGCGUI-kompatible Unterdateien sind auf die Verwendung in der Benutzeroberfläche ausgerichtet. Daher sind Rückgabewerte keine übliche Anforderung. Allerdings ist NGCGUI als Testwerkzeug für Subroutinen nützlich, die global benannte Parameter zurückgeben, und es ist üblich, dass NGCGUI-kompatible Subdateien Utility-Subroutinen aufrufen, die Ergebnisse mit global benannten Parametern zurückgeben.

Um diese Verwendungen zu unterstützen, ignoriert NGCGUI globale benannte Parameter, die einen Doppelpunkt (:) in ihrem Namen enthalten. Die Verwendung des Doppelpunkts (:) im Namen verhindert, dass NGCGUI Eingabefelder für diese Parameter erstellt.

Beispiel für globale benannte Parameter
o<examp> sub
...
#<_examp:result> = #5410 (liefert den aktuellen Werkzeugdurchmesser)
...
o<helper> call [#<x1>] [#<x2>] (Aufruf einer Subroutine)
#<xresult> = #<_helper:answer> (lokalisiert sofort das globale Ergebnis des Helfers)
#<_helper:answer> = 0.0 (löscht den globalen benannten Parameter, der von der Subroutine verwendet wird)
...
o<examp> endsub

Im obigen Beispiel befindet sich das Unterprogramm in einer separaten Datei namens helper.ngc. Die helper-Routine liefert ein Ergebnis in einem globalen benannten Parameter namens #<_helper:answer.

Aus Gründen der guten Praxis lokalisiert die aufrufende Teildatei das Ergebnis sofort für die Verwendung an anderer Stelle in der Teildatei. Es wird der globale benannte Parameter genullt, der für die Rückgabe des Ergebnisses verwendet wird, um seine unbeabsichtigte Verwendung an anderer Stelle im globalen Kontext zu verhindern. (Ein Nullifizierungswert von 0,0 ist nicht immer eine gute Wahl).

NGCGUI unterstützt die Erstellung und Verkettung von mehreren Features für ein Subfile und für mehrere Subfiles. Es ist manchmal nützlich, die Reihenfolge der Unterdateien zur Laufzeit zu bestimmen, daher fügt NGCGUI einen speziellen globalen Parameter ein, der in Unterprogrammen getestet werden kann. Der Parameter heißt #<_feature:>. Sein Wert beginnt mit dem Wert 0 und wird für jedes hinzugefügte Feature inkrementiert.

Zusatzfunktionen

Ein spezieller info-Kommentar kann überall in einer NGCGUI-kompatiblen Unterdatei eingefügt werden. Das Format ist:

(info: info_text)

Der info_text wird im oberen Bereich der Registerkarte NGCGUI in AXIS angezeigt.

Dateien, die nicht für die Verwendung als Unterdateien vorgesehen sind, können einen speziellen Kommentar enthalten, so dass NGCGUI sie automatisch mit einer entsprechenden Meldung zurückweist.

(not_a_subfile)

Eine optionale Bilddatei (.png,.gif,.jpg,.pgm) kann eine Unterdatei begleiten. Die Bilddatei kann zur Verdeutlichung der von der Teildatei verwendeten Parameter beitragen. Die Bilddatei sollte sich im gleichen Verzeichnis wie die Unterdatei befinden und den gleichen Namen mit einem entsprechenden Bildsuffix haben, z.B. könnte die Unterdatei example.ngc von einer Bilddatei examp.png begleitet werden. NGCGUI versucht, große Bilder durch Subsampling auf eine Größe mit einer maximalen Breite von 320 und einer maximalen Höhe von 240 Pixeln zu verkleinern.

Keine der Konventionen, die für die Herstellung einer NGCGUI-kompatiblen Subdatei erforderlich sind, schließen ihre Verwendung als allgemeine Subroutinendatei für LinuxCNC aus.

Die LinuxCNC-Distribution enthält eine Bibliothek (ngcgui_lib Verzeichnis), die sowohl Beispiel NGCGUI-kompatiblen Subdateien und Utility-Dateien, um die Funktionen von LinuxCNC Subroutinen und NGCGUI Verwendung zu veranschaulichen enthält. Eine weitere Bibliothek (gcmc_lib) bietet Beispiele für Unterprogrammdateien für den G-Code-Meta-Compiler (gcmc).

Weitere benutzerdefinierte Subroutinen finden Sie im Forum im Abschnitt zu Subroutinen.

6.2. Gcode-Meta-Compiler-Dateianforderungen (.gcmc)

Dateien für den Gcode-Meta-Compiler (gcmc) werden von NGCGUI gelesen und es werden Eingabefelder für die in der Datei markierten Variablen erstellt. Wenn ein Feature für die Datei fertiggestellt ist, übergibt NGCGUI die Datei als Eingabe an den gcmc-Compiler und, wenn die Kompilierung erfolgreich ist, wird die resultierende G-Code-Datei an LinuxCNC zur Ausführung gesendet. Die resultierende Datei wird als Single-File-Subroutine formatiert; .gcmc-Dateien und .ngc-Dateien können von NGCGUI gemischt werden.

Die Variablen, die für die Aufnahme in NGCGUI identifiziert wurden, werden mit Zeilen markiert, die dem gcmc-Compiler als Kommentare erscheinen.

Formate für variable Tags
//ngcgui: varname1 =
//ngcgui: varname2 = value2
//ngcgui: varname3 = value3, label3;
Beispiele für Variablen-Tags
//ngcgui: zsafe =
//ngcgui: feedrate = 10
//ngcgui: xl = 0, x limit

In diesen Beispielen hat das Eingabefeld für varname1 keinen Standardwert, das Eingabefeld für varname2 hat den Standardwert 2 und das Eingabefeld für varname 3 hat den Standardwert 3 und die Bezeichnung label3 (statt varname3). Die Standardwerte müssen Zahlen sein.

Um die Änderung gültiger Zeilen in einer gcmc-Datei zu erleichtern, werden alternative Tag-Zeilenformate akzeptiert. Die alternativen Formate ignorieren abschließende Semikolons (;) und abschließende Kommentarzeichen (//). Mit dieser Bestimmung ist es oft möglich, einfach das //ngcgui: Tag zu bestehenden Zeilen in einer .gcmc-Datei hinzuzufügen.

Alternative Variablen-Tag-Formate
//ngcgui: varname2 = value2;
//ngcgui: varname3 = value3; //, label3;
Beispiele für alternative Variablen-Tags
//ngcgui: feedrate = 10;
//ngcgui: xl = 0; //, x limit

Eine Info-Zeile, die oben auf einer Registerkarte erscheint, kann optional mit einer Zeile mit der Kennzeichnung als:

Info-Tag
//ngcgui: info: text_to_appear_at_top_of_tab_page

Falls erforderlich, können Optionen mit einem Zeilen-Tag an den gcmc-Compiler übergeben werden:

Option line tag format
//ngcgui: -option_name [ [=] option_value]
Beispiele für Options-Zeilen-Tags
//ngcgui: -I
//ngcgui: --imperial
//ngcgui: --precision 5
//ngcgui: --precision=6

Die Optionen für gcmc sind mit dem Terminalbefehl verfügbar:

gcmc --help

Ein gcmc-Programm verwendet standardmäßig den metrischen Modus. Mit der Option setting kann der Modus auf Zoll eingestellt werden:

//ngcgui: --imperial

Eine eventuell verwendete Präambel-Datei kann einen Modus (g20 oder g21) festlegen, der mit dem von einer gcmc-Datei verwendeten Modus kollidiert. Um sicherzustellen, dass der gcmc-Programmmodus in Kraft ist, fügen Sie die folgende Anweisung in die .gcmc-Datei ein:

include("ensure_mode.gcmc")

und geben Sie den richtigen Pfad für gcmc include_files in der INI-Datei an, zum Beispiel:

[DISPLAY]
GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib

7. DB25 Beispiel

Im Folgenden wird eine DB25 Unterroutine gezeigt. Auf dem ersten Foto sehen Sie, wo Sie die Lücken für jede Variable ausfüllen.

images/ngcgui-db25-1.png

Dieses Foto zeigt den Backplot der DB25-Subroutine.

images/ngcgui-db25-2.png

Dieses Foto zeigt die Verwendung der neuen Schaltfläche und der benutzerdefinierten Registerkarte zur Erstellung von drei DB25-Ausschnitten in einem Programm.

images/ngcgui-db25-3.png

8. Erstellen eines Unterprogramms

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

  • Die Datei muss sich in dem Unterverzeichnis befinden, auf das in der INI-Datei verwiesen wird.

  • 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.

Unterprogramm-Skelett Beispiel
(info: simp -- simple exemple de sous-programme -- Ctrl-U pour éditer)
o<simp> sub
  #<ra> = #1 (=.6 Rayon A) ;Beispiel für einen Parameter mit einem Kommentar
  #<radius_b> = #2 (=0.4) ;Beispiel für einen Parameter ohne Kommentar
  #<feedrate> = #3 (Feedrate) ;Beispiel für einen Parameter ohne Voreinstellung
  g0x0y0z1
  g3 i#<ra> f#<feedrate>
  g3 i[0-#<Radius_b>]
o<simp> endsub

vim: set syntax=asciidoc: