[CommandMethod("CloneLeaderWithMText")]publicvoidCloneLeaderWithMText(){Documentdoc=Application.DocumentManager.MdiActiveDocument;Databasedb=doc.Database;Editored=doc.Editor;using(Transactiontr=db.TransactionManager.StartTransaction()){// Prompt for the leader to clonePromptEntityOptionspeo=newPromptEntityOptions("\nSelect a leader to clone: ");peo.SetRejectMessage("\nSelected entity is not a leader.");peo.AddAllowedClass(typeof(Leader),true);PromptEntityResultper=ed.GetEntity(peo);if(per.Status!=PromptStatus.OK)return;LeaderoriginalLeader=tr.GetObject(per.ObjectId,OpenMode.ForRead)asLeader;if(originalLeader==null)return;// Clone the leaderLeaderclonedLeader=originalLeader.Clone()asLeader;if(clonedLeader==null)return;// Add the cloned leader to the databaseBlockTableRecordbtr=tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite)asBlockTableRecord;btr.AppendEntity(clonedLeader);tr.AddNewlyCreatedDBObject(clonedLeader,true);// Clone the associated MTextMTextoriginalMText=tr.GetObject(originalLeader.Annotation,OpenMode.ForRead)asMText;if(originalMText!=null){MTextclonedMText=originalMText.Clone()asMText;if(clonedMText!=null){btr.AppendEntity(clonedMText);tr.AddNewlyCreatedDBObject(clonedMText,true);// Associate the cloned MText with the cloned leaderclonedLeader.Annotation=clonedMText.ObjectId;clonedLeader.TransformBy(Matrix3d.Displacement(newVector3d(1000,500,0)));clonedMText.TransformBy(Matrix3d.Displacement(newVector3d(1000,500,0)));}}tr.Commit();}}
Deep Clone
[CommandMethod("CloneLeaderWithMText")]publicvoidCloneLeaderWithMText(){vardoc=Application.DocumentManager.MdiActiveDocument;vardb=doc.Database;vared=doc.Editor;// Prompt for the leader to clonevarpeo=newPromptEntityOptions("\nSelect a leader to clone: ");peo.SetRejectMessage("\nSelected entity is not a leader.");peo.AddAllowedClass(typeof(Leader),true);varper=ed.GetEntity(peo);if(per.Status!=PromptStatus.OK)return;using(vartr=db.TransactionManager.StartTransaction()){varleader=(Leader)tr.GetObject(per.ObjectId,OpenMode.ForRead);// Clone the leader and its annotation (if any)varids=newObjectIdCollection{leader.ObjectId};if(!leader.Annotation.IsNull)ids.Add(leader.Annotation);varmapping=newIdMapping();db.DeepCloneObjects(ids,leader.OwnerId,mapping,false);// Displace the cloned entitie(s)vardisplace=Matrix3d.Displacement(newVector3d(1000.0,500.0,0.0));foreach(IdPairpairinmapping){if(pair.IsCloned&&pair.IsPrimary){varentity=(Entity)tr.GetObject(pair.Value,OpenMode.ForWrite);entity.TransformBy(displace);}}tr.Commit();}}