Aller au contenu

Etiquette Coordonnés en Degrés


Fraid

Messages recommandés

Bonjour,

 

Le confinement à au moins un avantage, on à le temps de programmer.

Voici donc un petit outil qui à aux moins deux utilités.

- Fournir au gars de terrain des coordonnées utilisable dans leur GPS embarqué.

(pour évité qu'ils se perdent...)

- Une aide à positionner un emplacement géographique.

 

C'est donc utilisable dans un plan géoréférencé, dans l'espace objet (dans une fenêtre ou non) et à l’échelle 200 ou 500ème.

 

Tout d'abord téléchargez ce dossier

Puis le placer dans un dossier "c:/Data et l'approuver dans Autocad.

Vous pouvez choisir un autre dossier en modifiant la variable geopre.

Le Lisp utilise CircéBatch et un dwg inclus dans le dossier à télécharger.

Vous pouvez modifier le dwg qui contient un repère multiple (style, calque...).

 

;;;geo-ddb 
;;;Place un repère multiple avec les Coordonnées en Degrés Décimaux, 
;;;en degrés minutes secondes,
;;;et l'angle de convergence en Grades 
;Variables globales
(setq geo-listesys '(;Liste des systèmes géodésiques avec leurs codes Circé
                   ("Lambert93" "140" "24")
                   ("RGF93.CC42" "8142" "24")
                   ("RGF93.CC43" "8143" "24")
                   ("RGF93.CC44" "8144" "24")
                   ("RGF93.CC45" "8145" "24")
                   ("RGF93.CC46" "8146" "24")
                   ("RGF93.CC47" "8147" "24")
                   ("RGF93.CC48" "8148" "24")
                   ("RGF93.CC49" "8149" "24")
                   ("RGF93.CC50" "8150" "24")
                   ("NTF.Lambert-1C-ClrkIGN" "120" "2")
                   ("NTF.Lambert-2C-ClrkIGN" "120" "2")
                   ("NTF.Lambert-3C-ClrkIGN" "120" "2")
                   ("NTF.Lambert-4C-ClrkIGN" "120" "2")
                   ("NTF.Lambert-1-ClrkIGN" "101" "2")
                   ("NTF.Lambert-2-ClrkIGN" "102" "2")
                   ("NTF.Lambert-3-ClrkIGN" "103" "2")
                   ("NTF.Lambert-4-ClrkIGN" "104" "2")
                   )
   geopre "C:\\Data";Dossier récéptacle
   default-syst "";à éditer si toujours le même
)
;Principal
(defun c:geo-ddb (/ oldluprec olddimzin oldcmdecho oldosmode oldcmleaderstyle oldclayer 
                   *error* acdoc flagscu pt ptt ldd ech
                )
   (defun *error* (msg);Redéfinition de la fonction *error*
       (if (= 8 (logand 8 (getvar 'UNDOCTL)))(vla-EndUndoMark acdoc))
       ;Restauration des variables Autocad
       (setvar "cmdecho" oldcmdecho)
       (setvar "osmode" oldosmode)
       (setvar "cmleaderstyle" oldcmleaderstyle)
       (setvar "clayer" oldclayer)
       (setvar "luprec" oldluprec)
       (setvar "dimzin" olddimzin)
       (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
           (princ (strcat "\n** Error: " msg " **")))
       (princ)
   )   
                
   (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
   (vla-startundomark acdoc)
   (if (< (getvar "cvport") 2);si en espace papier
       (princ "\nAbandon, Cette commande s’exécute dans l'espace objet.")
       ;else
       (progn
           (setq   ;Sauvegarde des variable Autocad
                   oldluprec (getvar "luprec")
                   olddimzin (getvar "dimzin")
                   oldcmdecho  (getvar "cmdecho")
                   oldosmode   (getvar "osmode")
                   oldcmleaderstyle (getvar "cmleaderstyle")
                   oldclayer (getvar "clayer")
           );setq
           ;Init des variable Autocad 
           (setvar "cmdecho" 0)
           (setvar "osmode" 0)
           (setvar "luprec" 4)
           (setvar "dimzin" 8)
           ;Controle du SCU
           (if (=(getvar "worlducs") 0)(setq flagscu (vl-cmdf "_ucs" "")))
           ;Controle du style de repère multiple
           (if (dictsearch (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_MLEADERSTYLE"))) "Geo")
               (setvar "cmleaderstyle" "Geo")
               ;else
               (progn
                   (vla-erase
                       (vla-insertblock 
                           (vla-get-modelspace acdoc) 
                           (vlax-3d-point '(0 0 0)) 
                       (strcat geopre "\\geo\\Geomleader.dwg")
                       1 1 1 0
                       )
                   )
                   (setvar "cmleaderstyle" "Geo")
               );progn
           );if
           ;Init du repère multiple
           (initget "200 500")
           (setq   ech (getkword "\nEchelle du dessin ? [200/500] <200>:")
                   pt (getpoint "\nChoisir un point")
                   ptt (getpoint "\nPosition du texte")
                   ldd (geo-todd pt (geo-getsys))
                   tdd (strcat 
                           (cadr ldd) 
                           "," 
                           (car ldd)  
                           "\\P" 
                           (geo-ddtodms (cadr ldd)) 
                           "," 
                           (geo-ddtodms (car ldd)) 
                           "\\P" 
                           (rtos (+ 100.00 (* (- (atof (car ldd)) 2.3355) 0.809938)) 2 8) 
                           "g"
                       );strcat
           );setq
           ;Changement de calque
           (setvar "clayer" "Geo")
           ;Création du repère multiple selon SCU
           (if flagscu 
               (progn
                   (command "_ucs" "p")
                   (command "_MLEADER" (trans pt 0 1) (trans ptt 0 1) tdd)
                   (if (= ech "500")(command "_scale" (entlast) "" (trans pt 0 1) 2.5))
               );progn
               ;else
               (progn
                   (command "_MLEADER" pt ptt tdd)
                   (if (= ech "500")(command "_scale" (entlast) "" pt 2.5))
               )
           );if
           ;Restauration des variables Autocad
           (setvar "cmdecho" oldcmdecho)
           (setvar "osmode" oldosmode)
           (setvar "cmleaderstyle" oldcmleaderstyle)
           (setvar "clayer" oldclayer)
           (setvar "luprec" oldluprec)
           (setvar "dimzin" olddimzin)
       );progn
   );if
   (if (= 8 (logand 8 (getvar 'UNDOCTL)))(vla-EndUndoMark acdoc))
   (princ)
);geo-ddb
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;geo-getsys
;;;Récupère le système géodésique en cours
;;;Retour sys, String
(defun geo-getsys (/ sys)
(if (= (setq sys (getvar 'CGEOCS)) "");Si aucun emplacement géographique
	(if (= (setq sys default-syst) "");Si aucun système par defaut
		(setq sys (geolistbox (mapcar 'car geo-listesys)) default-syst sys)
	)
)
   sys;Retour
);geo-getsys
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;geo-todd
;;;Converti les coordonnée en Degrés décimaux 
;;;Dépendance, CircéBatch.exe
;;;Arguments pt, point (liste)
;;;syst, système géodésique (string)
;;;Retour liste 
(defun geo-todd (pt syst / strbat file rfile lsyst readbat line ddx ddy)
   ;Récupération des codes Circé
   (mapcar '(lambda (x) (if (= (car x) syst) (setq lsyst (cdr x)))) geo-listesys)
   (setq   file (strcat geopre "\\geo\\geo-todd.bat")
           rfile (strcat geopre "\\geo\\ReturnCirce.txt")
           strbat (open file "w")
   )
   ;Ecriture du .bat
   (write-line "@echo off" strbat)
   (write-line 
       (strcat "\"" 
               geopre 
               "\\geo\\CirceBatch\\CirceBatch.exe\" -init Circe.ini -mode 0 -type 2 -sys1 " 
               (cadr lsyst) 
               " -sys2 24 -typcoor1 3 " 
               (car lsyst)  
               " -typcoor2 2 2 1 -H 0.0 -E " 
               (rtos (car pt) 2 4) 
               " -N " 
               (rtos (nth 1 pt) 2 4) 
               " > " 
               rfile
       ) 
   strbat
   )
   (write-line "exit" strbat)
   (close strbat);Fin écriture du .bat
   (command "_.shell" file);Exécution du .bat
   (command "_.delay" 1000);imposé par Windows
   (setq readbat (open rfile "r")
          line (read-line readbat);Lecture du retour du .bat
          ddx (substr line 1 (vl-string-position (ascii " ") line))
          ddy (substr line (+ 2 (vl-string-position (ascii " ") line))(strlen line))
   )
   (close readbat);Fin lecture du retour du .bat
   ;Suppression des fichiers
   (vl-file-delete file)
   (vl-file-delete rfile)
   (list ddx ddy);Retour
);geo-todd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;geo-ddtodms
;;;converti des degrés décimaux en degrés minute seconde
(defun geo-ddtodms (dd)
   (angtos (angtof dd 0) 1)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun geolistbox (lst / dcl wdcl dcl_id done choice)
   (setq dcl  (strcat geopre "\\geo\\geo.dcl")
         wdcl (open dcl "w")
   )
   (write-line "geolistbox:dialog 
       {label = \"Sélection du Système Géodésique\";
           :text{label = \"Choisissez un système\";}
           spacer;
           :list_box {key = \"lst\";}
           spacer;ok_cancel;
       }"
       wdcl
   );write-line
   (close wdcl)
   (setq dcl_id (load_dialog dcl))
   (if (new_dialog "geolistbox" dcl_id)
       (progn
         (start_list "lst")
         (mapcar 'add_list lst)
         (end_list)
         (action_tile "lst" "(setq choice (nth (atoi $value) lst))")
         (action_tile "accept" "(done_dialog 1)")
         (action_tile "cancel" "(done_dialog 0)")
         (setq done (start_dialog))
         (unload_dialog dcl_id)
         (vl-file-delete dcl)
         (if (= done 1)choice);retour
       );progn
   );if
);geo-listbox
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(princ "\nGEO-DDB correctement chargé.\nTapez GEO-DDB")
(princ)

Normalement il est compatible tout Autocad sur Windows.

Testé sur Autocad 2015 et Windows 7. (à tester sur Win10)

 

Je suis ouvert à toutes propositions d'amélioration.

Je n'ai pas réussi à utiliser la version 5 de Circé malgré qu'il affiche le code en bas de la fenêtre...

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à toutes et tous,

Salut Fraid,

Je n'ai pas réussi à utiliser la version 5 de Circé malgré qu'il affiche le code en bas de la fenêtre...

 

Seule cette version est légale en métropole en France car elle intègre la grille RAF18

Je n'ai pas bien compris le but de ce programme, pourrais tu développer un peu son fonctionnement STP ?

Merci d'avance,

 

Civil 3D 2024 - COVADIS_18.2

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

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas bien compris le but de ce programme

 

Le but est d'avoir les coordonnées d'un point en degrés décimaux, degrés minute seconde,

sur un plan géoréférencé, en Lambert93 par exemple.

 

Car, si l'adresse est trop vague, RD666 à Trifouillis les oies,

les gars de chantier peuvent galérer à trouver l'endroit exacte si il à pas de point repère particulier.

Les coordonnées Lambert ne peuvent pas les aider, les GPS de véhicule n'acceptent que des degrés.

J'ai vu le cas avec la pose d'une chambre télécom au pied d'un poteau en pleine pampa.

 

Deuxièmement, cela aide aussi pour placer un repère géographique précisément, avec en plus l'angle issue de la convergence des méridiens.

 

Les chartes graphiques dans mon activité (pose de fibre optique) impose de n'avoir aucune trace de Map ou Covadis.

 

j'espère avoir répondu à ta question.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

Salut Fraid,

j'espère avoir répondu à ta question.

Oui oui, parfaitement, merci !smile.gif

 

 

 

Je ne comprenais pas la raison du programme jusqu'au moment ou tu as écrit :

Les chartes graphiques dans mon activité (pose de fibre optique) impose de n'avoir aucune trace de Map ou Covadis

Par contre, je me demande bien pourquoi puisque MAP sert justement, en natif, à géolocaliser les plans et du coup afficher la carte, pratique, voire indispensable dans la plupart des BEs que je visite,..unsure.gif

Civil 3D 2024 - COVADIS_18.2

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

Lien vers le commentaire
Partager sur d’autres sites

Par contre, je me demande bien pourquoi puisque MAP sert justement, en natif, à géolocaliser les plans

 

Pour l'instant, seul la SNCF à changé d'avis, et à mis en place une charte spécial Autocad Map.

Mais depuis, je ne travail plus pour eux, hormis quelque fonds de plans.

Comme je me suis posé la même question, et c'est principalement pour éviter des bugs lors de la construction du SIG qu'il y a derrière.

De toute façon, je ne m’occupe plus du géoréférencement, c'est le Géomètre qui m'envois les fonds plans qui le fait.

La carte est la seulement en page de garde pour situé le chantier, et n'a pas besoin de précision extrême.

Lien vers le commentaire
Partager sur d’autres sites

Vu !smile.gif

et c'est principalement pour éviter des bugs lors de la construction du SIG qu'il y a derrière.

 

Mais MAP est pourtant un SIG super puissant, voire même unique puisque l'on peut aussi dessiner sous l'environnement AutoCAD bien connu de tous (et il à un format spécifique à lui !),..

 

Je travaille pour quelques BEs qui font de la télédétection, ils sont ravi d'avoir MAP (et même en Fibre optique !!)

 

Civil 3D 2024 - COVADIS_18.2

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

Lien vers le commentaire
Partager sur d’autres sites

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é