Esempio n. 1
0
        public void TestAnonyBlock2()
        {
            Matrix3d          ucs          = CoordinateSystem.CoordinateTools.GetCurrentUcs();
            ArrowDirectional2 adHorizontal = new ArrowDirectional2(ucs, ArrowDirectional2.DirectionMode.Horizontal);

            Point3d insertPoint = new Point3d(0, 0, 0);

            PromptPointOptions ppo = new PromptPointOptions("\nУкажите втору точку");

            ppo.BasePoint     = insertPoint;
            ppo.UseDashedLine = true;
            ppo.UseBasePoint  = true;

            PromptPointResult ppr = Tools.GetAcadEditor().GetPoint(ppo);

            if (ppr.Status != PromptStatus.OK)
            {
                return;
            }

            var res = adHorizontal.PastNewArrowItem(insertPoint, ppr.Value);

            ppo               = new PromptPointOptions("\nУкажите сторону отрисовки");
            ppo.BasePoint     = insertPoint;
            ppo.UseDashedLine = true;
            ppo.UseBasePoint  = true;

            ppr = Tools.GetAcadEditor().GetPoint(ppo);
            if (ppr.Status != PromptStatus.OK)
            {
                return;
            }

            BlockReference br = null;

            Tools.StartTransaction(() =>
            {
                br = res.ArrowId.GetObjectForRead <BlockReference>();
                BlockReference cloneBr = adHorizontal.GetRedirectBlockReferenceCopy(br, ppr.Value);
                var id = br.GetAnonymClone(cloneBr.Position);
                if (cloneBr != null)
                {
                    br.UpgradeOpen();
                    br.Erase(true);
                    br = cloneBr;
                }
                else
                {
                    br = null;
                }
            });
            if (br != null)
            {
                Tools.AppendEntityEx(br);
            }
        }
Esempio n. 2
0
        public static BlockReference InnerTransform2(this BlockReference br, Matrix3d transform)
        {
            BlockReference res = null;

            Tools.StartTransaction(() =>
            {
                br = br.Id.GetObjectForRead <BlockReference>();
                br = br.GetAnonymClone(br.Position).GetObjectForRead <BlockReference>();

                BlockTableRecord btr = br.BlockTableRecord.GetObjectForRead <BlockTableRecord>();
                btr.UpgradeOpen();
                foreach (ObjectId id in btr)
                {
                    Entity ent = id.GetObjectForWrite <Entity>();
                    ent.TransformBy(transform);
                }
                br.UpgradeOpen();
                br.RecordGraphicsModified(true);
                res = br;
            });
            res.Database.TransactionManager.QueueForGraphicsFlush();
            return(res);
        }