예제 #1
0
        virtual public bool OnCommand(string MenuId)
        {
            switch (MenuId)
            {
            case "MenuId.Reverse":
                (ellipse as ICurve).Reverse();
                return(true);

            case "MenuId.CurveSplit":
                Frame.SetAction(new ConstrSplitCurve(ellipse));
                return(true);

            case "MenuId.Approximate":
                if (Frame.ActiveAction is SelectObjectsAction)
                {
                    Curves.Approximate(Frame, ellipse);
                }
                return(true);

            case "MenuId.Aequidist":
                Frame.SetAction(new ConstructAequidist(ellipse));
                return(true);
            }
            return(false);
        }
예제 #2
0
        virtual public bool OnCommand(string MenuId)
        {
            switch (MenuId)
            {
            case "MenuId.Reverse":
                (circle as ICurve).Reverse();
                return(true);

            case "MenuId.CurveSplit":
                Frame.SetAction(new ConstrSplitCurve(circle));
                return(true);

            case "MenuId.Approximate":
                if (Frame.ActiveAction is SelectObjectsAction && (Frame.GetIntSetting("Approximate.Mode", 0) == 0))
                {
                    Curves.Approximate(Frame, circle);
                }
                return(true);

            case "MenuId.Aequidist":
                Frame.SetAction(new ConstructAequidist(circle));
                return(true);
            }
            return(false);
        }
예제 #3
0
        virtual public bool OnCommand(string MenuId)
        {
            switch (MenuId)
            {
            case "MenuId.Reverse":
                (bSpline as ICurve).Reverse();
                ReloadProperties();
                //polesProperty.ShowOpen(false);
                //if (throughPointsProperty!=null) throughPointsProperty.ShowOpen(false);
                return(true);

            case "MenuId.CurveSplit":
                Frame.SetAction(new ConstrSplitCurve(bSpline));
                return(true);

            case "MenuId.Approximate":
                if (Frame.ActiveAction is SelectObjectsAction)
                {
                    Curves.Approximate(Frame, bSpline);
                }
                return(true);
            }
            return(false);
        }
예제 #4
0
        virtual public bool OnCommand(string MenuId)
        {
            switch (MenuId)
            {
            case "MenuId.Reverse":
                (path as ICurve).Reverse();
                if (propertyPage != null)
                {
                    propertyPage.Refresh(this);
                }
                return(true);

            case "MenuId.CurveSplit":
                Frame.SetAction(new ConstrSplitCurve(path));
                return(true);

            case "MenuId.Approximate":
                if (Frame.ActiveAction is SelectObjectsAction)
                {
                    Curves.Approximate(Frame, path);
                }
                return(true);

            case "MenuId.Explode":
                if (Frame.ActiveAction is SelectObjectsAction)
                {
                    using (Frame.Project.Undo.UndoFrame)
                    {
                        IGeoObjectOwner addTo = path.Owner;
                        if (addTo == null)
                        {
                            addTo = Frame.ActiveView.Model;
                        }
                        ICurve[]      pathCurves = path.Curves;
                        GeoObjectList toSelect   = path.Decompose();
                        addTo.Remove(path);
                        for (int i = toSelect.Count - 1; i >= 0; --i)
                        {
                            if (!toSelect[i].HasValidData())
                            {
                                toSelect.Remove(i);
                            }
                        }
                        for (int i = 0; i < toSelect.Count; i++)
                        {
                            addTo.Add(toSelect[i]);
                        }
                        SelectObjectsAction soa = Frame.ActiveAction as SelectObjectsAction;
                        soa.SetSelectedObjects(toSelect);     // alle Teilobjekte markieren
                    }
                }
                return(true);

            case "MenuId.Aequidist":
                Frame.SetAction(new ConstructAequidist(path));
                return(true);

            case "MenuId.Reduce":
                if (path.GetPlanarState() == PlanarState.Planar)
                {
                    Plane  pln = path.GetPlane();
                    Path2D p2d = path.GetProjectedCurve(pln) as Path2D;
                    if (p2d != null)
                    {
                        p2d.ForceConnected();
                        Reduce2D r2d = new Reduce2D();
                        r2d.Precision = Settings.GlobalSettings.GetDoubleValue("Approximate.Precision", 0.01);
                        r2d.Add(p2d.SubCurves);
                        r2d.OutputMode = Reduce2D.Mode.Paths;
                        ICurve2D[] red = r2d.Reduced;
                        if (red.Length == 1)
                        {
                            using (Frame.Project.Undo.UndoFrame)
                            {
                                IGeoObjectOwner addTo = path.Owner;
                                if (addTo == null)
                                {
                                    addTo = Frame.ActiveView.Model;
                                }
                                addTo.Remove(path);
                                Path redpath = red[0].MakeGeoObject(pln) as Path;
                                if (redpath != null)
                                {
                                    SelectObjectsAction soa = Frame.ActiveAction as SelectObjectsAction;
                                    soa.SetSelectedObjects(new GeoObjectList(redpath));
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            return(false);
        }