Aller au contenu

[Résolu] Changer l'altitude d'un bloc depuis un texte


Messages recommandés

Posté(e)

Bonjour au forum.

 

Je cherche aujourd'hui à changer l'altitude d'un bloc en sélectionnant un TEXT.

 

J'ai écrit ça, mais si je suis ici, c'est que ça ne fonctionne pas...

;;; *******************************************************
;;;   Reporte le Z d'un bloc selon un texte sélectionné    
;;; *******************************************************
(defun c:ZBloc-Texte (/)
 (princ "\nDéveloppé par Denis H. (vers:1.0)")
 (setq Txt_Select (car (entsel "\nSélectionnez le texte :")))
 (setq Alti (cdr (assoc 1 (entget Txt_Select))))
 (setq Bloc_Select (car (entsel "\nSélectionnez le bloc :")))
 (setq Bloc_Select (entget Bloc_Select)))
 (setq Coord (cdr (assoc 10 (entget Bloc_Select))))
 (princ "\nCoord=")
 (print Coord)
 (setq Pos_X (car Coord))
 (setq Pos_Y (cadr Coord))
 (setq Pos_Z (rtos Coord 2 2))
 (setq Coord_Blk '(Pos_X Pos_Y (atoi Alti)))
 (princ "\nCoord_blk=")
 (print Coord_blk)
 
 (setq Bloc_Select (subst (cons 10 Coord_Blk) (assoc 10 Bloc_Select) Bloc_Select))
 (entmod Bloc_Select)
) ;_ Fin de defun

 

Je suis sur deux projets en même temps et l'apprentissage de MENSURA me prend pas mal de temps...

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)

Quand tu dis, ça ne fonctionne pas, quel est le problème exactement ?

 

Quelle erreur rencontres-tu et à quel niveau ?

Ensuite je pense que tu peux t'épargner la déclaration de variables (telles que Pos_X et Pos_Y ^^")

 

Bisous,

Luna

Posté(e)

Coucou

 

Il y avait longtemps que tu n'étais pas venu taper au carreau (hihi) et qu'on avait pas lu "\nDéveloppé par Denis H. (vers:1.0)"... mais tu es toujours le bienvenu

Je te propose ça sans vérification car pas d'AutoCAD sous la main

 

Amicalement

(setq blo (car (entsel "\nchoix du bloc")))
(setq tex (car (entsel"\nchoix du texte")))
(entmod (subst
  (cons 10 (list (car (cdr (assoc 10 (entget blo))))
		 (cadr (cdr (assoc 10 (entget blo))))
		 (atof (cdr (assoc 1 (entget tex))))))
  (assoc 10 (entget blo))
  (entget blo)
  )
)

  • Upvote 1
Posté(e)

Salut à tous.

 

Oui, ça faisait un bail, mais j'ai changé de boulo et je travaille maintenant à 95% du temps sur Mensura...

 

Merci Olivier pour le "atof", effectivement, je m'étais trompé...

 

Merci didier, ça fonctionne parfaitement...

 

Encore merci à vous...

 

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)

Coucou.

 

Mille mercis didier... ;)

 

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)

Bonjour à tous.

 

J'ai fais "évoluer" le programme ainsi, mais ça boucle sur la sélection de l'altitude.

 

(defun c:Alti2Blk (/ blo tex)
 (princ "\nDéveloppé par Denis H. (vers:1.1)")
 (while (not (and (setq tex (car (entsel "\nSélectionnez l'altitude :")))
                  (= (cdr (assoc 0 (entget tex))) "TEXT,MTEXT")
             ) ;_ Fin de and
        ) ;_ Fin de not
 ) ;_ Fin de while
 (while (not (and (setq blo (car (entsel "\nSélectionnez le bloc : ")))
                  (= (cdr (assoc 0 (entget blo))) "INSERT")
             ) ;_ Fin de and
        ) ;_ Fin de not
 ) ;_ Fin de while
 (entmod (subst (cons 10
                      (list (car (cdr (assoc 10 (entget blo))))
                            (cadr (cdr (assoc 10 (entget blo))))
                            (atof (cdr (assoc 1 (entget tex))))
                      ) ;_ Fin de list
                ) ;_ Fin de cons
                (assoc 10 (entget blo))
                (entget blo)
         ) ;_ Fin de subst
 ) ;_ Fin de entmod
)

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)

j'ai trouvé, c'est le

(= (cdr (assoc 0 (entget tex))) "TEXT,MTEXT")

je l'ai remplacé par

(= (cdr (assoc 0 (entget tex))) "TEXT")

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)

Salut didier.

 

Oui, j'ai continué de chercher après avoir poster.

 

Merci pour ta suggestion.

 

Bonne journée.

 

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)

Salut,

 

Si jamais tu veux tout de même prendre en compte les "MTEXT" en plus des "TEXT", tu peux utiliser ceci :

(wcmatch (cdr (assoc 0 (entget tex))) "TEXT,MTEXT")

ou bien

(member (cdr (assoc 0 (entget tex))) '("TEXT" "MTEXT"))

 

Après comme le dit didier, la solution d'un (ssget) avec l'option "_+.:E:S" permet de simuler une sélection via (entsel) sauf que tu peux filtrer ta sélection au passage. Le seul bémol, comme pour chaque (ssget) c'est l'affichage d'un message personnalisé qui est un peu galère...

 

Bisous,

Luna

Posté(e)

Coucou

 

Certes le SSGET ne permet pas de présenter un message pour la saisie en ligne de commande

Ce que j'utilise avec cette méthode est un PROMPT juste avant le SSGET , ça fonctionne

Le bémol auquel je pense je n'ai pas envie de le dire tout de suite et j'attends la question de DenisHEN car je connais l'oiseau qui questionne (hihi)

Si il contourne le souci je ferai amende honorable, à suivre ...

 

Amicalement

Posté(e)

Salut.

 

Je n'ai pas besoin de "MTEXT" en fait, je ne sélectionne que des "TEXT".

 

Mais je ne vois pas la question qu'attend Maître didier... ;)

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)

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é