Aller au contenu

connaître la taille de l\'interligne pour du Mtext


Messages recommandés

Posté(e)

Bonjour,

Je cherche à connaitre sous forme de fonction si possible la taille de l'interlignage en fonction de la taille du texte. j'ai bien essayé de le mesurer en faisant un TCIRCLE autour de mon texte puis en tabluant les mesures sous excel pour en tirer la fonction, mais je ne suis pas satisfait du résultat.

 

 

Je voudrais connaitre l'interlignage pour pouvoir insérer un Mtext de 2 lignes avec comme point de base le milieu de la hauteur.

 

Merci par anticipation.

 

[Edité le 19/12/2006 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Bonjour,

 

Les propriétés du Mtext m'ont donné la solution j'ai donc pris, pour plusieurs taille de texte, l'interlignage et j'ai tabulé ça sous EXCEL:

 

Soit y l'interlignage, et x la taille du Mtext:

 

Y=(5/3)*x

 

 

et soit Z la distance séparant le bas de la première ligne et le haut de la seconde

 

Z=(2/3)*x

 

si ça peut servir à quelqu'un. Sait-on jamais...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 5 mois après...
Posté(e)

En fait ça ne fonctionne que sur certaines polices... alors je suis preneur d'une solution générale car pour faire une insertion automatique avec une macro VBA, ça me serait bien utile...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Salut,

 

La valeur par défaut pour l'espacement entre les lignes est bien de 5/3, mais il faut la multiplier par le "Facteur d'espacement" (entre 0.25 et 4)

 

http://img524.imageshack.us/img524/3949/txtmp3.png

 

Je ne connais pas le VBA, mais tu retrouvreras la hauteur nominale avec Height Property, le facteur d'espacement avec LineSpacingFactor Property.

En multipliant ces deux résultants entre eux puis par 5/3 tu auras l'espacement entre les lignes tel que donné dans la fenêtre de propriété.

Tu peux aussi obtenir directement ce résultat avec LineSpacingDistance Property

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

  • 1 mois après...
Posté(e)

Merci beaucoup, j'ai trouvé comment le faire en VBA, c'est assez bizarre voire stupide mais bon j'ai pas trouvé mieux pour l'instant : je le posterais quand je ferai le tri dans ma procédure. Bon voilà le code : s'il manque des explications ou de déclarations de variables... demandez-moi, je serai ravi que ce code aide quelqu'un:

 

 

dim taille as single
dim Mtextobj as 
dim sngInterlignegc as single
dim decalage as single
dim directiontexte as double
dim pins as variant




taille = ThisDrawing.ActiveTextStyle.LastHeight


'si on ne connait pas l'interligne
If sngInterlignegc = 0 Then
'point d'insertion du Mtextobj sui sera supprimé
Dim dblPinsgc(0 To 2) As Double
dblPinsgc(0) = 0: dblPinsgc(1) = 0: dblPinsgc(2) = 0

'insertion du Mtextobj
Set MTextObj = ThisDrawing.ModelSpace.AddMText(dblPinsgc, 25, "chaine inutile")
'on  trouve la distance d'espacement
sngInterlignegc = MTextObj.LineSpacingDistance
       With MTextObj
       .Update
       End With
'on supprime l'objet car on ne pouvait pas bien le centrer puisqu'on dois connaitre sngInterlignegc
'avant d'utiliser la méthode Set
MTextObj.Delete
End If


'on connait maintenant sngInterlignegc donc on peut calculer le décalage
decalage = taille / 2 + sngInterlignegc / 2

'point d'insertion
pins = ThisDrawing.Utility.GetPoint(, vbCrLf & "Insérer : " & texteins)
directiontexte = ThisDrawing.Utility.GetOrientation(pins, vbCrLf & "Direction du texte...")

'Création du text multiligne
'Centrer en X le texte
pins(0) = pins(0) - decalage * Sin(directiontexte)
           
'Centrer en Y le texte
pins(1) = pins(1) + decalage * Cos(directiontexte)
          


'insertion du texte
Set MTextObj = ThisDrawing.ModelSpace.AddMText(pins, largeur_du_Mtext, texteins)
sngInterlignegc = MTextObj.LineSpacingDistance
       	With MTextObj
        'partie à modifier
        .Rotation = directiontexte
        .AttachmentPoint = acAttachmentPointMiddleLeft
        'regen du texte uniquement
        .Update
       	End With

 

 

Je vais également le poster dans les routines VBA.

 

[Edité le 7/7/2007 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

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é