Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 28 January 2008 09:10

schpountz
Juste Inscrit !
Date d'inscription: 28 Jan 2008
Messages: 4

Texte DXF en ligne de base

Bonjour,
Je cherche à convertir une couche de texte au format DXF en une couche de ligne au format Shape.
Cette couche de ligne serait la base de l'étiquette du texte ayant la valeur du texte de l'étiquette comme attribut.
Pourriez-vous m'indiquer comment faire ?
Merci

Hors ligne

 

#2 Mon 28 January 2008 09:47

LASGOUZES
Participant assidu
Date d'inscription: 6 Mar 2006
Messages: 169

Re: Texte DXF en ligne de base

Bonjour,
Une solution faire un BOUNDINGBOXREPLACER suivi d'un CENTERLINEREPLACER

Cordialement,

Hors ligne

 

#3 Mon 28 January 2008 10:14

schpountz
Juste Inscrit !
Date d'inscription: 28 Jan 2008
Messages: 4

Re: Texte DXF en ligne de base

Merci pour cette réponse, j'en suis arrivé là aussi.
Le problème avec cette méthode, c'est que la ligne est située au centre de l'entité du polygone alors qu'il me faut récupérer la ligne de base de l'étiquette.

Hors ligne

 

#4 Mon 28 January 2008 11:02

schpountz
Juste Inscrit !
Date d'inscription: 28 Jan 2008
Messages: 4

Re: Texte DXF en ligne de base

J'ai trouvé la réponse en appliquant un "offsetter" pour effectuer une translation de la géométrie des entités en ajoutant une valeur de décalage aux coordonnées Y.
Merci ;-)

Hors ligne

 

#5 Mon 28 January 2008 11:53

Matthieu-VEREMES
Participant actif
Lieu: Montpellier
Date d'inscription: 9 Jan 2008
Messages: 97
Site web

Re: Texte DXF en ligne de base

Bonjour,

L'utilisation d'OFFSETTER vous convient-elle ?

Car pour avoir une ligne à la base des annotations, je voulais vous proposer l'utilisation de 2DPOINTADDER et des angles pour ajouter un deuxième point.
Vous spécifiez la longueur des segments de lignes souhaités dans une constante puis les coordonnées du deuxième point seront calculées (EXPRESSIONEVALUATOR) grâce à cette longueur et à l'angle (attribut fme_rotation) : un peu de trigonométrie.

L'avantage de cette méthode est que la distance entre les 2 points de chaque entité sera toujours la même.


Matthieu Ambrosy
Veremes : support FME & version française
support at veremes point com

Hors ligne

 

#6 Mon 28 January 2008 14:24

schpountz
Juste Inscrit !
Date d'inscription: 28 Jan 2008
Messages: 4

Re: Texte DXF en ligne de base

Merci Matthieu, je vais me rabattre sur ta solution car ma méthode ne fonctionne pas pour les textes qui sont inclinés.
Peux-tu me détailler précisément la méthode ?
Merci

Hors ligne

 

#7 Mon 28 January 2008 16:13

Matthieu-VEREMES
Participant actif
Lieu: Montpellier
Date d'inscription: 9 Jan 2008
Messages: 97
Site web

Re: Texte DXF en ligne de base

Dans Workbench, ajoutez votre jeu de données Autocad.
Nous allons travailler sur les entités textes.

- Activez les attributs de format autocad_alignement_x, autocad_alignement_y et fme_rotation du jeu de données.
- Quelle sera la longueur de chaque segment de ligne, en unités de terrain ? Appelons-la H.
- Pour créer un deuxième point pour chaque entité, nous allons utiliser les attributs autocad_alignement_x, autocad_alignement_y et fme_rotation (angle) précédemment activés et un peu de trigonométrie.

X1 et Y1 sont les coordonnées du point d'insertion, que l'on connait (autocad_alignement_x et autocad_alignement_y)
X2 et Y2 seront les coordonnées du 2ème point, que l'on recherche.
H = la longueur du segment entre les 2 points, que l'on a fixée, c'est à dire l'hypoténuse.
a = l'angle entre l'horizontale et l'orientation du texte, que l'on connait (fme_rotation)
Les deux autres côtés du triangle seront dx et dy (dx pour l'horizontale et dy pour la verticale).

C'est plus simple avec un dessin...
Au final :

dx = H * (cos a)
dy = H * (sin a)


Par contre en vous écrivant je me rends compte qu'il faut également prendre en compte le sens du texte :
- Angle entre 0 et 90 : le texte part vers le haut et la droite : X2 > X1, Y2 > Y1
- Angle entre 90 et 180 : le texte part vers le haut et la gauche : X2 < X1, Y2 > Y1
- Angle entre 180 et 270 : le texte part vers le bas et la gauche : X2 < X1, Y2 < Y1
- Angle entre 270 et 360 : le texte part vers le bas et la droite : X2 > X1, Y2 < Y1

Donc en fonction de ces 4 cas (utilisez des TESTER sur l'angle) on obtiendra les coordonnées X2 et Y2 du deuxième point (soit en additionnant, soit en soustrayant dx et dy à X1 et Y1) : à faire dans des EXPRESSIONEVALUATOR.

Reste à joindre les 2 points de chaque entité : POINTCONNECTOR.

Dernière modification par Matthieu-VEREMES (Mon 28 January 2008 17:31)


Matthieu Ambrosy
Veremes : support FME & version française
support at veremes point com

Hors ligne

 

#8 Mon 28 January 2008 17:41

Matthieu-VEREMES
Participant actif
Lieu: Montpellier
Date d'inscription: 9 Jan 2008
Messages: 97
Site web

Re: Texte DXF en ligne de base

Une piste pour améliorer, vous pourriez utiliser l'attribut "StringLengthCalculator" sur l'attribut "fme_text_string" pour calculer la longueur des chaines et attribuer cette valeur (ou sa division par une constante) à la longueur des segments (H).

Dernière modification par Matthieu-VEREMES (Mon 28 January 2008 17:42)


Matthieu Ambrosy
Veremes : support FME & version française
support at veremes point com

Hors ligne

 

Pied de page des forums

Powered by FluxBB