public override void Calculate() { Tools.StartTransaction(() => { if (Entities.FirstOrDefault() != null) { ((BlockReference)Entities.First()).BlockTableRecord.GetObjectForWrite <BlockTableRecord>().DeepErase(true); } }); Entities.ForEach(ent => ent.Dispose()); Entities.Clear(); if (!_lowerComplite) { Matrix3d toLocalCs = Arrow.GetToLocalTransform(_lowerPointUcs, _ucs); _arrow = new Arrow(); _arrow.CalculateLower(_jigPoint.TransformBy(toLocalCs)); _setEntitiesToBlock(_arrow.Explode(Matrix3d.Identity), true); } else { if (!_lowerJigComplite) { Matrix3d toLocalCs = Arrow.GetToLocalTransform(_lowerPointUcs, _ucs); _arrow.CalculateJigLower(_jigPoint.TransformBy(toLocalCs)); _setEntitiesToBlock(_arrow.Explode(Matrix3d.Identity), true); } } }