public override async Task Apply(CADDocument doc, params string[] args) { Editor ed = doc.Editor; ed.PickedSelection.Clear(); var p1 = await ed.GetPoint("First point: "); if (p1.Result != ResultMode.OK) { return; } Point2D lastPt = p1.Value; int i = 0; while (true) { var opts = new PointOptions("Next point: ", lastPt); if (i > 1) { opts.AddKeyword("Close"); } var p3 = await ed.GetPoint(opts); if (p3.Result == ResultMode.OK) { Drawable nextLine = new Line(lastPt, p3.Value); doc.Model.Add(nextLine); lastPt = p3.Value; } else if (p3.Result == ResultMode.Keyword && p3.Keyword == "Close") { Drawable nextLine = new Line(lastPt, p1.Value); doc.Model.Add(nextLine); lastPt = p3.Value; return; } else { return; } i++; } }
public override async Task Apply(CADDocument doc, params string[] args) { CADView view = doc.ActiveView; if (view == null) { return; } Editor ed = doc.Editor; PointOptions opts = new PointOptions("Corner of zoom window: "); opts.AddKeyword("Extents"); opts.AddKeyword("Scale"); opts.AddKeyword("Object"); var p1 = await ed.GetPoint(opts); if (p1.Result == ResultMode.Cancel) { return; } if (p1.Result == ResultMode.Keyword && p1.Keyword == "Extents") { view.SetViewport(); } else if (p1.Result == ResultMode.Keyword && p1.Keyword == "Scale") { FloatOptions fopts = new FloatOptions("Scale factor: "); fopts.AllowNegative = false; fopts.AllowZero = false; fopts.AllowPositive = true; var f1 = await ed.GetFloat(fopts); if (f1.Result != ResultMode.OK) { return; } view.Zoom(1f / f1.Value); } else if (p1.Result == ResultMode.Keyword && p1.Keyword == "Object") { var s1 = await ed.GetSelection("Select objects: "); if (s1.Result != ResultMode.OK || s1.Value.Count == 0) { return; } Extents2D ex = new Extents2D(); foreach (Drawable item in s1.Value) { ex.Add(item.GetExtents()); } view.SetViewport(ex); } else { var p2 = await ed.GetCorner("Opposite corner of zoom window: ", p1.Value); if (p2.Result != ResultMode.OK) { return; } view.SetViewport(p1.Value, p2.Value); } }
public override async Task Apply(CADDocument doc, params string[] args) { Editor ed = doc.Editor; ed.PickedSelection.Clear(); var p1 = await ed.GetPoint("First point: "); if (p1.Result != ResultMode.OK) { return; } Point2D pt = p1.Value; Polyline consPoly = new Polyline(new Point2D[] { pt, pt }); consPoly.Closed = true; doc.Jigged.Add(consPoly); Point2DCollection points = new Point2DCollection(); points.Add(pt); bool done = false; while (!done) { PointOptions options = new PointOptions("Next point: ", pt, (p) => consPoly.Points[consPoly.Points.Count - 1] = p); options.AddKeyword("End", true); var pNext = await ed.GetPoint(options); if (pNext.Result == ResultMode.OK) { pt = pNext.Value; consPoly.Points.Add(pt); points.Add(pt); } else if (pNext.Result == ResultMode.Cancel) { doc.Jigged.Remove(consPoly); return; } else if (pNext.Result == ResultMode.Keyword) { if (points.Count < 2) { doc.Jigged.Remove(consPoly); return; } if (pNext.Keyword == "End") { done = true; } } } doc.Jigged.Remove(consPoly); Hatch newItem = new Hatch(points); doc.Model.Add(newItem); }