إضافة كائنات TEXT/MTEXT جديدة إلى يمين الكائنات الموجودة
كيفية إضافة كائنات TEXT/MTEXT جديدة إلى يمين الكائنات الموجودة
المشكلة: كيفية إضافة كائنات TEXT/MTEXT جديدة إلى يمين الكائنات الموجودة (CADNET-8172).
نصائح: للقيام بذلك، أنشئ كائن CadBaseEntity، قم بإنشاء CadMText أو CadText مع النص، في الكائن الجديد، أضف cadImage.Layouts[“Model”].BlockTableRecordHandle من الرسم إلى حقل SoftOwner وأضفه إلى كتلة cadImage.BlockEntities[" *MODEL_SPACE"] وأضف الكائن الجديد إلى كائنات الرسم.
مثال:
List<CadBaseEntity> entities = new List<CadBaseEntity>(cadImage.Entities); | |
List<CadBaseEntity> addedEntities = new List<CadBaseEntity>(); | |
foreach (CadBaseEntity baseEntity in entities) | |
{ | |
if (baseEntity.TypeName != CadEntityTypeName.MTEXT) | |
{ | |
continue; | |
} | |
else | |
{ | |
CadMText mtext = (CadMText)baseEntity; | |
if (mtext.FullClearText == "Known text") | |
{ | |
CadMText design = CreateMTextToTheRight(mtext, "Design"); | |
// CadText design = CreateTextToTheRight(mtext, "Design"); | |
addedEntities.Add(design); | |
} | |
} | |
} | |
foreach (CadBaseEntity addedEntity in addedEntities) | |
{ | |
addedEntity.SoftOwner = cadImage.Layouts["Model"].BlockTableRecordHandle; | |
cadImage.BlockEntities["*MODEL_SPACE"].AddEntity(addedEntity); | |
} | |
entities.AddRange(addedEntities); | |
cadImage.Entities = new List<CadBaseEntity>(entities).ToArray(); | |
private static CadMText CreateMTextToTheRight(CadMText mtext, string value) | |
{ | |
CadMText newMText = new CadMText(); | |
newMText.Text = value; | |
newMText.InitialTextHeight = mtext.InitialTextHeight; | |
// mtext.HorizontalWidth may be useful too to get the width of the mtext | |
newMText.InsertionPoint = new Cad3DPoint(mtext.InsertionPoint.X + mtext.ReferenceRectangleWidth, mtext.InsertionPoint.Y); | |
newMText.LayerName = mtext.LayerName; | |
return newMText; | |
} | |
private static CadText CreateTextToTheRight(CadMText mtext, string value) | |
{ | |
CadText text = new CadText(); | |
text.DefaultValue = value; | |
text.TextHeight = mtext.InitialTextHeight; | |
text.FirstAlignment = new Cad3DPoint(mtext.InsertionPoint.X + mtext.ReferenceRectangleWidth, mtext.InsertionPoint.Y - text.TextHeight); | |
text.LayerName = mtext.LayerName; | |
return text; | |
} |