Travailler avec du texte

Travailler avec du texte

Presque tous les dessins contiennent des objets texte et ces exemples montrent comment effectuer des opérations avec eux. Il existe différents types d’entités pour DWG/DXF qui peuvent stocker du texte, ce sont CadText, CadMText, CadAttDef, CadAttrib. Les deux derniers types sont généralement liés à CadInsertObject et sont stockés à l’intérieur de celui-ci ou dans le bloc correspondant.

Voici quelques exemples décrivant des opérations avec du texte.

Recherche de texte

Cet exemple montre comment trouver des valeurs de texte dans le fichier DWG/DXF et peut également être utilisé pour remplacer des valeurs de texte.

using (CadImage cadImage = (CadImage)Image.Load(fileName))
{
foreach (CadBaseEntity entity in cadImage.Entities)
{
if (entity.GetType() == typeof(CadText))
{
CadText text = (CadText)entity;
System.Console.WriteLine(text.DefaultValue);
}
if (entity.GetType() == typeof(CadMText))
{
CadMText mtext = (CadMText)entity;
System.Console.WriteLine(mtext.FullClearText);
}
if (entity.GetType() == typeof(CadAttrib))
{
CadAttrib attrib = (CadAttrib)entity;
System.Console.WriteLine(attrib.DefaultText);
}
if (entity.GetType() == typeof(CadAttDef))
{
CadAttDef attdef = (CadAttDef)entity;
System.Console.WriteLine(attdef.DefinitionTagString);
}
if (entity.TypeName == CadEntityTypeName.INSERT)
{
CadInsertObject insert = (CadInsertObject)entity;
CadBlockEntity block = cadImage.BlockEntities[insert.Name];
foreach (CadBaseEntity blockEntity in block.Entities)
{
if (blockEntity.GetType() == typeof(CadAttDef))
{
CadAttDef attdef = (CadAttDef)blockEntity;
System.Console.WriteLine(attdef.PromptString);
}
}
foreach (CadBaseEntity e in insert.ChildObjects)
{
if (e.TypeName == CadEntityTypeName.ATTRIB)
{
CadAttrib attrib = (CadAttrib)e;
System.Console.WriteLine(attrib.DefinitionTagString);
}
}
}
}
}

Ajout de nouveaux éléments de texte et de MText

Voici un exemple de la façon d’ajouter de nouveaux objets Texte/MText au dessin. L’ajout de nouvelles entités peut changer la taille du dessin, donc il est recommandé d’appeler UpdateSize() après ces opérations.

// adding of Text
CadText text = new CadText();
text.DefaultValue = "Watermark text";
text.TextHeight = 40;
text.FirstAlignment = new Cad3DPoint(300, 40);
text.LayerName = "0";
cadImage.BlockEntities["*Model_Space"].AddEntity(text);
cadImage.UpdateSize();
// adding of Mtext
CadMText watermark = new CadMText();
watermark.Text = "Watermark message";
watermark.InitialTextHeight = 40;
watermark.InsertionPoint = new Cad3DPoint(300, 40);
watermark.LayerName = "0";
cadImage.BlockEntities["*Model_Space"].AddEntity(watermark);
cadImage.UpdateSize();