Aller au contenu

initget oui non


Invité samuelM

Messages recommandés

Invité samuelM

Bonjour,

 

Voici mon porgramme. dans la dernière fase, je pose une question "oui non" et je ne sais pas comment on attribut la réponse à chaque argument.

 

La question est :

 

"souhaitez vous un volet roulant?

si oui : alors le programme avec rectangle s’exécute

si non : le programme de création de bloc s'exécute.

 

Voici en dessous ce que je voudrai mais bien sur ça ne fonctionne pas. pouvez vous m'aider? merci d'avance

 

 
;;;Volé roulant
 (initget "Oui Non")
 (if(= (getkword "\nSouhaitez vous un volet roulant? [Oui/Non] : ")"Oui" "Non")

((= "Oui")

	(progn
	  
	  	(setq orient (getorient p2 "\nIndiquer la direction\n"))
 			(setq dist   (getdist "\nIndiquer la distance (hauteur du caisson VR + 10) :"))
 			(setq p5     (polar p2 orient dist)
 			
    				 longueur (getdist p5 "\nLongueur du caisson VR : ")

    				 largeur  (getdist p5 "\nHauteur du caisson VR : ")

    				 p6       (mapcar '+ p5 (list longueur largeur))
		)
	  (command "_rectangle" "_non" p5 "_non" p6)

	  (command "_rotate" "d" "" p5 180 "")

	  (command "_move" p2 (/ new) "")

	  );;progn
	);;Oui

 ((= "Non")

   (command "_block")
   );;Non
   
 );;;if

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

En reprenant la syntaxe des fonctions AutoLISP dans l'aide aux développeurs d'AutoCAD (à consulter sans modération.

(foo arg1 [arg2 ...])

Où :

- foo est le nom de la fonction

- arg1 un argument non optionnel

- arg2 un argument optionnel (entre crochets)

- ... un nombre indéterminé d'autres arguments optionnels

 

Ça donne, pour la fonction if :

(if condition alors [sinon])

Ou :

- condition est une expression LISP qui peut retourner nil ou un autre résultat.

- alors est une expression LISP unique (qui peut bien sûr contenir des expressions imbriquées) qui sera évaluée si condition n'est pas nil

- sinon est une expression LISP unique optionnelle qui sera évaluée si condition retourne nil

 

Dans ton code,

 

condition = (= (getkword "\nSouhaitez vous un volet roulant? [Oui/Non] : ")"Oui" "Non")

Ce qui revient à dire : est-ce que le résultat de l'expression (getkword ...) "Oui" et "Non" sont égaux (la fonction = accepte un nombre indéterminé d'arguments). La réponse sera toujours nil (quel que soit le résultat de (getkword ...) puisque "Oui" et "Non" ne sont pas égaux.

 

alors et sinon ne sont pas des expressions valides (= "Oui") comme (= "Non") retournent toujours T, ce qui revient à écrire, pour sinon, par exemple :

(T (command "_block))

or T n'est pas une fonction LISP et l'interpréteur qui attend une fonction après une parenthèse ouvrante retournera une erreur du style : "erreur: fonction incorrecte: T".

 

Regarde l'aide pour les fonctions if et progn.

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

Lien vers le commentaire
Partager sur d’autres sites

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é