yusukens82 Posté(e) mercredi à 14:53 Posté(e) mercredi à 14:53 Bonjour, J'utilise une routine permettant de cumuler les surfaces et l'inscrire dans un texte. En revanche elle ne fonctionne pas dans l'édition de référence (editref) quelqu'un pourrait m'aider à l'adapter ? voilà la routine et en pj un dwg pour le test (defun c:at (/ js somme ind st_ent type texte valtxt point surf) (setq cmdech (getvar "CMDECHO")) (setq iconscu (getvar "UCSICON")) (setq old_plan (getvar "clayer")) (setvar "CMDECHO" 0) (setvar "UCSICON" 0) (prompt "\nChoisir les textes a additionner") (setq js (ssget)) (setq somme 0.0) (setq ind 0) (if js (repeat (sslength js) (setq st_ent (entget (ssname js ind))) (setq type (cdr (assoc 0 st_ent))) (if (= type "TEXT") (progn ; on additionne la valeur du texte (setq texte (cdr (assoc 1 st_ent))) (setq valtxt (atof texte)) (setq somme (+ somme valtxt)) ) ) (setq ind (1+ ind)) ) ) (setq surf (strcat (rtos somme 2 2) )) (setq p3 (getpoint "\n Position pour le resultat de la somme : ")) (command "_layer" "l" "Z_Surf" "n" "Z_Surf" "e" "Z_Surf" "ch" "Z_Surf" "ac" "Z_Surf" "co" "" "" "") (command "texte" p3 20 0 surf) (setvar "CMDECHO" cmdech ) (setvar "UCSICON" iconscu ) (setvar "clayer" old_plan) ) Test.dwg
didier Posté(e) il y a 14 heures Posté(e) il y a 14 heures Bonjour @yusukens82 C'est parfaitement normal. Êtes-vous l'auteur de ce lisp ? Lorsque vous sélectionnez les entités, vous créez un jeu de sélection. Ce jeu de sélection est impossible à réaliser dans un bloc ou une XREF. Le bloc ou l'XREF étant une seule et même entité au sens AutoCAD. Il y a une possibilité en modifiant la façon de sélectionner les textes (dans le bloc) mais ça ne peut être qu'un par un. Est-ce que vous accepteriez de devoir sélectionner les textes un par un ? À moins de les sélectionner par calque, mais dans ce cas, c'est tout le bloc qui sera pris en compte, pas seulement une zone (appartement). Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) il y a 14 heures Auteur Posté(e) il y a 14 heures Bonjour @didier Merci pour ta réponse précis et de ton aide. Je ne suis pas l'auteur de cette routine, je l'ai trouvé sur le net il y a plus de 15ans Les 2 options (choix un par un ou sélection par calque) sont très intéressantes : Si je dois en choisir qu'un j'opte par le choix du sélection texte par texte En te remerciant par avance.
Olivier Eckmann Posté(e) il y a 4 heures Posté(e) il y a 4 heures Bonjour, Ci-joint une solution possible (defun c:at (/) (at) ) (defun at (/ js somme ind st_ent texte valtxt point surf) (setq cmdech (getvar "CMDECHO")) (setq iconscu (getvar "UCSICON")) (setq old_plan (getvar "clayer")) (setvar "CMDECHO" 0) (setvar "UCSICON" 0) (prompt "\nChoisir les textes a additionner") (setq js (ssget (list (cons 0 "TEXT")))) (setq somme 0.0) (setq ind 0) (if js (repeat (sslength js) (setq st_ent (entget (ssname js ind))) ; on additionne la valeur du texte (setq texte (cdr (assoc 1 st_ent))) (setq valtxt (atof texte)) (setq somme (+ somme valtxt)) (setq ind (1+ ind)) ) ) (setq surf (strcat (rtos somme 2 2) )) (setq p3 (getpoint "\n Position pour le resultat de la somme : ")) (command "_layer" "l" "Z_Surf" "n" "Z_Surf" "e" "Z_Surf" "ch" "Z_Surf" "ac" "Z_Surf" "co" "" "") (command "texte" p3 20 0 surf) (setvar "CMDECHO" cmdech ) (setvar "UCSICON" iconscu ) (setvar "clayer" old_plan) ) Dans l'éditeur de ref, taper (at) pour lancer la commande. Dans le dessin "normal" (hors edition de ref), taper AT ou (AT) au choix. Olivier
yusukens82 Posté(e) il y a 3 heures Auteur Posté(e) il y a 3 heures @Olivier Eckmann Merci beaucoup, ça fonctionne dans tous les sens. qu'on soit dans dans editref ou pas. Merci beaucoup. vraiment. Passez de très bonnes fêtes de fin d'année.
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