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