Aller au contenu

Messages recommandés

Posté(e)

Salut!

 

Etant un peu toqué sur les bords (j'aime bien quand c'est carré et clean, pardon propre)

Je cherche à nettoyé le plus possible nos dessins.

Et bien j'ai pu trouver des MTEXT non visibles et non sélectionnable avec la souris.

Je me retrouve avec 3 types de cas:

- (1 . "") => ceux-là j'arrive à les supprimer avec un entdel

- (1 . "{ }") => idem

- (1 . " ") => et bien ceux-là ca marche pas :mad: !

 

J'ai essayé un entdel, ca marche pas, un entmod et entupd (en remplacant l'espace par du texte) sans résultat.

 

J'ai fait le compte, sur le dessin sur lequel je test j'ai 300 MTEXT de ce type!! Si j'arrive

à les dégager je ganerai un peu de place, mais comme je l'ai dit, mon but n'est pas de gagner de la place mais d'avoir un fichier propre. :cool:

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Re-salut!

 

Je comprends plus rien!

Avant j'étais sur la présentation où se trouvait le mtext, mais rien ne marchait.

Maintenant j'ai réessayé: miracle sa marche :o !

La seule chose à faire, c'est de parcourir alors chaque présentation pour supprimer ceux

se trouvant sur elle.

 

 

 

 

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

je ne sais pas si ça peut te servir j'avais cette routine pour supprimer les textes vides du dessin :

 

;**********************************************************************************************************************************************************

;Effacer les textes vides

;**********************************************************************************************************************************************************

;supprime les textes superflus d'un dessin (textes vides ou ne contenant qu'un espace)

(defun c:EFF_BLANC (/ JEUX_TEXTE E_TEXTE DEF_TEXTE)
 (setq	JEUX_TEXTE
 (ssget "x" '((0 . "*TEXT")))
CX 0
EFF_TEXTE 0
) ;_ Fin de setq

 (if (not (null JEUX_TEXTE))
 (while (setq E_TEXTE (ssname JEUX_TEXTE CX))
   (setq CX	    (1+ CX)
  DEF_TEXTE (cdr (assoc 1 (entget E_TEXTE)))
  ) ;_ Fin de setq
   (cond ((= "" DEF_TEXTE)
   (entdel E_TEXTE)
   (setq EFF_TEXTE (1+ EFF_TEXTE))
   )
  ((= " " DEF_TEXTE)
   (entdel E_TEXTE)
   (setq EFF_TEXTE (1+ EFF_TEXTE))
   )
  ((= "  " DEF_TEXTE)
   (entdel E_TEXTE)
   (setq EFF_TEXTE (1+ EFF_TEXTE))
   )
  ) ;_ Fin de cond
   ) ;_ Fin de while
)
 
 (setq EFF_TEXTE (itoa EFF_TEXTE))
 (prompt "\n")
 (prompt EFF_TEXTE)
 (prompt " texte(s) vide effacé(s)")
 ) ;_ Fin de defun
(prompt
 "\nEFF_BLANC : supprime les textes superflus d'un dessin"
 ) ;_ Fin de prompt  

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

Salut!

 

Comme toujours, il y en a qui réfléchissent tard le soir encore ;)

Bon, j'ai essayé les différentes méthodes que vous m'avez donnés et

bien aucune ne marche pour mes MTEXT contenant (1 . " ") :cool: .

 

La chose qui franchement me paraît louche (mais je commence a être habitué

avec autocad): c'est que je peux supprimer de n'importe où des MTEXT contenant

(1 . "") et (1 . "{ }") alors qu'ils peuvent être n'importe où, mais pas le (1 . " ") :casstet: .

Donc je dois quand même passer dans chaque présentation pour supprimer ces MTEXT.

 ;-------------------------------;
; nom: netoye_txt               ;
; role: supprime les *TEXT vides;
; param: aucun                  ;
; retour: le nombre de *TEXT    ;
;         supprimés             ;
; date: 26/07/2007              ;
; Sébastien BLAES               ;
;-------------------------------;
(defun netoye_txt( / s cpt cpt2 lg el e)

 	(setq s (ssget "X" '((0 . "*TEXT"))))

 	(setq cpt 0 lg (sslength s))
 	(setq cpt2 0)
 	
 	(while (< cpt lg)

  	(if (and (assoc 1 (setq el (entget (setq e (ssname s cpt))))) (or (= (cdr (assoc 1 el)) "") (= (cdr (assoc 1 el)) "{ }")))
	  	(progn
		  	(entdel e)		  		
		  	(setq cpt2 (1+ cpt2))
		) ; progn
	)
  	(setq cpt (1+ cpt))
)

 	; on s'occupe des *TEXT (1 . " ")
 	; on passe dans chaque présentation
 	(setq llist (layoutlist))
 	(command "regenmode" 0)
 	(while llist

  	(command "presentation" "etablir" (nth 0 llist))
  	(setq s (ssget "X" (list (cons 0 "*TEXT") (cons 410  (nth 0 llist)) (cons 1 " ")) ))
  	(if s
	  	(setq cpt 0 lg (sslength s))
	  	(setq cpt 0 lg 0)
	)
  	(while (< cpt lg)
	  	(setq e (ssname s cpt))
	  	(entdel e)		  		
		(setq cpt2 (1+ cpt2))
		(setq cpt (1+ cpt))
	) ; while
  	(setq llist (cdr llist))
) ; while

 	; on passe dans l'espace objet pour finir
 	(command "objet")
 	(setq s (ssget "X" (list (cons 0 "*TEXT") (cons 410  "Model") (cons 1 " ")) ))
 	(if s
  	(setq cpt 0 lg (sslength s))
  	(setq cpt 0 lg 0)
)
 	(while (< cpt lg)
  	(setq e (ssname s cpt))
  	(entdel e)		  		
	(setq cpt2 (1+ cpt2))
	(setq cpt (1+ cpt))
) ; while

 	(command "regenmode" 1)
 	(print (strcat (itoa cpt2) " entités supprimés"))

 	cpt2
) ; netoye_txt

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Bon, j'ai essayé les différentes méthodes que vous m'avez donnés et

bien aucune ne marche pour mes MTEXT contenant (1 . " ") :cool: .

Tu as mal regardé. C'est le filtre qui fait tout.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é