DenisHen Posté(e) le 29 mars 2016 Posté(e) le 29 mars 2016 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)
DenisHen Posté(e) le 29 mars 2016 Auteur Posté(e) le 29 mars 2016 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)
lecrabe Posté(e) le 29 mars 2016 Posté(e) le 29 mars 2016 Hello Attention: ton code avec des fonctions ADE implique un MAP ou un CIVIL ! Merci pour le partage, Bye, lecrabe Autodesk Expert Elite Team
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