Example #1
0
 /// <summary>
 /// Implements <see cref="Action.OnMouseMove"/>. If you override this method
 /// don't forget to call the bas implementation.
 /// </summary>
 /// <param name="e"><paramref name="Action.OnMouseMove.e"/></param>
 /// <param name="vw"><paramref name="Action.OnMouseMove.vw"/></param>
 public override void OnMouseMove(MouseEventArgs e, IView vw)
 {
     using (Frame.Project.Undo.ContextFrame(this))
     {
         SnapPointFinder.DidSnapModes DidSnap;
         GeoPoint p = base.SnapPoint(e, fixPoint, vw, out DidSnap);
         // hier möglicherweise einige Fangmethoden ausschalten
         // der fixPoint und der aktuelle Punkt werden in die aktuelle Zeichenebene projiziert
         if (CalculateAngleEvent != null)
         {
             SetAngle(new Angle(CalculateAngleEvent(p)));
         }
         else
         {
             if (usesLocalPlane)
             {
                 GeoPoint2D pp = localPlane.Project(p);
                 SetAngle(new Angle(pp, GeoPoint2D.Origin));
             }
             else
             {
                 GeoPoint2D pp        = ActiveDrawingPlane.Project(p);
                 GeoPoint2D pfixpoint = ActiveDrawingPlane.Project(fixPoint);
                 SetAngle(new Angle(pp, pfixpoint));
             }
         }
     }
 }
 private void Recalc()
 {
     if (firstPointIsValid && secondPointIsValid)
     {
         Angle a = new Angle(ActiveDrawingPlane.Project(secondPoint - firstPoint));
         using (Frame.Project.Undo.ContextFrame(this))
         {
             angleProperty.SetAngle(a);
         }
     }
 }
Example #3
0
 private void OnSetEndPoint(GeoPoint p)
 {
     endPoint = p;
     if (startPointInput.Fixed)
     {
         rotAngleInput.Fixed = true; // damit die Aktion nach dem Endpunkt aufhört
         SweepAngle swAngle = new SweepAngle((GeoVector2D)(base.ActiveDrawingPlane.Project(startPoint) - base.ActiveDrawingPlane.Project(refPoint)), base.ActiveDrawingPlane.Project(endPoint) - base.ActiveDrawingPlane.Project(refPoint));
         ModOp      m       = ModOp.Rotate(base.BasePoint, axisVector, new SweepAngle(swAngle - rotationAngle) + GetOffset());
         rotationAngle = swAngle.Radian;
         block.Modify(m);
         feedBackEllipse.SetArcPlaneCenterStartEndPoint(ActiveDrawingPlane, ActiveDrawingPlane.Project(BasePoint), ActiveDrawingPlane.Project(startPoint), ActiveDrawingPlane.Project(endPoint), ActiveDrawingPlane, swAngle.Radian > 0.0);
     }
 }