Пример #1
0
        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);
                }
            }
        }