Arbeiten mit Text

Arbeiten mit Text

Fast alle Zeichnungen enthalten Textobjekte, und diese Beispiele zeigen, wie man Operationen damit durchführt. Es gibt verschiedene Typen von Entitäten für DWG/DXF, die Text speichern können: CadText, CadMText, CadAttDef, CadAttrib. Die letzten beiden Typen stehen typischerweise in Beziehung zu CadInsertObject und sind darin oder im entsprechenden Block gespeichert.

Hier sind einige Beispiele, die Operationen mit Text beschreiben.

Text suchen

Dieses Beispiel zeigt, wie man Textwerte in der DWG/DXF-Datei findet und kann auch zum Ersetzen von Textwerten verwendet werden.

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);
}
}
}
}
}

Neue Text- und MText-Objekte hinzufügen

Hier ist das Beispiel, wie man neue Text/MText-Objekte zur Zeichnung hinzufügt. Das Hinzufügen neuer Entitäten kann die Größe der Zeichnung ändern, daher wird empfohlen, UpdateSize() nach diesen Operationen aufzurufen.

// 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();