Aller au contenu

un texte le long d\'une ligne


Messages recommandés

Bonjour,

 

En .net, je recherche un bout de code qui permettrait de dessiner un texte le long d'un segment de polyligne.

 

Dans l'ideal, ce texte est dessiné parallèle au segment, et se déplacerait lorsque le segment se modifierait comme le font les côtes.

Sauf que pour les côtes, il y a un "point d'insertion" qui empêche la pleine liberté du phénomêne.

 

merci.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas bien la demande, les textes ont aussi un point d'insertion.

 

Sinon, la classe Polyline dérive de la classe Curve qui a une méthode GetFirstDerivative qui retourne le vecteur tangent à la courbe au point spécifié.

Ce vecteur peut-être utilisé pour calculer la Rotation du texte.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

J'aimerais dessiné un texte aligné sur un segment de polyligne. Lorsque j'étirerai ce segment, le texte suivra la modification en restant aligné.

 

Je ne cherche pas à éclater le texte de façon à ce que les caractères suivent la courbe. Non, le texte reste à son état initial mais est et restera parallèle au segment de polyligne qui lui est droit.

 

Exactement comme le ferait une cote. Sauf que la cote ne reste pas à la même distance de par la position de son "point d'insertion". La cote reste "bloqué" par ce point.

 

En AutoLISP, j'associerais le texte au segment de la polyligne via les xdatas, par exemple. Puis en utilisant les reactors, lors de la modification de l'un des deux vertex je recalculerais la position du texte.

 

Comme vous avez pu en apercevoir, je débute en .net et il me manque beaucoup d'expérience et de doc sur le sujet.

 

Donc je cherche un exemple qui me permettrais de réaliser cet exercice en joignant l'utile et la (auto)formation.

 

Merci.

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Si tu dis être débutant en .NET, tu peux procéder graduellement en aboutissant chaque étape avant de passer à la suivante :

 

1_ Faire une commande qui ajoute un texte aligné au segment de polyligne sélectionné (il y a tout intérêt à 'factoriser' la partie de code qui aligne le texte dans une méthode séparée qui pourra être appelée par ton event handler quand tu en seras là).

 

2_ Attacher à la polylgne les données étendues qui seront utiles pour repositionner le texte (indice du segment et Handle de l'objet texte). Si plusieurs textes doivent pouvoir être liés à la même polyligne, la méthode doit pouvoir créer de nouvelles xdatas ou en ajouter à celle existante.

 

3_ Enfin, utiliser les évènements pour modifier la géométrie du texte, quand la polyligne est modifiée.

Le principe d'utilisation des évènements avec .NET est l'abonnement d'une sous routine (event handler) à un évènement. Cette routine sera appelée à chaque fois que survient l'évènement auquel elle est abonnée.

Il y a plusieurs types d'évènements (voir dans AutoCAD .NET Developer's Guide > Use Events). Un qui doit particulièrement t'intéresser dans ce cas est Database.ObjectModified (ou DBObject.Modified depuis 2010) qui survient à chaque modification d'un objet de la Database (ou de l'objet).

Mais attention, comme en LISP (vlr-ObjectReactor) ce type d'évènement survient avant que l'objet ne soit complètement fermé, on utilise donc généralement un autre évènement (Document.CommandEnded qui n'intervient que quand l'objet est fermé) pour faire les modifications. L'event handler du premier évènement ne fait que passer les données nécessaires (via une variable globale (champ) par exemple).

 

Je peux te donner un exemple, mais tu apprendras mieux si tu cherches par toi même...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é