Invité samuelM Posté(e) le 7 juin 2011 Posté(e) le 7 juin 2011 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
(gile) Posté(e) le 7 juin 2011 Posté(e) le 7 juin 2011 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
Invité samuelM Posté(e) le 7 juin 2011 Posté(e) le 7 juin 2011 Merci Gile. j'ai pu comprendre des nouvelles choses.
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