Curlygoth Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Ancien post : Bonjour, Juste pour infos et mettre les choses au clair :Je sais qu'il existe des programmes pour convertir des points d'un système et les transformer vers un autre...c'est juste que mes boss ne veulent pas dépenser dans ce genre de programme...Qui pour moi sont indispensable lorsqu'on travail dans un bureau de topographie... Tous les documents sont disponible sur le site de l'IGN : donc je ne vais rien inventer ni révolutionner (sauf pour mes collègues et moi même XD) J'ai lu la procédure de calcul, donc je connais la théorie...J'ai chercher pour essayer de simplifier les transformations mais c'est peine perdu...Donc j'ai décider d'y allez juste "bourrin" et donc je vais développer traduire en VBA le code pour mettre ce système en place ! Allez c'est parti : Je démarre par créer des fonctions pour chaque algo et j'ai commencé par le 13(je prends les algos dans l'ordre : et je traite ceux qui doivent être appellé) Bien sur ce que je poste ici est vérifié par les jeux d'essais Function TRANSFORMATION_COORDONNEES_7_PARAMETRES_2_SYSTEME_GEO(T, D, R, U) 'Algo 013 Dim V(0 To 2) As Double 'T Translation 'D Facteur d'echelle 'R Rotation autour de l'axe (radian) 'U Vecteur de coordonnées cartésienne tridimensionnelle dans le systeme 1 x = 0 y = 1 Z = 2 V(x) = T(x) + (U(x) * (1 + D)) + U(Z) * R(y) - U(y) * R(Z) V(y) = T(y) + (U(y) * (1 + D)) + U(x) * R(Z) - U(Z) * R(x) V(Z) = T(Z) + (U(Z) * (1 + D)) + U(y) * R(x) - U(x) * R(y) TRANSFORMATION_COORDONNEES_7_PARAMETRES_2_SYSTEME_GEO = V End Function Puis le 38 qui fait appel à l'algo 001 / 002 / 014 / 015 / 043 Function CALCUL_LATITUDE_ISOMETRIQUE(premiere_excentricite_ellipsoide, Lati) 'Algo 001 e = premiere_excentricite_ellipsoide R = Lati F1 = Tan(PI / 4 + R / 2) F2 = (1 - e * Sin(R)) / ((1 + e * Sin(R)) ^ (e / 2)) E_M1 = 1 - e * Sin(R) E_P1 = 1 + e * Sin(R) E_MP = E_M1 / E_P1 E_PUIS = E_MP ^ (e / 2) CALCUL_LATITUDE_ISOMETRIQUE = Log(F1 * E_PUIS) End Function EDIT : Donc je vais mettre ici le code VBA après avoir télécharger et installé CircéBATCHFrance Après l'installation, on ajoute le dossier du Circebatch.exe dans le PATH de windows voir video en test il aparrait qu'il ne trouve pas les fichier donc j'ai copier le dossier pour le mettre dans c:/users/NOMPC les commandes via cmd.exe fonctionne [codage en cours] Mon site Web (en cours de construction) : Site DA-CODE de @didier
lecrabe Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Hello STOP STOP si j ai bien compris tu n'as NI Covadis, NI AutoCAD MAP (ou AutoCAD CIVIL) !?Et tu desires faire de la reprojection Lambert ... Mais pourquoi tu n'installes pas l 'excellent outil GRATUIT de l'IGN : IGNMapqui reprojette de nombreux formats: DXF, SHP, MIF-MID, GCD, etchttp://ignmap.ign.fr/Ce que utilisent par exemple les gens qui ont un "simple" AutoCAD ou AutoCAD LT ! BON OK, il faut "Enregistrer sous en DXF" pour IGNMapMAIS c quand meme pas le bout du monde !ET APRES, il faut ouvrir en DXF et Re-enregistrer en DWG ... De plus IGNMap a de nombreuses fonctionnalites Tip-Top !!Je l'ai installe sur TOUS mes PCs (comme QGIS) et pourtant j'ai a disposition MAP, CIVIL, Covadis ... LA SANTE, Bye, lecrabe Autodesk Expert Elite Team
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Bonjour, de plus il y à Circé batch qui fonctionne très bien.tu peux lancer des .bat avec tous les langages. après, c'est toujours formateur de coder. https://github.com/Fraiddd
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 Bonjour à vous ! @ Fraid : oui mais il ne convertit que des points ou des listes de points ? ou il peut convertir des dwg ou dxf ? Edit : du coup tu peux envoyer des coordonnées avec tel systeme et il te répond avec un point transformer ? car ça je pourrais boucler sur chaque entité et les déplacer ^^ @lecrabe : POUAH ! Mais ça a l'air énorme et ultra bien pour moi ! (je comptais faire un peu le même principe avec une liste des système d'origine vers un système de projection vouluPourquoi je n'installe pas pas l'outil ? parce que je savais même pas qu'il existait ! du coup il est installé ! et j'ai essayer même ! mais la, il me dit erreur de lecture du dxf ligne 3326... (le dxf a convertir à des polylignes avec élévation que je peux mettre en 0 et des blocs de PTTOPO avec deux attributs MAT et un ALT) Edit : l'erreur de la ligne dans Xrecord dépend de la modififcation que je fait sur le dessin ! Mais bon ce que je retiens c'est qu'il y a peut etre des API à connaitre ou d'autre programme qui pourrait m'éviter cette corvée ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
lecrabe Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Hello IGNMap : Tu as fait un DXF de quel niveau !? As tu essaye avec du DXF de niveau 2013 ou plutot meme 2010 !? LA SANTE, Bye, lecrabe Autodesk Expert Elite Team
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 Au final j'ai mis tout en Z=0il y a 2 polylignes et 12 point GPS bloc PTTOPO avec attribut J'ai essayé : 2013 / 2010 / 2000 et malheureusement toujours avec une erreur xrecord :-) c'est dommage ! XDVILLE TYPE 001122 GEO.zip Mon site Web (en cours de construction) : Site DA-CODE de @didier
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Edit : du coup tu peux envoyer des coordonnées avec tel systeme et il te répond avec un point transformer ? car ça je pourrais boucler sur chaque entité et les déplacer ^^ En fait, tu convertis 2 points éloignés,puis la commande AutoCAD Aligner qui utilise un algorithme qui t’évite de reprendre chaque point (il le fait lui même) https://github.com/Fraiddd
lecrabe Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Hello SNIFF SNIFF il est possible que IGNMap ne supporte pas "bien" les XRecords !Meme probleme "possible" avec les objets Metiers ARX / Proxys / etc ... OK avec Fraid car si tu generes par CIRCE 2 "bons" points en diagonale aux extremites du projetAlors APRES un simple ALIGNER AutoCAD sera acceptable ... SVP tu nous dis ... LA SANTE, Bye, lecrabe Autodesk Expert Elite Team
lecrabe Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Hello BON j'ai refais le test avec MON IGNMap et cela fonctionne bien !SAUF qu'il ne faut pas de XRecords et autres trucs speciaux dans le DXF ... Voir mon message precedent ! Reprojection de Lambert 1 Nord vers du Lambert 93 France Entiere par exemple ... Donc j'ai pris ton DWG dans les environs de Bethune en Lambert 1 Nord !J'ai fais un SIMPLE WBLOC sur TOUT le DWG pour le filtrer parfaitement et produire un autre DWG "propre"Que j'ai enregistre en DXF 2010 et LA IGNMap l'a parfaitement reprojete en DXF ... De plus ce qui est GENIAL, c que IGNMap travaille en BatchDonc si tu as N DXF "propres" dans ton dossier DXFINPUTTu auras N DXF reprojetes dans ton dossier DXFOUTPUT ... Qu'on se le dise !! LA SANTE, Bye, lecrabe Autodesk Expert Elite Team
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 alors je fais la commande aligner avec 2 points... pour des blocs SAUF qu'il ne faut pas de XRecords et autres trucs speciaux dans le DXF ... Voir mon message precedent !Je savais pas qu'on avait des entités proxy ou autre dans nos relevés terrains xDAu pire je prendrais un Lisp qui nettoie les plans, vous en avez fait plein pour nettoyer ce genre de chose je vais retrouver ça Mais la mon objectif c'était de convertir chaque point de polyligne et refaire la polyligne histoire d'être plus que parfait XD et du coup @LeCrabe si je le met en bloc et que je le reprojette, il va juste traiter le point d'insertion du bloc non ?il prendra pas 2 points (tu sais l'espece d'angle entre 2 systemes) ? apres j'aimerais bien avoir les 7 paramètres('T Translation X Y Z'D Facteur d'echelle'R Rotation autour de l'axe (radian) X Y Z'U Vecteur de coordonnées cartésienne tridimensionnelle dans le systeme 1 X Y Z)entre chaque système ! puis la commande AutoCAD Aligner qui utilise un algorithme qui t’évite de reprendre chaque point (il le fait lui même) une commande que je connais tres bien XDvu que c'est ce que je fais je mets 2 ou 3 points suivant 2D ou 3D je les transfo via http://geofree.fr/gf/coordinateconv.asp (precis au cm dommage...) Alors je vais être honnête je sais envoyer des requêtes SQL à une base de données mais je ne sais pas du tout envoyer une requete Batch ? Mon site Web (en cours de construction) : Site DA-CODE de @didier
lrdb@home Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Bonjour,Un bureau de topo sans logiciel de transformation ?C'est vous qui réalisez les levés ? Si oui , avec quel logiciel ?Si tu réussis à transformer des CC en Lambert zone , chapeau bas 1 write a book about what ??
lecrabe Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Hello 1) Un simple WBLOC filtre parfaitement les DWGs ...Mais bien verifier avant qu il n'y a pas de Proxy (venant de Covadis ou CIVIL par exemple) 2) No comprendo ta demande sur une Polyligne ! 3) J'ai dessine sur le DWG en L1N, une Polyligne 2D qui fait le tour des 8 points sur les 2 "lignes"Depuis le point au Nord-Ouest dans le sens Trigo ... aire 35.0683909 -- périmètre 98.4039280 au niveau du point X=617698.1171850 Y=315648.2828252 Z=0.0000000 au niveau du point X=617713.5052793 Y=315643.7142172 Z=0.0000000 au niveau du point X=617728.7576286 Y=315639.1122014 Z=0.0000000 au niveau du point X=617744.1586246 Y=315634.5172109 Z=0.0000000 au niveau du point X=617744.7828751 Y=315633.5443999 Z=0.0000000 au niveau du point X=617729.4495101 Y=315638.1603780 Z=0.0000000 au niveau du point X=617714.1432879 Y=315642.7594326 Z=0.0000000 au niveau du point X=617698.7775585 Y=315647.3169882 Z=0.0000000 4) Et donc sur le DWG en L93 (reprojete par MAP), voici la nouvelle Polyligne 2D qui fait le tour ... aire 35.1755036 -- périmètre 98.5541629 au niveau du point X=670615.9259210 Y=7049214.0087296 Z=0.0000000 au niveau du point X=670631.2978528 Y=7049209.3016389 Z=0.0000000 au niveau du point X=670646.5335506 Y=7049204.5622504 Z=0.0000000 au niveau du point X=670661.9181753 Y=7049199.8286240 Z=0.0000000 au niveau du point X=670662.5350346 Y=7049198.8490216 Z=0.0000000 au niveau du point X=670647.2183212 Y=7049203.6030883 Z=0.0000000 au niveau du point X=670631.9286451 Y=7049208.3399722 Z=0.0000000 au niveau du point X=670616.5790171 Y=7049213.0358027 Z=0.0000000 5) La meme polyligne redessinee en L93 sur le DXF/DWG reprojete par IGNMap ... aire 35.1754951 -- périmètre 98.5541637 au niveau du point X=670615.9262780 Y=7049214.0119050 Z=0.0000000 au niveau du point X=670631.2982100 Y=7049209.3048140 Z=0.0000000 au niveau du point X=670646.5339080 Y=7049204.5654260 Z=0.0000000 au niveau du point X=670661.9185330 Y=7049199.8317990 Z=0.0000000 au niveau du point X=670662.5353920 Y=7049198.8521970 Z=0.0000000 au niveau du point X=670647.2186780 Y=7049203.6062640 Z=0.0000000 au niveau du point X=670631.9290020 Y=7049208.3431480 Z=0.0000000 au niveau du point X=670616.5793740 Y=7049213.0389780 Z=0.0000000 6) Et si j avais reprojete avec COVADIS, le resulat aurait ete legerement different ! Voila je ne peux pas faire PLUS !Et il est normal qu il y ait qq differences suite a la reprojection ! Bien sur que lors d une reprojection on ne traite que le point d insertion des blocs !!Sinon un simple carre ne serait plus qu un polygone 4 cotes quelconque apres reprojection !!! LA SANTE, Bye, lecrabe "fatigue" PS: si tu veux re-inventer l eau chaude, pourquoi pas !? Autodesk Expert Elite Team
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 ok ben va pour un wbloc et je le reenergistre en dxf et je fais la transfo ! oui merci beaucoup beaucoup à moi de m'y mettre ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
philsogood Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 hors sujet@Curlygoth, je comprends aps tout : - t'es à ton compte (tu nous envoies un site web en bas de page)- t'es salarié "mes boss ne veulent pas dépenser..."??++Phil Projeteur Revit Indépendant - traitement des eaux/CVC
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 2) No comprendo ta demande sur une Polyligne ! c'est facile j'ai une polyligne dans un systeme L1N (j'ai fait un copier coller) j'enregsitre la liste de pointau niveau du point X=617698.1171850 Y=315648.2828252 Z=0.0000000 [Programme de calcul avec les 7 parametres] donne X=670615.9259210 Y=7049214.0087296 Z=0.0000000au niveau du point X=617698.7775585 Y=315647.3169882 Z=0.0000000 [Programme de calcul avec les 7 parametres] donne X=670616.5790171 Y=7049213.0358027 Z=0.0000000 puis je redessine ma polyligne avec les points du nouveau systeme Mon site Web (en cours de construction) : Site DA-CODE de @didier
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 je suis auto entrepreneur et salarié rien d'incompatible ;-) disons que je voulais créér un programme pour mon entreprise(histoire qu'elle ait des inventaires à jour en temps réél, que les conducteurs de travaux arrete de faire leur planning au jour le jour et fasse 5h30 19h...) que les tables se mettent à jour suivant leur planning enfin bref un truc de fou Ils n'en veulent pas et veulent pas que je travaille plus...Donc j'utilise mon temps libre pour d'autres qui en ont besoin (garage automobile, réseau transport logistic etc, formation vba excel / autocad)et puis voila mon boss est content car je lui fait pas concurrence et reste en l'an 1950... et moi j'arrondis mes fins de mois ! Après je cherche ailleurs (A bon entendeur) XD Mon site Web (en cours de construction) : Site DA-CODE de @didier
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 je ne sais pas du tout envoyer une requete Batch ?c'est très simple à la basele but est d'envoyer une ou des instruction à un programme par l'intermédiaire de la console windows.que tu ouvre en tapant cmd.exe dans la barre de démarrage windows.ou en exécutant un .bat, qui contient les commandes que tu veux exécuterexemple pour circé "C:\AcaDev\CirceBatch\CirceBatch.exe" -init Circe.ini -mode 0 -type 2 -sys1 2 -sys2 24 -typcoor1 3 120 -typcoor2 2 2 1 -H 0.0 -E 465767.8938 -N 2261906.57 > "C:\Data\Return9TDD.txt" Ici du Lambert 2 Etendu au degres decimaux https://github.com/Fraiddd
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 ok attends je réfléchis... maintennant je digère :-mode 0 -type 2 -sys1 2 -sys2 24 -typcoor1 3 120 -typcoor2 2 2 1 -H 0.0 -E 465767.8938 -N 2261906.57 WOW ! ok mais le numéro du mode du systeme 1 / du systeme 2 / du type de coordonne / etc c'est ou ? H le ZE le XN le Y sa te génére un "C:\Data\Return9TDD.txt" qu'ensuite je peut lire et donc traiter ! Ici du Lambert 2 Etendu au degres decimaux je te crois hein ^^' mais as tu une preuve ? xD d'ailleurs j'ai trouver ça C:\ProgramData\IGN\Circe\5.2.1\France\DataFRnew.txt un rapport avec tes numéros de référence ? Mon site Web (en cours de construction) : Site DA-CODE de @didier
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 pour en savoir plusMon lien https://github.com/Fraiddd
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 et telecharger la version batch de circéMon lienil y a une doc qui repond a tes questions https://github.com/Fraiddd
Curlygoth Posté(e) le 4 février 2021 Auteur Posté(e) le 4 février 2021 mmm... OK ! je vais faire mes tests et si vraiment j'ai un problème je referais un post ! (Maintennnant la question c'est qu'en Lisp il a su virer la fenetre, va falloir en faire autant en vba !) Merci à tous ! Merci @lecrabe pour être toujours présent Merci @Fraid pour les ressources ! Mon site Web (en cours de construction) : Site DA-CODE de @didier
lrdb@home Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Voilà où se trouve ta transformation à 7 paramètres ( XYZ ne sont pas des coordonnées planes ) avec ce lien instructif: à voir ici write a book about what ??
Fraid Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 Si c'est le même document que j'ai déjà exploré, il manque quelque définition de variablesce qui fait que c'est inexploitable en programmation. pas le temps de vérifier ... https://github.com/Fraiddd
Curlygoth Posté(e) le 5 février 2021 Auteur Posté(e) le 5 février 2021 il manque quelque définition de variables oui et c'est bien dommage !les X Y en translation y sont le coef C et n aussi, mais les R et U (voir mon 1ier topic ...n'y sont pas)c'est bien pour transformer du Lambert 1 en 2 ou autre (mais c'est tout....) c'est pour ça que j'ai télécharge toute la base d'algorythme ! apres j'ai 2 solutions grace @lecrabe et @Fraid ! donc je vais deja passer par leur méthode si ça marche pas ou que c'est trop comliqué j'arreterais la et je reprendrai l'écriture des X (je ne sais pas combien d'algo pour y arriver) algo en VBmais bon au vu du temps gagner pour les 2 méthodes proposer je peux prendre le temps de bien tester ces 2 dernieres Mon site Web (en cours de construction) : Site DA-CODE de @didier
Curlygoth Posté(e) le 5 février 2021 Auteur Posté(e) le 5 février 2021 pour infos 'arrive a envoyer des données je suis content le bloc ressemble à ça : Sub REQUETE_CIRCEBATCH()Dim PT(0 To 2) As StringPT(0) = "568270.665"PT(1) = "361027.632"PT(2) = 0retval = Shell(ligne_BATCH("Lambert 1 Nord", "LAMBERT-93", PT), vbMinimizedNoFocus) 'fenetre sans focus et minimiser pas de soucis de fenere noir dans une boucleDebug.Print retvalEnd Sub J'ai fais une fonction qui va chercher le meridien d'originie le code etc... ce qui donne une ligne la ligne envoyer ressemble donc à ça : "C:\Program Files (x86)\IGN\Circé France Batch 4.3\CirceBatch.exe -init Circe.ini -mode 0 -type 1 -sys1 2 -sys2 24 -typcoor1 3 101 -typcoor2 3 140 -x 568270.665 -y 568270.665 -z 568270.665"du coup je suis content ^^la ou je le suis moins c'est sa réponse :il me répond : au gres de ces humeurs : 6152 puis 3076 XD enfin bref j'ai pas l'impression qui me retourne la valeur attendu [réponse que j'attends dans n'importe quel forme]Lambert 93x = 621484.05Y = 70950820.01 Mon site Web (en cours de construction) : Site DA-CODE de @didier
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