保存された画層状態を書き出したり読み込むことにより、同じ画層設定を他の図面で使用することができます。保存された画層状態を LAS ファイルに書き出すには ExportLayerState メソッドを使用し、図面に LAS ファイルを読み込むには ImportLayerState メソッドを使用します。
ExportLayerState メソッドは、2 つのパラメータを受け取ります。最初のパラメータは、書き出す画層状態を識別するための文字列です。2 番目のパラメータは画層状態を書き出すファイル名です。ファイルのパスを指定しない場合は、開いた図面と同じフォルダに保存されます。指定したファイルが既に存在する場合は、既存のファイルが上書きされます。ファイル名には、拡張子 .las を使用します。これは AutoCAD が書き出された画層状態ファイルを認識するための拡張子です。
ImportLayerState メソッドは 1 つのパラメータを受け入れます。読み込む画層状態を含むファイル名を指定します。読み込む画層状態が LAS ファイルではなく、図面ファイルにある場合は、図面ファイルを開いて ImportLayerStateFromDb メソッドを使用し、他の図面の Database オブジェクトから画層状態を読み込むことができます。
画層状態を読み込むときに、保存された設定で参照されているプロパティが読み込み先の図面で利用できない場合、エラーが発生します。この場合、読み込みが終了しても、既定のプロパティが使用されます。たとえば、書き出した画層設定に線種が指定されていて、読み込んだ図面にロードされていなければエラーが発生し、図面の既定の線種に置き換えられます。これらのエラー条件を検出し、エラーが発生しても処理が継続できるようにしなければなりません。
読み込まれたファイル内で現在の図面に存在しない画層設定が定義されている場合、それらの画層は現在の図面に作成されます。RestoreLayerState メソッドを使う際、設定を保存するときに指定したプロパティが新しい画層に割り当てられます。新しい画層のその他のプロパティは既定の設定のままです。
次の例では、ColorLinetype.las という名前のファイルに保存された画層状態を書き出します。
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
<CommandMethod("ExportLayerState")> _
Public Sub ExportLayerState()
'' Get the current document
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acLyrStMan As LayerStateManager
acLyrStMan = acDoc.Database.LayerStateManager
Dim sLyrStName As String = "ColorLinetype"
If acLyrStMan.HasLayerState(sLyrStName) = True Then
acLyrStMan.ExportLayerState(sLyrStName, "c:\my documents\" & _
sLyrStName & ".las")
End If
End Sub
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");
}
}
Sub ExportLayerStates()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.20")
oLSM.SetDatabase ThisDrawing.Database
oLSM.Export "ColorLinetype", "c:\my documents\ColorLinetype.las"
End Sub
次の例では、ColorLinetype.las という名前のファイルから画層状態を読み込みます。
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
<CommandMethod("ImportLayerState")> _
Public Sub ImportLayerState()
'' Get the current document
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acLyrStMan As LayerStateManager
acLyrStMan = acDoc.Database.LayerStateManager
Dim sLyrStFileName As String = "c:\my documents\ColorLinetype.las"
If System.IO.File.Exists(sLyrStFileName) Then
Try
acLyrStMan.ImportLayerState(sLyrStFileName)
Catch ex As Autodesk.AutoCAD.Runtime.Exception
Application.ShowAlertDialog(ex.Message)
End Try
End If
End Sub
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);
}
}
}
Sub ImportLayerStates()
Dim oLSM As AcadLayerStateManager
Set oLSM = ThisDrawing.Application. _
GetInterfaceObject("AutoCAD.AcadLayerStateManager.20")
oLSM.SetDatabase ThisDrawing.Database
' If the drawing you're importing to does not contain
' all the linetypes referenced in the saved settings,
' an error is returned. The import is completed, though,
' and the default linetype is used.
On Error Resume Next
oLSM.Import "c:\my documents\ColorLType.las"
If Err.Number = -2145386359 Then
' Error indicates a linetype is not defined
MsgBox ("One or more linetypes specified in the imported " + _
"settings is not defined in your drawing")
End If
On Error GoTo 0
End Sub