pierrevig Posté(e) le 30 mai 2007 Posté(e) le 30 mai 2007 Bonjour,juste une question par hasard,je dois tapez une ligne "action_tile" 20 fois et pour pas grand choses, c'est à dire : (action_tile "im0" "(setq ok (nth 0 list))") (action_tile "im1" "(setq ok (nth 1 list))") (action_tile "im2" "(setq ok (nth 2 list))") (action_tile "im3" "(setq ok (nth 3 list))") (action_tile "im4" "(setq ok (nth 4 list))") ...... Mais plutôt, je souhaiterai faire une boucle, et v'là un hic, je n'arrive pas à mettre ma variable "T" dedans pourquoi ? (setq list (list "0.005" "0.01" "0.02" "0.5" .......)) (setq T 0) (repeat 24 (action_tile (strcat "im"T) "(setq ok (nth [b]T[/b] list))") (setq T (1+ T)) ) Merci de votre aide,Pierre.
(gile) Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 ATTENTION ! T est un symbole protégé comme pi ou pause et list est une fonction LISP. Je te conseille vivement d'utiliser l'éditeur VisualLISP (commanse VLISP ou VLIDE) dans lequel les symboles (protégés ou fonctions AutoLISP prédéfinies) apparaissent en bleu. S'il s'agit bien d'une action dans une popup_list ou list_box, en supposant que la key soit lst_tile, il sufit de faire : (action_tile "lst_tile" "(setq ok (nth (atoi $value) lst))") J'ai du faire une bétise en voulant corriger une erreur de parenthèse, ta réponse s'est intercalée. [Edité le 31/5/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pierrevig Posté(e) le 31 mai 2007 Auteur Posté(e) le 31 mai 2007 Salut, merci de ta réponse, en faite, dans mon code réel j'avais mis un "i", mais remplacé ici par un "T" pour qu'il soit plus visible...sinon, je ne savais pas que le T est réservé. Je comprend ce que normalement c'est la valeur $value, mais mon code dcl n'est pas une list.C'est un code récup sur afralisp qui permet de choisir une image. Voici un morceau du DCL: ...... :image_button{ key="im0"; width=15; height=5; fixed_width = true; allow_accept = true ; } :image_button{ key="im1"; width=15; height=5; fixed_width = true; allow_accept = true ; } :image_button{ key="im2"; width=15; height=5; fixed_width = true; allow_accept = true ; } ...... et un morceau du lisp: ....... (setq io (dos_dir "C:\\PV_Autocad_lisp\\cartouche\\*.dwg")) (setq n (length io)) (setq i 0) (repeat n (setq width (dimx_tile (strcat "im"(itoa i))) height (dimy_tile (strcat "im"(itoa i)))) (start_image (strcat "im"(itoa i))) (fill_image 0 0 width height 0) (slide_image 0 0 width height (strcat (itoa i)".sld")) (end_image) (setq i (1+ i)) ) ...... (action_tile "im1" "(setq radiook (nth 1 bloc1))") (action_tile "im2" "(setq radiook (nth 2 bloc1))") (action_tile "im3" "(setq radiook (nth 3 bloc1))") (action_tile "im4" "(setq radiook (nth 4 bloc1))") (action_tile "im5" "(setq radiook (nth 5 bloc1))") ...... le code fonctionne bien, mais par curiosité, je souhaiterai mettre l'action_tyle en boucle.
(gile) Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 T pour true est ce que retourne l'interpréteur quand une expression est vraie : ( sinon pour ton problème, je me souviens avoir but" sur la mise en boucle de action_tile ou set_tile (un des deux , je ne me souviens plus lequel) de toutes façons, ce serait plutôt quelque chose du style : (foreach n '(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24) (action_tile (strcat "im" (itoa n))) (setq ok (nth n lst)) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pierrevig Posté(e) le 31 mai 2007 Auteur Posté(e) le 31 mai 2007 Sorry, çà ne fonctionne pas il semble que la variable "ok" est validé à la création de la boucle, soit "ok = 24" la dernière boucle réalisé:(action_tile (strcat "im" (itoa n)))(setq ok (nth n lst)) hors (je crois..) qu'en ajoutant les guillemets, la variable "ok" ne s'initialise que lors de la validation par le dcl:(action_tile "im1" "(setq radiook (nth 1 bloc1))") mais ce n'est pas grave, je vais rester avec mes lignes d'origines. Merci Gile.
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