Ejemplo n.º 1
0
 public override void OnSetAction()
 {
     base.ActiveObject = null;
     //			line = new Line();
     base.TitleId = "ToolsCutOffMultiple";
     iCurve1      = null;
     iCurve2      = null;
     cutOffLen    = ConstrDefaults.DefaultCutOffLength;
     cutOffAng    = ConstrDefaults.DefaultCutOffAngle;
     methodSelect = ConstrDefaults.DefaultCutOffMethod;
     cutOffObject = new CurveInput("ToolsCutOff.Object");
     cutOffObject.MouseOverCurvesEvent       += new CurveInput.MouseOverCurvesDelegate(CutOffObject);
     cutOffObject.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(CutOffObjectChanged);
     cutOffObject.HitCursor      = CursorTable.GetCursor("CutOff.cur");
     cutOffObject.ModifiableOnly = true;
     cutOffLength = new LengthInput("ToolsCutOff.Length");
     //			cutOffLength.Optional = true;
     cutOffLength.ForwardMouseInputTo = cutOffObject;
     cutOffLength.DefaultLength       = ConstrDefaults.DefaultCutOffLength;
     cutOffLength.SetLengthEvent     += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(CutOffLength);
     cutOffAngle = new AngleInput("ToolsCutOff.Angle");
     cutOffAngle.DefaultAngle = ConstrDefaults.DefaultCutOffAngle;
     //			cutOffAngle.Optional = true;
     cutOffAngle.ForwardMouseInputTo = cutOffObject;
     cutOffAngle.SetAngleEvent      += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(cutOffSetAngle);
     cutOffMethod = new MultipleChoiceInput("ToolsCutOff.Method", "ToolsCutOff.Method.Values");
     cutOffMethod.DefaultChoice       = ConstrDefaults.DefaultCutOffMethod;
     cutOffMethod.ForwardMouseInputTo = cutOffObject;
     cutOffMethod.SetChoiceEvent     += new CADability.Actions.ConstructAction.MultipleChoiceInput.SetChoiceDelegate(SetMethod);
     base.SetInput(cutOffObject, cutOffLength, cutOffAngle, cutOffMethod);
     base.ShowActiveObject = false;
     base.OnSetAction();
 }
Ejemplo n.º 2
0
        public override void OnSetAction()
        {
            base.ActiveObject = Face.Construct();

            if (axisVector.IsNullVector())
            {
                axisVector = GeoVector.XAxis;
            }
            if (angleRotation == 0.0)
            {
                angleRotation = Math.PI;
            }

            base.TitleId = "Constr.Face.PathRotate";

            curveInput = new CurveInput("Constr.Face.PathRotate.Path");
            curveInput.MouseOverCurvesEvent       += new CurveInput.MouseOverCurvesDelegate(curveInputPath);
            curveInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(curveInputPathChanged);
            if (selectedMode)
            {
                curveInput.Fixed = true;
            }

            rotateLineInput                             = new CurveInput("Constr.Face.PathRotate.AxisLine");
            rotateLineInput.Decomposed                  = true; // nur Einzelelemente, auch bei Polyline und Pfad
            rotateLineInput.MouseOverCurvesEvent       += new CurveInput.MouseOverCurvesDelegate(RotateLine);
            rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateLineChanged);


            axisPointInput = new GeoPointInput("Constr.Face.PathRotate.AxisPoint", axisPoint);
            axisPointInput.SetGeoPointEvent   += new GeoPointInput.SetGeoPointDelegate(SetAxisPoint);
            axisPointInput.GetGeoPointEvent   += new GeoPointInput.GetGeoPointDelegate(GetAxisPoint);
            axisPointInput.ForwardMouseInputTo = curveInput;
            axisPointInput.DefinesBasePoint    = true;

            axisVectorInput = new GeoVectorInput("Constr.Face.PathRotate.AxisVector", axisVector);
            axisVectorInput.SetGeoVectorEvent += new GeoVectorInput.SetGeoVectorDelegate(SetAxisVector);
            axisVectorInput.GetGeoVectorEvent += new GeoVectorInput.GetGeoVectorDelegate(GetAxisVector);
            //            vectorInput.DefaultGeoVector = ConstrDefaults.DefaultExtrudeDirection;
            axisVectorInput.ForwardMouseInputTo = curveInput;
            optionalOrg();

            AngleInput angleInput = new AngleInput("Constr.Face.PathRotate.Angle", angleRotation);

            angleInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleInput);
            angleInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleInput);

            AngleInput angleOffsetInput = new AngleInput("Constr.Face.PathRotate.AngleOffset", angleOffsetRotation);

            angleOffsetInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleOffsetInput);
            angleOffsetInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleOffsetInput);
            angleOffsetInput.Optional       = true;

            base.SetInput(curveInput, rotateLineInput, axisPointInput, axisVectorInput, angleInput, angleOffsetInput);
            base.ShowAttributes = true;
            base.OnSetAction();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Overrides <see cref="CADability.Actions.ConstructAction.OnSetAction ()"/>
        /// </summary>
        public override void OnSetAction()
        {
            base.TitleId = "CopyCircularObjects";

            BoundingRect result = originals.GetExtent(Frame.ActiveView.ProjectedModel.Projection, true, false);

            centerPoint = base.ActiveDrawingPlane.ToGlobal(result.GetCenter());
            //			rotationPoint =  base.ActiveDrawingPlane.ToGlobal(result.GetLowerLeft());
            rotationPoint = centerPoint;
            distX         = result.Width;
            if (copCount == 0)
            {
                copCount = 4;
                copAngle = Math.PI / 2.0;
            }

            GeoPointInput rotPoint = new GeoPointInput("CopyCircularObjects.RotationPoint");

            rotPoint.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetRotPoint);
            rotPoint.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetRotPoint);
            rotPoint.Optional          = true;
            rotPoint.DefinesHotSpot    = true;
            rotPoint.HotSpotSource     = "Hotspots.png:0";

            IntInput copiesCount = new IntInput("CopyCircularObjects.CopiesCount", copCount);

            copiesCount.SetMinMax(0, int.MaxValue, true);
            copiesCount.SetIntEvent += new CADability.Actions.ConstructAction.IntInput.SetIntDelegate(SetCopiesCount);
            //			copiesCount.CalculateIntEvent +=new CADability.Actions.ConstructAction.IntInput.CalculateIntDelegate(CalcCopiesCount);

            BooleanInput fullCircle = new BooleanInput("CopyCircularObjects.FullCircle", "CopyCircularObjects.FullCircle.Values");

            fullCircle.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetFullCircle);
            fullCircle.GetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.GetBooleanDelegate(GetFullCircle);

            copiesAngle                      = new AngleInput("CopyCircularObjects.CopiesAngle", copAngle);
            copiesAngle.ReadOnly             = !partOfCircle;
            copiesAngle.Optional             = !partOfCircle;
            copiesAngle.SetAngleEvent       += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(SetCopAngle);
            copiesAngle.GetAngleEvent       += new CADability.Actions.ConstructAction.AngleInput.GetAngleDelegate(GetCopAngle);
            copiesAngle.CalculateAngleEvent += new CADability.Actions.ConstructAction.AngleInput.CalculateAngleDelegate(CalculateCopAngle);

            BooleanInput rotObject = new BooleanInput("CopyCircularObjects.ObjectsRotation", "CopyCircularObjects.ObjectsRotation.Values");

            rotObject.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetObjectsRotation);
            rotObject.GetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.GetBooleanDelegate(GetObjectsRotation);

            base.SetInput(rotPoint, copiesCount, fullCircle, copiesAngle, rotObject);

            base.OnSetAction();
            showCirc();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Overrides <see cref="CADability.Actions.ConstructAction.OnSetAction ()"/>
        /// </summary>
        public override void OnSetAction()
        {
            base.TitleId = "Construct.PolarPoint";
            feedBackLine = Line.Construct();
            Color backColor = base.Frame.GetColorSetting("Colors.Feedback", Color.DarkGray);

            feedBackLine.ColorDef = new ColorDef("", backColor);
            lengthPolar           = new DefaultLength(ConstructAction.DefaultLength.StartValue.ViewWidth4);

            startPointInput = new GeoPointInput("Construct.PolarPoint.StartPoint");
            startPointInput.DefinesBasePoint  = true;
            startPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetStartPoint);
            startPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetStartPoint);

            ang = new AngleInput("Construct.PolarPoint.Angle", 0.0);
            ang.SetAngleEvent      += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(angSetAngle);
            ang.ForwardMouseInputTo = startPointInput;

            len = new LengthInput("Construct.PolarPoint.Length", lengthPolar);
            len.SetLengthEvent       += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(lenSetLength);
            len.CalculateLengthEvent += new CADability.Actions.ConstructAction.LengthInput.CalculateLengthDelegate(lenOnCalculateLength);
            len.ForwardMouseInputTo   = startPointInput;

            GeoPointInput measureText = new GeoPointInput("MeasurePoint");

            measureText.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetMeasureText);
            // geht nur mit readOnly, da sonst die Mausbewegung den angezeigten Wert überschreibt
            measureText.ReadOnly = true;

            if (measure)
            {
                base.SetInput(startPointInput, ang, len, measureText);
            }
            else
            {
                base.SetInput(startPointInput, ang, len);
            }

            base.OnSetAction();
            base.FeedBack.Add(feedBackLine);
        }
Ejemplo n.º 5
0
        public override void OnSetAction()
        {
            base.TitleId = "ConstructAequidist";
            if (theBaseCurve == null)
            {
                baseCurve = new CurveInput("ConstructAequidist.BaseCurve");
                baseCurve.MouseOverCurvesEvent       += new CADability.Actions.ConstructAction.CurveInput.MouseOverCurvesDelegate(OnMouseOverCurves);
                baseCurve.CurveSelectionChangedEvent += new CADability.Actions.ConstructAction.CurveInput.CurveSelectionChangedDelegate(OnCurveSelectionChanged);
                baseCurve.HitCursor      = CursorTable.GetCursor("RoundIn.cur");
                baseCurve.ModifiableOnly = false;
                baseCurve.PreferPath     = true;
            }

            distance = new LengthInput("ConstructAequidist.Distance");
            distance.GetLengthEvent       += new CADability.Actions.ConstructAction.LengthInput.GetLengthDelegate(OnGetDistance);
            distance.SetLengthEvent       += new CADability.Actions.ConstructAction.LengthInput.SetLengthDelegate(OnSetDistance);
            distance.DefaultLength         = defaultDistance;
            distance.CalculateLengthEvent += new CADability.Actions.ConstructAction.LengthInput.CalculateLengthDelegate(OnCalculateDist);
            distance.ForwardMouseInputTo   = baseCurve; // kann ja auch null sein
            theDistance = defaultDistance;

            minAngle = new AngleInput("ConstructAequidist.SharpCornerMinAngle");
            minAngle.GetAngleEvent      += new AngleInput.GetAngleDelegate(OnGetMinAngle);
            minAngle.SetAngleEvent      += new AngleInput.SetAngleDelegate(OnSetMinAngle);
            minAngle.DefaultAngle        = defaultMinAngle;
            minAngle.Optional            = true;
            minAngle.ForwardMouseInputTo = baseCurve;

            if (baseCurve != null)
            {
                SetInput(baseCurve, distance, minAngle);
            }
            else
            {
                SetInput(distance, minAngle);
            }
            base.OnSetAction();
        }
Ejemplo n.º 6
0
    protected override void OnUpdate()
    {
        var group = World.GetExistingSystem <ServerSimulationSystemGroup>();
        var tick  = group.ServerTick;

        var deltaTime = Time.DeltaTime;

        Entities.ForEach((ref Shield shield, ref Usable usable, ref OwningPlayer player, ref AngleInput angle, ref Releasable releasable) =>
        {
            if (releasable.released)
            {
                usable.inuse        = false;
                releasable.released = false;
            }
            if (usable.inuse)
            {
                usable.canuse             = true; // keep this true always
                DestinationComponent dest = EntityManager.GetComponentData <DestinationComponent>(player.Value);
                dest.Valid = false;
                EntityManager.SetComponentData <DestinationComponent>(player.Value, dest);
            }
            else
            {
                // pass
            }
        });


        Entities.ForEach((ref ShieldHitbox hitbox, ref AssociatedEntity shield, ref Rotation rot, ref OwningPlayer player) => {
            AngleInput angle = EntityManager.GetComponentData <AngleInput>(shield.Value);
            // just hack to make it match the animation
            float clampedAngle = Mathf.Clamp(angle.Value, -90, 0) + 15;
            Rotation playerRot = EntityManager.GetComponentData <Rotation>(player.Value);
            rot.Value          = playerRot.Value * Quaternion.AngleAxis(clampedAngle, Vector3.up);
        });
    }
Ejemplo n.º 7
0
    protected override void OnUpdate()
    {
        var group = World.GetExistingSystem <ServerSimulationSystemGroup>();
        var tick  = group.ServerTick;

        var deltaTime = Time.DeltaTime;

        Entities.ForEach((DynamicBuffer <AgentInput> inputBuffer, ref DestinationComponent destination, ref Rotating rotating) =>
        {
            AgentInput input;
            inputBuffer.GetDataAtTick(tick, out input);
            rotating.Value = 0;
            if (input.tick > last_processed_tick)
            {
                last_processed_tick = input.tick;

                if (input.DestinationUpdated())
                {
                    destination.Value = input.location;
                    destination.Valid = true;
                }

                // if input.OrientationUdpdated
                // target_orientation.Value = input.target_orientation;

                // TODO can we process canuse somewhere else?
                if (input.AbilityUsed())
                {
                    Entity ability = GhostServerSystem.getGhost(input.ghostId);
                    Usable usable  = EntityManager.GetComponentData <Usable>(ability);
                    if (usable.canuse)
                    {
                        usable.inuse  = true;
                        usable.canuse = false;
                        EntityManager.SetComponentData <Usable>(ability, usable);

                        if (input.AngleSent())
                        {
                            AngleInput angle = EntityManager.GetComponentData <AngleInput>(ability);
                            angle.Value      = input.angle;
                            EntityManager.SetComponentData <AngleInput>(ability, angle);
                        }
                    }
                }
                if (input.RotatingLeft())
                {
                    rotating.Value = -1;
                }
                if (input.RotatingRight())
                {
                    rotating.Value = +1;
                }
                if (input.AbilityReleased())
                {
                    Entity ability        = GhostServerSystem.getGhost(input.ghostId_released);
                    Releasable releasable = EntityManager.GetComponentData <Releasable>(ability);
                    releasable.released   = true;
                    EntityManager.SetComponentData <Releasable>(ability, releasable);
                }
            }
        });
    }
Ejemplo n.º 8
0
        public override void OnSetAction()
        {
            //			base.ActiveObject = block;
            base.TitleId = "RotateObjects";
            copyObject   = ConstrDefaults.DefaultCopyObjects;
            axisVector   = base.ActiveDrawingPlane.Normal;

            feedBackEllipse = Ellipse.Construct();
            feedBackEllipse.SetEllipseCenterAxis(GeoPoint.Origin, GeoVector.XAxis, GeoVector.YAxis); // damit nicht alles 0
            Color backColor = base.Frame.GetColorSetting("Colors.Feedback", Color.DarkGray);

            feedBackEllipse.ColorDef = new ColorDef("", backColor);
            base.FeedBack.Add(feedBackEllipse);
            base.SetCursor(SnapPointFinder.DidSnapModes.DidNotSnap, "RotateSmall");

            //--> diese Inputs werden gebraucht
            GeoPointInput refPointInput = new GeoPointInput("Objects.RefPoint");

            refPointInput.Optional          = true;
            refPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(SetRefPoint);
            refPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(GetRefPoint);
            refPointInput.DefinesHotSpot    = true;
            refPointInput.HotSpotSource     = "Hotspots.png:0";

            rotAngleInput = new AngleInput("RotateObjects.Angle");
            rotAngleInput.SetAngleEvent       += new CADability.Actions.ConstructAction.AngleInput.SetAngleDelegate(OnSetRotationAngle);
            rotAngleInput.GetAngleEvent       += new CADability.Actions.ConstructAction.AngleInput.GetAngleDelegate(OnGetRotationAngle);
            rotAngleInput.CalculateAngleEvent += new CADability.Actions.ConstructAction.AngleInput.CalculateAngleDelegate(OnCalculateRotationAngle);
            rotAngleInput.MouseClickEvent     += new MouseClickDelegate(OnMouseClickRotationAngle);

            startPointInput                   = new GeoPointInput("Objects.StartPoint");
            startPointInput.Optional          = true;
            startPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(OnSetStartPoint);
            startPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(OnGetStartPoint);

            endPointInput                   = new GeoPointInput("Objects.EndPoint");
            endPointInput.Optional          = true;
            endPointInput.SetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.SetGeoPointDelegate(OnSetEndPoint);
            endPointInput.GetGeoPointEvent += new CADability.Actions.ConstructAction.GeoPointInput.GetGeoPointDelegate(OnGetEndPoint);

            rotateLineInput                             = new CurveInput("Constr.Rotate.AxisLine");
            rotateLineInput.Decomposed                  = true; // nur Einzelelemente, auch bei Polyline und Pfad
            rotateLineInput.MouseOverCurvesEvent       += new CurveInput.MouseOverCurvesDelegate(RotateLine);
            rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateLineChanged);
            rotateLineInput.Optional                    = true;

            srcPlane = new PlaneInput("Constr.Rotate.SourcePlane");
            srcPlane.SetPlaneEvent += SrcPlane_OnSetPlane;
            srcPlane.GetPlaneEvent += SrcPlane_OnGetPlane;
            srcPlane.Optional       = true;

            trgPlane = new PlaneInput("Constr.Rotate.TargetPlane");
            trgPlane.SetPlaneEvent += TrgPlane_OnSetPlane;
            trgPlane.GetPlaneEvent += TrgPlane_OnGetPlane;
            trgPlane.Optional       = true;

            offset                 = new MultipleChoiceInput("Constr.Rotate.Offset", "Constr.Rotate.Offset.Values");
            offset.Optional        = true;
            offsetVal              = 0;
            offset.GetChoiceEvent += OnGetOffset;
            offset.SetChoiceEvent += OnSetOffset;

            BooleanInput copy = new BooleanInput("Modify.CopyObjects", "YesNo.Values");

            copy.DefaultBoolean   = ConstrDefaults.DefaultCopyObjects;
            copy.SetBooleanEvent += new CADability.Actions.ConstructAction.BooleanInput.SetBooleanDelegate(SetCopy);

            base.SetInput(refPointInput, rotAngleInput, startPointInput, endPointInput, rotateLineInput, srcPlane, trgPlane, offset, copy);

            BoundingCube result = BoundingCube.EmptyBoundingCube;

            foreach (IGeoObject go in originals)
            {
                result.MinMax(go.GetBoundingCube());
            }
            GeoPoint blockCenter = result.GetCenter();

            block.RefPoint = blockCenter;
            refPoint       = blockCenter;
            base.BasePoint = blockCenter;                        // für die Winkelberechnung
            base.OnSetAction();
            rotateLineInput.SetContextMenu("MenuId.Axis", this); // kann man erst hier machen, zuvor gibts die Property noch nicht
        }
Ejemplo n.º 9
0
        public override void OnSetAction()
        {
            base.ActiveObject = Face.Construct();
            if (axisVector.IsNullVector())
            {
                axisVector = GeoVector.YAxis;
            }
            if (angleRotation == 0.0)
            {
                angleRotation = Math.PI;
            }

            base.TitleId = "Constr.Solid.FaceRotate";

            geoObjectInput = new GeoObjectInput("Constr.Solid.FaceRotate.Path");
            geoObjectInput.MouseOverGeoObjectsEvent       += new GeoObjectInput.MouseOverGeoObjectsDelegate(geoObjectInputFace);
            geoObjectInput.GeoObjectSelectionChangedEvent += new GeoObjectInput.GeoObjectSelectionChangedDelegate(geoObjectInputFaceChanged);
            if (selectedMode)
            {
                geoObjectInput.Fixed = true;
            }

            innerPointInput = new GeoPointInput("Constr.Solid.FaceRotate.InnerPoint");
            innerPointInput.SetGeoPointEvent += new GeoPointInput.SetGeoPointDelegate(SetInnerPointInput);
            innerPointInput.MouseClickEvent  += new MouseClickDelegate(innerPointInputMouseClickEvent);
            innerPointInput.Optional          = true;


            rotateLineInput                             = new CurveInput("Constr.Face.PathRotate.AxisLine");
            rotateLineInput.Decomposed                  = true; // nur Einzelelemente, auch bei Polyline und Pfad
            rotateLineInput.MouseOverCurvesEvent       += new CurveInput.MouseOverCurvesDelegate(RotateAxis);
            rotateLineInput.CurveSelectionChangedEvent += new CurveInput.CurveSelectionChangedDelegate(RotateAxisChanged);

            axisPointInput = new GeoPointInput("Constr.Face.PathRotate.AxisPoint", axisPoint);
            axisPointInput.SetGeoPointEvent   += new GeoPointInput.SetGeoPointDelegate(SetAxisPoint);
            axisPointInput.GetGeoPointEvent   += new GeoPointInput.GetGeoPointDelegate(GetAxisPoint);
            axisPointInput.ForwardMouseInputTo = geoObjectInput;
            axisPointInput.DefinesBasePoint    = true;

            axisVectorInput = new GeoVectorInput("Constr.Face.PathRotate.AxisVector", axisVector);
            axisVectorInput.SetGeoVectorEvent += new GeoVectorInput.SetGeoVectorDelegate(SetAxisVector);
            axisVectorInput.GetGeoVectorEvent += new GeoVectorInput.GetGeoVectorDelegate(GetAxisVector);
            //            vectorInput.DefaultGeoVector = ConstrDefaults.DefaultExtrudeDirection;
            axisVectorInput.ForwardMouseInputTo = geoObjectInput;
            updateOptional();

            AngleInput angleInput = new AngleInput("Constr.Face.PathRotate.Angle", angleRotation);

            angleInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleInput);
            angleInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleInput);

            AngleInput angleOffsetInput = new AngleInput("Constr.Face.PathRotate.AngleOffset", angleOffsetRotation);

            angleOffsetInput.SetAngleEvent += new AngleInput.SetAngleDelegate(SetAngleOffsetInput);
            angleOffsetInput.GetAngleEvent += new AngleInput.GetAngleDelegate(GetAngleOffsetInput);
            angleOffsetInput.Optional       = true;

            MultipleChoiceInput insertMode = new MultipleChoiceInput("Constr.Solid.SolidInsertMode", "Constr.Solid.SolidInsertMode.Values");

            insertMode.GetChoiceEvent += new MultipleChoiceInput.GetChoiceDelegate(GetInsertMode);
            insertMode.SetChoiceEvent += new CADability.Actions.ConstructAction.MultipleChoiceInput.SetChoiceDelegate(SetInsertMode);

            base.SetInput(geoObjectInput, innerPointInput, rotateLineInput, axisPointInput, axisVectorInput, angleInput, angleOffsetInput, insertMode);
            base.ShowAttributes   = true;
            base.ShowActiveObject = false;
            base.OnSetAction();
            if (selectedMode)
            {
                rotateOrg(false); // zum Zeichnen und organisieren
            }
        }