Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。

AutoCAD .NET API:寸法値(寸法値の文字)の書式コード

Issue

寸法を分解すると寸法値にあたる文字が MText オブジェクトとして分解されます。

この MText オブジェクトについて、MText.Contents プロパティから寸法値の文字を取得すると、寸法値にないコードが返される場合があります。

 

例:\A1;57,{\H0.7x;\S66^;}

mtext.jpg

 

このコードはどのようなものでしょうか?

 

Solution

このコードは、マルチテキストの整形するために用意された「書式コード」と呼ばれるコードで、AutoCAD のオンラインヘルプ ページで内容を確認することが出来ます。

AutoCAD .NET API で MText オブジェクトの文字列の内容を確認する場合には、Contents プロパティが書式コード付きの内容を、Text プロパティが書式コードを削除した内容を返すので、用途に応じてプロパティを使い分けることが出来ます。

 

Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

PromptEntityOptions peo = new PromptEntityOptions("\nMText オブジェクトを選択:");
peo.SetRejectMessage("\nMText オブジェクトではありません.");
peo.AddAllowedClass(typeof(MText), true);
PromptEntityResult pent = ed.GetEntity(peo);
if (pent.Status != PromptStatus.OK)
{
    return;
}

using (Transaction tr = db.TransactionManager.StartTransaction())
{
    Entity ent = tr.GetObject(pent.ObjectId, OpenMode.ForRead) as Entity;
    ed.WriteMessage("\nObject Type : " + ent.GetType().ToString());
    MText mtext = (MText)ent;
    ed.WriteMessage("\n\tMText Text : {0}", mtext.Text);
    ed.WriteMessage("\n\tMText Contents : {0}", mtext.Contents);
    tr.Commit();
}

 

寸法オブジェクトを分解せずに、AutoCAD .NET API :分解せずに寸法文字の情報を取得するには? (autodesk.co.jp) の方法も利用することが可能です。