public CatenaryTable(RulingSpan rs, Vector2 clearance_pt) { this.RulingSpan = rs; this.style.StringFormat.Alignment = StringAlignment.Center; this.style.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; this.ClearancePoint = clearance_pt; this.Alignment = HorizontalAlignment.Center; }
public CatenaryGraphics(RulingSpan rs) { this.RulingSpan = rs; this.Style = Style.Default; this.mouse_over = Vector2.Origin; this.mouse_dn = Vector2.Origin; this.Alignment = HorizontalAlignment.Left; }
public void CloneTest() { double Wt = 0.75, H = 3200; var rs = TestRulingSpan(Wt, H); var gs = new RulingSpan(rs); Assert.IsTrue(rs.Equals(gs)); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (ReadLicense()) { CheckLicense(); if (!_isDemo) { saveSpansButton.Enabled = true; importSpansButton.Enabled = true; } } string path = Properties.Settings.Default.lastSave; if (File.Exists(path)) { try { RulingSpan = RulingSpan.OpenFile(path); fileLabelStatusBar.Text = Path.GetFileName(path); } catch (System.IO.FileLoadException ex) { Debug.WriteLine(ex.ToString()); } } if (rs.Spans.Count == 0) { Catenary A = new Catenary(150 * Vector2.UnitY, 400, 12, 0.75, 3000); Catenary B = new Catenary(A.EndPosition, 1400, -10, 0.75, 3000); Catenary C = new Catenary(B.EndPosition, 700, -20, 0.75, 3000); rs.AddSpans(A, B, C); } rs.Spans.RaiseListChangedEvents = true; var icon_green = Properties.Resources.flag_green; foreach (var item in ProjectUnits.PredefinedUnits) { var mi = item.ToMenuItem(icon_green, (tsi, pev) => { rs.SetProjectUnits(pev.NewProjectUnits); unitsDropDown.Text = rs.Units.ToString(); RefreshAndPaintGrid(); }); unitsDropDown.DropDownItems.Add(mi); } unitsDropDown.Text = rs.Units.ToString(); }
public void RulingSpanTest() { var projectUnits = new ProjectUnits(ProjectUnitSystem.NewtonMeterSecond); var cat1 = Catenary.Default(projectUnits); var cat2 = Catenary.Default(projectUnits); var cat3 = Catenary.Default(projectUnits); var rs = new RulingSpan( projectUnits, cat1, cat2, cat3); Assert.IsTrue(rs.IsOk); }
public void RS_SaveAndLoad() { double Wt = 0.75, H = 3200; var rs = TestRulingSpan(Wt, H); const string file = "rs_save.spanx"; rs.SaveFile(file); var gs = RulingSpan.OpenFile(file); File.Delete(file); Assert.IsTrue(gs.Equals(rs)); }
private void pic_MouseDoubleClick(object sender, MouseEventArgs e) { if (vis != null) { RectangleF target = vis.GetDrawArea(sender as Control); Canvas canvas = vis.GetCanvasFor(target); var mouse_pt = canvas.InvMap(e.Location); var cat = rs.FindCatenaryFromX(mouse_pt.X); int index = rs.Spans.IndexOf(cat); if (index >= 0) { if (e.Button == MouseButtons.Left) { bool sel = rulingspanDataGrid.Rows[index].Selected; rulingspanDataGrid.Rows[index].Selected = true; TensionForm dlg = new TensionForm { Units = rs.Units, Catenary = rs[index].Clone() }; if (dlg.ShowDialog() == DialogResult.OK) { rs[index] = dlg.Catenary; } rulingspanDataGrid.Rows[index].Selected = sel; } else if (e.Button == MouseButtons.Right) { bool sel = rulingspanDataGrid.Rows[index].Selected; rulingspanDataGrid.Rows[index].Selected = true; Cursor cur = pic.Cursor; pic.Cursor = Cursors.WaitCursor; var rs_temp = RulingSpan.Clone(); this.Enabled = false; rs_temp[index].SetClearancePoint(mouse_pt); this.Enabled = true; pic.Cursor = cur; vis.ClearMousePosition(); RulingSpan = rs_temp; rulingspanDataGrid.Rows[index].Selected = sel; } } } }
public void Render(Graphics g, RectangleF target) { Canvas canvas = GetCanvasFor(target); Style.SetGraphicsQuality(g); Catenary catenary = RulingSpan.FindCatenaryFromX(mouse_over.X); foreach (var item in RulingSpan.Spans) { RenderOne(g, canvas, item, Style, catenary == item); } if (!mouse_dn.IsZero) { catenary = RulingSpan.FindCatenaryFromX(mouse_dn.X); if (catenary != null) { double y = catenary.CatenaryFunction(mouse_dn.X); PointF A = canvas.Map(mouse_dn.X, y); PointF M = canvas.Map(mouse_dn); string text = Math.Abs(y - mouse_dn.Y).ToString("0.#"); Style.VerticalArrow(g, M.X, M.Y, A.Y, text, false); } using (Pen pen = Style.MakePen(Color.Red)) { PointF M = canvas.Map(mouse_dn); g.DrawEllipse(pen, M.X - Style.PointWidth / 2, M.Y - Style.PointWidth / 2, Style.PointWidth, Style.PointWidth); using (Font font = Style.MakeFont(SystemFonts.DialogFont)) { string text = string.Format("x:{0:0}\ny:{1:0.#}", mouse_dn.X, mouse_dn.Y); StringFormat sf = new StringFormat(); SizeF sz = g.MeasureString(text, font, M, sf); g.FillRectangle(Brushes.White, M.X - sz.Width - 4, M.Y - 4, sz.Width + 2, sz.Height + 2); g.DrawString(text, font, Brushes.Red, M.X - sz.Width - 2, M.Y - 2, sf); } } } }
private void saveSpansButton_Click(object sender, EventArgs e) { var dlg = new SaveFileDialog { Title = "Save Spans", Filter = "Span Xml File (*.spanx)|*.spanx|All Files|*.*" }; string path = Properties.Settings.Default.lastSave; if (File.Exists(path)) { dlg.InitialDirectory = Path.GetDirectoryName(path); dlg.FileName = Path.GetFileName(path); } if (dlg.ShowDialog() == DialogResult.OK) { RulingSpan.SaveFile(dlg.FileName); Properties.Settings.Default.lastSave = dlg.FileName; fileLabelStatusBar.Text = Path.GetFileName(dlg.FileName); } }
public CatenaryForm() { InitializeComponent(); RulingSpan = new RulingSpan(DefaultProjectUnits); }