/ docs / src / gui / ngcgui_fr.txt
ngcgui_fr.txt
  1  :lang: fr
  2  :toc:
  3  
  4  = L'utilitaire graphique NGCGUI
  5  
  6  [[cha:ngcgui]]
  7  
  8  image::images/ngcgui_fr.png[]
  9  
 10  == Vue d'ensemble
 11  
 12  * NGCGUI est un utilitaire pour écrire et utiliser les sous-programmes avec
 13  LinuxCNC.
 14  * NGCGUI peut être utilisé en autonome ou intégré, dans ce dernier cas,
 15  il crée des onglets multiples sur la page de l'interface graphique Axis.
 16  
 17  Ngcgui est un outil puissant pour construire les programmes de G-code en
 18  sous-programmes.
 19  
 20  * Les sous-programmes peuvent être concaténés pour fournir un programme de
 21  G-code complet.
 22  * De multiples instances d'un sous-programme peuvent être utilisées pour
 23  fournir la même tâche à différents emplacements sur la même pièce. 
 24  * N'importe quel G-code valide peut être utilisé dans un sous-programme.
 25  * De nouveaux sous-programmes peuvent être ajoutés à la volée.
 26  
 27  == Configurations fournies en exemple.
 28  
 29  Trois configurations sont fournies, elles se trouve dans le répertoire _sim_
 30  du sélecteur de configuration de LinuxCNC. Le sélecteur de configuration se
 31  trouve quand à lui dans le menu _Applications → CNC → LinuxCNC_.
 32  
 33  * _ngcgui_ - Un exemple facile à comprendre utilisant ces sous-programmes:
 34  ** _simp_ - Un exemple simple créant deux cercles.
 35  ** _xyz_ - Crée une boîte basée sur deux coins opposés.
 36  ** _iquad_ - Crée un quadrilatère interne.
 37  ** _db25_ - Crée la découpe pour une fiche DB25.
 38  ** _ihex_ - Crée un hexagone interne.
 39  ** _gosper_ - Une démo sur la récursion.
 40  ** _Custom_ - Crée des onglets personnalisés.
 41  ** _ttt_ - Traceur True Type, pour créer des textes à graver.
 42  
 43  * _ngcgui-lathe_ - Un exemple de sous-programme pour un tour:
 44  ** _id_ - Alésage intérieur.
 45  ** _od_ - Cylindrage extérieur.
 46  ** _taper-od_ - Tourne un cône mâle.
 47  ** _Custom_ - Crée des onglets personnalisés.
 48  
 49  * _ngcgui-simple_ - Un exemple simple:
 50  ** _simp_ - Un exemple simple créant deux cercles.
 51  ** _xyz_ - Crée une boîte basée sur deux coins opposés.
 52  
 53  Pour visualiser les sous-programmes presser l'_**A**rrêt d'**U**rgence_ 
 54  image:images/tool_estop.gif[] puis, activer la _Marche Machine_ 
 55  image:images/tool_power.gif[] et réaliser la _Prise d'origine générale_.
 56  Cliquer sur un onglet de ngcgui et presser _Créer la fonction_ 
 57  puis _Finaliser_. Enfin, presser sur le bouton 
 58  image:images/tool_run.gif[] _Départ cycle_ pour exécuter le G-code.
 59  
 60  [NOTE]
 61  Les sous-programmes d'exemples fournis avec la distribution doivent tous
 62  fonctionner avec la configuration de la machine simulée. Un utilisateur doit
 63  toujours comprendre le comportement et les implications d'un programme avant
 64  de tenter de l'exécuter sur une machine réelle.
 65  
 66  == Librairies
 67  
 68  Les configurations en simulation pour ngcgui utilisent les liens suivants vers
 69  des librairies de LinuxCNC protégées en écriture:
 70  
 71  * _Sous-fichiers compatibles ngcgui_ - ngcgui_lib
 72  * _Sous-programme d'aide_ - ngcgui_lib/utilitysubs
 73  * _Fichiers M utilisateurs_ - ngcgui_lib/mfiles
 74  
 75  Ces librairies sont définies dans le fichier ini par les items:
 76  
 77  ----
 78  [RS274NGC]
 79  SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
 80  USER_M_PATH     = ../../../nc_files/ngcgui_lib/mfiles
 81  ----
 82  
 83  C'est une longue ligne (ne pas continuer sur de multiples lignes) qui spécifie
 84  les répertoires utilisés dans le chemin de recherche. Les noms de répertoires
 85  sont séparés par le caractère (:).
 86  
 87  L'utilisateur peut créer de nouveaux répertoires pour ses propres
 88  sous-programmes et fichiers M et les ajouter dans le chemin de recherche.
 89  
 90  Par exemple, un utilisateur pourrait créer ces répertoires à partir de la
 91  console.
 92  
 93  ----
 94  mkdir /home/myusername/mysubs
 95  mkdir /home/myusername/mymfiles
 96  ----
 97  
 98  Puis y créer ou y copier des fichiers qui lui seront accessibles en écriture.
 99  Par exemple, créer un sous-fichier compatible ngcgui nommé:
100  
101  ----
102  /home/myusername/mysubs/exemple.ngc
103  ----
104  
105  Le fichier ini doit être édité pour lui inclure les nouveaux sous-fichiers et
106  les ajouter au chemin. Pour cet exemple:
107  
108  ----
109  [RS274NGC]
110  SUBROUTINE_PATH = /home/myusername/mysubs:../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
111  USER_M_PATH     = /home/myusername/mymfiles:../../../nc_files/ngcgui_lib/mfiles
112  
113  [DISPLAY]
114  NGCGUI_SUBFILE = exemple.ngc
115  ----
116  
117  LinuxCNC et ngcgui utilisent le premier fichier trouvé lors d'une recherche
118  dans les répertoires du chemin de recherche. Avec ce comportement, Il est
119  possible de substituer un sous-fichier ngcgui_lib en plaçant un sous-fichier
120  avec un nom identique plus tôt dans le chemin de recherche pour qu'il soit 
121  trouvé avant. Plus d'informations peuvent être trouvées au chapitre INI dans le
122  Manuel de l'intégrateur.
123  
124  == Intégration de ngcgui dans Axis
125  
126  D'autres exemples de sous-programmes se trouvent dans le répertoire sim/ngcgui
127  
128  
129  Les items de fichier INI pour NGCGUI vont dans la section [DISPLAY].
130  
131  * _TKPKG_             = Ngcgui    1.0 - Le paquet principal de NGCGUI (doit
132  précéder Ngcguittt).
133  * _TKPKG_             = Ngcguittt 1.0 - Le paquet du traceur True Type pour
134  générer des textes à graver.
135  * _NGCGUI_FONT_       = Helvetica -12 normal - Spécifie la police utilisée.
136  * _NGCGUI_PREAMBLE_   = in_std.ngc - Le fichier de préambule à ajouter au début
137  du sous-programme. Quand plusieurs sous-programmes sont concaténés, un seul
138  est ajouté.
139  * _NGCGUI_SUBFILE_    = simp.ngc - Crée un onglet depuis le sous-programme nommé.
140  * _NGCGUI_SUBFILE_    = "" - Crée un onglet personnalisé.
141  * _#NGCGUI_OPTIONS_   = opt1 opt2 ... - Options Ngcgui
142  ** # opt items:
143  *** #   nonew      -- interdit la création d'un nouvel onglet personnalisé
144  *** #   noremove   -- interdit l'effacement d'une page d'onglet
145  *** #   noauto     -- pas d'envoi auto (makeFile, puis envoi manuel)
146  *** #   noiframe   -- no internal image, image on separate top level
147  * _TTT_               = Le programme True-type Tracer
148  * _TTT_PREAMBLE_      = in_std.ngc - Optionnel, spécifie le nom de fichier de
149  préambule utilisé par ttt pour créer les sous-fichiers.
150  
151  
152  Voici un exemple d'intégration de NGCGUI dans Axis. Les sous-programmes doivent
153  être placés dans un répertoire spécifié par la variable 
154  [RS274NGC]SUBROUTINE_PATH. Certains exemples de sous-programmes utilisent
155  d'autres sous-programmes, bien vérifier pour être sur d'avoir les bonnes 
156  dépendances, le cas échéant, dans un répertoire SUBROUTINE_PATH. Certains
157  sous-programmes peuvent utiliser des fichiers M (Mfiles) personnalisés qui
158  doivent se trouver dans un répertoire spécifié par [RS274NGC]USER_M_PATH.
159  
160  [NOTE]
161  Il ne s'agit pas d'un fichier ini complet, les items montrés sont ceux utilisés 
162  par ngcgui. D'autres items sont requis par LinuxCNC pour obtenir un fichier ini
163  complet.
164  
165  .Simple fichier.ini
166  
167  ----
168  [RS274NGC]
169  SUBROUTINE_PATH   = ../../../nc_files/ngcgui_lib:../../../ngcgui_lib/utilitysubs
170  USER_M_PATH       = ../../../nc_files/ngcgui_lib/mfiles
171  
172  [DISPLAY]
173  TKPKG             = Ngcgui    1.0
174  TKPKG             = Ngcguittt 1.0
175  # Ngcgui must precede Ngcguittt
176  
177  NGCGUI_FONT       = Helvetica -12 normal
178  # specifie seulement les noms de fichiers, doit être dans [RS274NGC]SUBROUTINE_PATH
179  NGCGUI_PREAMBLE   = in_std.ngc
180  NGCGUI_SUBFILE    = simp.ngc
181  NGCGUI_SUBFILE    = xyz.ngc
182  NGCGUI_SUBFILE    = iquad.ngc
183  NGCGUI_SUBFILE    = db25.ngc
184  NGCGUI_SUBFILE    = ihex.ngc
185  NGCGUI_SUBFILE    = gosper.ngc
186  # specifie "" pour une page d'onglet personnalisée
187  NGCGUI_SUBFILE    = ""
188  #NGCGUI_SUBFILE   = "" utilisé quand une trame d'image est spécifiée si
189  #                      ouvrir d'autres fichiers est requis
190  #                      les images seront mises dans une fenêtre de haut niveau
191  NGCGUI_OPTIONS    =
192  #NGCGUI_OPTIONS   = opt1 opt2 ...
193  # opt items:
194  #   nonew      -- interdit la création d'un nouvel onglet personnalisé
195  #   noremove   -- interdit l'effacement d'une page d'onglet
196  #   noauto     -- pas d'envoi auto (makeFile, puis envoi manuel)
197  #   noiframe   -- no internal image, image on separate top level
198  
199  TTT               = truetype-tracer
200  TTT_PREAMBLE      = in_std.ngc
201  
202  PROGRAM_PREFIX    = ../../nc_files
203  ----
204  
205  === Traceur Truetype
206  
207  Ngcgui_ttt fourni le support pour truetype-tracer (v4). Il crée un onglet
208  sur Axis qui permet à l'utilisateur de créer ses propres textes dans de 
209  nouveaux onglets ngcgui et en choisissant leurs fontes et autres paramètres. 
210  (Truetype-tracer doit être installé indépendamment).
211  
212  L'intégration de ngcgui_ttt dans Axis, nécessite les items suivants en plus de
213  ceux de ngcgui:
214  ....
215  Item:    [DISPLAY]TKPKG = Ngcgui_ttt numéro_de_version
216  Exemple: [DISPLAY]TKPKG = Ngcgui_ttt 1.0
217  Note:    Obligatoire, spécifie le chargement de ngcgui_ttt dans un onglet 
218  d'Axis nommé ttt. Doit suivre l'item TKPKG = Ngcgui.
219  
220  Item:    [DISPLAY]TTT = chemein_de_truetype-tracer
221  Exemple: [DISPLAY]TTT = truetype-tracer
222  Note:    Optionnel, s'il n'est pas spécifié, utilisera 
223  /usr/local/bin/truetype-tracer. Spécifier avec un chemin absolut ou simplement
224  le nom de l'exécutable, dans ce cas, la variable d'environnement PATH de
225  l'utilisateur sera utilisée pour rechercher le programme.
226  
227  Item:    [DISPLAY]TTT_PREAMBLE = nom_fichier_préambule
228  Exemple: [DISPLAY]TTT_PREAMBLE = in_std.ngc
229  Note:    Optionnel, spécifie le nom du fichier de préambule utilisé pour
230  les sous-fichiers créés par ttt.
231  ....
232  
233  === Exemples d'INI
234  
235  Ngcgui utilise le chemin de recherche de LinuxCNC pour chercher les fichiers.
236  
237  Le chemin de recherche commence avec le répertoire standard spécifié par:
238  
239    [DISPLAY]PROGRAM_PREFIX
240  
241  suivi par les répertoires multiples spécifiés par:
242  
243    [RS274NGC]SUBROUTINE_PATH
244  
245  .Répertoires
246  Les répertoires peuvent être spécifiés comme des chemins absolus ou des
247  chemins relatifs.
248  ....
249  Exemple: [DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files
250  Exemple: [DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files
251  Exemple: [DISPLAY]PROGRAM_PREFIX = ../../../nc_files
252  ....
253  
254  .Chemins absolus
255  Un chemin absolu commence avec un "/" qui indique un emplacement par rapport au
256  système de fichiers complet.  Un chemin qui commence par "\~/" indique un
257  chemin commençant _depuis_ le répertoire home de l'utilisateur. Un chemin qui
258  commence par "~nomutilisateur/" indique un chemin commençant _dans_ le
259  répertoire utilisateur.
260  
261  .Chemins relatifs
262  Un chemin relatif commence dans le répertoire de démarrage qui est celui
263  contenant le fichier ini. L'usage des chemins relatifs facilite l'accès aux
264  configurations mais requiert une bonne compréhension de la façon dont les
265  chemins sont spécifiés sous Linux.
266  
267  ....
268  ./d0      est le même que d0, ex: un répertoire nommé d0 dans le répertoire de
269  départ.
270  ../d1     se réfère au répertoire d1 dans le répertoire parent.
271  ../../d2  se réfère au répertoire d2 dans le répertoire parent du parent.
272  ../../../d3 etc.
273  ....
274  
275  Des répertoires multiples peuvent être spécifiés par la variable:
276  [RS274NGC]SUBROUTINE_PATH suivie des chemins séparés par le signe ":". 
277  L'exemple suivant illustre le format utilisé pour les chemins multiples et
278  montre l'utilisation de répertoires relatifs et absolus.
279  
280  Exemple: 
281  _[RS274NGC]SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:
282  ../../../nc_files/ngcgui_lib/utilitysubs:/tmp/tmpngc_
283  
284  C'est une longue ligne, ne pas continuer sur de multiples lignes. Quand
285  LinuxCNC et/ou Ngcgui cherchent un fichier, c'est le premier trouvé qui est
286  utilisé.
287  
288  LinuxCNC (et NGCGUI) doivent pouvoir trouver tous les sous-programmes avec
289  les routines additionnelles qui sont appelées depuis les sous-fichiers NGCGUI.
290  Il est pratique de placer les fichiers utilitaires dans un répertoire séparé
291  comme indiqué dans l'exemple précédent.
292  
293  La distribution inclus le répertoire ngcgui_lib et les fichiers de préambule
294  , sous-fichiers, postambule et fichiers d'aide pour les démos. Pour modifier
295  le comportement des fichiers, il est possible de copier n'importe quel fichier
296  et de le placer en avant du chemin de recherche. Le premier répertoire
297  recherché est: [DISPLAY]PROGRAM_PREFIX. Il est possible de l'utiliser mais
298  c'est une meilleure pratique de créer un répertoire dédié en le plaçant au
299  début du chemin donné par [RS274NGC]SUBROUTINE_PATH.
300  
301  Dans l'exemple suivant, les fichiers dans /home/myname/emc2/mysubs seront 
302  trouvés avant ceux étant dans ../../../nc_files/ngcgui_lib.
303  
304  Exemple:
305  _[RS274NGC]SUBROUTINE_PATH = /home/myname/emc2/mysubs:../../../nc_files/
306  ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs_
307  
308  Les débutants pourraient essayer par inadvertance d'utiliser des 
309  fichiers non structurés comme le nécessite ngcgui. Ngcgui déclencherait alors
310  rapidement de nombreuses erreurs si les fichiers ne répondent pas à ses 
311  conventions. Une bonne pratique suggère que les sous-fichiers compatibles
312  ngcgui doivent être placés dans un répertoire dédié à cette fin et que
313  les préambules, postambules et fichiers d'aide doivent être dans un répertoire
314  séparés pour dissuader toute tentative d'utilisation de ces sous-fichiers. 
315  
316  Pour intégrer ngcgui dans Axis, spécifier les items suivants dans le fichier
317  ini:
318  ....
319  Item:    [DISPLAY]PROGRAM_PREFIX = dirname
320  Exemple: [DISPLAY]PROGRAM_PREFIX = ../../../nc_files
321  Note:    Obligatoire et nécessaire pour de nombreuses fonctions de LinuxCNC.
322           C'est le premier répertoire utilisé lors de la recherche de fichiers.
323  
324  Item:    [RS274NGC]SUBROUTINE_PATH = dirname1:dirname2:dirname3 ...
325  Exemple: [RS274NGC]SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
326  Note:    Optionnel, mais très utile pour organiser les sous-fichiers et les
327           fichiers utilitaires.
328  
329  Item:    [DISPLAY]TKPKG=Ngcgui version_number
330  Exemple: [DISPLAY]TKPKG=Ngcgui 1.0
331  Note:    Obligatoire, spécifie le chargement des onglets ngcgui dans axis.
332  
333  Item:    [DISPLAY]NGCGUI_FONT = font_descriptor
334  Exemple: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal
335  Note:    Optionnel, descripteur de fontes compatible avec celui de Tcl.
336           Avec des items pour le type de fonte -fontsize fontweight
337           Par défaut c'est la police: Helvetica -10 normal
338  
339  Item:    [DISPLAY]NGCGUI_SUBFILE = subfile_filename
340  Exemple: [DISPLAY]NGCGUI_SUBFILE = simp.ngc
341  Exemple: [DISPLAY]NGCGUI_SUBFILE = xyz.ngc
342  Exemple: [DISPLAY]NGCGUI_SUBFILE = ""
343  Note:    Utilise un ou plusieurs items pour spécifier les fichiers compatibles
344           avec les sous-fichiers ngcgui qui requiert un onglet dans Axis au
345           départ. Un onglet "personnalisé" est créé quand le nom de fichier est "".
346           Un utilisateur peut utiliser l'onglet "Personnalisé" pour lire un
347           fichier système et identifier un préambule, un sous-fichier ou un
348           postambule.
349  
350  Item:    [DISPLAY]NGCGUI_PREAMBLE = preamble_filename
351  Exemple: [DISPLAY]NGCGUI_PREAMBLE = in_std.ngc
352  Note:    Optionnel, si spécifié, alors ce fichier sera prépondérant à tous les
353           sous-fichiers. Les fichiers créés avec l'onglet "Personnalisé"
354           utilisent le préambule spécifié avec cette page.
355  
356  Item:    [DISPLAY]NGCGUI_POSTAMBLE = postamble_filename
357  Exemple: [DISPLAY]NGCGUI_POSTAMBLE = bye.ngc
358  Note:    Optionnel, si spécifié, le fichier est ajouté à tous les sous-fichiers.
359           Les fichiers créés avec l'onglet "Personnalisé" utilisent le postambule
360           spécifié avec cette page.
361  
362  Item:    [DISPLAY]NGCGUI_OPTIONS = opt1 opt2 ...
363  Exemple: [DISPLAY]NGCGUI_OPTIONS = nonew noremove
364  Note:    De multiples options séparées par des blancs.
365           Par défaut,  ngcgui gère les onglets de cette manière:
366              1) Un utilisateur peut créer de nouveaux onglets.
367              2) Un utilisateur peut enlever des onglets (excepté le dernier 
368           restant)
369              3) La finalisation envoie automatiquement les fichiers à Axis.
370              4) Une trame d'image (iframe) est rendue disponible pour afficher
371              une image pour le sous-fichier.
372  
373           Les options _nonew_, _noremove_, _noauto_, _noiframe_ respectivement,
374           désactivent ces comportements par défaut.
375  
376           Par défaut, Si un fichier d'image (.png, .gif, .jpg, .pgm)
377           est trouvé dans le même répertoire que le sous-fichier, l'image
378           est affichée dans une iframe.  Spécifier l'option
379           _noiframe_ rendra disponibles d'autres boutons pour sélectionner
380           un préambule, un sous-fichier ou un postambule et
381           des cases à cocher additionnelles. Les cases à cocher sont toujours
382           disponibles avec les touches spéciales suivantes:
383             Ctrl-R Bascule "Conserver les valeurs à la lecture du sous-fichier"
384             Ctrl-E Bascule "Déployer le sous-programme"
385             Ctrl-a Bascule "EnvoiAuto"
386            (Ctrl-k lists all keys and functions)
387  
388           Si _noiframe_ est spécifié et qu'un fichier image est trouvé,
389           l'image est affichée dans une fenêtre séparée et
390           toutes les fonctions sont disponibles dans la page de l'onglet.
391  
392           Les _NGCGUI_OPTIONS_ s'appliquent à tous les onglets ngcgui excepté
393           ceux sur lesquels les options _nonew_, _noremove_, et _noiframe_ ne
394           sont pas applicables pour l'onglet "Personnalisé". 
395           Ne pas utiliser l'onglet "Personnalisé" si les utilisateurs doivent 
396           avoir des possibilités de sélection de sous-fichiers et de création
397           d'onglet additionnels limitées.
398  ....
399  :showcomments:
400  // FIX-ME Keyboard shortcuts do not work in version _fr.
401  
402  == Besoins des sous-programmes
403  
404  Un sous-fichiers compatible NGCGUI contient une simple définition de
405  sous-programme. Le nom du sous-programme doit être le même que celui du
406  fichier (non inclus l'extension .ngc). LinuxCNC supporte les sous-programmes
407  nommés ou numérotés, mais seuls les sous-programmes nommés sont compatible
408  avec NGCGUI. Pour plus d'informations voir le chapitre sur les 
409  <<cha:O-codes,O-Codes>>.
410  
411  La première ligne, autre qu'un commentaire, doit être une déclaration _sub_.
412  La dernière ligne, autre qu'un commentaire, doit être une déclaration _endsub_.
413  
414  .exemple.ngc:
415  ----
416  o<exemple> sub
417    CORPS DU SOUS-PROGRAMME
418  o<exemple> endsub
419  ----
420  
421  Le corps du sous-programme doit commencer par un jeu de déclarations
422  définissant les paramètres nommés locaux pour chaque paramètre positionnel
423  attendu pour l'appel du sous-programme. Ces définitions doivent être
424  consécutives, commencer par #1 et finir avec le numéro du dernier paramètre
425  utilisé. Les définitions doivent être fournies pour chacun de ces paramètres
426  (aucune omissions).
427  
428  .Numérotation des paramètres
429  ----
430  #<xparm> = #1
431  #<yparm> = #2
432  #<zparm> = #3
433  ----
434  
435  LinuxCNC considère tous les paramètres numérotés entre #1 est #30 comme étant
436  des paramètres appelables, de même, ngcgui fourni des dialogues de saisie pour
437  n'importe quel paramètres dans cette fourchette. Il est de bonne pratique 
438  d'éviter d'utiliser un paramètre numéroté de #1 jusqu'à #30 n'importe où
439  ailleurs dans le sous-programme. L'utilisation de paramètres nommés locaux est
440  recommandée pour toutes le variables internes.
441  
442  Chaque définition de déclaration peut optionnellement inclure un commentaire
443  spécial et une valeur par défaut pour le paramètre.
444  
445  .Prototypage de déclaration
446  ----
447  #<vname> = #n (=valeur_par_défaut)
448  ou
449  #<vname> = #n (texte_de_commentaire)
450  ou
451  #<vname> = #n (=valeur_par_défaut texte_de_commentaire)
452  ----
453  
454  .Exemples de paramètres
455  ----
456  #<xparm> = #1 (=0.0)
457  #<yparm> = #2 (Ystart)
458  #<zparm> = #3 (=0.0 Z start setting)
459  ----
460  
461  Si une valeur_par_défaut est donnée, elle sera placée au démarrage, dans la
462  boîte de saisie pour le paramètre.
463  
464  Si un texte_de_commentaire est inclus, il sera utilisé pour identifier l'entrée
465  à la place du nom du paramètre.
466  
467  .Paramètres nommés globaux
468  Note sur les paramètres nommés globaux (#<nom_global>) avec ngcgui:
469  
470  Comme dans de nombreux langages de programmation, l'utilisation de variables
471  globales est puissante, mais peut souvent mener à des conséquences inattendues.
472  Dans LinuxCNC, les paramètres nommés globaux existants seront valides lors de
473  l'exécution du sous-programme et les sous-programmes peuvent les modifier ou 
474  en créer.
475  
476  L'utilisation de paramètres nommé globaux comme entrées dans un sous-programme
477  est déconseillé parce-que de tels usages requiert l'établissement et la
478  maintenance d'un contexte global bien défini, ce qui est problématique à
479  maintenir. L'utilisation de paramètres numérotés en #1 et #30 devrait être
480  suffisant pour satisfaire les besoins les plus exigeants.
481  
482  Ngcgui supporte quelques entrées par paramètres nommés globaux mais leurs usage
483  est obsolète et non documenté ici.
484  
485  Bien que les entrées par paramètres nommés globaux soient déconseillées, les
486  sous-programmes LinuxCNC doivent utiliser des paramètres nommés globaux pour
487  retourner les résultats. Puisque les sous-fichiers compatibles ngcgui sont
488  destinés à l'usage de l'interface graphique, les valeurs de retour n'ont pas
489  d'exigence commune. Toutefois, ngcgui est utile comme outil de test pour les
490  sous-programmes qui ne retournent pas de paramètres nommés globaux et il est
491  commun pour les sous-fichiers compatibles ngcgui d'appeler des fichiers de 
492  sous-programmes utilitaires qui eux retournent des résultats avec des paramètres
493  nommés globaux.
494  
495  Pour supporter ces usages, ngcgui ignore les paramètres nommés globaux qui
496  incluent le caractère (:) dans leur nom. Utilisation des deux points (:) dans
497  un nom prévient ngcgui de créer une bîte de saisie pour ces paramètres.
498  
499  .Paramètres nommés globaux
500  ----
501  o<exemp> sub
502  ...
503  #<_exemp:result> = #5410       (retourne le diamètre de l'outil courant)
504  ...
505  o<helper> call [#<x1>] [#<x2>] (appel d'un sous-programme)
506  #<xresult> = #<_helper:answer> (localise immédiatement le résultat du
507  fichier d'aide)
508  #<_helper:answer> = 0.0 (rend nul le paramètre nommé global utilisé par le
509  sous-programme)
510  ...
511  o<exemp> endsub
512  ----
513  
514  Dans l'exemple précédent, le sous-programme utilitaire sera trouvé dans un 
515  fichier séparé nommé helper.ngc. Le sous-programme d'aide retourne un résultat
516  dans un paramètre nommé global nommé #<_helper:answer>.
517  
518  Pour une bonne pratique, le sous-fichier appelant localise immédiatement
519  le résultat pour une utilisation ailleurs dans le sous-fichier et le paramètre
520  nommé global, utilisé pour retourner le résultat est mis à zéro pour diminuer
521  les chances qu'il soit utilisé par inadvertance ailleurs dans le contexte
522  global. (La mise à zéro avec 0.0 n'est pas toujours le meilleur choix).
523  
524  Ngcgui supporte la création et la concaténation de multiples fonctions pour
525  un sous-fichier et pour de multiples sous-fichiers. Il est parfois pratique 
526  pour les sous-fichiers de déterminer leur ordre au début de l'exécution afin
527  que ngcgui insère un paramètre global spécial qui pourra être testé par tous
528  les sous-programmes. Ce paramètre est nommé #<_feature:>.
529  Sa valeur commence avec 0 et est incrémentée avec chaque fonction qui lui est
530  ajoutée.
531  
532  .Fonctions additionelles
533  Un commentaire spécial 'info' peut être inclus quelque part dans les
534  sous-fichier compatibles ngcgui. Le format est le suivant:
535  
536  ----
537  (info: info_text)
538  ----
539  
540  La chaine _info_text_ est affichée vers le haut de la page de l'onglet ngcgui
541  dans Axis.
542  
543  Les fichiers non destinés à servir de sous-fichiers peuvent inclure le
544  commentaire spécial: "(not_a_subfile)" de sorte que ngcgui les rejette
545  automatiquement avec un message explicatif.
546  
547  ----
548  (not_a_subfile)
549  ----
550  
551  Un fichier image optionnel (.png, .gif, .jpg, .pgm) peut accompagner un
552  sous-fichier. Le fichier image peut aider à clarifier les paramètres utilisés
553   par le sous-fichier. Le fichier image doit être dans le même répertoire que le
554  sous-fichier et doit avoir le même nom avec une extension appropriée au fichier
555  image, ex: le sous-fichier exemp.ngc doit être accompagné par l'image exemp.png.
556  Ngcgui tente de redimensionner de grandes images par sous-échantillonnage à
557  une largeur maximale de 320 et une hauteur maximum de 240 pixels.
558  
559  Aucune des conventions nécessaires pour faire une sous-fichier compatible
560  ngcgui n'empêche son utilisation en tant que fichier de sous-programme pour
561  LinuxCNC.
562  
563  La distribution LinuxCNC inclus une librairie (répertoire ngcgui_lib) qui
564  contient plusieurs exemples de sous-fichiers et de fichiers utilitaires
565  compatibles ngcgui pour illustrer les fonctions des sous-programmes de LinuxCNC
566  et l'usage de ngcgui.
567  
568  Des sous-programmes additionnels soumis par les utilisateurs se trouvent dans
569  le forum dans la section _Subroutines_.
570  
571  
572  == Exemple, découpe pour DB25
573  
574  L'exemple ci-dessous montre l'utilisation du sous-programme DB25. 
575  Dans la première image on voit les champs remplis pour chaque variable.
576  
577  image::images/ngcgui-db25-1_fr.png[]
578  
579  Cette image montre le parcours d'outil du sous-programme DB25.
580  
581  image::images/ngcgui-db25-2_fr.png[]
582  
583  Cette image montre l'action du bouton _Nouveau_ et de l'onglet personnalisé pour
584  créer très facilement la découpe de trois DB25 en un seul programme.
585  
586  image::images/ngcgui-db25-3_fr.png[]
587  
588  == Création d'un sous-programme
589  
590  * Pour la création d'un sous-programme à utiliser avec Ngcgui, le nom de fichier 
591      et le nom du sous-programme doivent être les mêmes. 
592  * Le fichier doit être placé dans le sous-répertoire pointé dans le fichier ini. 
593  * À la première ligne peut se trouver un commentaires de type info: qui doit 
594      être placé au début du sous-programme. 
595  * Le sous-programme doit être entouré par les balises `sub` et `endsub`. 
596  * Les variables utilisées doivent être des variables numérotées et ne doivent pas 
597      sauter de numéro. 
598  * Des commentaires et presets peuvent être inclus.
599  ----
600  (info: simp -- simple exemple de sous-programme -- Ctrl-U pour éditer)
601  o<simp> sub
602    #<ra>       = #1 (=.6 Rayon A) ;Example de paramètre avec un commentaire
603    #<radius_b> = #2 (=0.4)         ;Example de paramètre sans commentaire
604    #<feedrate> = #3 (Feedrate)     ;Example de paramètre sans preset
605    g0x0y0z1
606    g3 i#<ra> f#<feedrate>
607    g3 i[0-#<radius_b>]
608  o<simp> endsub
609  ----
610