#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