עבודה עם טקסט

עבודה עם טקסט

כמעט כל ציור מכיל אובייקטים של טקסט ודוגמאות אלו מציגות כיצד לבצע פעולות עימם. יש סוגים שונים של ישויות עבור DWG/DXF שיכולות לאחסן טקסט, הם CadText, CadMText, CadAttDef, CadAttrib. שני הסוגים האחרונים בדרך כלל קשורים לCadInsertObject ואוחסנים בתוכו או בבלוק התואם.

הנה כמה דוגמאות המתארות פעולות עם טקסט.

חיפוש הטקסט

דוגמה זו מראה כיצד למצוא ערכי טקסט בקובץ DWG/DXF והיא יכולה להיות בשימוש גם בשביל החלפת ערכי טקסט.

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

הוספת פריטי טקסט ו-MText חדשים

הנה הדוגמה כיצד להוסיף אובייקטים של טקסט/Mtext חדשים לציור. הוספת ישויות חדשות עשויה לשנות את גודל הציור, לכן מומלץ לקרוא ל-UpdateSize() לאחר פעולות אלו.

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