Fraid Posté(e) le 2 avril 2020 Partager Posté(e) le 2 avril 2020 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 dossierPuis 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... https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 2 avril 2020 Partager Posté(e) le 2 avril 2020 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 RAF18Je n'ai pas bien compris le but de ce programme, pourrais tu développer un peu son fonctionnement STP ?Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 2 avril 2020 Auteur Partager Posté(e) le 2 avril 2020 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. https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 3 avril 2020 Partager Posté(e) le 3 avril 2020 Bonjour à toutes et tous,Salut Fraid,j'espère avoir répondu à ta question. Oui oui, parfaitement, merci ! 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 CovadisPar 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,.. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 3 avril 2020 Auteur Partager Posté(e) le 3 avril 2020 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. https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 3 avril 2020 Partager Posté(e) le 3 avril 2020 Vu !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 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
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