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
-
+
///
/// 获取图元包围盒