Arcs dans les polylignes

Bulge ou courbure


Pour faire suite à l'exercice de "Polyligne avec ou sans arc" qui nous permet de savoir si une polyligne contient ou ne contient pas des segments courbes je viens apporter quelques explications sur ces segments.
Comme je vous en prévenais ce n'est pas complètement intuitif.


Les segments courbes des polylignes (2D) sont renseignés dans le code (DXF) 42 d'une liste de type :
Liste extraite par (entget), le code 42 est surligné en bleu pour vous repérer :



Dessinons une polyligne courbe entre deux droites faisant un angle de 120.00° soit 2.0944 radians, car comme vous le savez maintenant AutoCAD "parle" en radians. pour ce faire il suffit de créer un raccord circulaire entre deux lignes faisant un angle de 120.0 dégrés, la valeur du rayon n'a pas d'importance.

Ce segment courbe unique, c'est pour faire simple et pouvoir interroger facilement la liste DXF mais un arc inclus dans une polyligne respecte les mêmes règles car retrouver une partie courbe dans la liste d'une polyligne complète est moins aisé pour l'exemple, la polyligne qu'on va traiter ne contient qu'un vertex et c'est un vertex courbe..

On va la sélectionner pour renseigner une variable qu'on pourra interroger

(setq ent(car (entsel "\nChoix de la polyligne (en arc)\n")))

La variable ent contient l'ename de la polyligne et on peut donc lui appliquer (entget) et en extraire le contenu du code 42, comme ceci :

(cdr(assoc 42 (entget ent)))

On obtient une valeur et cette valeur est bulge, j'utiliserais le mot "courbure" si je parlais français mais j'utilise les mots d'AutoCAD, et dans notre cas de dessin ce bulge a la valeur de 0.267949, exotique, non ?
Et c'est quoi cette valeur ??? je vois des yeux élargis au fond de la classe, j'en vois d'autres dont les sourcils cherchent à se rejoindre au milieu du front, ça cogite !.
Vous êtes prêt à entendre la vérité ?

Le bulge (courbure) est la tangente du quart de l'angle formé par l'arc, c'est pourtant pas compliqué (hihihi)

Ainsi un demi-cercle (180°) aura un bulge de valeur 1 et comme on l'a vu dans l'exercice Poly-02 une valeur de 0.0 (zéro) indique qu'il n'y a pas d'arc entre les vertex.
Une valeur négative de bulge indique un arc construit dans le sens horaire dans le sens de construction de la polyligne.
Il est important de noter que la variable ANGDIR n'a pas d'influence sur le signe de ce bulge.

Pour calculer la valeur de l'angle depuis le bulge il suffit donc de multiplier par 4 l'atan de la valeur de bulge, dans notre cas :

1
2
3
4
5
(setq ent(car(entsel))
          valeur-bulge (cdr(assoc 42 (entget ent)))
           angle-bulge (* 4.0 (atan valeur-bulge))
           angle-degres (/ (* angle-bulge 180.0)pi)
 )

Ce qui donne avec une animation du code :


haut de page

retour aux exercices sur polylignes


10 mars 2018,
mise à jour le 03 avril 2018