IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lisp Discussion :

convertir une chaine de caractere en valeur numérique


Sujet :

Lisp

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut convertir une chaine de caractere en valeur numérique
    Salut,

    J’ai une question sur AutoCAD…

    Je cherche à convertir une chaine de caractère en nombre…

    J’ai des calques numérotés de 0 à XXX.

    Avec la variable clayer j’obtiens le nom du calque mais en chaine de caractère et non en nombre. Le but du jeu pour moi est de changer de calque sans entrer le nom du calque suivant et donc de faire +1 sur le calque courant. J’ai écris un lisp qui marche bien en entrant le nom du calque, mais je n’arrive pas à faire la chose citée plus haut.
    Merci de vos réponses.



    Mon lisp :

    (defun c:cf ()

    (progn

    (setq folio (getstring "\n Folio à activer : "))

    (command "-calque" "li" "*" "ac" "*" "dev" "*" "ch" folio "ge" "*" "li" "elec-cfo,fdp,0" "" )

    (command "zoom" "et")))

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Les conversions de type en CLisp se font avec la fonction coerce :
    http://www.supelec.fr/docs/cltl/clm/...00000000000000

    Je doute qu'elle puisse convertir une chaine de caractères en entier, mais une fois que tu as une séquence d'entiers c'est facile d'en faire un entier.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par fpaniconi
    Je cherche à convertir une chaine de caractère en nombre…[...]
    En fait si je comprends bien, tu ne veux pas la convertir en nombre... mais tu veux lui associer un numéro pour pouvoir l'identifier.

    Par exemple tu aimerais que la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '("-calque" "li" "*" "ac" "*" "dev" "*" "ch" folio "ge" "*" "li" "elec-cfo,fdp,0" "")
    soit transformé en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     '(1 2 3 4 5 6 7 8 9 10 11 12 13)
    et que tu puisses ainsi trouver que 1 correspond à "-calque", 2 à "li" etc. ??

    Non ?

    Ou bien veux tu d'une fonction de conversion qui transforme une chaîne de caractères en un nombre qui le caractèrise ?? Ce dernier passage (la caractérisation) est difficile ... il faut utiliser des nombres premiers. Mais ce n'est pas une bonne idée...

    Donc dis moi... c'est quoi que tu veux ^_^ ?
    Si c'est le premier truc, c'est très facile.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Une réponse fort tardive.
    AutoLISP fournit les fonctions atoi et itoa pour convertir, repectivement, une chaine en entier et un entier en chaine.

    (atoi "1") retourne 1
    (itoa 1) retourne "1"

    Donc pour activer le calque suivant le calque courant, s'il existe, le "0" sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (setq suivant (itoa (1+ (atoi (getvar "CLAYER")))))
    (or (tblsearch "LAYER" suivant) (setq suivant "0"))
    (setvar "CLAYER" suivant)

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/12/2009, 12h00
  2. Réponses: 3
    Dernier message: 18/10/2009, 11h31
  3. Réponses: 11
    Dernier message: 08/06/2007, 20h19
  4. convertir une chaine de caractere en byte []
    Par youp_db dans le forum Langage
    Réponses: 10
    Dernier message: 16/10/2006, 15h14
  5. [VB]Convertir une chaine de caractere en entier
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/02/2006, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo