Esempio n. 1
0
        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++;
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }