private LayerStateMasks lsMasks = LayerStateMasks.Color | LayerStateMasks.Frozen | LayerStateMasks.LineWeight | LayerStateMasks.LineType | LayerStateMasks.On | LayerStateMasks.Plot | LayerStateMasks.Locked;
[CommandMethod("XrefLayersOnlyLayerState")]
public void XrefLayersOnlyLayerState()
{
var lman = Db.LayerStateManager;
string name = "xref";
lman.SaveLayerState(name, lsMasks, ObjectId.Null);
using (Transaction trx = Db.TransactionManager.StartTransaction())
{
var dic = lman.LayerStatesDictionaryId(false).GetDBObject<DBDictionary>();
if (!dic.Contains(name))
{
Ed.WriteLine("The pooch is now screwed");
return;
}
Xrecord xrec = dic.GetAt(name).GetDBObject<Xrecord>(OpenMode.ForWrite);
XrecordEnumerator enumer = xrec.GetEnumerator();
while (enumer.MoveNext())
{
if (enumer.Current.TypeCode == (int)DxfCode.SoftPointerId && enumer.Current.Value != null)
{
try
{
ObjectId id = (ObjectId)enumer.Current.Value;
if (!id.IsNull && id.IsValid)
{
LayerTableRecord ltr = id.GetDBObject<LayerTableRecord>();
if (!ltr.IsDependent)
{
enumer.RemoveCurrent();
while (enumer.Current.TypeCode != (int)DxfCode.Alpha)
{
enumer.RemoveCurrent();
}
}
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
Ed.WriteLine(ex.Message);
}
}
}
trx.Commit();
}
}