kermitos Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Bonjour a tous,je ne sais pas koment lié un lisp à ma boite de diaolgue (dcl) joint ci dessous:je ne trouve pas, ou ne cherche pas o bon endroit ?merci d'avance pour vos réponse. [surligneur] QtxL : dialog { value = "Quantité lisses"; key = "title"; :row { : boxed_column { label="Sélection lignes: "; : edit_box { label = "Lisse d'assises: "; key = "assises"; fixed_width = true; }:button{ label="Choix des objets"; key="accept assises"; } : edit_box { label = "Lisse courantes: "; key = "courantes"; fixed_width = true; }:button{ label="Choix des objets"; key="accept courantes"; } : edit_box { label = "Pinces: "; key = "Pinces"; fixed_width = true; }:button{ label="Choix des objets"; key="accept Pinces"; } }//fin box column :spacer{width=0;} : column{ : boxed_column{ label = "Fichier"; key = "Fichbc"; :button { label = "Fichier de sortie"; key = "out"; width=10; } : toggle { label = "Création du fichier de sortie "; key = "sof"; } }//fin box column fichier }} :row{ :spacer{ width=3; } cancel_button; :spacer{ width=3; } }//fin row du bas } RESULTAT_calcul : dialog { label = "RESULTAT"; : edit_box { key = "SOMME"; edit_width = 70; } ok_button; }[/surligneur] Avant de savoir courir if faut savoir marcher
Matt666 Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Raaah les joies du lisp + dcl...regarde donc par ici, je recherche d'autres posts qui pourraient t'intéresser.. "Chacun compte pour un, et nul ne compte pour plus d'un."
Matt666 Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 je ne sais pas koment lié un lisp à ma boite de diaolgue (dcl) joint ci dessous:Voici le lisp de début pour ton dcl.(defun c:qtxl () (setq dcl_id (load_dialog "Qtxl.dcl"));;trouve le fichier de la boite de dialogue (setq what_next 2);;témoin de boucle (while (>= what_next 2);;boucle tant que what_next est sup à 2 (if (not (new_dialog "QtxL" dcl_id));;;si pas de boite dialogue dans le fichier (exit) ) ;;; ;;;ici tu mets les controles de tes boutons. key = nom de ton bouton ;;; (setq what_next (start_dialog));;;debut des conditions (cond ((= what_next 0);;;si bouton annuler (prompt "\nFONCTION ANNULEE") ) ) ) (unload_dialog dcl_id);;;décharger la boite de dialogue (princ) ) Le plus gros du travail est le controle de tous tes boutons.Mais là je te laisse bidouiller un peu :) EDIT : Je crois que le post cité plus haut contient largement le compte d'infos nécessaires [Edité le 9/7/2008 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Salut, Un tutorial bien fait ici, mais en anglais.En anglais toulours, l'Aide aux développeurs > AutoLISP Developer's Guide > Working with Programmable Dialog Boxes. Sinon, les fonctions incontournables chargement et initialisation- load_dialog : charger le fichier dcl, retourne un entier qui sert d'argument à la fonction suivante.- new_dialog : initialiser la boite de dialogue définie dans le fichier. affectations et actions- set_tile : attribuer des valeurs aux éléments de la BD- action_tile : affecter des actions aux différents éléments de la BD- done_dialog : liée à certains action_tile cette fonction permet de fermer la BD lancement et fermeture- start_dialog : lancer la BD- unload_dialog : décharger la BD Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 10 juillet 2008 Posté(e) le 10 juillet 2008 Alors, tu t'en sors ? "Chacun compte pour un, et nul ne compte pour plus d'un."
kermitos Posté(e) le 17 juillet 2008 Auteur Posté(e) le 17 juillet 2008 Salut Matt66,merci pour le moment j'essai mais c'est pas terrible!! Avant de savoir courir if faut savoir marcher
Matt666 Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 Ton problème c'est le "dialogue" entre ton DCL et ton LISP ? C'est normal c'est toujours dur au début :cool: Gile t'as mis sur une bonne voie en te donnant les commandes les plus utilisées en lisp+dcl ! 1- Respecter la casse des "key" dans ton lisp. 2- key = nom de ton control dans le DCL = pareil dans ton lisp. 3- action_tile : affecter des actions aux différents éléments de la BDTrès important : traduction "Si l'utilisateur clique sur ce bouton, fais ceci"Exemple : (action_tile "Annuler" "(done_dialog 5)")(action_tile "Zoome" [b]"[/b](command \"zoom\" \"e\")[b]"[/b])Attention toutes les actions sont entre parenthèses ! 4- done_dialog : liée à certains action_tile cette fonction permet de fermer la BD 5- Insérer une liste définie, dans une popup_listSoit tu la fais directement dans le dcl:popup_list {label = "Justification: " ; [b]list = "Gauche\nCentre\nDroite"[/b] ; value = "0" ; key = "Incmtjust" ; }soit tu le fais dans le lisp (ce qui est un peu plus compliqué...)Dans le dcl on ne voit aucune liste apparaître ::popup_list {key = "calques";label="Calques";}Dans le lisp, il te faut créer une liste des calques existants(setq lst (cons (cdr (assoc 2 (setq a (tblnext "layer" T)))) lst)) (while (setq a (tblnext "layer")) (setq lst (cons (cdr (assoc 2 a)) lst)) ) (setq lst (acad_strlsort lst))Ensuite intégrer la liste dans la popup_list(start_list "calques")(mapcar 'add_list lst)(end_list)Enfin lorsque tu te serviras de ta liste pour choisir un calque, ton résultat sera sous forme d'index de liste (0 ou 1 ou 2, etc). Pour retrouver le nom du calque choisi, il te faudra le retrouver à partir de son index !(action_tile "calques" "(setq resultat (nth (atoi $value) lst))" ) 6- Tu l'auras ptet remarqué, mais $value retourne le résultat de l'action dans la boite de dialogue. Voilà, bon courage !! "Chacun compte pour un, et nul ne compte pour plus d'un."
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant