using System; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; namespace ClassLibrary { /// <summary> /// Summary description for YdsClass. /// </summary> public class YdsClass { public YdsClass() { // // TODO: Add constructor logic here // } // Define Command "AsdkCmd1" [CommandMethod("AsdkCmd1")] static public void test() // This method can have any name { Document dc = Application.DocumentManager.MdiActiveDocument; Database db = dc.Database; ObjectIdCollection ids = new ObjectIdCollection(); using (DocumentLock acLckDocCur = dc.LockDocument()) { using (Transaction trans = dc.TransactionManager.StartTransaction()) { BlockTable tb = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord rd = trans.GetObject(tb[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord ; Circle c1 = new Circle(); c1.SetDatabaseDefaults(); c1.Center = new Point3d(0, 0, 0); c1.Radius = 5; Circle c2 = new Circle(); c2.SetDatabaseDefaults(); c2.Center = new Point3d(2,50,0); c2.Radius = 20; rd.AppendEntity(c1); rd.AppendEntity(c2); trans.AddNewlyCreatedDBObject(c1, true); trans.AddNewlyCreatedDBObject(c2, true); ids.Add(c1.ObjectId); ids.Add(c2.ObjectId); trans.Commit(); } } string sLocalRoot = Application.GetSystemVariable("LOCALROOTPREFIX") as string; string sTemplatePath = sLocalRoot + "Template//acad.dwt"; Application.ShowAlertDialog(sTemplatePath); DocumentCollection acDocs = Application.DocumentManager; Document newDc = acDocs.Add(sTemplatePath); Database newDb = newDc.Database ; using (DocumentLock acLckDocCur = newDc.LockDocument()) { using (Transaction trans = newDc.TransactionManager.StartTransaction()) { BlockTable newTb = trans.GetObject(newDb.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord newRd = trans.GetObject(newTb[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord; IdMapping acIdmap = new IdMapping(); db.WblockCloneObjects(ids, newRd.ObjectId, acIdmap, DuplicateRecordCloning.Ignore, false); trans.Commit(); } } acDocs.MdiActiveDocument = newDc; } } }