Aller au contenu

Aide boite DCL


Messages recommandés

Posté(e)

Bonjour à tous et bonne année !

Etant néophyte en LISP, j'ai besoin d'aide concernant la création d'une boîte de dialogue et de son fichier LISP qui récupère les valeurs entrées dans la boîte.

Pouvez-vous me donner un exemple "bateau" de dcl contenant une "list_box" (indiquant les couleurs par exemple) ainsi que son lisp qui permet d'afficher du texte en fonction de la couleur choisie dans la liste (si on choisit bleu on affiche ciel, rouge => coquelicot, etc ...).

 

Merci.

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

Salut.

 

Je sais que c'est un peu tard, mais si d'autres font la même recherche...

 

J'ai trouvé beaucoup d'aide ICI...

 

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)

  • 1 an après...
Posté(e)

Salut,

 

Un exemple minimaliste

 

Le fichier "ListBox.dcl"

ListBox : dialog {
   // titre de la boite de dialogue
   label = "Couleur";
   // message
   : text { label = "Choisir une couleur dans la liste"; }
   spacer;
   // boite de liste
   : list_box { key = "lst"; }
   spacer;
   ok_cancel;
}

 

Le code d'une fonction LISP qui affiche la boite de dialogue et retourne la couleur sélectionnée dans la boite si l'utilisateur a fait OK, nil s'il a fait Annuler.

(defun ListBox (/ dcl_id lst status choice)
 (setq dcl_id (load_dialog "ListBox"))
 (if (new_dialog "ListBox" dcl_id)
   (progn
     ;; liste à afficher
     (setq lst '("Rouge" "Jaune" "Vert" "Cyan" "Bleu" "Magenta"))
     ;; initialisation de la boite de liste
     (start_list "lst")
     (mapcar 'add_list lst)
     (end_list)
     ;; réactions aux actions sur les contrôles
     (action_tile "lst" "(setq choice (nth (atoi $value) lst))")
     (action_tile "accept" "(done_dialog 1)")
     (action_tile "cancel" "(done_dialog 0)")
     ;; affichage de la boite dialogue
     (setq status (start_dialog))
     ;; déchargement de la boite de dialogue
     (unload_dialog dcl_id)
     (if (= status 1)
       choice
     )
   )
 )
)

 

PS : si tu débutes en LISP, commencer par les boites de dialogue n'est pas une bonne idée. S'attaquer au DCL et surtout à la gestion des boites de dialogue suppose certains pré-requis.

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é