AutoLisp

 

L'objectif de cette page n'est pas de vous apprendre à programmer en Lisp pour AutoCad.
En effet, cet apprentissage est trés complexe et nécessite de connaître parfaitement la syntaxe AutoLisp, car il s'agit d'un langage, ainsi que les commandes AutoCad ( ou tout au moins suffisamment pour produire un travail intéressant ).
De plus, les commandes françaises différent des commandes américaines dans leur syntaxe :
exemple : COPIER en français, COPY en américain.
Ce qui fait que la plupart des programmes Lisp seront inopérants avec une version US d'AutoCad.

Si vous êtes débutant et autodidacte, il va falloir vous armer de patience.
Si en plus vous n'avez jamais appris un langage de programmation sérieux, la tâche est quasi insurmontable. ( Pour moi, VisualBasic n'est pas un langage sérieux ... son nom d'ailleurs semble l'indiquer  )

Allons à l'essentiel, juste pour vous donner une petite idée.
- Quand vous avez réalisé un script AutoLisp et que vous avez sauvegardé celui-ci sous un nom tel que, par exemple « essai.lsp », vous pouvez alors le tester dans la zone des commandes d'Autocad (sous la zone graphique) aprés le message général d'invite Commande :
  Commande : (load "essai")
- Si des erreurs ( bien souvent de syntaxe ) existent, vous aurez une réponse qui pourrait être :
5>  ce qui signifie que 5 parenthèses n'ont pas été fermées.
mais les erreurs de syntaxe peuvent être nombreuses et les messages quelquefois semblent ne vouloir rien signifier.
N'oubliez pas qu'il s'agit de logique et le compilateur s'attend à trouver un nombre de paramêtres ou un certain type d'écriture pour une fonction ou dans une variable.

Examinez les exemples présents sur ce site et vous verrez apparaître quelques règles de présentation héritées du langage C :
- utilisez l'indentation.
exemple :
     (
         .....
          (
           ...
          )
     )

- toutes les fonctions sont définies par defun, une nouvelle commande AutoCad sera définie par defun C:nomcommande
exemples :
     (defun CatalogCHC(/ ff fich)  ; fonction interne au fichier
     (defun C:CHC()   ; CHC est déclaré commande AutoCad
( ; ⇐ début d'un commentaire )
Dans ce dernier cas, si le fichier ne comporte pas d'erreur, cela signifie que vous pourrez entrer   Commande : CHC pour exécuter la commande de tracé d'une vis Chc.

- quand vous écrivez une fonction , précisez le but de cette fonction et les paramêtres de portée globale et locale ainsi que le rôle de ces paramêtres.
exemples :
     (defun CatalogECR (/ ff fich)   ; ici 2 variables locales à la fonction : ff et fich
     (defun check_real(value filtre coord / nbreOK msg)
; ici 3 variables globales : value filtre coord et 2 variables locales à la fonction : nbreOK msg

- les variables.
Examinons un exemple simple : (voir aussi rubrique Arbres)

  1. (defun Volume(/ x y zi vr vi)   ; fonction Volume 5 variables locales
  2.    (setq x (/ dd 2.0) )   ; x=dd/2 (dd est une variable globale déjà définie)
  3.    (setq y (/ da 2.0) )   ; y=da/2 (da est une variable globale déjà définie)
  4.    (setq vr (+ (* x x) (* x y) (* y y) ))   ; vr=x²+xy+y²
  5.    (setq vi (/ (* pi dist vr) 3.0) )   ; vi=(pi*dist*vr)/3.0
  6.    ; (mettre 3.0 pour avoir un résultat Réel)
  7.    ; test logique si x = y alors zi = dist / 2.0 sinon
  8.    
  9.    (If (= x y) (setq zi (/ dist 2.0))
  10.       (setq zi (/ (* dist
  11.          (+ (/ (* y y) 2.0)
  12.             (/ (* x y) 3.0)
  13.             (/ (expt (- x y) 2.0) 4.0) ) ) vr
  14.          )
  15.       )
  16.    )
  17.    (setq v (+ vi v) )  ; v=vi+v
  18.    (setq z (+ zi dprec) )  ; z=zi+dprec
  19.    (setq zdv (+ (* z vi) zdv))  ; zdv =z*vi + zdv
  20. )

Vous venez d'avoir un tout petit aperçu de la difficulté de la syntaxe.
(il ya une ressemblance avec la notation polonaise inverse comme dans une certaine calculatrice!)

 


Si vous aimez le site

 

Select a language if you need :


Page chargée en 0.003 sec.

Dernière Modification : Mer 25 Janvier 2017 8:56
Copyright © 1999-2017 Jean-Paul Molina Tous droits réservés.

vers Google