画層状態を保存する(.NET)

SaveLayerState メソッドを使用して、画層設定のセットを図面に保存します。SaveLayerState メソッドには 3 つのパラメータが必要です。最初のパラメータは、保存する画層状態に付ける名前の文字列です。2 つめのパラメータは保存したい画層のプロパティを指定します。保存する画層設定を示すには、LayerStateMasks 列挙型の定数を使用します。次の表は、LayerStateMasks 列挙型の一部である定数の一覧です。

画層状態マスクの定数

定数名

Layer プロパティ

Color

CurrentViewport

現在のビューポートで画層をフリーズ/フリーズ解除

Frozen

フリーズまたはフリーズ解除

LastRestored

最後に復元された画層

LineType

線種

LineWeight

線の太さ

Locked

ロックまたはロック解除

NewViewport

新しいビューポートで画層をフリーズ/フリーズ解除

None

画層の設定なし

On

表示オンまたはオフ

Plot

印刷するかどうか

PlotStyle

印刷スタイル

複数のプロパティを指定するには、必要な定数を加算してください。

必要な 3 番目のパラメータは、画層設定を保存するビューポートのオブジェクト ID です。ビューポートを指定しない場合は、ObjectId.Null を使用します。既に存在する名前で画層状態を保存しようとすると、エラーが返されます。名前を再使用する前に、既存の画層状態の名前を変更するか、削除する必要があります。

画層の色と線種の設定を保存する

次のコードは図面の現在の画層の色と線種の設定を ColorLinetype という名前で保存します。

VB.NET

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

C#

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

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

Sub SaveLayerColorAndLinetype()
    Dim oLSM As AcadLayerStateManager
 
    ' Access the LayerStateManager object
    Set oLSM = ThisDrawing.Application. _
                   GetInterfaceObject("AutoCAD.AcadLayerStateManager.20")
 
    ' Associate the current drawing database with LayerStateManager
    oLSM.SetDatabase ThisDrawing.Database
    oLSM.Save "ColorLinetype", acLsColor + acLsLineType
End Sub