Aller au contenu

Choisir quelle lettre taper lors d'une selection


Messages recommandés

Posté(e)

Question du jour bonjour ;)

 

Ma question se trouve dans le code

(initget "a1 a2")
       (setq REP (getkword "\nType de bordure [a1/a2] <a1> : "))

 

Lors de commande telles que ligne etc les sélection en bas se font avec une lettre en particulier (Bleutée) dans un lisp elles sont marquée comme cela je crois séLection avec la lettre L en sélection, ici je met a en minuscule pour avoir la sélection sur pavé numérique mais lorsque je fais entrer, ils me notifient "Choix de l'option incorrect" du coup comment lui dire que je peut valider avec ENTRER et accessoirement comment laisser les majuscules si possible.

 

Merci de votre avis sur la question.

“L'environnement est important, pour sauver un arbre, mangez un castor !”

Posté(e)
ici je met a en minuscule pour avoir la sélection sur pavé numérique mais lorsque je fais entrer, ils me notifient "Choix de l'option incorrect"

de mémoire il faut une majuscule pour avoir une lettre dans le word pour faire un appel rapide, un chiffre ne fera pas l'affaire.

et pour passer avec un entré simple et assigner une valeur par defaut, je ferai un test.. si getkword renvoie nill tu fait un setq avec cette valleur

Posté(e)

Bonjour,

 

J'espère que tu comprend l'anglais, une page vers la documentation INIGET

Voir surtout le bas de page.

 

Autrement un exemple pour tester.

((lambda ( / )
(initget "Père Mère filS fillE _Father Mother Son Daugther")
(while (setq cle (getkword "\nChoisir lien parental [Père/Mère/filS/fillE]?: "))
	(princ cle)
	(initget "Père Mère filS fillE _Father Mother Son Daugther")
)
(prin1)
))

 

Les 2 options du fils et de la fille peuvent t'éclairer sur le rôle des majuscules

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Je re précise du coup, le lisp arrive déjà a avoir une valeur par défaut, seulement entre A1 et A2 je pensai faire une selection rapide en tapant 1 ou 2 au clavier :D

 

Via la commande (if (not rep)

(setq rep "A1")

 

(defun c:bora ( / REP DC)
       (setvar "OSMODE" 6)
       (initget "A1 A2")
       (setq REP (getkword "\nType de bordure [A1/A2] <A1> : "))
       (if (not rep)
               (setq rep "A1")
       )
       (if (not (tblsearch "LAYER" "SRMV_Bordure_A1_AVANT"))
               (command "_.layer" "_new" "SRMV_Bordure_A1_AVANT" "")
       )
       (if (not (tblsearch "LAYER" "SRMV_Bordure_A1_ARRIERE"))
               (command "_.layer" "_new" "SRMV_Bordure_A1_ARRIERE" "")
       )
       (if (not (tblsearch "LAYER" "SRMV_Bordure_A2_AVANT"))
               (command "_.layer" "_new" "SRMV_Bordure_A2_AVANT" "")
       )
       (if (not (tblsearch "LAYER" "SRMV_Bordure_A2_ARRIERE"))
               (command "_.layer" "_new" "SRMV_Bordure_A2_ARRIERE" "")
       )
 
       (prin1 "\nCliquer le parcour de votre réseau <Taper (Return) pour FIN>")
       (command "_.pline" pause "_width" 0.02 0.02)
       (while (not (zerop (getvar "CMDACTIVE")))
               (command pause)
       )
       (cond
               ((= REP "A1")(command "_.chprop" (entlast) "" "_layer" "SRMV_Bordure_A1_AVANT" "")
                       (setq DC 0.2)
       (command "_.offset" DC (entlast) pause "")
       (command "_.chprop" (entlast) "" "_layer" "SRMV_Bordure_A1_ARRIERE" "")
       (prin1)

	 )
               ((= REP "A2")(command "_.chprop" (entlast) "" "_layer" "SRMV_Bordure_A2_AVANT" "")
                       (setq DC 0.15)
       (command "_.offset" DC (entlast) pause "")
       (command "_.chprop" (entlast) "" "_layer" "SRMV_Bordure_A2_ARRIERE" "")
       (prin1)

	 )
       )
 (setvar "PLINEWID" 0)

)

“L'environnement est important, pour sauver un arbre, mangez un castor !”

Posté(e)

Ajoute "1" et "2" dans l'initget.

(initget "a1 a2 1 2")

suivi de (if(= rep "1")(setq rep "A1"))...etc

Cela devrait fonctionner

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e) (modifié)

Salut, tout d'abord merci de ta réponse.

 

Je l'ai placé comme ci dessous malheureusement lorsque je fais 2 ENTRER, la commande s'arrête et je me retrouve placé avec une polyligne placé dans le calque 0, la commande semble s'arrêter ..

 

Problème résolu après l'avoir mis autre part, je te remercie pour l'aide, c'était plutôt logique comme procédure je n'y avais pas pensé ..

Modifié par Red

“L'environnement est important, pour sauver un arbre, mangez un castor !”

Posté(e)

De ce que je comprend, iniget est l'endroit ou l'on indique les différentes saisies prise en compte, et les (if (= rep "1")(setq rep "A1")) me disent si la réponse saisie est 1 alors met le dans la variable rep ?

 

Je pose la question pour être sur.

“L'environnement est important, pour sauver un arbre, mangez un castor !”

Posté(e)

Salut,

 

S'il n'y a pas de majuscules dans les mots clés initialisés avec initget ce sont les chiffres qui tiennent lieu de raccourci.

 

Donc, ceci est suffisant :

(initget "a1 a2")
(if (not (setq rep (getkword "\nType de bordure [A1/A2] <A1> : ")))
 (setq rep "a1")
)

 

ou, plus élégamment :

(initget "a1 a2")
(setq rep (cond
           ((getkword "\nType de bordure [A1/A2] <A1> : "))
           ("a1")
         )
)

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

Posté(e)

Merci pour le complément d'information.

“L'environnement est important, pour sauver un arbre, mangez un castor !”

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é