Aller au contenu

Dégagement de visibilité latérale.


Messages recommandés

Posté(e)

Bonjour,

 

Je vous propose juste un bout de code pour monter une épure de dégagement de visibilité latéral dans le domaine de la sécurité routière. Dans cette zone obtenue, il faut absolument éviter les masques (panneaux publicitaire, barrières, mobilier urbain conséquent etc....)

 

Un code très spécifique et rarement utile, mais qui peut rendre service occasionnellement en complément d'autre outils de diagnostique de visibilité.

(vl-load-com)
(defun c:epure-masque_lateral ( / js ldat vlaobj perim_obj pt_start pt_end d_x lst_pt pt_last inc vref rad pt pt_int e_last env_mask)
(princ (strcat"\nSélectionner l'objet représentant le bord de la bande de rive de la chaussée."))
(while
 (not
  (setq js
   (ssget "_+.:E:S" 
    (list
     (cons 0 "*POLYLINE,ARC,SPLINE")
     (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
     (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
     (cons -4 "       (cons -4 "&") (cons 70 113) ;(70 . 121)
     (cons -4 "NOT>")
    )
   )
  )
 )
)
(setq
 ldat '((20 . 15.5)(30 . 26.5)(40 . 40.0)(50 . 55.0)(60 . 72.0)(70 . 95.0)(80 . 121.0)(90 . 151.0)(100 . 187.0))
 vlaobj (vlax-ename->vla-object (ssname js 0))
 perim_obj (vlax-curve-getDistAtParam vlaobj (vlax-curve-getEndParam vlaobj))
 pt_start (vlax-curve-getStartPoint vlaobj)
 pt_end (vlax-curve-getEndPoint vlaobj)
 d_x 0.0
 lst_pt nil
 pt_last nil
 env_mask (list pt_end)
 inc perim_obj
)
(initget "20 30 40 50 60 70 80 90 100")
(setq vref (getkword "\nVitesse de référence en Km/h de la voie? [20/30/40/50/60/70/80/90/100]<90>: "))
(if (not vref) (setq vref "90"))
(setq rad (cdr (assoc (read vref) ldat)))
(if (>= rad perim_obj) (progn (princ "\nLa distance de visibilité excède la longueur de la bande de rive sélectionnée!") (exit)))
(while (>= inc perim_obj)
  (initget 6)
  (setq inc (getdist (strcat "\nEquidistance de résolution? <" (rtos (/ rad 10.0)) ">: ")))
  (if (not inc) (setq inc (/ rad 10.0)))
  (if (>= inc perim_obj) (princ "\nLa distance de résolution de l'épure excède la longueur de la bande de rive sélectionnée!"))
)
(while (< d_x perim_obj)
 (setq
  lst_pt (cons (vlax-curve-getPointAtDist vlaobj d_x) lst_pt)
  d_x (+ d_x inc)
 )
)
(while lst_pt
 (entmake
  (append
   '(
     (0 . "CIRCLE")
     (100 . "AcDbEntity")
     (67 . 0)
     (410 . "Model")
     (8 . "degagement-visibilite-lateral")
     (60 . 1)
     (62 . 256)
     (6 . "ByLayer")
     (370 . -2)
     (100 . "AcDbCircle")
   )
   (list (cons 40 rad))
   (list (cons 10 (car lst_pt)))
   '((210 0.0 0.0 1.0))
  )
 )
 (setq pt (vlax-invoke vlaobj 'IntersectWith (vlax-ename->vla-object (entlast)) acExtendNone))
 (if (and pt pt_last (> (length pt) 3))
  (if (> (distance (list (car pt) (cadr pt) (caddr pt)) pt_last) (distance (list (cadddr pt) (car (cddddr pt)) (last pt)) pt_last))
   (setq pt (list (cadddr pt) (car (cddddr pt)) (last pt)))
   (setq pt (list (car pt) (cadr pt) (caddr pt)))
  )
 )
 (entdel (entlast))
 (if (and pt (<(length pt) 4))
  (progn
   (entmake
    (append
     '(
       (0 . "LINE")
       (100 . "AcDbEntity")
       (67 . 0)
       (410 . "Model")
       (8 . "degagement-visibilite-lateral")
       (62 . 9)
       (6 . "ByLayer")
       (370 . -2)
       (100 . "AcDbLine")
     )
     (list (cons 10 (car lst_pt)))
     (list (cons 11 pt))
     '((210 0.0 0.0 1.0))
    )
   )
   (if e_last
    (progn
     (setq pt_int (vlax-invoke (vlax-ename->vla-object e_last) 'IntersectWith (vlax-ename->vla-object (entlast)) acExtendNone))
     (if pt_int (setq env_mask (cons pt_int env_mask)))
    )
   )
   (setq e_last (entlast))
  )
  (setq pt nil)
 )
 (setq lst_pt (cdr lst_pt) pt_last pt)
)
(setq env_mask (mapcar '(lambda (x) (list 10 (car x) (cadr x))) (reverse (cons pt_start env_mask))))
(entmake
 (append
  '(
   (0 . "LWPOLYLINE")
   (100 . "AcDbEntity")
   (67 . 0)
   (410 . "Model")
   (8 . "degagement-visibilite-lateral")
   (62 . 3)
   (6 . "ByLayer")
   (370 . -2)
   (100 . "AcDbPolyline")
  )
  (list (cons 90 (length env_mask)))
  '((70 . 0))
  (apply 'append (mapcar '(lambda (x10) (append (list x10 '(40 . 0.0) '(41 . 0.0) '(42 . 0.0)))) env_mask))
  '((210 0.0 0.0 1.0))
 )
) 
(prin1)
)

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Tiré de ton exemple, voici le résultat en image:

 

Le trait rouge épais représente le bord de chaussée (entité sélectionnée au départ)

La voie étant une rue, j'ai pris une vitesse de référence de 30km/h

 

La zone crée (gris bordée de vert) représente la zone qui devrait être dégagée pour la visibilité.

Par exemple un abris bus serait mal placé par rapport à la sortie du CT.

 

Le trait (que j'ai passé en jaune) représente environ la distance d'arrêt nécessaire pour un véhicule à la vitesse de référence.

 

L'outil reste basique mais permet de faire une interprétation rapide de l'épure de mise en sécurité des abords de la voie et en complément d'autres outils de visibilité (lié au profil en long par exemple)

 

CELA N'A RIEN A VOIR AVEC LES EPURES DE GIRATION.

 

http://moe.mabul.org/up/moe/2009/12/23/img-150014p03tm.png

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Re,

 

J'ai retesté en deux endroits sur le même projet, mais je pense ne pas savoir trop ce que je fais,... :o

 

Qu'appelles-tu "Equidistance de résolution" ?

 

J'ai testé la rive gauche et droite en gardant la valeur 2.65 m par défaut, et j'ai ces résultats =>

 

http://free0.hiboox.com/images/5209/39bb8f31f37c24aae7135765ee226ee4.jpg

 

http://free0.hiboox.com/images/5209/f031d913ba615f0d2f688fed1443cbde.jpg

 

Peux-tu les commenter STP ?

 

Merci d'avance,

 

Les fichiers,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Brièvement,

 

Ce que j'ai fais pour réaliser le test:

 

Dans un nouveau dessin, j'ai attaché en Xref ton dessin exemple.

J'ai utilisé NCOPY des ExpressTools pour rapatrier les bords de la voie.

Puis un coup de PEDIT pour assembler les segments copiés.

Et j'ai appliqué la routine à cette polyligne.

 

Plus l'axe est composés d'élément, plus l'épure est parlante. (l'application à seulement un arc, bien que possible, donne le résultat le moins parlant)

 

Qu'appelles-tu "Equidistance de résolution" ?

L' objet sélectionné est "mesuré" (comme la commande autocad) avec cette valeur, et à chaque point mesuré, la distance de visibilité est appliquée)

La valeur proposée par défaut est le 1/10 de la distance de visibilité choisie.

 

PS: L'origine de ce développement: Lisp routine to show visibilty splays et comme j'avais fais la même étude pour connaitre le recul à mettre en œuvre lors de la mise en place de glissières de sécurité béton (GBA) en section courbe afin de continuer d'assurer les distance de visibilité sur le tracé et de pas mettre l'étude de visibilité en amont, donc les données techniques de l'axe projet, en défaut.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour à toutes et tous,

 

Salut bonuscad,

 

Vu,

 

Merci pour ces précisions,

 

étude pour connaitre le recul à mettre en œuvre lors de la mise en place de glissières de sécurité béton (GBA) en section courbe afin de continuer d'assurer les distance de visibilité sur le tracé

 

Intéressant ton cas d'étude,...

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

  • 3 semaines après...
Posté(e)

Bonjour ,j'ai essayé ta routine qui fonctionne mais idem que précédement que signifie l'équidistance de résolution (cela me servira pour ma culture )

 

Merci par avance

 

Posté(e)

extrait " l'objet sélectionné est "mesuré" (comme la commande autocad) avec cette valeur, et à chaque point mesuré, la distance de visibilité est appliquée)

La valeur proposée par défaut est le 1/10 de la distance de visibilité choisie.

 

1/10 de la distance de visibilité ????

 

Je suis peut être plus précis dans ma question

 

 

 

Posté(e)

Vitesse de référence en Km/h de la voie? [20/30/40/50/60/70/80/90/100]<90>: 40

 

Equidistance de résolution? <4.0000>:

 

Par exemple ici j'ai choisi une vitesse de référence de 40km/h, donc pour la distance (ou il répétera cette mesure le long de l'objet) il me propose par défaut 4.00 (40/10).

Tu peux forcer cette distance en + ou - grande, plus la valeur est petite, plus l'épure sera fine)

 

Pour des dessins d'épures d'étude, la valeur proposée est généralement suffisante.

 

l'équidistance de résolution = distance de répétition où il applique la distance minimale de visibilité à la vitesse donnée.

 

A part la finesse du tracé de l'épure, cela ne change pas grand chose.

J'ai laissé quand même cette option, car dans des tracés très sinueux à courbe très serrées (rayon faible), il peut être utile de descendre cette valeur pour avoir une épure dont la segmentation plus courte, s'approchera plus d'une courbe (la ligne verte, n'est composée que de segment droit)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonuscad, juste une petite question:

 

a qu'elle distance de la polyligne est placé l'observateur et le point observé ?

 

Sur la polyligne ?

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

Bonjour Thierry,

 

Si l'on veut faire ça dans les règles de l'art, voici les règles à respecter.

Extrait de l'ARP

 

Point d'observation: hauteur 1m, situé à 2m du bord droit de la chaussée.

 

Point observé: hauteur 0.35m (feux arrière d'un véhicule), situé sur l'axe de la voie de circulation concernée (ou pour simplifier lors de calcul manuel; à 2m du bord droit de la chaussée).

Toutefois pour les routes exposées à des chutes de pierres fréquentes, on peut envisager de réduire cette hauteur à 0.15m.

 

Si tu possède ce document (Aménagement des Routes Principales), Cela concerne le chapitre 4.2.b), ainsi tu pourras appliquer la routine en respectant les recommandations prescrites.

(tu retrouveras d'ailleurs les valeurs du tableau dans le lisp).

 

NB:Bien sur le lisp ne prends pas en compte les hauteurs d'observations, il sert juste à obtenir les angles de dégagements 2D successifs.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci Bonuscad ,

 

Merci de ta réponse

 

je connais ces textes.

 

Donc sans parler de hauteur d'observation (bien sur),le calcul se fait bien sur la polyligne.

 

en fait je pensais plus au contrôle de dégagement de visibilité dans les carrefours (tel que cité à la page 29,30,31,32 du guide des carrefours interurbains)

 

cordialement

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

Pour être franc la routine n'est pas une application exacte.

 

Je m'explique: En effet les distances d'arrêt sont appliqués bêtement, elles sont rectilignes (elles ne suivent pas la courbe). J'ai suivi le même procédé que manuellement: construction d'un cercle de rayon équivalent à la distance d'arrêt, recherche de l'intersection pour établir l'angle de dégagement.

 

Il me semble que cette méthode peut suffire, car l'erreur reste minime pour une épure tant qu'on reste dans les normes des rayons des courbes d'axe en plan.

 

Il y a moyen d'être plus précis (pour de petites courbes), mais il faut que je procède autrement dans le code.

 

Si vous le jugez utile, je peux revoir le code (à priori, ça ne serait pas très long).

 

PS:

Le titre pour plus de compréhension aurait dut être:

Dégagement de visibilité latérale pour perception d'un obstacle sur la chaussée

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci de ces précisions,

 

je pense que ton code dans sa forme actuelle doit majorer le dégagement,donc cela n'est pas plus mal

 

cordialement

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

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é