Suite

Obtenir le nombre de coudes d'une polyligne


J'essaie d'obtenir le nombre de courbes/courbes d'une polyligne. Je sais que je peux accomplir cela en obtenant les sommets de la polyligne, et en vérifiant le départ et le départ et en comparant leurs angles, s'ils correspondent alors pas de courbure, s'ils ne correspondent pas alors c'est un virage/courbe. J'espère que arcobjects pourrait avoir une fonction existante qui accomplit cela, des idées ? les images ci-dessous montre le requis.

public static int GetNumberOfCurves(this Ipolyline crntEdge) { // ce que je peux faire ici est de convertir la polyligne en IPointCollection // obtenir chaque point et obtenir le de et vers et comparer les angles. // mais j'espère qu'il y a quelque chose dans l'Apis qui peut obtenir ces courbes }

Je pense que cela doit être programmé. Un décompte direct des sommets n'identifiera pas la situation illustrée ci-dessous lorsque vous avez des segments dans une direction constante. Ainsi, dans l'exemple ci-dessous, vous identifieriez 6 coudes.

Les interfaces clés seraient ISegmentCollection pour énumérer sur chaque segment, jetez-les dans ILine puis utilisez le Angle sur des segments successifs pour déterminer s'il y a un changement de direction entre chaque sommet.

Vous pouvez court-circuiter le traitement et tester la polyligne pour voir si elle n'a qu'un seul segment, ce qui signifie qu'elle ne peut pas avoir de courbure. Un autre test de "pré-traitement" consiste à calculer la sinuosité (longueur de la polyligne divisée par la distance en ligne droite entre les nœuds), si c'est 1 alors vous savez que la polyligne (qui peut être composée de 3 sommets ou plus) est complètement droite et n'a pas se plie, donc pas besoin de le tester.

Eh bien, c'est comme ça que j'aurais fait, je suis sûr qu'il y a une façon plus intelligente de le faire ?


Voir la vidéo: AutoCAD 2015. Tutoriel Français. 04 - Polyligne, rectangle, décomposer, joindre (Octobre 2021).