Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
Issue
寸法を分解すると寸法値にあたる文字が MText オブジェクトとして分解されます。
この MText オブジェクトについて、MText.Contents プロパティから寸法値の文字を取得すると、寸法値にないコードが返される場合があります。
例:\A1;57,{\H0.7x;\S66^;}
このコードはどのようなものでしょうか?
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) の方法も利用することが可能です。