Восстановление состояний слоев

Метод RestoreLayerState предназначен для загрузки состояний слоев из данного набора, он требует указания 4 аргументов: первое значение — это имя восстанавливаемого набора состояний слоев, второе — идентификатор объекта видового экрана, настройки слоев для которого необходимо восстановить (ObjectId.Null, если для всех). Третье значение — целое число, определяющее способ обработки слоев, информация о которых отсутствует в сохраненном наборе. Четвертое значение определяет, какие настройки слоев будут восстановлены. Следующие значения определяют способ обработки слоев, информация о которых отсутствует в сохраненном наборе (третий аргумент):

  • 0 — Слои, не находящиеся в сохраненном наборе, остаются без изменений;
  • 1 — Слои, не находящиеся в сохраненном наборе, отключаются;
  • 2 — Слои, не находящиеся в сохраненном наборе, замораживаются в текущем видовом экране;
  • 4 — Настройки слоёв задаются, переопределяя настройки для текущего видового экрана;

Примечание: Вы можете использовать несколько значений для задания поведения слоев, не находящихся в сохраненном наборе. Например, вы можете отключить и заморозить слои, которые отсутствуют в нём Например, если вы сохраните настройки цвета и типа линии под именем "ColorLinetype" и впоследствии измените эти настройки, восстановление "ColorLinetype" вернет слоям цвета и типы линий, которые они имели при сохранении "ColorLinetype". Если вы добавили новые слои в чертеж после сохранения "ColorLinetype", эти новые слои не будут изменены при восстановлении "ColorLinetype".

Восстановление настроек цвета и типа линий слоев чертежа.

Предполагая, что настройки цвета и типа линий слоев в текущем чертеже были ранее сохранены под именем "ColorLinetype", следующий код восстанавливает настройки цвета и типа линий каждого слоя в чертеже до значений, которые они имели на момент сохранения "ColorLinetype".

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