zoukankan      html  css  js  c++  java
  • AutoCAD.Net/C#.Net QQ群:193522571 深度克隆 deepclone

    废话不多说,上个例子。更多讨论请加我的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();
                    }
    
                }
  • 相关阅读:
    c# 不常用逻辑运算符
    c# 简单日志记录类 log

    最短路径
    A+B
    floyd 算法
    Kruskal 算法
    快排
    顺序表的逆排
    顺序表中多余元素的删除
  • 原文地址:https://www.cnblogs.com/swtool/p/14491092.html
Copyright © 2011-2022 走看看