既存のテキスト/MTEXTエンティティの右に新しいテキスト/MTEXTエンティティを追加する
Contents
[
Hide
]既存のテキスト/MTEXTエンティティの右に新しいテキスト/MTEXTエンティティを追加する方法
問題: 既存のテキスト/MTEXTエンティティの右に新しいテキスト/MTEXTエンティティを追加する方法 (CADNET-8172)。
ヒント: これを行うには、CadBaseEntityオブジェクトを作成し、テキストを持つCadMTextまたはCadTextを作成し、新しいオブジェクトのSoftOwnerフィールドに図面からcadImage.Layouts[“Model”].BlockTableRecordHandleを追加し、cadImage.BlockEntities[" *MODEL_SPACE"]ブロックに追加し、新しいオブジェクトを図面エンティティに追加します。
例:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |