Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
Issue
次のような「MS Pゴシック」を持つ文字スタイルを作成したいのですが、TextStyleTableRecord.FileName プロパティへの指定方法がわかりません。
どうすれば「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();
}
ご参考: