Bortch59 Posté(e) le 15 juin 2012 Posté(e) le 15 juin 2012 Bonjour,j'ai pour habitude d'insérer des choix avec mots clés du style(initget "U N F") (setq choixOp (getkword "\n[unités/NGF/Format]: " ) ) mais comment faire si l'on veut ajouter une option à une fonction (entsel)(setq ObjetSelect (entsel "\nSélectionnez un raccord ou [Paramètres]: ") )sachant que (entsel) n'accepte rien d'autre qu'une sélection Merci.
Carboleum Posté(e) le 15 juin 2012 Posté(e) le 15 juin 2012 (modifié) (Initget "Unités NGF Format")(Entsel "\nSélectionnez un raccord ou [unités/NGF/Format]: ")Tout simplement Modifié le 16 juin 2012 par Carboleum Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
Bortch59 Posté(e) le 19 juin 2012 Auteur Posté(e) le 19 juin 2012 Tout simplementEffectivement très simple.Je ne comprends pas j'étais convaincu que (entsel) ne permettait pas ce genre d'action.Peut être un erreur de syntaxe pendant mes tests.Merci.
Bortch59 Posté(e) le 1 juillet 2012 Auteur Posté(e) le 1 juillet 2012 Je relance ce post que j'avais classé comme résolu car je n'arrive pas à faire la même chose avec (getreal) (setq AiResa (getreal "Arase inférieure ou [Calcul]: ")) J'ai essayé avec (initget 128), (initget "C"), (initget 128 "C")...J'ai toujours la même erreur : Nécessite une valeur numérique. Normalement le bit 128 devrait me permettre ce genre de choix?
(gile) Posté(e) le 2 juillet 2012 Posté(e) le 2 juillet 2012 Salut, Dans l'expression (initget ...) tu dois mettre le (ou les) mot clé en entier, si l'utilisateur entre : "C", getreal retourne "Calcul". (initget 1 "Calcul") (if (/= (setq AiResa (getreal "\nArase inférieure ou [Calcul]: ")) "Calcul") (calcul) ) Tu peux aussi proposer une valeur par défaut, l'utilisateur pourra la valider directement par "Entrée". (initget "Calcul") (if (not (numberp (setq AiResa (getreal "\nArase inférieure ou [Calcul] <C>: ")) ) ) (calcul) ) Comme tu n'as qu'une option, tu pourrais n'utiliser que la valeur par défaut.Ici, (or ...) est utilisé comme (if (not ...)) (or (setq AiResa (getreal "\nArase inférieure <Calcul>: ")) (calcul) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
VDH-Bruno Posté(e) le 2 juillet 2012 Posté(e) le 2 juillet 2012 Bonjour, Si tu veux récupérer aisément la valeur de ta fonction calcul dans ta variable, tu peux privilégier l’usage de cond à or, qui te renverra la valeur de ton test alors que or est une fonction boléenne qui renvoie nil ou T. (initget "Calcul") (setq AiResa (cond ((getreal "\nArase inférieure <Calcul>: ")) ((calcul)) ) ) Sinon un exemple avec une séquence de code (un peu gadget) bricolé/adapté rapidement à ta demande, Il utilise une variable global, dans ta session de dessin au premier appel il te propose par défaut ton option, par la suite il te propose en option par défaut la dernière valeur renseignée ou calculée. (defun c:test () ;; Routine à écrire (provisoirement la fonction retourne 4.0) (defun calcul () (+ 2 2.)) (initget "Calcul") (setq *AiResa* ((lambda (x) (cond ((numberp x) x) ((or (= x "Calcul") (not *AiResa*)) (calcul)) (*AiResa*) ) ) (getreal (strcat "\nArase inférieure ou [Calcul] <" (if (numberp *AiResa*) (rtos *AiResa* 2 3) "C" ) ">: " ) ) ) ) ) Cordialement, Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 2 juillet 2012 Posté(e) le 2 juillet 2012 Re, Si tu veux récupérer aisément la valeur de ta fonction calcul dans ta variable, tu peux privilégier l’usage de cond à or, Ouais à la relecture c’est très moyen ce que j’ai écrit <_< , car ce n’est pas moins aisé avec or, en l’écrivant comme ceci…(or (setq AiResa (getreal "\nArase inférieure <Calcul>: ")) (setq AiResa (calcul))) A+ Apprendre => Prendre => Rendre
Bortch59 Posté(e) le 5 juillet 2012 Auteur Posté(e) le 5 juillet 2012 Salut,après analyse de vos réponses et quelques tests j'ai opté pour la solution qui suit (initget 1 "Calcul") (setq AiResa (getreal "Arase inférieure ou [Calcul]: ")) (cond ((numberp AiResa) (INSERT_RESA)) ((null (numberp AiResa)) (calcul)) ) Merci à vous deux.
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