画層状態を復元する(.NET)

RestoreLayerState メソッドは、画層状態の画層設定をリセットします。4 つの値が必要です。最初の値は復元する画層状態の名前で、2 番目の値は、画層設定を復元するビューポートのオブジェクト ID です。3 番目の値は、画層状態に含まれない画層を処理する方法を定義する整数です。4 番目の値は、復元する画層設定を指定します。

次の値は、画層状態に含まれない画層を処理する方法を指定します。

注: 上記の複数の値の合計値を使用して、画層状態に含まれない画層の復元動作を定義できます。たとえば、画層状態に保存されていない画層を非表示にしてフリーズすることができます。

たとえば、画層の色と線種の設定を "ColorLinetype" という名前で保存した後、その設定を変更した場合、"ColorLinetype" を復元すると、画層の色と線種の設定は "ColorLinetype" を保存したときの値に復元されます。"ColorLinetype" を保存した後に新しい画層を追加した場合、新しい画層は "ColorLinetype" を復元しても影響を受けません。

図面の画層の色と線種の設定を復元する

現在の図面の画層の色と線種の設定が、"ColorLinetype" という名前で以前に保存されていたとします。次のコードは、図面の画層の色と線種の設定を、"ColorLinetype" を保存したときの値に復元します。

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
 
<CommandMethod("RestoreLayerState")> _
Public Sub RestoreLayerState()
    '' 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.RestoreLayerState(sLyrStName, _
                                     ObjectId.Null, _
                                     1, _
                                     LayerStateMasks.Color + _
                                     LayerStateMasks.LineType)
    End If
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
 
[CommandMethod("RestoreLayerState")]
public static void RestoreLayerState()
{
    // Get the current document
    Document acDoc = Application.DocumentManager.MdiActiveDocument;
 
    LayerStateManager acLyrStMan;
    acLyrStMan = acDoc.Database.LayerStateManager;
 
    string sLyrStName = "ColorLinetype";
 
    if (acLyrStMan.HasLayerState(sLyrStName) == true)
    {
        acLyrStMan.RestoreLayerState(sLyrStName,
                                     ObjectId.Null,
                                     1,
                                     LayerStateMasks.Color |
                                     LayerStateMasks.LineType);
    }
}

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

Sub RestoreLayerState()
    Dim oLSM As AcadLayerStateManager
    Set oLSM = ThisDrawing.Application. _
                   GetInterfaceObject("AutoCAD.AcadLayerStateManager.20")
 
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Restore "ColorLinetype"
End Sub