diff --git a/src/CAD/IFox.CAD.Shared/ExtensionMethod/Entity/EntityEx.cs b/src/CAD/IFox.CAD.Shared/ExtensionMethod/Entity/EntityEx.cs index 9186a1c699e158e2dcd9a1861c661e7457079f6a..d0de5ca6c91a094883fd7a486ce1c04d29e250e7 100644 --- a/src/CAD/IFox.CAD.Shared/ExtensionMethod/Entity/EntityEx.cs +++ b/src/CAD/IFox.CAD.Shared/ExtensionMethod/Entity/EntityEx.cs @@ -6,7 +6,7 @@ /// public static class EntityEx { - + #region 实体线性变换 @@ -18,7 +18,10 @@ public static class EntityEx /// 目标点 public static void Move(this Entity ent, Point3d from, Point3d to) { - ent.TransformBy(Matrix3d.Displacement(to - from)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Displacement(to - from)); + } } /// @@ -29,7 +32,10 @@ public static void Move(this Entity ent, Point3d from, Point3d to) /// 缩放比例 public static void Scale(this Entity ent, Point3d center, double scaleValue) { - ent.TransformBy(Matrix3d.Scaling(scaleValue, center)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Scaling(scaleValue, center)); + } } /// @@ -41,7 +47,10 @@ public static void Scale(this Entity ent, Point3d center, double scaleValue) /// 旋转平面的法向矢量 public static void Rotation(this Entity ent, Point3d center, double angle, Vector3d normal) { - ent.TransformBy(Matrix3d.Rotation(angle, normal, center)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Rotation(angle, normal, center)); + } } /// @@ -52,7 +61,10 @@ public static void Rotation(this Entity ent, Point3d center, double angle, Vecto /// 转角,弧度制,正数为顺时针 public static void Rotation(this Entity ent, Point3d center, double angle) { - ent.TransformBy(Matrix3d.Rotation(angle, Vector3d.ZAxis.TransformBy(ent.Ecs), center)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Rotation(angle, Vector3d.ZAxis.TransformBy(ent.Ecs), center)); + } } /// @@ -63,7 +75,10 @@ public static void Rotation(this Entity ent, Point3d center, double angle) /// 对称轴终点 public static void Mirror(this Entity ent, Point3d startPoint, Point3d endPoint) { - ent.TransformBy(Matrix3d.Mirroring(new Line3d(startPoint, endPoint))); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Mirroring(new Line3d(startPoint, endPoint))); + } } /// @@ -73,7 +88,10 @@ public static void Mirror(this Entity ent, Point3d startPoint, Point3d endPoint) /// 对称平面 public static void Mirror(this Entity ent, Plane plane) { - ent.TransformBy(Matrix3d.Mirroring(plane)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Mirroring(plane)); + } } /// @@ -83,7 +101,10 @@ public static void Mirror(this Entity ent, Plane plane) /// 对称点 public static void Mirror(this Entity ent, Point3d basePoint) { - ent.TransformBy(Matrix3d.Mirroring(basePoint)); + using (ent.ForWrite()) + { + ent.TransformBy(Matrix3d.Mirroring(basePoint)); + } } #endregion @@ -106,7 +127,7 @@ public static Extents3d GetExtents(this IEnumerable ents) } #endregion - + /// /// 获取图元包围盒