Voeg nieuwe TEXT/MTEXT-entiteiten toe aan de rechterkant van bestaande entiteiten
Hoe nieuwe TEXT/MTEXT-entiteiten toe te voegen aan de rechterkant van bestaande entiteiten
Probleem: Hoe nieuwe TEXT/MTEXT-entiteiten toe te voegen aan de rechterkant van bestaande entiteiten (CADNET-8172).
Tips: Om dit te doen, maak een CadBaseEntity-object, maak een CadMText of CadText met tekst, voeg in het nieuwe object aan het SoftOwner-veld cadImage.Layouts[“Model”].BlockTableRecordHandle van de tekening toe en voeg het toe aan het cadImage.BlockEntities[" *MODEL_SPACE"]-blok en voeg het nieuwe object toe aan tekenentiteiten.
Voorbeeld:
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; | |
} |