AutoCAD.Net/C#.Net QQ群:193522571 深度克隆 deepclone
2021-05-16 11:26
标签:tab open create strong value new style val false 废话不多说,上个例子。更多讨论请加我的QQ群:193522571 AutoCAD.Net/C#.Net QQ群:193522571 深度克隆 deepclone 标签:tab open create strong value new style val false 原文地址:https://www.cnblogs.com/swtool/p/14491092.html[CommandMethod("copyEnt")]
public void copyEnt()
{
Document doc = AcApp.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
PromptEntityOptions options = new PromptEntityOptions("\nSelect 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();
}
}
上一篇:【WebGL】《WebGL编程指南》读书笔记——第六章
下一篇:C# 环境要求
文章标题:AutoCAD.Net/C#.Net QQ群:193522571 深度克隆 deepclone
文章链接:http://soscw.com/index.php/essay/86223.html