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;
            }
  • 相关阅读:
    在终端聊天
    Vue双向数据绑定的原理
    手动封装on,emit,off
    浅谈Vue中组件传值的几种方式
    常见的一些性能优化的小方法
    常见的一些JS兼容问题
    移动布局的方法
    移动布局的方法
    快速、高效的学习vuex
    移动端300ms延迟原因及解决方案
  • 原文地址:https://www.cnblogs.com/swtool/p/14491133.html
Copyright © 2011-2022 走看看