MrWoolf Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Bonjour à tous, Voici le code sur lequel je bute :; 2. Choix du type de renseignement (setq quid (getstring "\nConnaissez-vous la hauteur sous plafond ? Si oui, entrez-la ; si non, validez.")) ; (if (/= quid nil) ; 3. Saisie de la valeur de hauteur sous plafond (progn (setq dz quid) (setq dz (atof dz)) ; COnversion de la chaine de caracteres en nombre (setq dz (rtos dz 2 2)) ; Definit le nombre de decimales ) ; 41. Extraction de l'altimetrie-plafond (z1) par selection du point 1 (pt1) (progn (setq pt1 (car (entsel "\nSélectionner l'altitude du plafond : "))) ; Selection de l'entite (setq z1 (cdr (assoc '1 (entget pt1)))) ; Extraction de la valeur de texte initiale (setq zz1 (atof z1)) ; Transformation de la chaine de caracteres en nombre reel ; 42. Extraction de l'altimetrie-plancher (z2) par selection du point 2 (pt2) (setq pt2 (car (entsel "\nSélectionner l'altitude du plancher :"))) ; Selection de l'entite (setq z2 (cdr (assoc '1 (entget pt2)))) ; Extraction de la valeur de texte initiale (setq zz2 (atof z2)) ; Transformation de la chaine de caracteres en nombre reel ; 43. Soustraction entre les deux valeurs altimetriques (setq dz (- zz1 zz2)) ; Calcul de la difference entre les deux altitudes (setq dz (rtos dz 2 2)) ; Definit le nombre de decimales ) ) Comme vous l'avez compris, je souhaite lancer deux commandes distinctes selon la réponse à la question. Avant j'utilisais deux réponses "Oui" et "Non".Code précédent:; 2. Choix du type de renseignement (initget 128 "Oui") ;Liste de mot-cle valable pour la question suivante (setq quid (getkword "\nConnaissez-vous la hauteur sous plafond ? [Oui/Non] <Non> ")) ; 3. Saisie de la valeur de hauteur sous plafond (if (= quid "Oui") (progn (setq dz (getstring "\nSaisissez la valeur de la HSP -en m- : ")) (setq dz (atof dz)) ; COnversion de la chaine de caracteres en nombre (setq dz (rtos dz 2 2)) ; Definit le nombre de decimales ) ; 41. Extraction de l'altimetrie-plafond (z1) par selection du point 1 (pt1) (progn (setq pt1 (car (entsel "\nSélectionner l'altitude du plafond : "))) ; Selection de l'entite (setq z1 (cdr (assoc '1 (entget pt1)))) ; Extraction de la valeur de texte initiale (setq zz1 (atof z1)) ; Transformation de la chaine de caracteres en nombre reel ; 42. Extraction de l'altimetrie-plancher (z2) par selection du point 2 (pt2) (setq pt2 (car (entsel "\nSélectionner l'altitude du plancher :"))) ; Selection de l'entite (setq z2 (cdr (assoc '1 (entget pt2)))) ; Extraction de la valeur de texte initiale (setq zz2 (atof z2)) ; Transformation de la chaine de caracteres en nombre reel ; 43. Soustraction entre les deux valeurs altimetriques (setq dz (- zz1 zz2)) ; Calcul de la difference entre les deux altitudes (setq dz (rtos dz 2 2)) ; Definit le nombre de decimales ) ) Plutôt que de répondre "Oui" à la question "Connaissez-vous [...]", je souhaite rentrer la valeur connue et gagner une saisie.Seulement, c'est là que je bloque.J'ai essayé plusieurs variations (getkword, getstring, (if (= [...], (if (>= [...],, (if (/= [...], ...) D'avance merci. Et comme on dit, sur l'internet :http://zusiddiqui.files.wordpress.com/2012/08/sorry.jpg?w=519 ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
bryce Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Bonjour, (getstring) renvoie une chaîne, et une chaîne vide n'est pas égale à nil.Essaie plutôt avec:(if (/= quid "")... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
MrWoolf Posté(e) le 14 mars 2013 Auteur Posté(e) le 14 mars 2013 Bonjour Bryce, Et merci ! ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
VDH-Bruno Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Bonjour, Un principe, à tester voir si cela te va..(rtos (cond ((getreal "\nConnaissez-vous la hauteur sous plafond ? Si oui, entrez-la ; si non, validez.")) ((- (atof (cdr (assoc 1 (entget (car (entsel "\nSélectionner l'altitude du plafond : ")))))) (atof (cdr (assoc 1 (entget (car (entsel "\nSélectionner l'altitude du plancher :")))))) ) ) ) 2 2 ) A+ Apprendre => Prendre => Rendre
MrWoolf Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 Bonjour Bruno, Ah ouais ...Dans le principe, ça me convient : plus court, mieux structuré, plus mathématique.Maintenant faudra être capable de le répéter. Merci ! ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
VDH-Bruno Posté(e) le 15 mars 2013 Posté(e) le 15 mars 2013 Re, Maintenant faudra être capable de le répéter.Cela viendra petit à petit avec le temps et la pratique. Dans le principe, ça me convient : plus court, mieux structuré, plus mathématique.J’ai parlé de principe car la ligne suivante, n‘est pas du tout sécurisé (retourne une erreur si sélection vide, ou absence de code dxf 1 dans l’entité sélectionné).(- (atof (cdr (assoc 1 (entget (car (entsel "\nSélectionner l'altitude du plafond : ")))))) (atof (cdr (assoc 1 (entget (car (nentsel "\nSélectionner l'altitude du plancher :")))))) ) Si l’on veut sécuriser le code à minima, il est préférable de factorisé ce dernier, par la création d’une fonction de sélection spécialisé..;; Sélection d'un texte (non formaté) et retourne sa valeur si numérique (defun SelTxt2Real (invite / val) (while (not (numberp val)) (if (and (setq val (nentsel invite)) (setq val (cdr (assoc 1 (entget (car val)))))) (setq val (read val)) ) ) ) Le code ainsi modifié(rtos (cond ((getreal "\nConnaissez-vous la hauteur sous plafond ? Si oui, entrez-la ; si non, validez. ")) ((- (SelTxt2Real "\nSélectionner l'altitude du plafond : ") (SelTxt2Real "\nSélectionner l'altitude du plancher : ") ) ) ) 2 2 ) Et dans le cas ou la hauteur peut-être obtenue par "mesure" à l'écran (cas d'une élévation), voir la fonction getdist pour une écriture encore plus concise. (rtos (getdist "\nSaisissez la hauteur sous plafond, ou spécifiez la à l'écran : ") 2 2) Cordialement Apprendre => Prendre => Rendre
MrWoolf Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 (modifié) Bonjour Bruno, Pourquoi privilégies-tu la fonction (nentsel à la fonction (entsel ? La différence entre les deux est expliqué dans ce sujet mais visiblement dans mon cas, la fonction (entsel semble suffisant. Je ne comprends pas l'argument invite.Correspond-il à une question ? Modifié le 15 mars 2013 par MrWoolf ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
VDH-Bruno Posté(e) le 15 mars 2013 Posté(e) le 15 mars 2013 Re, Pourquoi privilégies-tu la fonction (nentsel à la fonction (entsel ? La différence entre les deux est expliqué dans ce sujet mais visiblement dans mons cas, la fonction (entsel semble suffisant.Oui, dans ton cas «spécifique» la fonction entsel est suffisante, mais quitte à écrire une fonction spécialisé autant la faire la plus polyvalente possible, surtout si c’est à moindre frais (le remplacement de entsel par nentsel, ce n’est pas trop couteux ;) ) Dans ce cas ce n’est pas la matrice de transformation retourné qui nous intéresse mais le fait que nentsel nous retourne l’entité sélectionné qu’elle soit entité principale (cas des textes) ou sous-entités (cas des attributs ou texte dépendant d’une référence externe). A+ Apprendre => Prendre => Rendre
MrWoolf Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 Merci pour la précision. ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
VDH-Bruno Posté(e) le 15 mars 2013 Posté(e) le 15 mars 2013 Je ne comprends pas l'argument invite.Correspond-il à une question ? Oui, dans cette appel à la fonction SelTxt2Real(SelTxt2Real "\nSélectionner l'altitude du plafond : ") invite correspond à Sélectionner l'altitude du plafond : Et dans celui-ci(SelTxt2Real "\nSélectionner l'altitude du plancher : ")invite correspond à Sélectionner l'altitude du plancher : A+ Apprendre => Prendre => Rendre
MrWoolf Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 Cela correspond à ta manière de coder ?Invite indique que l'argument est une question ?Ou est-ce une façon générale de l'indiquer ? ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
VDH-Bruno Posté(e) le 15 mars 2013 Posté(e) le 15 mars 2013 Cela correspond à ta manière de coder ?Invite indique que l'argument est une question ?Ou est-ce une façon générale de l'indiquer ?Fait quelques test dans ta console VLisp, tu verras que tu peux utiliser le nom de symbol que tu souhaites, par convention on essaie d’en choisir un suffisamment explicite. Un sujet qui peut certainement t’éclairerhttp://cadxp.com/index.php?/topic/28642-arguments-et-variables/page__view__findpost__p__156096 A+ Apprendre => Prendre => Rendre
MrWoolf Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 Merci. ================================================================================="Je sais bien que je plais pas à tout le monde ... Mais quand je vois à qui je ne plais pas : je me demande si ça me dérange vraiment." in Dikkenek.Géomètre-Topographe @ Paris
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