- public static void InsertFromDwgFile(string fileName)  
-         {  
-             try  
-             {  
-   
-                 SetFocus(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Window.Handle); 
-   
-                 Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;  
-   
-                 Editor ed = doc.Editor;  
-   
-                 Point3d ptNew = Point3d.Origin;  
-   
-   
-                 using (doc.LockDocument())  
-                 {  
-   
-                     Database currentDb = doc.Database;  
-   
-                     ObjectIdCollection ids = new ObjectIdCollection();  
-   
-                     IdMapping idMap = new IdMapping();  
-   
-                     using (Transaction tr = doc.TransactionManager.StartTransaction())  
-                     {  
-   
-                         BlockTable currBt = (BlockTable)tr.GetObject(currentDb.BlockTableId, OpenMode.ForRead);  
-   
-                         BlockTableRecord currBtr =  
-                             (BlockTableRecord)tr.GetObject(currBt[BlockTableRecord.ModelSpace], OpenMode.ForRead);  
-   
-                         using (Database sourceDb = new Database(false, false))  
-                         {  
-   
-                             sourceDb.ReadDwgFile(fileName, System.IO.FileShare.ReadWrite, false, "");  
-   
-                             using (Transaction sourcetr = sourceDb.TransactionManager.StartTransaction())  
-                             {  
-   
-                                 ObjectIdCollection sourceIds = new ObjectIdCollection();  
-   
-                                 using (  
-                                     BlockTableRecord sourceBtr =  
-                                         (BlockTableRecord)sourcetr.GetObject(sourceDb.CurrentSpaceId, OpenMode.ForRead)  
-                                     )  
-                                 {  
-   
-                                     if (sourceBtr != null)  
-                                     {  
-   
-                                         sourceIds = new ObjectIdCollection();  
-   
-                                         foreach (ObjectId id in sourceBtr)  
-                                         {  
-                                             if (!id.IsNull && id.IsValid) //optional  
-                                                 sourceIds.Add(id);  
-                                         }  
-   
-                                         sourcetr.Commit();  
-                                     }  
-   
-                                     if (sourceIds.Count != 0)  
-                                         idMap = new IdMapping();  
-   
-                                     sourceDb.WblockCloneObjects(sourceIds, currBtr.ObjectId, idMap,  
-                                                                 DuplicateRecordCloning.Ignore, false);  
-   
-                                 }  
-   
-                             }  
-                         }  
-   
-   
-                         foreach (IdPair ip in idMap)  
-                         {  
-                             if (ip.IsPrimary) ids.Add(ip.Value);  
-   
-                         }  
-   
-   
-                         var copied = new ObjectId[ids.Count];  
-   
-                         ids.CopyTo(copied, 0);  
-   
-                         ed.SetImpliedSelection(copied);  
-   
-                         PromptSelectionResult psr = ed.SelectImplied();  
-   
-                         if (psr.Status == PromptStatus.OK)  
-                         {  
-                             var ppr =  
-                                 ed.Drag(  
-                                     psr.Value,  
-                                     "\nУкажите точку вставки: ",  
-                                     delegate(Point3d pt, ref Matrix3d mtx)  
-                                     {  
-   
-                                         if (ptNew == pt)  
-                                         {  
-                                             return SamplerStatus.NoChange;  
-                                         }  
-                                         mtx =  
-                                             Matrix3d.Displacement(  
-                                                 ptNew.GetVectorTo(pt)  
-                                                 );  
-                                         return SamplerStatus.OK;  
-                                     }  
-                                     );  
-   
-   
-                             if (ppr.Status == PromptStatus.OK)  
-                             {  
-   
-                                 var mtx =  
-                                     Matrix3d.Displacement(  
-                                         ptNew.GetVectorTo(ppr.Value)  
-                                         );  
-                                 foreach (SelectedObject sobj in psr.Value)  
-                                 {  
-                                     var en = tr.GetObject(sobj.ObjectId, OpenMode.ForRead, false) as Entity;  
-                                     if (en != null)  
-                                     {  
-                                         en.UpgradeOpen();  
-                                         en.TransformBy(mtx);  
-                                         en.DowngradeOpen();  
-                                     }  
-                                 }  
-                             }  
-                             else  
-                             {  
-                                 foreach (SelectedObject sobj in psr.Value)  
-                                 {  
-                                     var en = tr.GetObject(sobj.ObjectId, OpenMode.ForWrite, false) as Entity;  
-                                     if (en != null)  
-                                     {  
-                                         en.Erase(true);  
-                                     }  
-                                 }  
-                             }  
-                             ed.SetImpliedSelection(new ObjectId[] { });  
-   
-                             tr.Commit();  
-   
-                         }  
-                     }  
-                 }  
-             }  
-   
-             catch (Autodesk.AutoCAD.Runtime.Exception ex)  
-             {  
-                 Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(ex.Message + "\n" + ex.StackTrace + "\n" + ex.TargetSite);  
-             }  
-         }