You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La classe MLeader représente une entité d'annotation multi-repère moderne dans AutoCAD (introduite dans AutoCAD 2008). Les MLeaders sont plus flexibles que les Leaders hérités, supportant plusieurs lignes de repère, divers types de contenu (texte, bloc, ou aucun), et des styles MLeader dédiés pour un formatage cohérent.
Obtient/définit le type de contenu (MText, Block, None)
MText
MText
Obtient/définit le contenu MText
BlockContentId
ObjectId
Obtient/définit le contenu bloc
MLeaderStyle
ObjectId
Obtient/définit le style MLeader
ArrowSymbolId
ObjectId
Obtient/définit le bloc de pointe de flèche
LeaderLineType
LeaderType
Obtient/définit le type de ligne de repère (Straight, Spline)
TextAttachmentType
TextAttachmentType
Obtient/définit comment le texte s'attache au repère
DoglegLength
double
Obtient/définit la longueur d'atterrissage horizontal
EnableDogleg
bool
Obtient/définit si le dogleg est activé
EnableLanding
bool
Obtient/définit si la ligne d'atterrissage est activée
Méthodes Clés
Méthode
Type de Retour
Description
AddLeader()
int
Ajoute une nouvelle ligne de repère et retourne son index
RemoveLeader(int)
void
Supprime le repère à l'index spécifié
AddLeaderLine(int)
int
Ajoute une ligne de repère à un repère existant
RemoveLeaderLine(int, int)
void
Supprime une ligne de repère
SetFirstVertex(int, Point3d)
void
Définit le premier sommet d'une ligne de repère
SetLastVertex(int, Point3d)
void
Définit le dernier sommet d'une ligne de repère
GetLeaderIndex(int)
int
Obtient l'index du repère pour une ligne de repère
GetLeaderLineIndexes(int)
IntegerCollection
Obtient tous les index de ligne de repère pour un repère
Exemples de Code
Exemple 1: Créer un MLeader Simple avec Texte
using(Transactiontr=db.TransactionManager.StartTransaction()){BlockTableRecordbtr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite)asBlockTableRecord;// Créer MLeaderMLeadermleader=newMLeader();mleader.SetDatabaseDefaults();// Définir le type de contenu à MTextmleader.ContentType=ContentType.MTextContent;// Définir le contenu texteMTextmtext=newMText();mtext.Contents="Ceci est une note MLeader";mleader.MText=mtext;// Ajouter une ligne de repèreintleaderIndex=mleader.AddLeader();intlineIndex=mleader.AddLeaderLine(leaderIndex);// Définir les sommets (du texte vers l'élément)mleader.SetFirstVertex(lineIndex,newPoint3d(10,10,0));mleader.SetLastVertex(lineIndex,newPoint3d(0,0,0));// Ajouter au dessinbtr.AppendEntity(mleader);tr.AddNewlyCreatedDBObject(mleader,true);tr.Commit();}
Exemple 2: Créer un MLeader avec Plusieurs Lignes de Repère
using(Transactiontr=db.TransactionManager.StartTransaction()){BlockTableRecordbtr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite)asBlockTableRecord;MLeadermleader=newMLeader();mleader.SetDatabaseDefaults();mleader.ContentType=ContentType.MTextContent;MTextmtext=newMText();mtext.Contents="Repères Multiples";mleader.MText=mtext;// Ajouter premier repèreintleader1=mleader.AddLeader();intline1=mleader.AddLeaderLine(leader1);mleader.SetFirstVertex(line1,newPoint3d(10,10,0));mleader.SetLastVertex(line1,newPoint3d(0,0,0));// Ajouter deuxième repèreintleader2=mleader.AddLeader();intline2=mleader.AddLeaderLine(leader2);mleader.SetFirstVertex(line2,newPoint3d(10,10,0));mleader.SetLastVertex(line2,newPoint3d(5,-5,0));// Ajouter troisième repèreintleader3=mleader.AddLeader();intline3=mleader.AddLeaderLine(leader3);mleader.SetFirstVertex(line3,newPoint3d(10,10,0));mleader.SetLastVertex(line3,newPoint3d(-5,5,0));btr.AppendEntity(mleader);tr.AddNewlyCreatedDBObject(mleader,true);tr.Commit();}
Exemple 3: Créer un MLeader avec Contenu Bloc
using(Transactiontr=db.TransactionManager.StartTransaction()){BlockTablebt=tr.GetObject(db.BlockTableId,OpenMode.ForRead)asBlockTable;BlockTableRecordbtr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite)asBlockTableRecord;MLeadermleader=newMLeader();mleader.SetDatabaseDefaults();// Définir le type de contenu à Blocmleader.ContentType=ContentType.BlockContent;// Définir le contenu bloc (en supposant que le bloc "DetailTag" existe)if(bt.Has("DetailTag")){mleader.BlockContentId=bt["DetailTag"];}// Ajouter repèreintleaderIndex=mleader.AddLeader();intlineIndex=mleader.AddLeaderLine(leaderIndex);mleader.SetFirstVertex(lineIndex,newPoint3d(10,10,0));mleader.SetLastVertex(lineIndex,newPoint3d(0,0,0));btr.AppendEntity(mleader);tr.AddNewlyCreatedDBObject(mleader,true);tr.Commit();}
Exemple 4: Définir les Propriétés MLeader
using(Transactiontr=db.TransactionManager.StartTransaction()){MLeadermleader=tr.GetObject(mleaderId,OpenMode.ForWrite)asMLeader;// Définir le type de ligne de repèremleader.LeaderLineType=LeaderType.SplineLeader;// Activer et définir le doglegmleader.EnableDogleg=true;mleader.DoglegLength=5.0;// Activer l'atterrissagemleader.EnableLanding=true;// Définir l'attachement textemleader.TextAttachmentType=TextAttachmentType.AttachmentMiddle;// Définir la couleurmleader.ColorIndex=3;// Verttr.Commit();}
Exemple 5: Lire les Informations MLeader
using(Transactiontr=db.TransactionManager.StartTransaction()){MLeadermleader=tr.GetObject(mleaderId,OpenMode.ForRead)asMLeader;ed.WriteMessage("\n=== Information MLeader ===");ed.WriteMessage($"\nType Contenu : {mleader.ContentType}");ed.WriteMessage($"\nType Ligne Repère : {mleader.LeaderLineType}");ed.WriteMessage($"\nDogleg Activé : {mleader.EnableDogleg}");ed.WriteMessage($"\nLongueur Dogleg : {mleader.DoglegLength:F2}");ed.WriteMessage($"\nAtterrissage Activé : {mleader.EnableLanding}");if(mleader.ContentType==ContentType.MTextContent){ed.WriteMessage($"\nContenu Texte : {mleader.MText.Contents}");}// Compter les repèresintleaderCount=0;for(inti=0;i<100;i++)// Limite supérieure arbitraire{try{IntegerCollectionlines=mleader.GetLeaderLineIndexes(i);if(lines!=null&&lines.Count>0)leaderCount++;elsebreak;}catch{break;}}ed.WriteMessage($"\nNombre de Repères : {leaderCount}");tr.Commit();}
Exemple 6: Appliquer un Style MLeader
using(Transactiontr=db.TransactionManager.StartTransaction()){MLeadermleader=tr.GetObject(mleaderId,OpenMode.ForWrite)asMLeader;// Obtenir le dictionnaire de style MLeaderDBDictionarymleaderDict=tr.GetObject(db.MLeaderStyleDictionaryId,OpenMode.ForRead)asDBDictionary;if(mleaderDict.Contains("Annotative")){mleader.MLeaderStyle=mleaderDict.GetAt("Annotative");ed.WriteMessage("\nStyle MLeader 'Annotative' appliqué");}tr.Commit();}
Exemple 7: Créer un MLeader sans Contenu
using(Transactiontr=db.TransactionManager.StartTransaction()){BlockTableRecordbtr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite)asBlockTableRecord;// Créer MLeader sans contenu (juste lignes de repère)MLeadermleader=newMLeader();mleader.SetDatabaseDefaults();mleader.ContentType=ContentType.NoneContent;// Ajouter repèreintleaderIndex=mleader.AddLeader();intlineIndex=mleader.AddLeaderLine(leaderIndex);mleader.SetFirstVertex(lineIndex,newPoint3d(10,0,0));mleader.SetLastVertex(lineIndex,newPoint3d(0,0,0));mleader.ColorIndex=1;// Rougebtr.AppendEntity(mleader);tr.AddNewlyCreatedDBObject(mleader,true);tr.Commit();}
Exemple 8: Modifier le Texte MLeader
using(Transactiontr=db.TransactionManager.StartTransaction()){MLeadermleader=tr.GetObject(mleaderId,OpenMode.ForWrite)asMLeader;if(mleader.ContentType==ContentType.MTextContent){MTextmtext=mleader.MText;mtext.Contents="Contenu texte mis à jour\\PAvec plusieurs lignes";mtext.TextHeight=3.0;mleader.MText=mtext;ed.WriteMessage("\nTexte MLeader mis à jour");}tr.Commit();}
Types de Contenu
Type
Description
MTextContent
Annotation texte multi-lignes
BlockContent
Annotation référence de bloc
NoneContent
Aucun contenu (lignes de repère seulement)
Types de Repère
Type
Description
StraightLeader
Segments de ligne droits
SplineLeader
Courbe spline lisse
Types d'Attachement Texte
Type
Description
AttachmentTop
Attacher au haut du texte
AttachmentMiddle
Attacher au milieu du texte
AttachmentBottom
Attacher au bas du texte
MLeader vs Leader
Fonctionnalité
Leader (Hérité)
MLeader (Moderne)
Introduction
R13
2008
Repères Multiples
Non
Oui
Types de Contenu
Limité
Texte, Bloc, Aucun
Styles
Style de Dimension
Style MLeader
Flexibilité
Basique
Avancée
Recommandé
Hérité seulement
Tout nouveau travail
Meilleures Pratiques
Utiliser Styles MLeader : Créez et utilisez des styles MLeader pour la cohérence
Type de Contenu : Choisissez le type de contenu approprié pour vos besoins
Repères Multiples : Utilisez pour pointer vers plusieurs éléments
Dogleg : Activez pour une ligne d'atterrissage horizontale
Repères Spline : Utilisez pour une apparence organique et courbée
Formatage Texte : Utilisez les codes de formatage MText pour le texte riche
Contenu Bloc : Utilisez pour les étiquettes et appels standardisés