/// <summary> /// 强行删除图层及图层上的所有实体对象 /// </summary> /// <param name="db">图形数据库</param> /// <param name="layerName">图层名</param> /// <param name="delete"></param> /// <returns></returns> public static bool DeleteLayer(this Database db, string layerName, bool delete) { if (layerName == "0" || layerName == "Defpoints") { return(false); } bool isDeleteOK = false; using (Transaction trans = db.TransactionManager.StartTransaction()) { LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead); lt.GenerateUsageData(); if (lt.Has(layerName)) { LayerTableRecord ltr = (LayerTableRecord)lt[layerName].GetObject(OpenMode.ForWrite); if (delete) { if (ltr.IsUsed) { ltr.deleteAllEntityInLayer(); } if (db.Clayer == ltr.ObjectId) { db.Clayer = lt["0"]; } ltr.Erase(); isDeleteOK = true; } else { if (!ltr.IsUsed && db.Clayer != lt[layerName]) { ltr.Erase(); isDeleteOK = true; } } } else { isDeleteOK = true; } trans.Commit(); } return(isDeleteOK); }