Aller au contenu

Messages recommandés

Posté(e)

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.

Posté(e)
Tout simplement

Effectivement 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.

  • 2 semaines après...
Posté(e)

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?

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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.

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é