Aller au contenu

Messages recommandés

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

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é