bonuscad Posté(e) le 23 décembre 2009 Posté(e) le 23 décembre 2009 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
lili2006 Posté(e) le 23 décembre 2009 Posté(e) le 23 décembre 2009 Bonjour à toute et tous, Je n'ai pas bien compris le fonctionnement,.. J'ai essayé cette routine sur ce projet, Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 23 décembre 2009 Auteur Posté(e) le 23 décembre 2009 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
lili2006 Posté(e) le 23 décembre 2009 Posté(e) le 23 décembre 2009 Re, Ok ! Merci pour ces précisions bonuscad, Je testerai sur le même exemple pour voir,... CELA N'A RIEN A VOIR AVEC LES EPURES DE GIRATION. Oui, mais je voulais profiter de cet exemple pour tester ta routine, ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 23 décembre 2009 Posté(e) le 23 décembre 2009 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/
bonuscad Posté(e) le 24 décembre 2009 Auteur Posté(e) le 24 décembre 2009 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
thierry.garré Posté(e) le 24 décembre 2009 Posté(e) le 24 décembre 2009 Joli code , et bien utile Merci BONUSCAD :D Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
lili2006 Posté(e) le 24 décembre 2009 Posté(e) le 24 décembre 2009 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/
DAVID30 Posté(e) le 11 janvier 2010 Posté(e) le 11 janvier 2010 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
DAVID30 Posté(e) le 11 janvier 2010 Posté(e) le 11 janvier 2010 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
bonuscad Posté(e) le 11 janvier 2010 Auteur Posté(e) le 11 janvier 2010 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
thierry.garré Posté(e) le 11 janvier 2010 Posté(e) le 11 janvier 2010 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
bonuscad Posté(e) le 11 janvier 2010 Auteur Posté(e) le 11 janvier 2010 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
thierry.garré Posté(e) le 11 janvier 2010 Posté(e) le 11 janvier 2010 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
bonuscad Posté(e) le 11 janvier 2010 Auteur Posté(e) le 11 janvier 2010 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
thierry.garré Posté(e) le 11 janvier 2010 Posté(e) le 11 janvier 2010 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant