ทำงานกับข้อความ

ทำงานกับข้อความ

เกือบทุกการวาดภาพมีวัตถุข้อความและตัวอย่างเหล่านี้จะแสดงวิธีการดำเนินการกับพวกเขา มีประเภทต่างๆ ของเอนทิตีสำหรับ 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);
}
}
}
}
}

เพิ่มรายการ Text และ MText ใหม่

นี่คือตัวอย่างวิธีการเพิ่มวัตถุ Text/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();