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); } }
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); }