#1 Thu 20 June 2013 11:57
- fabcad
- Participant assidu
- Lieu: Acigné
- Date d'inscription: 3 Apr 2006
- Messages: 275
[AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonjour à tous,
Préambule :
- AutoCAD MAP permet l'écriture automatique via l'Ajout d'un style Texte sur un calque AutoCAD ou une requête DWG sur le dessin courant, c'est bien mais on ne peut pas concaténer avec des retour chariots entre chaque valeur de champ.
- Même chose mais en plus fastidieux, c'est d'associer le dessin à traiter dans un dessin projet juste pour faire une requête DWG sur le dessin associé, en utilisant l'altération de propriétés avec création de textes mais là aussi, pas de choix sur l'élément textuel (mtextes ou textes) ainsi que les retours chariots.
C'est pourquoi, J'avais créé cette fonction afin d'écrire sous forme d'étiquettes (Mtextes) dont l'index est issu des valeurs de champs de Données d'Objets.
Mais cette dernière n'est pas souple puisque la concaténation des champs est faite au préalable.
j'avais pensé à ce genre d'algorithme :
- Sélection d'un objet modèle.
- Si l'objet modèle possède des Données d'Objets alors création d'une liste Tables - Champs.
- Sélection d'objets suivant l'objet modèle (normalement polylignes) mais la fonction pourra être enrichie des types SIG.
- Sélection des champs dans un dialogue liste.
- Sur l'ensemble des objets (polylignes) créer une concaténation des valeurs des champs avec un retour chariot entre chaque valeur.
- Créer l'étiquette Mtexte sur chaque polyligne en fonction que cette dernière soit fermée (centroïde) ou non point milieu du linéaire.
Merci d'avance et bonne journée,
Fabcad,
Le Rennais Métropolitain,
Dernière modification par fabcad (Mon 24 June 2013 14:23)
Hors ligne
#2 Thu 20 June 2013 16:31
- bruno v.
- Participant actif
- Date d'inscription: 22 Mar 2010
- Messages: 89
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonjour,
J'ai essayé ton lisp pour essayer de comprendre ce que tu voulais obtenir, mais cela n'a pas fonctionné (les noms champs sont statiques dans ton lisp)
Pour des objets curvilignes, j'ai écrit un code générique, je ne sais pas si ça correspond vraiment à ton besoin mais tu peux le modifier à ta sauce.
Hors ligne
#3 Thu 20 June 2013 20:53
- Patrice
- JeSuisCharlie
- Date d'inscription: 16 Sep 2005
- Messages: 4779
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Hello Bruno et Fab
MERCI encore une routine Tip-Top sur les ODs ...
GeoBye, Pat
(Autodesk Expert Elite Team)
Hors ligne
#4 Thu 20 June 2013 21:42
- fabcad
- Participant assidu
- Lieu: Acigné
- Date d'inscription: 3 Apr 2006
- Messages: 275
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonsoir a tous,
Merci Bruno pour ton aide et j'aimerais tellement comprendre comment tu fait pour faire glisser ton curseur au bout de ton texte généré.
Voilà avec de la recherche à tatillons, j'ai enfin trouvé un début qui fonctionne chez moi, si quelqu'un peut l'améliorer, je suis preneur.
Ce que je n'arrive pas à faire, c'est comment gérer le nombre de tables différentes associées aux objets à traiter.
Je remercie tous les contributeurs dont les fonctions sont incorporées dans cette routine.
Le 21 juin 2013 :
- J'ai mis en ligne la v2 qui met la création de l'index d'étiquette en sub-routine et qui traite le type de données (INT REAL STR).
- J'ai mis en ligne la v3 qui met en cond les types d'objets cad et la création de la routine principale et de la sub-routine de traitement.
Fabcad,
Le Rennais Métropolitain,
Dernière modification par fabcad (Tue 02 July 2013 17:16)
Hors ligne
#5 Mon 24 June 2013 10:03
- fabcad
- Participant assidu
- Lieu: Acigné
- Date d'inscription: 3 Apr 2006
- Messages: 275
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonjour a tous,
J'ai mis a jour la version de ma routine mais je n'arrive pas à trouver comment faire pour vérifier le nombre de tables de l'objet en cours dans ma sous-fonction : Creation_Etiquette.
Je sèche car je maitrise pas le trio mapcar function lambda et comment traiter l'absence d'une table mais continuer sur la ou les autres tables que possède l'objet en cours mais toujours par rapport à la liste en entrée (choisie).
Exemple de cycle :
Liste Tables|champs de l'objet modèle : ("prop_od|layer" "Parcelle|URBAIN" "Parcelle|PARCELLE" "Parcelle|OBJECTID" "Parcelle|BATIE")
Liste choisie par rapport à l'objet modèle : ("prop_od|layer" "Parcelle|PARCELLE")
Liste Tables|champs de l'objet cible (pas de table prop_od) : ("Parcelle|URBAIN" "Parcelle|PARCELLE" "Parcelle|OBJECTID" "Parcelle|BATIE")
Merci de votre aide.
Fabcad,
Le Rennais Métropolitain,
Dernière modification par fabcad (Tue 25 June 2013 13:10)
Hors ligne
#6 Tue 25 June 2013 14:54
- fabcad
- Participant assidu
- Lieu: Acigné
- Date d'inscription: 3 Apr 2006
- Messages: 275
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonjour a tous,
J'ai résolu mon ptit souci en inversant les conditions de mon "Or" en plaçant un retour chariot comme réponse à la condition.
J'ai mis à jour le fichier lisp.
Merci de votre aide.
Fabcad,
Le Rennais Métropolitain,
Dernière modification par fabcad (Tue 02 July 2013 17:16)
Hors ligne
#7 Tue 02 July 2013 17:14
- fabcad
- Participant assidu
- Lieu: Acigné
- Date d'inscription: 3 Apr 2006
- Messages: 275
Re: [AutoCAD MAP] Ecriture d'étiquettes sur polylignes
Bonjour a tous,
J'ai mis à jour le fichier lisp car j'ai commenté tout le programme et ajouté un reverse sur la liste choisie dans la boite de dialogue afin de respecter l'ordre de sélection des items.
Fabcad,
Le Rennais Métropolitain,
Dernière modification par fabcad (Tue 02 July 2013 17:15)
Hors ligne