کار با متن
کار با متن
تقریباً تمام نقاشیها شامل اشیاء متنی هستند و این مثالها نشان میدهند که چگونه میتوان عملیات مختلفی را با آنها انجام داد. انواع مختلفی از موجودیتها برای 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(); |