Aller au contenu

CHALLENGE AUTOCAD/COVADIS/PROGRAMMATION


Messages recommandés

Posté(e)

Bonjour à toutes et tous,

 

Une demande intéressante d'un ancien étudiant =>

 

"Ma question : j'ai un plan topo complet d'une portion d'autoroute. et j'ai besoin de sortir sous forme de fichier (excel ou autre) les largeurs de BAU. Donc concrètement est-ce que Covadis est capable de me calculer la distance entre deux polylignes (qui seraient ici représentées par la bande blanche d'un côté et le bord de l'enrobé de l'autre) ? je vous ai fait une petite impression écran en PJ.

 

j'ai 24 km de section d'autoroute si je peux avoir une données tous les 20 ou 50 m ça ferais respectivement 1200 ou 480 largeurs.

Après peut importe le pas de mesures si je peux le faire pour 20 je peux le faire pour 50.

 

Si ma requête est impossible je vais devoir m'y coller à la main avec mon dessinateur ! ça va être moins marrant ..."

 

 

Sans prog, je propose l'utilisation de la commande diviser avec un bloc + attribut champ "position planimétrique", export et calcul de la distance entre points depuis Excel.

 

D'autres idées ?

 

Merci d'avance,

 

PS:

 

J'ai répondu à cet étudiant en vidéo, si ça vous intéresse,...

 

=> 1er PARTIE : http://screencast.com/t/k4oWuC9rM

 

=> 2nd PARTIE : http://screencast.com/t/eqFJqBrNS

 

=> 3e PARTIE : http://screencast.com/t/1fImoHwBK

 

=> 4e PARTIE : http://screencast.com/t/3sz4r80h

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bonsoir Lilian,

 

C'est un petit challenge.

 

Pour moi la solution la plus rapide pour ce genre de projet (il ne faut pas oublier que nous sommes sur une autoroute et ce qui intéressant dans ce genre de projet ce de connaitre la largeur de BAU aux Pk (point kilométrique précis).

 

Voici ma solution:

 

1 - Créer un axe sur la bande blanche (39-13) ou au milieu du TPC (prise en charge du PK)

2 - Le profil en long peut etre fictif ou on prends le TN

3- Profil type avec des point codés

4- Listing des points codés

5- Exploitation sous excel avec largeur de BAU au droit de chaque PK

 

C'est la même technique avec Mensura

 

C'est aussi la technique qu'on utilise en BE

 

Merci de vos remarque

 

Cordialement,

 

Laurent

Posté(e)

Salut Lilian,

Ta méthode est pas mal, mais tu as un décalage, car tu fais le calcul pour chaque ligne. Pour calculer la distance il faut utiliser 2 coordonnées, soit 2 lignes. Du coup, ta formule doit sauter une ligne sur deux. Pour fair ceci, sélectionne tes cellules F6 et F7, et après tu tires vers le bas. Du coup ton calcul sera bien aligné, une ligne sur deux. Dans ton cas ça calcul en biai une fois sur deux.... Et on ne sais pas dans quel sens.

 

Pour simplifier la chose, il faudrait faire commencer les polylignes exactement au même X, ainsi pas de décalage au départ, soit moins de sources d'erreurs, et tri plus lisible.

 

Chose à faire attention quand même, si tu es en courbe, au bout d'un moment il pourrait y avoir un décalage supérieur à tes 6m de la commande "diviser". Mais bon pour la demande, avec 20 voir 50m, le risque est quasiment nul sur une autoroute.

 

Du coup.... A voir si il y a pas une simplification de la feuille excel en utilisant 2 blocs différents pour chaque polyligne.

 

Sympa le challenge... Affaire à suivre.

 

A plus.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Posté(e)

Re,

 

Salut Laurent,

 

Pour moi la solution la plus rapide pour ce genre de projet

 

J'aime bien ta solution (que je n'ai pas testé par manque de tps,...) mais j'ai peur qu'elle soit un peu longue, non ?

 

Par contre, je ne sais pas si le fichier possède des tabulations, je n'ai eu que l'image que j'ai jointe à mon message précédent,...

 

 

C'est aussi la technique qu'on utilise en BE

 

Ah ok, intéressant,...Et pourquoi as t-on besoin de cette largeur exactement ? Pour métré la surface de BAU, je suppose,...Ou pas ?:mellow:

 

4- Listing des points codés

 

ça me dis rien ça,...! Depuis quelle fonction, dans la définition du 1/2 PT ? Merci d'avance pour l'éclaircissement,..

 

Salut La Lozère

 

Ta méthode est pas mal, mais tu as un décalage, car tu fais le calcul pour chaque ligne. Pour calculer la distance il faut utiliser 2 coordonnées, soit 2 lignes. Du coup, ta formule doit sauter une ligne sur deux. Pour fair ceci, sélectionne tes cellules F6 et F7, et après tu tires vers le bas. Du coup ton calcul sera bien aligné, une ligne sur deux. Dans ton cas ça calcul en biai une fois sur deux.... Et on ne sais pas dans quel sens.

 

Tout comme toi, j'ai constaté en fin de la dernière vidéo qu'on pouvait surement faire mieux,...Par contre j'ai essayé aussi d'imaginer deux polylignes qui n'aurait pas le même départ, comme dans mon exemple,...Pour le calcul, c'est exact ! (Bien vu,..dry.gif). J'ai filmé en même tps que j'ai testé cette solution qui me semblait globalement "simple",...

 

 

il faudrait faire commencer les polylignes exactement au même X

 

Dans le SCG je pense qu'il n'y a pas de raison que ce cas se produise,...

 

En faisant joujou avec le SCU,par contre, bonne idée à priori,..

 

 

Mais bon pour la demande, avec 20 voir 50m, le risque est quasiment nul sur une autoroute.

 

j'ai fini un peu par conclure comme toi, mais je ne suis pas encore sur de la réponse,...:mellow:

 

A voir si il y a pas une simplification de la feuille excel en utilisant 2 blocs différents pour chaque polyligne.

 

Plus on peut lever les sources d'erreur, mieux on se porte, c'est donc une très bonne idée également !:rolleyes:

 

Sans prog, j'avais également pensé à utiliser la création d'une polyligne moyenne avec covadis (Cov 3D => Gestion des polys 2D), et après quoi ? surement quelque chose à faire avec, mais ne connaissant pas exactement le besoin, je me suis concentré à plutôt répondre à une idée de solution "perfectionnable" (notamment avec tes très juste remarques !) mais surtout qui réponde "dans l'urgence" à un besoin.

 

 

Sympa le challenge... Affaire à suivre.

 

Ben je trouve aussi car jusqu'à présent j'arrivais à trouver des solutions dans ces situations "d'urgence", mais là, je suis un peu sec j'avourais,...

 

Bon, quand je saurai exactement quel est le besoin de ce quantitatif, je comprendrai peut être aussi mieux ce que veux dire Laurent,...:huh:

 

En tout cas, merci de votre réactivité, le shmilblick à déjà progressé et va servir concrètement dés demain,...

 

A suivre,...B)

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Rere,

 

C'est un petit challenge.

 

Au fait, que veux tu dire exactement Laurent ? Que c'est du grand classique dans les BE ? Que mensura sait faire ça et pas AutoCAD ni covadis ? Bizarre tout de même si ce besoin est récurant que covadis n'ai pas réagit,...(A part bien sur par les étapes que tu proposes,...qui me semble longues est "fastidieuses" mais je peux me tromper n'ayant pas pris encore le temps de tester,...:unsure:

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bonsoir Lilian,

 

Le but de ce genre d'opération , c'est pour connaitre la largeur existante de la BAU pour la remettre dans le futur au norme. Une BAU doit faire 3.00.

 

On fait ça aussi dans le but de futur Élargissement autoroutier => passage de 2 x 2 voies en 3 x 3 voies

 

Je te prépare une démo de la technique pour demain.

 

Cordialement,

 

Laurent

Posté(e)

Re,

 

Si on va jusqu'au bout des vidéos, je m'interroge sur la façon, via la commande d'import des attributs des Express, comment également transcrire le résultat sur le plan, ça peut peut-être également servir ?

 

Un bloc avec attribut vide au départ placé sur une polyligne moyenne (via la commande covadis, ce qui veut dire qu'il faut covadis !), ou en passant par le lisp de (gile), je n'ai plus le nom de la routine en tête, ce qui veut dire qu'il faut savoir utiliser un lisp, mais bon, c'est pas la mer à boire non plus, je vous l'accorde,.. On exporte alors également ce bloc puis en le réinjectant il prend la valeur moyenne du résultat donné par calcul sur un tableur,.

 

Je n'ai pas testé, mais là aussi, il y a peut-être plus simple,...;)

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Si j'ai bien compris le problème, je peux vous proposer une solution avec les étiquettes de COVADIS.

Pré-requis : deux polylignes à peu près parallèles

Commande : COVADIS2D => Cotations par étiquettes => coter des points ou des blocs...

Méthode :

1) Créer un modèle d'étiquettes perso :

- Ouvrir le gestionnaire des modèles d'étiquettes

- Créer un nouveau modèle dans la catégorie "Bloc (symbole)"

- Dans l'onglet "Texte", ajouter une information "Distance2D / entité"

2) Utiliser la commande "mesurer" sur la PREMIERE polyligne pour placer un bloc tous les 5m par exemple

3) Lancer la commande "COVADIS2D => Cotations par étiquettes => coter des points ou des blocs..." pour coter ces blocs avec votre modèle d'étiquette perso. Quand on vous demande de sélectionner l'objet "axe", choisir la DEUXIEME polyligne !

 

post-37933-0-14392700-1349862604_thumb.png

(Les étiquettes COVADIS sont en rouge)

 

4) il est possible de générer un fichier Excel des distances avec "COVADIS2D => Cotations par étiquettes => Listing d'étiquettes"

 

Guillaume

Assistance technique de GEOMEDIA S.A.S.

(AutoCAD, Revit, InfraWorks, ReCap, COVADIS, AutoPiste, ...)

Posté(e)

c'est pas évident sur ta vidéo, mais les distance doivent etre prise perpendiculaire au 1er axe ou toutes parallèle? (j'ai pas tout visionner non plu :P )

 

je ferai effectivement comme lovecraft

avec covadis je passerai par un profil qui ne comporte qu'un point type de suivi de la 2eme polyligne

tu met tes tabulations à 20 ou 50m et récupère le listing des pts

 

ça doit pas prendre bien longtemps

Posté(e)

La solution de Guillaume est pour moi la meilleure,

 

Car la plus light ( pas d'ajout de projet)

 

Elle réponds parfaitement à la demande.

Thierry Garré

 

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

Posté(e)

Bonsoir,

 

Effectivement La technique de Guillaume semble être vraiment efficace. Elle a aussi le mérite d'avoir de suite une vue en plan éditable. (même si on peut aussi le faire avec le projet linéaire).

 

L'exploitation du Listing est aussi efficace puisqu'il nous reste plus qu’a mettre une colonne PK et d’incrémenter.

 

Bien vu..... ;)

 

Cordialement,

 

Laurent

Posté(e)

Bonsoir à toutes et tous,

 

Ouahou, pas mal cette utilisation des étiquettes que je n'avais pas poussée aussi loin,...(arrivée Version 2012 de mémoire, c'est bien ça ?). J'ai vu sur l'image jointe que mon ancien étudiant est sur une version 12.0d, c'est bon pour faire cette manip ?

 

Donc on à une solution pure AutoCAD,

 

Une solution covadis qui semble très rapide et efficace (Merci à Guillaume et Thierry)

 

c'est pas évident sur ta vidéo, mais les distance doivent etre prise perpendiculaire au 1er axe ou toutes parallèle? (j

 

Oui, à priori ce serait mieux perpendiculairement pour avoir les "vrais largeurs" mais avec la méthode décrite, j'ai des doutes que ce soit possible,...Même si ce n'est peut-être pas une information de haute précision, tout de même,...Je me suis fait la même remarque que toi X_all,..:angry:

 

Je teste dés que possible les étiquettes,.

 

 

Et sur AutoCAD "pur", on peut faire mieux que passer par la commande diviser et tout ce qui suit ?

 

En prog, ça donnerait quoi ?

 

Merci encore à tous pour vos idées,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)
L'exploitation du Listing est aussi efficace puisqu'il nous reste plus qu’a mettre une colonne PK et d’incrémenter.

 

Il est possible de rajouter directement le PK comme information dans le style d’étiquette, et du coup on retrouvera l'info dans le listing.

 

Oui, à priori ce serait mieux perpendiculairement pour avoir les "vrais largeurs" mais avec la méthode décrite, j'ai des doutes que ce soit possible,...Même si ce n'est peut-être pas une information de haute précision, tout de même,...Je me suis fait la même remarque que toi X_all,

 

l'information est un déport par rapport a un axe (l'axe dans ce cas est la polyligne sélectionnée), il s'agit donc bien d'une perpendiculaire.

 

12.0d, c'est bon pour faire cette manip ?
Ouimais il serai tout de même bon que ton ancien étudiant patch son poste en 12.0G, tant qu'a faire...

Thierry Garré

 

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

Posté(e)

Re,

 

Je ne sais pas si ils sont en souscription mais il suit de près ce post, donc,...

 

l'information est un déport par rapport a un axe (l'axe dans ce cas est la polyligne sélectionnée), il s'agit donc bien d'une perpendiculaire.

 

Semblait logique mais merci pour la précision, c'est exactement ce qui est recherché ici, comme tu l'as déjà écrit plus haut,...(je parlais de la méthode que j'ai décrite sous AutoCAD "pur",...)

 

Merci encore,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bonsoir,

 

allez une autre solution :

1. Mettre le dessin au 1/1000 (ça sera plus simple pour la 2ème étape car 1mm = 1m terrain)

2. Dessiner un talus type3 avec uniquement des grandes barbules (rapport entre longue et courte = 1) et espacement entre chaque trait = distance souhaitée (20mm=>20m, 50mm=>50m ...) en sélectionnant le marquage comme crête et la BAU comme pied de talus.

3. Outil d'extraction de donnée d'AutoCAD, sélectionner les lignes et extraire la longueur directement au format Excel.

 

Normalement elle ont été construites selon le PK croissant, donc elles devraient être extraites dans le même ordre.

 

Olivier

Posté(e)

coucou

 

de toute la semaine je n'ai pas pu dégager une demi-heure pour taper dix lignes de code,

quand on a un métier c'est pas simple la vie !!

 

blague à part, je prends le train en marche et je viens proposer ma solution en lisp

 

pré-requis : BAU et bord de chaussée en polylgnes

clic sur la BAU extérieure, sur le bord de chaussée et les texte s'écrivent à chaque sommet avec le PM et la largeur.

 

amicalement

 

le code n'est pas optimisé mais c'est une bonne base :

 

(setq BAU1 (car(entsel"poly de largeur de BAU")))
(redraw BAU1 3)
(setq listeBAU1 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget BAU1))))
(setq BAU2 (car(entsel"poly côté Voies")))
(redraw BAU2 3)
(setq vla_obj_axe (vlax-ename->vla-object BAU2))
(setq n 0)
(repeat (length listebau1)
 (setq ptempo1 (nth n listebau1)
pt	      (vlax-curve-getClosestPointTo vla_obj_axe ptempo1)
ecart	      (distance ptempo1 pt)
pm	      (vlax-curve-getDistAtPoint vla_obj_axe pt)
)
 (command "_line" ptempo1 pt "")
 (setq TexTempo
      (list
 (cons 0 "TEXT")
 (cons 10 ptempo1) ;(cons 10 (list 5.5 158.5))
 (cons 40 1.5)
 (cons 1 (strcat "- PM:" (rtos pm 2 2) ";Larg :"(rtos ecart 2 2)))
 (cons 50 (angle pt ptempo1))
 ;(cons 72 0)
 ;(cons 73 2)
 ;(cons 7 "standard")
)
     )
 (entmake TexTempo)
 (setq n (+ 1 n))
)
(redraw BAU1 4)
(redraw BAU2 4)


Posté(e)

Re,

 

J'ai testé les solutions !

 

Pour didier (merci pour la solution prog.), je n'arrive pas à utiliser ton lisp,...:huh: (J'ai collé le code directement en ligne d ecommande, et n'ai pas encore pris le temps de regarder de plus près,...)

 

Commande: (setq BAU1 (car(entsel"poly de largeur de BAU")))

poly de largeur de BAU(redraw BAU1 3)

 

Impossible d'entrer à nouveau LISP.

 

 

*Sélection non valable*

Attend un point ou Dernier

poly de largeur de BAU(setq listeBAU1 (mapcar 'cdr (vl-remove-if-not '(lambda

(x) (= (car x) 10)) (entget BAU1))))

 

Impossible d'entrer à nouveau LISP.

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Olivier, ta solution fonctionne impeccable !

 

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Guillaume, ta solution est différente de celle de Olivier mais tout aussi intéressante,..surtout si on veut coter le plan,...B)

 

Merci encore,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut Olivier,

 

Toujours le spécialiste pour trouver la solution, la ou personne n'irai la chercher :rolleyes:

 

 

cordialement

 

Thierry

Thierry Garré

 

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

Posté(e)

Re,

 

J'ai testé les solutions !

 

Pour didier (merci pour la solution prog.), je n'arrive pas à utiliser ton lisp,...:huh: (J'ai collé le code directement en ligne d ecommande, et n'ai pas encore pris le temps de regarder de plus près,...)

 

Utilise l'éditeur Visual LISP !

 

Pour tester rapidement, colle le code dans la fenêtre "Console Visual LISP" et fait Entrée.

 

Ou :


     
  1. Ouvre une nouvelle fenêtre (icone "Nouveau fichier" ou Ctrl+N)
  2. Colle le code dans la nouvelle fenêtre.
  3. Ajoute (vl-load-com) au début du code.
  4. Charge la fenêtre dans AutoCAD (icone "Charger la fenêtre d'édition active" ou Ctrl+Maj+E).

 

Tu peux aussi "empaqueter" le code dans une commande LISP (toujours dans une nouvelle fenêtre de l'éditeur) :

(defun c:toto (/ BAU1 BAU2 vla_obj_axe n ptempo1 pt ecart pm TexTempo)
 (vl-load-com)

 ;; colle le code ici

 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

coucou

 

je te remercie de me remercier !

coller un lisp sur la ligne de commande c'est un peu "léger", non ?

on a un super IDE à notre disposition et en s'en servant on détecte les éventuelles erreurs.

 

la solution que je propose a "l'avantage " de se dispenser de Covadis,

tu en fais ce que tu veux mais je l'ai testée en grandeur nature

( eh oui j'ai fais de l'autoroute) et ça marche de la balle atomique qui tue !

 

ce que je montre n'est que la solution "graphique"

si on en veut plus il suffit de définir un bloc

(ligne de un mètre avec deux attributs)

et on saura faire tous les fichiers qui satisferont tous les recolements de la Terre.

 

amicalement tout de même

Posté(e)

Bonsoir,

 

voilà la version modifiée à partir de la base donnée par didier

 

(vl-load-com)
(defun C:BAU ( / BAU1 BAU2 vla_obj_bau vla_obj_axe pas PK longueur pt param dir
            gis oLine vla_oLine pti ecart TexTempo)
 (setq BAU1 (car(entsel "\nPoly de largeur de BAU")))
 (redraw BAU1 3)
 (setq vla_obj_bau (vlax-ename->vla-object BAU1))
 (setq BAU2 (car(entsel "\npoly côté Voies")))
 (redraw BAU2 3)
 (setq vla_obj_axe (vlax-ename->vla-object BAU2))
 (setq pas (getreal "\nPas de calcul <20m> : "))
 (if (not pas) (setq pas 20))
 (if (<= pas 0) (setq pas 0.1))
 (setq sFile (getfiled "fichier CSV" "C:/PK-DIST-BAU.CSV" "csv" 1))
 (setq f (open sFile "w"))
 (write-line "PM;Larg" f)
 (setq PK 0)
 (setq longueur (- (vlax-curve-getDistAtParam vla_obj_axe (vlax-curve-getEndParam   vla_obj_axe))
    	(vlax-curve-getDistAtParam vla_obj_axe (vlax-curve-getStartParam vla_obj_axe))))

 (while (< PK longueur)
   (setq pt    (vlax-curve-getPointAtDist vla_obj_axe PK)
 	param (vlax-curve-getParamAtDist vla_obj_axe PK) 
 	dir   (vlax-curve-getFirstDeriv vla_obj_axe param)
 	gis   (atan (cadr dir) (car dir))
   )
   (if (entmake (list (cons 0 "LINE") (cons 10 pt) (cons 11 (polar pt (+ gis (* pi 0.5)) 10))))
     (progn
     (setq oLine (entlast))
     (setq vla_oLine (vlax-ename->vla-object oLine))
     (setq pti   (vlax-invoke-method vla_oLine 'IntersectWith vla_obj_bau acExtendThisEntity))
     (if (>= (vlax-safearray-get-u-bound (vlax-variant-value pti) 1) 1)
(progn
(setq pti   (vlax-safearray->list (vlax-variant-value pti))
             ecart (distance pt pti)
       )
       (vlax-put-property vla_oLine 'EndPoint (vlax-3d-point pti))
       (setq TexTempo
         (list
         (cons 0 "TEXT")
         (cons 10 pt)
         (cons 40 1.5)
         (cons 1 (strcat "- PM:" (rtos PK 2 2) ";Larg :"(rtos ecart 2 2)))
         (cons 50 (angle pti pt))
         )
       )
       (entmake TexTempo)
(write-line (strcat (rtos PK 2 2) ";" (rtos ecart 2 2)) f)
)
(entdel oLine)
     )
     )
   )
   (setq PK (+ PK pas))
 )
 (redraw BAU1 4)
 (redraw BAU2 4)
 (close f)
)

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é