Làm việc với văn bản

Làm việc với văn bản

Hầu hết tất cả các bản vẽ đều chứa các đối tượng văn bản và các ví dụ này cho thấy cách thực hiện các thao tác với chúng. Có nhiều loại thực thể cho DWG/DXF có thể lưu trữ văn bản, đó là CadText, CadMText, CadAttDef, CadAttrib. Hai loại cuối cùng thường liên quan đến CadInsertObject và được lưu trữ bên trong nó hoặc trong khối tương ứng.

Dưới đây là một số ví dụ mô tả các thao tác với văn bản.

Tìm kiếm văn bản

Ví dụ này cho thấy cách tìm giá trị văn bản trong tệp DWG/DXF và cũng có thể được sử dụng để thay thế các giá trị văn bản.

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

Thêm các mục Text và MText mới

Dưới đây là ví dụ về cách thêm các đối tượng Text/MText mới vào bản vẽ. Việc thêm các thực thể mới có thể thay đổi kích thước của bản vẽ, vì vậy được khuyến nghị gọi UpdateSize() sau các thao tác này.

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