Aller au contenu

Point sur polyline


tuksy

Messages recommandés

Bonjour a tous ,

 

je vient demandé une aide car je bloc sur un point depuis un moment.

 

j'ai une routine qui demande a l'utilisateur de piqué un point sur une polyline .

 

1- je veux Vérifier la position du point (point piqué Sur la polyline ou pas ) fonction boolean je pense ?

 

2- comment récupérer le point perpendiculairement projeté sur la polyline si le point piqué est en dehors de la polyline .

 

j'espère que j'été claire .

 

Merci d'avance .

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

La classe abstraite Curve, dont dérive la classe Polyline, a une méthode GetClosestPointTo() qui retourne le point 3d sur la courbe le plus proche du point 3d passé en argument.

 

Un petit exemple avec une méthode d'extension IsPointOnCurve(). La méthode est surchargée pour pouvoir spécifier un tolérance ou utiliser la tolérance globale dans la comparaison des points.

 

    /// <summary>
   /// Méthodes d'extension pour la classe abstraite Curve
   /// </summary>
   public static class CurveExtensions
   {
       /// <summary>
       /// Evalue si le point est sur la courbe en utilisant la tolérance globale.
       /// </summary>
       /// <param name="curve">L'instance d'un type dérivé de Curve à laquelle s'applique la méthode.</param>
       /// <param name="point">Le point (coordonnées WCS) à évaluer.</param>
       /// <returns>true si le point est sur la courbe, false sinon.</returns>
       public static bool IsPointOnCurve(this Curve curve, Point3d point)
       {
           return curve.IsPointOnCurve(point, Tolerance.Global);
       }

       /// <summary>
       /// Evalue si le point est sur la courbe en utilisant la tolérance spécifiée.
       /// </summary>
       /// <param name="curve">L'instance d'un type dérivé de Curve à laquelle s'applique la méthode.</param>
       /// <param name="point">Le point (coordonnées WCS) à évaluer.</param>
       /// <param name="tolerance">La tolérance à utiliser pour l'évaluation.</param>
       /// <returns>true si le point est sur la courbe, false sinon.</returns>
       public static bool IsPointOnCurve(this Curve curve, Point3d point, Tolerance tolerance)
       {
           if (curve == null)
               throw new ArgumentNullException("curve");
           return point.IsEqualTo(curve.GetClosestPointTo(point, false), tolerance);
       }
   }

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité