Aller au contenu

Messages recommandés

Posté(e)

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

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é