/// <summary>
        /// Вставка блока с атрибутами
        /// </summary>
        /// <param name="promptCounter">0 - только вставка, 1 - с поворотом</param>
        /// <param name="tr">Транзакция</param>
        /// <param name="db">База данных чертежа</param>
        /// <param name="ed">Editor</param>
        /// <param name="blkDefId">ObjectId блока</param>
        /// <param name="attributes">Список имен атрибутов</param>
        /// <param name="isAnnotative">Аннотативность блока-исходника</param>
        /// <returns></returns>
        public static ObjectId InsertBlockRef(
            int promptCounter,
            Transaction tr,
            Database db,
            Editor ed,
            ObjectId blkDefId,
            List <string> attributes,
            bool isAnnotative)
        {
            var btr            = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
            var blockReference = new BlockReference(Point3d.Origin, blkDefId);

            if (isAnnotative)
            {
                var ocm = db.ObjectContextManager;
                var occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");
                ObjectContexts.AddContext(blockReference, occ.CurrentContext);
            }

            var id = btr.AppendEntity(blockReference);

            tr.AddNewlyCreatedDBObject(blockReference, true);
            var jig = new BlockRefJig(blockReference, AppendAttribToBlock(tr, blockReference, attributes));

            jig.SetPromptCounter(0);
            var res = ed.Drag(jig);

            if (res.Status == PromptStatus.OK)
            {
                if (promptCounter == 1)
                {
                    jig.SetPromptCounter(promptCounter);
                    res = ed.Drag(jig);
                    if (res.Status == PromptStatus.OK)
                    {
                        return(id);
                    }
                }
                else
                {
                    return(id);
                }
            }

            blockReference.Erase();
            return(ObjectId.Null);
        }
            /// <summary>
            /// Вставка блока с атрибутами
            /// </summary>
            /// <param name="promptCounter">0 - только вставка, 1 - с поворотом</param>
            /// <param name="tr">Транзакция</param>
            /// <param name="db">База данных чертежа</param>
            /// <param name="ed">Editor</param>
            /// <param name="blkdefid">ObjectId блока</param>
            public static ObjectId InsertBlockRef(
                int promptCounter,
                Transaction tr,
                Database db,
                Editor ed,
                ObjectId blkdefid)
            {
                var btr    = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                var blkref = new BlockReference(Point3d.Origin, blkdefid);
                var id     = btr.AppendEntity(blkref);

                tr.AddNewlyCreatedDBObject(blkref, true);
                var jig = new BlockRefJig(blkref);

                jig.SetPromptCounter(0);
                var res = ed.Drag(jig);

                if (res.Status == PromptStatus.OK)
                {
                    if (promptCounter == 1)
                    {
                        jig.SetPromptCounter(promptCounter);
                        res = ed.Drag(jig);
                        if (res.Status == PromptStatus.OK)
                        {
                            return(id);
                        }
                    }
                    else
                    {
                        return(id);
                    }
                }

                blkref.Erase();
                return(ObjectId.Null);
            }