Message 1 of 1
Setting layer state using the LayerStateManager almost working
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
The desired behavior I'm after is to change to a layer state the same as if I was using the drop down menu built into AutoCAD. This code almost works, but locked layers aren't dimming like they do if I use the AutoCAD dropdown.
public static void ChangeLayerState(string commandName)
{
if (!_settings.Commands.TryGetValue(commandName, out var state)) return;
using (Transaction tr = Active.Database.TransactionManager.StartOpenCloseTransaction())
{
try
{
foreach (string stateName in state.Names)
{
// Get the LayerStateManager
var layerStateManager = Active.Database.LayerStateManager;
// Check if the layer state exists
if (layerStateManager.HasLayerState(stateName))
{
layerStateManager.RestoreLayerState(stateName, ObjectId.Null, 0,
LayerStateMasks.Color |
//LayerStateMasks.Transparency |
LayerStateMasks.Frozen |
LayerStateMasks.LineType |
LayerStateMasks.LineWeight |
LayerStateMasks.Locked |
LayerStateMasks.On
);
tr.Commit();
return;
}
}
}
catch
{
tr.Abort();
}
}
Application.DocumentManager.MdiActiveDocument.SendStringToExecute(
"regen ", true, false, false);
}