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

AutoCAD .NET API:MS Pゴシックを持つ文字スタイルの作成

Issue

次のような「MS Pゴシック」を持つ文字スタイルを作成したいのですが、TextStyleTableRecord.FileName プロパティへの指定方法がわかりません。

mapgothic.jpg

どうすれば「MS Pゴシック」を指定することが出来ますか?

 

Solution

「MS Pゴシック」フォントは、TrueType Collection ファイルとして「MS ゴシック」や「MS UI Gothic」などと共に定義されています。

 

定義ファイル名は msgothic.ttc になり、FileName プロパティが要求する .ttf ファイルに合致しないため、同プロパティに指定することが出来ません。

 

この場合、.次のコードのように、ttf に分解した状態のファイル名で指定することが可能です。  

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

using (Transaction tr = db.TransactionManager.StartTransaction())
{
    TextStyleTable tbl = (TextStyleTable)tr.GetObject(db.TextStyleTableId, OpenMode.ForWrite);
    if (!tbl.Has("スタイル1"))
    {
        TextStyleTableRecord rec = new TextStyleTableRecord();
        rec.Name = "スタイル1";
        rec.FileName = "MS PGothic.ttf";
        tbl.Add(rec);
        tr.AddNewlyCreatedDBObject(rec, true);
    }
    else
    {
        ed.WriteMessage("\nスタイル1 文字スタイルは既に登録されています...");
    }
    tr.Commit();
}

 

また、オンラインヘルプ フォントを割り当てる(.NET) のように  FontDescriptor オブジェクトで指定することも出来ます。 

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

using (Transaction tr = db.TransactionManager.StartTransaction())
{
    TextStyleTable tbl = (TextStyleTable)tr.GetObject(db.TextStyleTableId, OpenMode.ForWrite);
    if (!tbl.Has("スタイル1"))
    {
        TextStyleTableRecord rec = new TextStyleTableRecord();
        rec.Name = "スタイル1";
        tbl.Add(rec);
        rec.Font = new FontDescriptor("MS Pゴシック", false, false, 128, 50);
        tr.AddNewlyCreatedDBObject(rec, true);
    }
    else
    {
        ed.WriteMessage("\nスタイル1 文字スタイルは既に登録されています...");
    }
    tr.Commit();
}

 

ご参考: