Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

 

Posté(e)

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.

 

Posté(e)

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

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é