Aller au contenu

Sortir un tableau d'écartement et d'altitude de 2 polyligne


Messages recommandés

Posté(e)

Bonjour,

Je poste dans ce topic mais peut-être Autocad le fait d'origine.

Je fais du levé de voie ferrée donc je relève l'intérieur des 2 fils de rail et ça tous les 1/2/5/10/30 m, ça dépend du type de levé. En reliant ces points, j'obtiens sur autocad 2 polylignes.

http://data.imagup.com/12/1145778041.JPG

Et je voudrais pouvoir sortir dans un tableau excel, un truc de ce genre :

http://data.imagup.com/12/1145777874.JPG

Et je voudrais pouvoir avoir la possibilité de sortir un tableau qui affiche tous les mètres ou tous les 5mètres, etc...

 

En clair, on extrapole sur l'altitude à un point en regardant les 2 points les plus proches. Et pour l'écartement, actuellement, je lisse mes polylignes, je divise une des polyligne en segment de x longueur et je trace des perpendiculaires et après je prends les côtes de ces perpendiculaires dans un tableau. Mais tout ça à la main !!

Et c'est long et source d'erreur.

 

Comment puis-je faire ça plus "automatiquement" ? Merci

Autodesk - 24.0.30.17 - Autodesk AutoCAD Map 3D 2021.0.1

Géomedia - Version 17.1h - Covadis

Microsoft - 21H2 -  Windows 10 64 bits

Leica - Version - LEICA TS13 + CS20

Posté(e)

Je ne connais pas Covadis, dont les commandes permettent peut-être de faire ce que tu veux.

 

Mais pour le fun, j'ai fait une ébauche de lisp d'après ce que j'ai compris de ta demande:

 

(defun C:RAILS ( / delim acdoc acspace e1 e2 inc dist count len pt1 pt2)
 (vl-load-com)
 (setq delim ";")
 
 (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
 (if (= (getvar "CTAB") "Model")
   (setq acspace (vla-get-modelspace acdoc))
   (setq acspace (vla-get-paperspace acdoc))
 )
 
 (setq e1 (vlax-ename->vla-object (car (entsel "\nChoix du 1er rail : "))))
 (setq e2 (vlax-ename->vla-object (car (entsel "\nChoix du 2e rail : "))))
 (setq inc (getreal "\nIncrément de distance : "))
 
 (setq dist 0.0)
 (setq count 0)
 (setq len (vlax-curve-getDistAtParam e1 (vlax-curve-getendparam e1)))
 
 (princ (strcat "\nN°" delim "Z1" delim "Z2" delim "Ecart"))
 
 (while (<= dist len)
   (setq pt1 (vlax-curve-getPointAtDist e1 dist))
   (setq pt2 (vlax-curve-getClosestPointTo e2 pt1))
   (vla-addline acspace (vlax-3D-point pt1) (vlax-3D-point pt2))
   (princ (strcat "\n" (itoa count) delim (rtos (caddr pt1) 2 3) delim (rtos (caddr pt2) 2 3) delim (rtos (distance pt1 pt2) 2 3)))
   
   (setq dist (+ dist inc))
   (setq count (+ 1 count))
 );while
 (textscr)
 (princ)
)

Posté(e)

Voilà un dwg exemple. Par ici

Deux polylignes à tracer et sortir tableau écartement et alti tous les mètres.

Je vais voir comment utiliser ton Lisp.

 

merci de l'aide

 

Edition :Voici un fichier plus complet

 

Il s'agit d'un levé avec des points quelquefois tous les mètres mais quelquefois tous les 4m.

Je voudrais pouvoir :

- effacer tous les points pris (sauf station)

- recréer sur une des 2 polylignes les point topos tous les mètres avec altitude extrapolé par rapport au levé

- créer les points topos perpendiculaires sur l'autre polyligne

=> Sortir dans un tableau

Colonne 1: X (donc de 1 à 260m par exemple)

Colonne 2: Altitude Voie 1

Colonne 3: Altitude Voie 2

Colonne 4: distance la plus courte (écartement en voie ferrée)

 

Le seul truc important c'est le tableau, le reste c'est mon idée pour arrivée à mes fins mais il n'y a peut-être pas besoin.

Autodesk - 24.0.30.17 - Autodesk AutoCAD Map 3D 2021.0.1

Géomedia - Version 17.1h - Covadis

Microsoft - 21H2 -  Windows 10 64 bits

Leica - Version - LEICA TS13 + CS20

Posté(e)

Essais ça voir si ça te convient:

(les polylignes doivent être en 3D)

(vl-load-com)

(defun init-excel (/ wb-collection workbook sheets sheet1)
 (setq excel-app (vlax-create-object "excel.application"))
 (setq wb-collection (vlax-get excel-app "workbooks"))
 (setq workbook (vlax-invoke-method wb-collection "add"))
 (setq sheets (vlax-get workbook "sheets"))
 (setq sheet1 (vlax-get-property sheets "item" 1))
 (setq *excel-cells* (vlax-get sheet1 "cells"))
 (vlax-put excel-app "visible" 1)
)

(defun write-row-column (row col x)
 (vlax-put-property
   *excel-cells*
   "item"
   row
   col
   x
 )
)

(defun c:rails (/ ent ent1 nb)
   (setq ent (vlax-ename->vla-object (car (entsel "Selectionnez le premier rail :"))))
   (setq ent1 (vlax-ename->vla-object (car (entsel "Selectionnez le second rail :"))))
   (setq dist (getreal "Incrementation: "))
   (init-excel)
   (write-row-column 1 1 "DISTANCE")
   (write-row-column 1 2 "ALTI RAIL 1")
   (write-row-column 1 3 "ALTI RAIL 2")
   (write-row-column 1 4 "ECARTEMENT")
   
   ; division de la polyligne suivant dist
   (setq
       param_start (vlax-curve-getStartParam ent)
       param_end (vlax-curve-getEndParam ent)
       perim_obj (vlax-curve-getDistAtParam ent (+ param_start param_end))
       l_pt '()
       lg 0.0
   )
   (while (< (+ lg dist) perim_obj)
       (setq l_pt (cons (vlax-curve-getPointAtDist ent (setq lg (+ lg dist))) l_pt))
   )
   ; fin division, liste dans l_pt

   (setq nb 2)
   (foreach pt l_pt 
       (setq pt1 (vlax-curve-getClosestPointto ent1 pt))
       (write-row-column nb 1 (* dist (- nb 1)))
       (write-row-column nb 2 (vl-string-subst "," "." (rtos (caddr pt) 2)))
       (write-row-column nb 3 (vl-string-subst "," "." (rtos (caddr pt1) 2)))
       (write-row-column nb 4 (vl-string-subst "," "." (rtos (distance pt pt1) 2)))
       (setq nb (+ nb 1))
   )
)

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Bonjour,

 

c'est un peu plus long avec les commandes COVADIS, mais on peut y arriver

 

1. passer les poly en 3D : Cov 3D / Construction 3D / Transfo 2D-3D

2. tabuler la polyligne de gauche : Cov3D / Profils en travers par poly / Tabuler un axe , choisir l'objet type LIGNE et choisir l'intervalle.

3. créer les points 3D par interpolation à chaque intersection de la tabul avec les poly3D : CovEchanges / Echange profils piste / Interpolation profils, choisir "Interpolation par rapport à des lignes caractéristiques", puis le calque du peigne puis le calque des poly3D

4. générer le listing Piste : CovEchanges / Echange profils piste / Génération fichier Piste, choisir le format N S , vider le nom du calque pour les points de chaussée.

On obtient un fichier SEM (fichier texte) composé de 2 lignes par profil, la 1ère ligne contient le numéro du profil et son abscisse curviligne, la 2ème ligne contient 0.00 en 1ère colonne puis l'altitude G, puis la distance entre les 2 points puis l'altitude Droite

 

Si le fichier SEM n'est pas évident à remettre en forme,on peut essayer d'utiliser directement les points.

Normalement le rail de gauche possède les points avec un matricule impair et le rail droit, ceux avec un matricule pair. En exportant les 2 séries de points sous excel, puis avec un colonne qui calcule la distance entre les 2 points on doit y arriver aussi

 

Olivier

Posté(e)

Bonjour,

 

En supposant que les rails sont bien parallèles et de même longueur :

 

Créer un cercle, le transformer en bloc.

Vérifier les sens de parcours identiques des deux rails en poly 3D.

 

CoVédition-Bloc-Mesurer : tous les 1m

 

Bloc - Calq unique

Immatriculation d'entité : répondre oui pour immatriculer les centres des cercles et sélectionner les blocs créés...

 

Re-belotte rail n°2

 

exporter les points dans excel, le reste c'est du tableur.

 

Si au fil des mètres-linéaires de rail, un décalage apparaît entre le point de gauche et le point de droite, il faudra faire autrement....

 

Par exemple : tabuler un des rails à l'aide de polyligne tous les 1 m. La tabulation créée doit couper l'autre rail.

 

MAP3D, nettoyage du dessin, couper les objets à une intersection.

Ensuite il faut supprimer les sommets de polylignes 3D superflus par un lissage 3D approprié. on obtient autant de polylignes3D que de ml de rail. On joint tout ça et on immatricule. Export et tableur...

 

Pierre

Posté(e)

ça a l'air de bien fonctionner. Je suis arrivé là :

http://data.imagup.com/11/1146204983.JPG

je ne comprends pas très bien ce que signifie "vider le nom du calque pour les points de chaussée." Comment dois-je renseigner cette fenêtre ?

Je pense que j'ai un problème de calque.

Faut-il un calque pour :

- les tabulations (actuellement TN_tabulation)

- les 2 poly 3D (actuellement BF_VF)

- les points créés (actuellement dans TOPOJIS mais avec les points du levé)

 

 

Merci

 

Edit : En mettant un calque pour les points créés, ça marche bien. Comment exporter les points pairs et les points impairs ? Cov2D>Point Topo>Ecriture d'un fichier de point>Fichier de point colonné ?

Edit 2 : pour le script, je vais voir comment l'utiliser, je n'ai jamais utiliser de script avec autocad.

Edit 3:J'ai utilisé la technique ici (http://acadplus.free.fr/mb080503.htm).

J'ai transformé au préalable mes 2 polyligne en poly 3D. Quand je lance, ça donne ça :

Commande: (load "ecartement_alti")
C:RAILS

Et ça semble s’arrêter.

 

Bonjour,

 

c'est un peu plus long avec les commandes COVADIS, mais on peut y arriver

 

1. passer les poly en 3D : Cov 3D / Construction 3D / Transfo 2D-3D

2. tabuler la polyligne de gauche : Cov3D / Profils en travers par poly / Tabuler un axe , choisir l'objet type LIGNE et choisir l'intervalle.

3. créer les points 3D par interpolation à chaque intersection de la tabul avec les poly3D : CovEchanges / Echange profils piste / Interpolation profils, choisir "Interpolation par rapport à des lignes caractéristiques", puis le calque du peigne puis le calque des poly3D

4. générer le listing Piste : CovEchanges / Echange profils piste / Génération fichier Piste, choisir le format N S , vider le nom du calque pour les points de chaussée.

On obtient un fichier SEM (fichier texte) composé de 2 lignes par profil, la 1ère ligne contient le numéro du profil et son abscisse curviligne, la 2ème ligne contient 0.00 en 1ère colonne puis l'altitude G, puis la distance entre les 2 points puis l'altitude Droite

 

Si le fichier SEM n'est pas évident à remettre en forme,on peut essayer d'utiliser directement les points.

Normalement le rail de gauche possède les points avec un matricule impair et le rail droit, ceux avec un matricule pair. En exportant les 2 séries de points sous excel, puis avec un colonne qui calcule la distance entre les 2 points on doit y arriver aussi

 

Olivier

Autodesk - 24.0.30.17 - Autodesk AutoCAD Map 3D 2021.0.1

Géomedia - Version 17.1h - Covadis

Microsoft - 21H2 -  Windows 10 64 bits

Leica - Version - LEICA TS13 + CS20

Posté(e)

J'ai transformé au préalable mes 2 polyligne en poly 3D. Quand je lance, ça donne ça :

Commande: (load "ecartement_alti")
C:RAILS

Et ça semble s’arrêter.

En fait là tu as juste chargé le script dans le dessin.

Maintenant si tu tape la commande rails il doit se lancer.

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

En fait là tu as juste chargé le script dans le dessin.

Maintenant si tu tape la commande rails il doit se lancer.

 

:o :o :o THIS IS GOOD !!

 

Je crois qu'il faut que je me mette au LISP. Me reste plus qu'à bosser ton .lsp.

Merci beaucoup ;)

Autodesk - 24.0.30.17 - Autodesk AutoCAD Map 3D 2021.0.1

Géomedia - Version 17.1h - Covadis

Microsoft - 21H2 -  Windows 10 64 bits

Leica - Version - LEICA TS13 + CS20

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é