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;
            }
  • 相关阅读:
    css3实现轮播2
    css3实现轮播1
    读阮一峰ES6笔记4:字符串的新增方法
    读阮一峰ES6笔记3:字符串的扩展
    应用流策略与检查配置结果
    配置流策略
    配置流行为
    配置流分类
    "流量监管"和"流量整形"的区别
    802.1p 优先级与内部优先级的映射关系
  • 原文地址:https://www.cnblogs.com/swtool/p/14491133.html
Copyright © 2011-2022 走看看