Всех приветствую.
Есть вот такая тема 
https://adndevblog.typepad.com/autocad/2014/06/copy-extension-dictionary.html как я понимаю автор просто клонирует объекты в базе данных и ассоциирует с новым объектом.
Если я правильно понимаю, то словарь это просто объект в базе данных, который "присоединён" к какому-то объекту. А есть ли возможность отцепить существующий словарь и прицепить к другому объекту без всяких танцев с бубнами, с созданием новых словарей для объекта-цели, клонирования новых словарей/записей и последующим удалением старого объекта, словарей/записей, если мне ух надо удалить?
И ещё вопрос. В чём отличие моего кода от кода по ссылке? А то может я опять что-то неправильно делаю?
- namespace Test 
- { 
-     public class Commands 
-     { 
-         [CommandMethod("TESTCOPYDICTIONARY")] 
-         public static void CopyDictionary() 
-         { 
-             Database db = Application.DocumentManager.MdiActiveDocument.Database; 
-             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; 
-   
-             PromptEntityResult prEntResSrc = ed.GetEntity("\nВыберете источник"); 
-             PromptEntityResult prEntResTrg = ed.GetEntity("\nВыберете приёмник"); 
-   
-             if (prEntResSrc.Status != PromptStatus.OK && prEntResTrg.Status != PromptStatus.OK) return; 
-   
-             using (Transaction tr = db.TransactionManager.StartTransaction()) 
-             { 
-                 BlockReference source = tr.GetObject(prEntResSrc.ObjectId, OpenMode.ForRead) as BlockReference; 
-                 ObjectId srcDictId = source.ExtensionDictionary; 
-                 DBDictionary srcDict = tr.GetObject(srcDictId, OpenMode.ForRead) as DBDictionary; 
-   
-                 BlockReference target = tr.GetObject(prEntResTrg.ObjectId, OpenMode.ForWrite) as BlockReference; 
-                 ObjectId trgDictId = target.ExtensionDictionary; 
-                 if (trgDictId == ObjectId.Null) target.CreateExtensionDictionary(); 
-                 else return; 
-                 trgDictId = target.ExtensionDictionary; 
-                 DBDictionary trgDict = tr.GetObject(trgDictId, OpenMode.ForWrite) as DBDictionary; 
-   
-                 foreach(DBDictionaryEntry entry in srcDict) 
-                 { 
-                     ObjectId xRecId = entry.Value; 
-                     Xrecord xRec = tr.GetObject(xRecId, OpenMode.ForWrite) as Xrecord; 
-                     trgDict.SetAt(entry.Key, xRec); 
-                 } 
-   
-                 tr.Commit(); 
-             } 
-         } 
-     } 
- }