예제 #1
0
 /// <summary>
 /// Overrides <see cref="CADability.Actions.ConstructAction.OnDone ()"/>
 /// </summary>
 public override void OnDone()
 {
     succeeded = true;
     if (geoPointProperty != null)
     {
         geoPointProperty.ModifiedByAction(this);
     }
     base.OnDone();
 }
예제 #2
0
 /// <summary>
 /// Implements <see cref="Action.OnMouseUp"/>. If you override this method
 /// don't forget to call the bas implementation.
 /// </summary>
 /// <param name="e"><paramref name="Action.OnMouseUp.e"/></param>
 /// <param name="vw"><paramref name="Action.OnMouseUp.vw"/></param>
 public override void OnMouseUp(MouseEventArgs e, IView vw)
 {
     using (Frame.Project.Undo.ContextFrame(this))
     {
         SnapPointFinder.DidSnapModes DidSnap;
         GeoPoint p = base.SnapPoint(e, basePoint, vw, out DidSnap);
         if (DidSnap == SnapPointFinder.DidSnapModes.DidNotSnap)
         {
             // der Punkt wurde also nicht gefangen, befindet sich somit in der Zeichenebene
             // da diese Aktion aber bei Hotspots drankommt, soll aber statt der Zeichenebene die zur Zeichenebene
             // parallele Ebene durch den basePoint (den Ausgangspunkt) genommen werden
             Plane parallel = GetMousePlane(vw); //  new Plane(basePoint, vw.Projection.DrawingPlane.DirectionX, vw.Projection.DrawingPlane.DirectionY);
             p = parallel.ToGlobal(parallel.Project(p));
             // die Berechnung ist umständlich, man bräuchte nur den Offsetvektor einmal berechnen
         }
         SetGeoPoint(p);
     }
     Frame.Project.Undo.ClearContext(); // also die nächsten Änderungen sind ein neuer undo Schritt
     if (GeoPointProperty != null)
     {
         GeoPointProperty.ModifiedByAction(this);
     }
     base.RemoveThisAction();
 }