fabcad Posté(e) le 30 novembre 2010 Posté(e) le 30 novembre 2010 Bonjour, J'ai réalisé une routine qui permet de séparer un nom de voie dans plusieurs champs de données d'objets AutoCAD MAP, mais ce n'est pas là le problème. Avec la valeur retournée sous forme de liste, je ne parviens pas à différencier un texte alpha-numérique d'un texte alpha uniquement. Soit deux listes : 1 - (setq liste_1 ("C125")) --> qui donne une communale car à partir du deuxième caractère, celui commence un identifiant numérique. 2 - (setq liste_1 ("COMLOUP")) --> qui donne un lieu-dit. J'avais réussi avec un numberp mais je n'avais pas à gérer les lieux-dits, un peu d'aide serait la bienvenue. Voici la sous-fonction : (defun traitement_1_mot (input_liste obj_acad/) (setq categorie_mot_un (verification_mot (casse_nom_propre (nth 0 input_liste))) mot_en_cours (nth 0 input_liste) deuxieme_caractere (substr mot_en_cours 2 1) );fin setq (cond ( (and (= categorie_mot_un "INCONNU") (= (atoi (substr deuxieme_caractere 2 1)) 0) );fin and (progn (setq type_voie "Lieu-dit"); fin setq type_voie (setq mot_en_cours (casse_nom_propre (nth 0 input_liste))) (setq nom_comple (strcat type_voie " " mot_en_cours)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum nom_comple) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin cond categorie_mot_un est égal à INCONNU et deuxième caractère différent d'1 numérique ((= categorie_mot_un "ARTICLE_PARTICULE") (progn (setq type_voie "Lieu-dit"); fin setq type_voie (setq mot_en_cours (casse_nom_propre (nth 0 input_liste))) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin cond categorie_mot_un est égal à ARTICLE_PARTICULE ((= categorie_mot_un "ARTICLE") (progn (setq type_voie "Lieu-dit"); fin setq type_voie (setq mot_en_cours (casse_nom_propre (nth 0 input_liste))) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin cond categorie_mot_un est égal à ARTICLE ((= categorie_mot_un "PARTICULE") (progn (setq type_voie "Lieu-dit"); fin setq type_voie (setq mot_en_cours (casse_nom_propre (nth 0 input_liste))) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin cond categorie_mot_un est égal à PARTICULE ((= categorie_mot_un "TYPE_VOIE") (progn (setq type_voie (casse_nom_propre (verif_type_voie (nth 0 input_liste)))); fin setq type_voie (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin cond categorie_mot_un est égal à TYPE_VOIE ( (and (= (substr (strcase (nth 0 input_liste)) 1 1) "D") (= (numberp (atoi (substr (nth 0 input_liste) 2 1))) T));fin and (progn (setq type_voie "Départementale"); fin setq type_voie (setq mot_en_cours (nth 0 input_liste)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum (strcase mot_en_cours)) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum (strcase mot_en_cours)) ;;; remplissage du champ PUB_NOM (ade_odsetfield obj_acad nom_de_la_table cible-pub_nom recnum (strcase mot_en_cours)) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acRed) );fin progn );fin si le mot correspond à D# ( (and (= (substr (strcase (nth 0 input_liste)) 1 2) "RD") (= (numberp (atoi (substr (nth 0 input_liste) 3 1))) T) );fin and (progn (setq type_voie "Départementale"); fin setq type_voie (setq mot_en_cours (nth 0 input_liste)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acRed) );fin progn );fin si le mot correspond à RD# ( (and (= (substr (strcase (nth 0 input_liste)) 1 1) "N") (= (numberp (atoi (substr (nth 0 input_liste) 2 1))) T) );fin and (progn (setq type_voie "Nationale"); fin setq type_voie (setq mot_en_cours (nth 0 input_liste)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum mot_en_cours) (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) (vla-put-color obj_vl acBylayer) );fin progn );fin si le mot correspond à N# ( (and (= (substr (strcase (nth 0 input_liste)) 1 1) "R") (= (numberp (atoi (substr (nth 0 input_liste) 2 1))) T));fin and (progn (setq type_voie "Rural"); fin setq type_voie (setq mot_en_cours (nth 0 input_liste)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (setq nom_rural (strcat "n°" (substr (nth 0 input_liste) 2))) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum nom_rural) ;;; remplissage du champ NOM_COMPLE (setq nom_comple_rural (strcat "Rural n°" (substr (nth 0 input_liste) 2))) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum nom_comple_rural) ;;; remplissage du champ CODE_INSEE (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) ;;; remplissage du champ PUB_NOM (ade_odsetfield obj_acad nom_de_la_table cible-pub_nom recnum (strcase mot_en_cours)) (vla-put-color obj_vl acBylayer) );fin progn );fin si le mot correspond à R# ( (and (= (substr (strcase (nth 0 input_liste)) 1 1) "C") (/= (atoi (substr deuxieme_caractere 2 1)) 0) );fin and (progn (setq type_voie "Communale"); fin setq type_voie (setq mot_en_cours (nth 0 input_liste)) (ade_odsetfield obj_acad nom_de_la_table cible-type_voie recnum type_voie) (setq nom_rural (strcat "n°" (substr (nth 0 input_liste) 2))) (ade_odsetfield obj_acad nom_de_la_table cible-nom recnum nom_rural) ;;; remplissage du champ NOM_COMPLE (setq nom_comple_rural (strcat "Communale n°" (substr (nth 0 input_liste) 2))) (ade_odsetfield obj_acad nom_de_la_table cible-nom_comple recnum nom_comple_rural) ;;; remplissage du champ CODE_INSEE (ade_odsetfield obj_acad nom_de_la_table cible-insee recnum (substr (getvar "DWGNAME") 1 5)) ;;; remplissage du champ PUB_NOM (ade_odsetfield obj_acad nom_de_la_table cible-pub_nom recnum (strcase mot_en_cours)) (vla-put-color obj_vl acBylayer) );fin progn );fin si le mot correspond à C# ); fin cond ); fin defun traitement_1_mot
Carboleum Posté(e) le 30 novembre 2010 Posté(e) le 30 novembre 2010 Avec la valeur retournée sous forme de liste, je ne parviens pas à différencier un texte alpha-numérique d'un texte alpha uniquement. wcmatch est ton ami... Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
fabcad Posté(e) le 30 novembre 2010 Auteur Posté(e) le 30 novembre 2010 Merci beaucoup Carboleum, Je n'avais jamais utilisé cette fonction ! Arghhhh. Bonne journée, Fabcad
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