[CommandMethod("LayerReaname")]
static public void LayerReaname()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
if (doc == null) return;
Database db = doc.Database;
Editor ed = doc.Editor;
// Запрашиваем старое имя слоя
PromptStringOptions po1 = new PromptStringOptions("Укажите старое имя слоя: ");
po1.AllowSpaces = true;
PromptResult pr1 = ed.GetString(po1);
if (pr1.Status != PromptStatus.OK) return;
if (pr1.StringResult.Contains("|") || pr1.StringResult == "0") {
ed.WriteMessage("\nЭтот слой нельзя переименовать");
return;
}
// Запрашиваем новое имя слоя
PromptStringOptions po2 = new PromptStringOptions("Укажите новое имя слоя: ");
po2.AllowSpaces = true;
PromptResult pr2 = ed.GetString(po2);
if (pr2.Status != PromptStatus.OK) return;
if (pr2.StringResult.Contains("|") || pr2.StringResult == "0") {
ed.WriteMessage("\nЭто имя недопустимо");
return;
}
try {
SymbolUtilityServices.ValidateSymbolName(pr2.StringResult, false);
}
catch {
ed.WriteMessage("\nЭто имя недопустимо");
return;
}
#pragma warning disable 618
using (LayerTable lt = db.LayerTableId.Open(OpenMode.ForRead) as LayerTable) {
if (!lt.Has(pr1.StringResult)) {
ed.WriteMessage("Слоя {0} нет в чертеже!", pr1.StringResult);
return;
}
if (lt.Has(pr2.StringResult)) {
ed.WriteMessage("Слой {0} уже есть!", pr2.StringResult);
return;
}
using (LayerTableRecord ltr = lt[pr1.StringResult].Open(OpenMode.ForWrite) as LayerTableRecord) {
ltr.Name = pr2.StringResult;
}
}
#pragma warning restore 618
}