作図セッション中は、いつでも画層を削除できます。ただし、現在の画層、画層 0、外部参照に従属する画層、オブジェクトを含む画層は削除できません。
画層を削除するには、Erase メソッドを使用します。Purge 関数を使用して当該画層が削除可能であることを確認すると共に、画層 0、Defpoints、現在の画層のいずれでもないことを確認することが推奨されます。
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
[CommandMethod("RemoveLayer")]
public static void RemoveLayer()
{
// Get the current document and database
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
// Start a transaction
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
// Open the Layer table for read
LayerTable acLyrTbl;
acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId,
OpenMode.ForRead) as LayerTable;
string sLayerName = "ABC";
if (acLyrTbl.Has(sLayerName) == true)
{
// Check to see if it is safe to erase layer
ObjectIdCollection acObjIdColl = new ObjectIdCollection();
acObjIdColl.Add(acLyrTbl[sLayerName]);
acCurDb.Purge(acObjIdColl);
if (acObjIdColl.Count > 0)
{
LayerTableRecord acLyrTblRec;
acLyrTblRec = acTrans.GetObject(acObjIdColl[0],
OpenMode.ForWrite) as LayerTableRecord;
try
{
// Erase the unreferenced layer
acLyrTblRec.Erase(true);
// Save the changes and dispose of the transaction
acTrans.Commit();
}
catch (Autodesk.AutoCAD.Runtime.Exception Ex)
{
// Layer could not be deleted
Application.ShowAlertDialog("Error:\n" + Ex.Message);
}
}
}
}
}