zoukankan      html  css  js  c++  java
  • AutoCAD.Net/C#.Net QQ群:193522571 镜像mirror后原来块实体中的XDATA丢失了?

    更多讨论请加我的QQ群:193522571

    下面代码是我前面的代码,发现对于块参照,镜像后,XDATA中会丢失!

            public static ObjectId Mirror(this ObjectId id, Point3d mirrorPt1, Point3d mirrorPt2, bool eraseSourceObject)
            {
                Line3d miLine = new Line3d(mirrorPt1, mirrorPt2);
                Matrix3d mt = Matrix3d.Mirroring(miLine);
                ObjectId mirrorId = id;
                Entity ent = (Entity)id.GetObject(OpenMode.ForWrite);
                if (eraseSourceObject == true)
                    ent.TransformBy(mt);
                else
                {
                    Entity entCopy = ent.GetTransformedCopy(mt);
                    mirrorId = id.Database.AddToCurrentSpace(entCopy);
                }
                return mirrorId;
            }

    下面代码增加了深度克隆deepclone,然后再进行矩阵转换就不会发生丢失了!

            public static ObjectId Mirror(this ObjectId id, Point3d mirrorPt1, Point3d mirrorPt2, bool eraseSourceObject)
            {
                Line3d miLine = new Line3d(mirrorPt1, mirrorPt2);
                Matrix3d mt = Matrix3d.Mirroring(miLine);
                ObjectId mirrorId = id;
                Entity ent = (Entity)id.GetObject(OpenMode.ForWrite);
                Database db = id.Database;
                if (!eraseSourceObject)
                {
                    var ids = new ObjectIdCollection();
                    ids.Add(id);
                    var mapping = new IdMapping();
                    db.DeepCloneObjects(ids, db.CurrentSpaceId, mapping, false);
                    mirrorId = mapping[id].Value;
                }
                ent.TransformBy(mt);
                return mirrorId;
            }
  • 相关阅读:
    题解-FJOI2014 树的重心
    题解-CF1307G Cow and Exercise
    题解-SHOI2005 树的双中心

    【转载】SVN使用教程总结
    Fastcgi、CGI 是什么
    通过js或jq增加的代码,点击事件或其他一些事件不起作用时
    js闭包讲解
    PHP 程序员危机(转载)
    浏览器 User-Agent相关知识
  • 原文地址:https://www.cnblogs.com/swtool/p/14491133.html
Copyright © 2011-2022 走看看