Восстановление состояний слоев
Метод 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);
}
}