[CommandMethod("TPCHANGE")]
public void TPCHANGE()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
if (doc == null) return;
Editor ed = doc.Editor;
ToolPaletteManager tpm = ToolPaletteManager.Manager;
CatalogItemCollection cats = tpm.Catalogs;
bool wasChanged = false;
foreach (CatalogItem cat in cats)
{
for (int i = 0; i < cat.ChildCount; i++)
{
CatalogItem subcat = cat.GetChild(i);
// Работаем только с конкретным каталогом
if (subcat.Name.Equals("MyBlockTools", StringComparison.OrdinalIgnoreCase))
{
ed.WriteMessage($"\nTools Name={subcat.Name} LocalFile={subcat.LocalFile}");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(subcat.LocalFile);
XmlNodeList sf = xmlDoc.GetElementsByTagName("SourceFile");
if (sf != null && sf.Count > 0)
{
foreach (XmlNode xn in sf)
{
ed.WriteMessage($"\n\tSourceFile Old={xn.InnerText}");
xn.InnerText = "C:\\MyNewFile.dwg"; // Новое значение SourceFile
ed.WriteMessage($"\n\tSourceFile New={xn.InnerText}");
}
xmlDoc.Save(subcat.LocalFile);
wasChanged = true;
}
}
}
}
if (wasChanged)
tpm.LoadCatalogs(); // Загружаем все каталоги
}