Aller au contenu

Introduction à AutoLISP


Messages recommandés

Invité Patrick
Posté(e)

Voici un excellent tutorial par Gilles Chanteau pour apprendre le LISP.

Posté(e)

Bonsoir,

 

Merci à Gilles pour sa générosité et Patrick pour la diffusion de l’information, je vais regarder cela avec un grand intérêt et aussi avec beaucoup de plaisir :)

Apprendre => Prendre => Rendre

Posté(e)
Bonsoir à toutes et tous,

 

Merci Patrick,

 

ça y est Gilles, tu as craqué ?;)

 

Pour le plus grand bonheur de tous,..

C'est un peu ça, oui.

Ce document que je réservais aux participants des formations LISP était vraiment trop peu diffusé à mon goût vu le peu de formations dispensées.

Je trouvais dommage que ce travail reste aussi confidentiel.

 

Bonsoir,

 

Merci à Gilles pour sa générosité et Patrick pour la diffusion de l’information, je vais regarder cela avec un grand intérêt et aussi avec beaucoup de plaisir :)

Je crains que tu n'y apprennes pas grand chose, ce document, pas très récent, s'adresse plutôt aux débutants.

Mais si tes yeux de lynx y repèrent quelques erreurs ou incohérences, n'oublie pas de les signaler, merci.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Mais si tes yeux de lynx y repèrent quelques erreurs ou incohérences, n'oublie pas de les signaler, merci.

 

C'est bien naturel, d'ailleurs c’est déjà en cours d’annotation (trois fois rien) plus du chipotage qu’autre chose, et pas sûr que tout soit opportun dans le cadre d’une introduction au Lisp, je te retourne cela une fois terminé.

 

A+

Apprendre => Prendre => Rendre

Posté(e)

Bonjour,

 

et merci beaucoup pour ce document très intéressant.

 

@+

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

  • 3 mois après...
  • 2 ans après...
Posté(e)

Génial, c'est ma bible dès que je veux faire une routine ! !

 

Merci à (gile)... Une fois de plus...

 

PS : à la fin du chapitre 11, il y a aussi \t qui insert une tabulation...

 

Encore merci pour ce partage...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

  • 8 mois après...
Posté(e)

Salut à la communauté...

 

J'ai juste une petite requête, au vu de l'excellent "Introduction_a_AutoLISP.pdf" de Maître (gile).

 

Y-aurait-il un tuto sur les fenêtres DCL ?

 

Car je cherche à agir à l'intérieur même d'un DCL (un toggle qui activerait/désactiverait un text_box) mais je n'ai rien trouvé de probant là-dessus. Même sur DCL Dialog.

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut à la communauté...

 

J'ai juste une petite requête, au vu de l'excellent "Introduction_a_AutoLISP.pdf" de Maître (gile).

 

Y-aurait-il un tuto sur les fenêtres DCL ?

 

Car je cherche à agir à l'intérieur même d'un DCL (un toggle qui activerait/désactiverait un text_box) mais je n'ai rien trouvé de probant là-dessus. Même sur DCL Dialog.

 

Denis...

Salut

 

Regarde mode_tile

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci à vous deux...

 

Je vais donc continuer mes piétinements en LISP/DCL...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Re.

 

Juste une petite question, j'ai, dans ma DCL :

      ...
     :toggle{
       label= "Calque des points 2D";
       key="Calq2DTxt";
       value=ValCalq2D;
     }
     :edit_box{
       key="Pt2D";
       edit_width=8;
       value=Claq2D;
       allow_accept=true;
     }
     ...

 

Et dans mon LISP :

  ...
 (set_tile "ValCalq2D" ValCalq2D$) ;;ValCalq2D$ = "TOPO_XY" ou rien
 (set_tile "Calq2D" Calq2D$)       ;;Calq2D = "0" ou "1"
 ...

 

Mais rien ne fonctionne... AutoCAD me répond :

; erreur: quitter / sortir abandon

 

J'ai aussi essayé avec Calq2D= 0 ou 1 et value="Claq2D";

 

Si quelqu'un voit mon erreur ou peut me dire à quoi correspond la réponse d'AutoCAD, je suis preneur...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Par exemple

 

Le DCL

test : dialog {
 :toggle{
   label= "Calque des points 2D";
   key="Calq2DTxt";
 }
 :edit_box{
   key="Pt2D";
   edit_width=8;
   allow_accept=true;
 }
 ok_cancel;
}

 

Test 1

(defun c:test1()
 (setq dcl (load_dialog (findfile "test.dcl")))
 (new_dialog "test" dcl)
 (action_tile "Calq2DTxt" "(mode_tile \"Pt2D\" (atoi $value))")
 (action_tile "cancel"    "(done_dialog 0)")
 (action_tile "ok"        "(done_dialog 1)")
 (start_dialog)
 (unload_dialog dcl)
 (princ)
)

 

Test 2

(defun c:test2()
 (setq dcl (load_dialog (findfile "test.dcl")))
 (new_dialog "test" dcl)
 (action_tile "Calq2DTxt" "(set_tile \"Pt2D\" $value)")
 (action_tile "cancel"    "(done_dialog 0)")
 (action_tile "ok"        "(done_dialog 1)")
 (start_dialog)
 (unload_dialog dcl)
 (princ)
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci Patrick_35 de te pencher sur mon problème...

 

C'est bien ton "test1" qui correspond à mes besoins, sauf que lorsque je clique sur le toggle, il devrait activer edit_box et non l'inverse...

 

Si toggle=1 => on saisie un texte dans l'edit_box.

 

Il faudrait donc inverser "(atoi $value)"

 

Merci encore à vous...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

C'est bien ton "test1" qui correspond à mes besoins, sauf que lorsque je clique sur le toggle, il devrait activer edit_box et non l'inverse...

Je sais, c'était juste pour te montrer comment ça marche. A toi de l'adapter.

Et comme il n'y avait pas grand chose à changer pour le test2, j'en ai profité pour te montrer le set_tile

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Je viens de tester une petite tentative et ça à l'aire de fonctionner :

(action_tile "Calq2DTxt" "(mode_tile \"Pt2D\" (if (= 1 (atoi $value)) 0 1))")

 

Je ne pensais pas à l'introduction du code LISP à l'intérieur des définitions du DCL...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut (réponse tardive...),

 

D'abord, le DCL (Dialog Control Language) ne fait que décrire de manière statique et indépendante la boite de dialogue (le fichier DCL ne "voit" pas le LISP qui le pilote). On ne peut donc pas utiliser des variables pour passer des valeurs à value.

Si tu veux mettre des valeurs par défaut dans le DCL, il faut utiliser des chaînes avec des valeurs adéquates ("0" ou "1" pour un toggle et n'importe quelle chaîne pour un edit_box mais écrite en dur).

 

C'est depuis le LISP (qui, lui, "voit" le DCL) que tu peux assigner les valeurs des contrôles.

      ...
     :toggle{
       label = "Calque des points 2D";
       key = "Calq2DTxt";
       //value = "1"; // coché par défaut (inutile si le LISP initialise le contrôle avec set_tile)
     }
     :edit_box{
       key = "Pt2D";
       edit_width = 8;
       //value = "TOPO_XY" // valeur par défaut (inutile si le LISP initialise le contrôle avec set_tile) 
       allow_accept = true;
     }
     ...

 

  ...
 (set_tile "ValCalq2D" ValCalq2D) ;; ValCalq2D = "TOPO_XY" ou rien
 (set_tile "Calq2D" Calq2D)       ;; Calq2D = "0" ou "1"
 ...

 

Quant à ton erreur, le "; erreur: quitter / sortir abandon" est assez caractéristique de l'échec de la séquence ci-dessous (qui appelle exit), soit parce que "fichier.dcl" n'a pas été trouvé dans les chemins de recherche ; soit parce que ce fichier ne contient pas de description de dialog nommée "nom_dialog".

 

  (setq dcl_id (load_dialog "fichier.dcl"))
 (if (not (new_dialog "nom_dialogue" dcl_id))
   (exit)
 )

 

 

PS : tu n'es pas obligé de reprendre la convention de nommage des variables utilisée par Terry Miller (TerryCAD) avec ses suffixes liés au type de la variable. Personnellement je trouve que ça ne clarifie pas le code bien au contraire.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité