保存された画層状態を書き出したり読み込むことにより、同じ画層設定を他の図面で使用することができます。保存された画層状態を LAS ファイルに書き出すには ExportLayerState メソッドを使用し、図面に LAS ファイルを読み込むには ImportLayerState メソッドを使用します。
ExportLayerState メソッドは、2 つのパラメータを受け取ります。最初のパラメータは、書き出す画層状態を識別するための文字列です。2 番目のパラメータは画層状態を書き出すファイル名です。ファイルのパスを指定しない場合は、開いた図面と同じフォルダに保存されます。指定したファイルが既に存在する場合は、既存のファイルが上書きされます。ファイルに名前を付けるときには、拡張子 .las を使用します。これは、書き出された画層状態ファイルを AutoCAD が認識するための拡張子です。
ImportLayerState メソッドは 1 つのパラメータを受け入れます。読み込む画層状態を含むファイル名を指定します。読み込む画層状態が LAS ファイルではなく、図面ファイルにある場合は、図面ファイルを開いて ImportLayerStateFromDb メソッドを使用すると、他の図面の Database オブジェクトから画層状態を読み込むことができます。
画層状態を読み込むときに、保存された設定で参照されているプロパティが読み込み先の図面で利用できない場合、エラーが発生します。この場合、読み込みが終了しても、既定のプロパティが使用されます。たとえば、書き出した画層設定に線種が指定されていて、読み込んだ図面にロードされていなければエラーが発生し、図面の既定の線種に置き換えられます。これらのエラー条件を検出し、エラーが発生しても処理が継続できるようにしなければなりません。
読み込まれたファイル内で現在の図面に存在しない画層設定が定義されている場合、それらの画層は現在の図面に作成されます。RestoreLayerState メソッドを使う際、設定を保存するときに指定したプロパティが新しい画層に割り当てられます。新しい画層のその他のプロパティは既定の設定のままです。
次の例では、ColorLinetype.las という名前のファイルに保存された画層状態を書き出します。
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
[CommandMethod("ExportLayerState")]
public static void ExportLayerState()
{
// Get the current document
Document acDoc = Application.DocumentManager.MdiActiveDocument;
LayerStateManager acLyrStMan;
acLyrStMan = acDoc.Database.LayerStateManager;
string sLyrStName = "ColorLinetype";
if (acLyrStMan.HasLayerState(sLyrStName) == true)
{
acLyrStMan.ExportLayerState(sLyrStName, "c:\\my documents\\" +
sLyrStName + ".las");
}
}
次の例では、ColorLinetype.las という名前のファイルから画層状態を読み込みます。
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
[CommandMethod("ImportLayerState")]
public static void ImportLayerState()
{
// Get the current document
Document acDoc = Application.DocumentManager.MdiActiveDocument;
LayerStateManager acLyrStMan;
acLyrStMan = acDoc.Database.LayerStateManager;
string sLyrStFileName = "c:\\my documents\\ColorLinetype.las";
if (System.IO.File.Exists(sLyrStFileName))
{
try
{
acLyrStMan.ImportLayerState(sLyrStFileName);
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
Application.ShowAlertDialog(ex.Message);
}
}
}