Aller au contenu

[Résolu] Coordonnées dans une autre projection


Messages recommandés

Posté(e)

Bonjour à la communauté.

 

Voilà, j'ai fais un petit LiSP qui remplace un bloc par un autre, le voici :

(defun c:RemplBlk_SDDEA (/)
 (princ "\nRemplacement des blocs pour les dossiers du SDDEA...")
 (setq Select nil)
 (princ "\nDébut du remplacement des blocs")
 (setq LstBlk '(("ACCES_*" . "ACCES")
                ("ESC_*" . "ESC")))
 (foreach PosLstBlk LstBlk
   (setq n 0)
   (if (setq Select (ssget "_A" (list (cons 0 "INSERT") (cons 2 (car PosLstBlk))))) ;_ Fin de setq
     (while (setq ent (ssname Select n))
       (setq elst  (entget ent)
             Coord (cdr (assoc 10 elst))
             EchX  (cdr (assoc 41 elst))
             EchY  (cdr (assoc 42 elst))
             Rot   (cdr (assoc 50 elst))
             n     (1+ n)
       ) ;_ Fin de setq
       (setvar "clayer" (cdr (assoc 8 elst)))
       (command "_erase" ent "")
       (setq Coord (strcat (rtos (car Coord) 2 3) "," (rtos (cadr Coord) 2 3)))
       (setq Rot (+ Rot (/ pi 2)))
       (command "-inserer" (cdr PosLstBlk) "_non" Coord EchX EchY (angtos Rot 2 3))
;------>>>>>> Je devrais probablement placer mon nouveau code ici...
     ) ;_ Fin de while
   ) ;_ Fin de if
 ) ;_ Fin de foreach
) ;_ Fin de defun

 

Mon problème est que, pour une autre client, je dois injecter des données dans différents attributs des nouveaux blocs.

 

Par exemple, dans les attributs X et Y, je dois y placer les valeurs des coordonnées X et Y mais en WGS84.

 

Je ne sais même pas ou chercher des informations pour le faire...

 

En bref, comment obtenir les coordonnées WGS84 (Greenwich) en cliquant sur un point en Lambert 2 Étendu ?

 

Si vous avez un conseil ou une idée, je suis preneur...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Après quelques heures de recherches, j'ai fini par trouvé des trucs... Voici mon code pour ceux que ça peut intéresser (ATTENTION, c'est exclusivement pour MAP ou CIVIL) :

(defun c:SDDEA_RemplBlk (/)
 (setq old_osmd    (getvar "osmode")
       old_abase   (getvar "angbase")
       old_adir    (getvar "angdir")
       old_aunits  (getvar "aunits")
       old_cmdecho (getvar "cmdecho")
       old_AttDia  (getvar "attdia")
       old_AttReq  (getvar "attreq")
 ) ;_ Fin de setq
 (setvar "osmode" 1)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 (setvar "aunits" 2)
 (setvar "ATTDIA" 0)
 (setvar "ATTREQ" 0)
 (setvar "angbase" (/ pi 2))
 (setvar "angdir" 1)
 (princ "\nRemplacement des blocs pour les dossiers du SDDEA...")
 (setq Select nil)
 (princ "\nDébut du remplacement des blocs")
 (setq LstBlk '(("AVASI" . "Avaloir simple")
                ("AVAVI" . "avaloir visite")
                ("BRASST" . "RegardBranchementPlanEU")
                ("BC4" . "Bacréseau2")
               )
 ) ;_ Fin de setq
 (foreach PosLstBlk LstBlk
   (setq n 0)
   (if (setq Select (ssget "_A" (list (cons 0 "INSERT") (cons 2 (car PosLstBlk))))) ;_ Fin de setq
     (while (setq ent (ssname Select n))
       (setq elst  (entget ent)
             Coord (cdr (assoc 10 elst))
             EchX  (cdr (assoc 41 elst))
             EchY  (cdr (assoc 42 elst))
             Rot   (cdr (assoc 50 elst))
             n     (1+ n)
       ) ;_ Fin de setq
       (setvar "clayer" (cdr (assoc 8 elst)))
       (command "_erase" ent "")
       (setq Coord (strcat (rtos (car Coord) 2 3) "," (rtos (cadr Coord) 2 3)))
       (setq Rot (+ Rot (/ pi 2)))
       (command "-inserer" (cdr PosLstBlk) "_non" Coord EchX EchY (angtos Rot 2 3)) ;_ Fin de command
     ) ;_ Fin de while
   ) ;_ Fin de if
 ) ;_ Fin de foreach
;;;
 (if (setq js (ssget "x" (list (cons 0 "insert"))))
   (progn (setq n 0)
          (while (setq bl (ssname js n))
            (setq att   (entget (entnext bl))
                  Lst   (entget bl)
                  Coord (cdr (assoc 10 elst))
            ) ;_ Fin de setq
            (ade_projsetsrc (ade_projgetwscode))
            (setq pntLLRGF93 (ade_projptforward Coord))
            (while (/= (cdr (assoc 0 att)) "SEQEND")
              (if (= (cdr (assoc 2 att)) "X")
                (progn (setq att (subst (cons 1 (rtos (car pntLLRGF93) 2 12)) (assoc 1 att) att))
                       (entmod att)
                ) ;_ Fin de progn
              ) ;_ Fin de if
              (if (= (cdr (assoc 2 att)) "Y")
                (progn (setq att (subst (cons 1 (rtos (cadr pntLLRGF93) 2 12)) (assoc 1 att) att))
                       (entmod att)
                ) ;_ Fin de progn
              ) ;_ Fin de if
              (setq att (entget (entnext (cdr (assoc -1 att)))))
            ) ;_ Fin de while
            (setq n (1+ n))
          ) ;_ Fin de while
   ) ;_ Fin de progn
 ) ;_ Fin de if
;;;
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 (setvar "cmdecho" old_cmdecho)
 (setvar "aunits" old_aunits)
 (setvar "ATTDIA" old_AttDia)
 (setvar "ATTREQ" old_AttReq)
) ;_ Fin de defun

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Hello

 

Attention: ton code avec des fonctions ADE implique un MAP ou un CIVIL !

 

Merci pour le partage, Bye, lecrabe

Autodesk Expert Elite Team

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é