Werk met tekst
Werk met tekst
Bijna alle tekeningen bevatten tekstobjecten en deze voorbeelden tonen aan hoe je bewerkingen met hen kunt uitvoeren. Er zijn verschillende soorten entiteiten voor DWG/DXF die tekst kunnen opslaan, dit zijn CadText, CadMText, CadAttDef, CadAttrib. De laatste twee types zijn doorgaans gerelateerd aan CadInsertObject en worden binnenin of in het bijbehorende blok opgeslagen.
Hier zijn enkele voorbeelden die de bewerkingen met tekst beschrijven.
Zoeken naar de tekst
Dit voorbeeld laat zien hoe je tekstwaarden in het DWG/DXF-bestand kunt vinden en kan ook worden gebruikt om tekstwaarden te vervangen.
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); | |
} | |
} | |
} | |
} | |
} |
Nieuwe Tekst en MText-items toevoegen
Hier is het voorbeeld van hoe je nieuwe Tekst/MText-objecten aan de tekening kunt toevoegen. Het toevoegen van nieuwe entiteiten kan de grootte van de tekening veranderen, dus het wordt aanbevolen om UpdateSize() aan te roepen na deze bewerkingen.
// 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(); |