public void PaintTopInGame(ClipState clipState) { if (Hud.Render.UiHidden) { return; } if (clipState != ClipState.BeforeClip) { return; } var uiRect = Hud.Render.GetUiElement("Root.NormalLayer.minimap_dialog_backgroundScreen.minimap_dialog_pve.minimap_pve_main").Rectangle; NewPos = Hud.Window.CreateWorldCoordinate(Hud.Game.Me.FloorCoordinate); double DatSecond = Math.Truncate((double)(Hud.Game.CurrentRealTimeMilliseconds / 1000)); if (!SpeedPos.ContainsKey(DatSecond)) { SpeedPos.Add(DatSecond, NewPos); } int DictCount = SpeedPos.Count; if (DictCount >= 2) { var NextToLast = SpeedPos.OrderByDescending(b => b.Key).Skip(1).First(); OldPos = NextToLast.Value; } if (DictCount >= 3) { var First = SpeedPos.OrderBy(b => b.Key).First(); SpeedPos.Remove(First.Key); } DistanceFromLastSecond = OldPos.XYDistanceTo(Hud.Game.Me.FloorCoordinate); if (DistanceFromLastSecond > SpeedCooler) { SpeedCooler = SpeedCooler + (float)((DistanceFromLastSecond - SpeedCooler) / (DistanceFromLastSecond + 1)); } else if (DistanceFromLastSecond < SpeedCooler) { SpeedCooler = SpeedCooler - (float)((SpeedCooler - DistanceFromLastSecond) / (DistanceFromLastSecond + 1)); } double mph = Math.Round(SpeedCooler * 0.49); double kmh = Math.Round(SpeedCooler * 0.30); if (MetricSystem) { Speed = kmh + " km/h"; var Meters = (int)(DistYards * 1.0936); if (Meters >= 1000) { DistString = Math.Round((float)Meters / 1000, 1) + " km"; } else { DistString = Meters + " m"; } } else { Speed = mph + " mph"; if (DistYards >= 1760) { DistString = Math.Round((float)DistYards / 1760, 1) + " mi"; } else { DistString = DistYards + " yd"; } } if (DistYards > 49) { DistanceDecorator.Paint(uiRect.Right - 30f, uiRect.Bottom + 10f, 50f, 50f, HorizontalAlign.Left); } if (mph > 0) { SpeedDecorator.Paint(uiRect.Left, uiRect.Bottom - 35f, 50f, 50f, HorizontalAlign.Left); } }
public override string ToString() => $"Move {Source.Name} from {OldPos.ToString()} to {NewPos.ToString()}";
private void PosUpgrade() { TypedValue[] tvs = new TypedValue[] { new TypedValue((int)DxfCode.Start, "INSERT") }; PromptSelectionResult res = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.GetSelection(new SelectionFilter(tvs)); if (res.Status != PromptStatus.OK) { return; } string blockName = "POZ_*"; Database db = HostApplicationServices.WorkingDatabase; using (Transaction tr = db.TransactionManager.StartTransaction()) { try { // Filter pos blocks List <ObjectId> list = new List <ObjectId>(); foreach (ObjectId id in res.Value.GetObjectIds()) { if (id.ObjectClass == Autodesk.AutoCAD.Runtime.RXObject.GetClass(typeof(BlockReference))) { BlockReference blockRef = tr.GetObject(id, OpenMode.ForRead) as BlockReference; BlockTableRecord block = null; if (blockRef.IsDynamicBlock) { block = tr.GetObject(blockRef.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; } else { block = tr.GetObject(blockRef.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord; } if (block != null) { if (WCMatch(block.Name, blockName)) { list.Add(id); } } } } BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); foreach (ObjectId id in list) { // Read pos block OldPos oldPos = new OldPos(tr, id); // Insert new pos RebarPos pos = new RebarPos(); pos.SuspendUpdate(); pos.TransformBy(Matrix3d.Displacement(oldPos.insPoint.GetAsVector())); pos.TransformBy(Matrix3d.Scaling(oldPos.scale, oldPos.insPoint)); pos.TransformBy(Matrix3d.Rotation(oldPos.rotation, Vector3d.ZAxis, oldPos.insPoint)); pos.Pos = oldPos.pos; pos.Count = oldPos.count; pos.Diameter = oldPos.diameter; pos.Spacing = oldPos.spacing; pos.Shape = oldPos.shapeName; pos.A = oldPos.a; pos.B = oldPos.b; pos.C = oldPos.c; pos.D = oldPos.d; pos.E = oldPos.e; pos.F = oldPos.f; pos.Multiplier = oldPos.multiplier; pos.Note = oldPos.note; // Align note text if (oldPos.noteInText) { pos.NoteAlignment = RebarPos.SubTextAlignment.Right; } else if (!oldPos.noteId.IsNull) { pos.NoteGrip = oldPos.notePt; } // Align length text if (oldPos.lengthInText) { pos.LengthAlignment = RebarPos.SubTextAlignment.Right; } else if (!oldPos.lengthId.IsNull) { pos.LengthGrip = oldPos.lengthPt; } pos.Detached = oldPos.detached; if (!oldPos.detached && !oldPos.showLength) { pos.Display = RebarPos.DisplayStyle.WithoutLength; } pos.ResumeUpdate(); pos.SetDatabaseDefaults(db); btr.AppendEntity(pos); tr.AddNewlyCreatedDBObject(pos, true); // Erase old pos block BlockReference bref = tr.GetObject(id, OpenMode.ForWrite) as BlockReference; bref.Erase(); } } catch (System.Exception ex) { MessageBox.Show("Error: " + ex.Message, "RebarPos", MessageBoxButtons.OK, MessageBoxIcon.Error); } tr.Commit(); } }
private void PosUpgrade() { TypedValue[] tvs = new TypedValue[] { new TypedValue((int)DxfCode.Start, "INSERT") }; PromptSelectionResult res = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.GetSelection(new SelectionFilter(tvs)); if (res.Status != PromptStatus.OK) { return; } string blockName = "POZ_*"; Database db = HostApplicationServices.WorkingDatabase; using (Transaction tr = db.TransactionManager.StartTransaction()) { try { // Filter pos blocks List<ObjectId> list = new List<ObjectId>(); foreach (ObjectId id in res.Value.GetObjectIds()) { if (id.ObjectClass == Autodesk.AutoCAD.Runtime.RXObject.GetClass(typeof(BlockReference))) { BlockReference blockRef = tr.GetObject(id, OpenMode.ForRead) as BlockReference; BlockTableRecord block = null; if (blockRef.IsDynamicBlock) { block = tr.GetObject(blockRef.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; } else { block = tr.GetObject(blockRef.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord; } if (block != null) { if (WCMatch(block.Name, blockName)) list.Add(id); } } } BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); foreach (ObjectId id in list) { // Read pos block OldPos oldPos = new OldPos(tr, id); // Insert new pos RebarPos pos = new RebarPos(); pos.SuspendUpdate(); pos.TransformBy(Matrix3d.Displacement(oldPos.insPoint.GetAsVector())); pos.TransformBy(Matrix3d.Scaling(oldPos.scale, oldPos.insPoint)); pos.TransformBy(Matrix3d.Rotation(oldPos.rotation, Vector3d.ZAxis, oldPos.insPoint)); pos.Pos = oldPos.pos; pos.Count = oldPos.count; pos.Diameter = oldPos.diameter; pos.Spacing = oldPos.spacing; pos.Shape = oldPos.shapeName; pos.A = oldPos.a; pos.B = oldPos.b; pos.C = oldPos.c; pos.D = oldPos.d; pos.E = oldPos.e; pos.F = oldPos.f; pos.Multiplier = oldPos.multiplier; pos.Note = oldPos.note; // Align note text if (oldPos.noteInText) { pos.NoteAlignment = RebarPos.SubTextAlignment.Right; } else if (!oldPos.noteId.IsNull) { pos.NoteGrip = oldPos.notePt; } // Align length text if (oldPos.lengthInText) { pos.LengthAlignment = RebarPos.SubTextAlignment.Right; } else if (!oldPos.lengthId.IsNull) { pos.LengthGrip = oldPos.lengthPt; } pos.Detached = oldPos.detached; if (!oldPos.detached && !oldPos.showLength) pos.Display = RebarPos.DisplayStyle.WithoutLength; pos.ResumeUpdate(); pos.SetDatabaseDefaults(db); btr.AppendEntity(pos); tr.AddNewlyCreatedDBObject(pos, true); // Erase old pos block BlockReference bref = tr.GetObject(id, OpenMode.ForWrite) as BlockReference; bref.Erase(); } } catch (System.Exception ex) { MessageBox.Show("Error: " + ex.Message, "RebarPos", MessageBoxButtons.OK, MessageBoxIcon.Error); } tr.Commit(); } }