废话不多说,上个例子。更多讨论请加我的QQ群:193522571
[CommandMethod("copyEnt")] public void copyEnt() { Document doc = AcApp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; PromptEntityOptions options = new PromptEntityOptions(" Select entity to copy"); PromptEntityResult acSSPrompt = ed.GetEntity(options); if (acSSPrompt.Status != PromptStatus.OK) return; ObjectIdCollection collection = new ObjectIdCollection(); collection.Add(acSSPrompt.ObjectId); //make model space as owner for new entity ObjectId ModelSpaceId = SymbolUtilityServices.GetBlockModelSpaceId(db); IdMapping mapping = new IdMapping(); //db.DeepCloneObjects(collection, ModelSpaceId, mapping, false); //now open the new entity and change the color... using (Transaction Tx = db.TransactionManager.StartTransaction()) { Entity oldEnt = (Entity)Tx.GetObject(acSSPrompt.ObjectId, OpenMode.ForRead); Entity newEnt = (Entity)oldEnt.DeepClone(oldEnt, mapping, true); //get the map. IdPair pair1 = mapping[acSSPrompt.ObjectId]; //new object Entity ent = Tx.GetObject(pair1.Value, OpenMode.ForWrite) as Entity; //change the color to red ent.ColorIndex = 1; ent.Highlight(); BlockTableRecord btr = (BlockTableRecord)Tx.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); btr.AppendEntity(newEnt); Tx.AddNewlyCreatedDBObject(newEnt, true); Tx.Commit(); } }