コード例 #1
0
ファイル: Line.cs プロジェクト: SOFAgh/CADability
 /// <summary>
 /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.FindSnapPoint (SnapPointFinder)"/>
 /// </summary>
 /// <param name="spf"></param>
 public override void FindSnapPoint(SnapPointFinder spf)
 {
     if (!spf.Accept(this))
     {
         return;
     }
     if (spf.SnapToObjectCenter)
     {
         GeoPoint Center = new GeoPoint(StartPoint, EndPoint);
         spf.Check(Center, this, SnapPointFinder.DidSnapModes.DidSnapToObjectCenter);
     }
     if (spf.SnapToObjectSnapPoint)
     {
         spf.Check(StartPoint, this, SnapPointFinder.DidSnapModes.DidSnapToObjectSnapPoint);
         spf.Check(EndPoint, this, SnapPointFinder.DidSnapModes.DidSnapToObjectSnapPoint);
     }
     if (spf.SnapToDropPoint && spf.BasePointValid)
     {
         GeoPoint toTest = Geometry.DropPL(spf.BasePoint, startPoint, endPoint);
         spf.Check(toTest, this, SnapPointFinder.DidSnapModes.DidSnapToDropPoint);
     }
     if (spf.SnapToObjectPoint)
     {
         double par = PositionOf(spf.SourcePoint3D, spf.Projection.ProjectionPlane);
         // TODO: hier ist eigentlich gefragt der nächste punkt auf der Linie im Sinne des Projektionsstrahls
         if (par >= 0.0 && par <= 1.0)
         {
             spf.Check(PointAt(par), this, SnapPointFinder.DidSnapModes.DidSnapToObjectPoint);
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.FindSnapPoint (SnapPointFinder)"/>
 /// </summary>
 /// <param name="spf"></param>
 public override void FindSnapPoint(SnapPointFinder spf)
 {
     if (!spf.Accept(this))
     {
         return;
     }
     if (spf.SnapToObjectSnapPoint)
     {
         spf.Check(location, this, SnapPointFinder.DidSnapModes.DidSnapToObjectSnapPoint);
     }
 }