保存された画層状態の書き出しと読み込み(.NET)

保存された画層状態を書き出したり読み込むことにより、同じ画層設定を他の図面で使用することができます。保存された画層状態を LAS ファイルに書き出すには ExportLayerState メソッドを使用し、図面に LAS ファイルを読み込むには ImportLayerState メソッドを使用します。

注: 画層状態を読み込んでも画層状態は復元されません。画層状態の読み込み後に、RestoreLayerState メソッドを使用して画層状態を復元する必要があります。

ExportLayerState メソッドは、2 つのパラメータを受け取ります。最初のパラメータは、書き出す画層状態を識別するための文字列です。2 番目のパラメータは画層状態を書き出すファイル名です。ファイルのパスを指定しない場合は、開いた図面と同じフォルダに保存されます。指定したファイルが既に存在する場合は、既存のファイルが上書きされます。ファイル名には、拡張子 .las を使用します。これは AutoCAD が書き出された画層状態ファイルを認識するための拡張子です。

ImportLayerState メソッドは 1 つのパラメータを受け入れます。読み込む画層状態を含むファイル名を指定します。読み込む画層状態が LAS ファイルではなく、図面ファイルにある場合は、図面ファイルを開いて ImportLayerStateFromDb メソッドを使用し、他の図面の Database オブジェクトから画層状態を読み込むことができます。

画層状態を読み込むときに、保存された設定で参照されているプロパティが読み込み先の図面で利用できない場合、エラーが発生します。この場合、読み込みが終了しても、既定のプロパティが使用されます。たとえば、書き出した画層設定に線種が指定されていて、読み込んだ図面にロードされていなければエラーが発生し、図面の既定の線種に置き換えられます。これらのエラー条件を検出し、エラーが発生しても処理が継続できるようにしなければなりません。

読み込まれたファイル内で現在の図面に存在しない画層設定が定義されている場合、それらの画層は現在の図面に作成されます。RestoreLayerState メソッドを使う際、設定を保存するときに指定したプロパティが新しい画層に割り当てられます。新しい画層のその他のプロパティは既定の設定のままです。

保存された画層設定を書き出す

次の例では、ColorLinetype.las という名前のファイルに保存された画層状態を書き出します。

VB.NET

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

C#

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");
    }
}

VBA/ActiveX コード リファレンス

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 という名前のファイルから画層状態を読み込みます。

VB.NET

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

C#

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);
        }
    }
}

VBA/ActiveX コード リファレンス

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