Aller au contenu

selection automatique de plusieur types de blocs


Messages recommandés

Posté(e)

Salut a tous

 

Voila mon probleme : J'ai a traiter plusieurs fichiers sur lesquels il faut que je supprime une liste de blocs. La methode manuelle qui marche très bien, est de prendre la selection rapide (_qselect) et dans la boite de dialogue de selectionner une "reference de bloc" par "nom" "egal à" et je rentre le nom du bloc.

Est il possible de faire un petit script qui me permetrai de faire ces operations plus rapidement ?

 

 

Merci ;)

Posté(e)

Bucheron,

 

(Tiens, hier on parlait de se tirer une bûche)

Voici une routine simple qui ne tient pas compte des différents onglets ni de l'état des calques. Il suffit de rectifier la liste des noms de bloc (vers la fin du listing).

 

(defun eraseblocks (

liste action

/ listeCDF ss

)

(setq listeCDF "")

(foreach string liste (setq listeCDF (strcat listeCDF "," string))) ; ",bloc1,bloc2,bloc3,..."

(setq listeCDF (substr listeCDF 2)) ; "bloc1,bloc2,bloc3,..."

(setq ss (ssget "_x" (list (cons 0 "insert") (cons 2 listeCDF))))

(if ss (command "_erase" ss ""))

(if (= action 2) (command "_purge" "_blocks" listeCDF "_no"))

)

 

(defun c:eraseblocks ( / liste)

;; Faire une liste de noms de bloc. Masques *, ? et autres acceptés

(setq liste (list

"bloc1" "bloc2" "bloc3"

"bloc4" "bloc5" "bloc6"

"bloc7" "bloc8" "bloc9"

))

 

;; 1 = effacer seulement, 2 = effacer et purger

(setq action 2)

 

(eraseblocks liste action)

(princ)

)

 

(princ "\nTapez ERASEBLOCKS pour effacer les blocs")

(princ)

 

Serge

 

 

  • 2 ans après...
Posté(e)

Bonjour,

je cherche la même chose pour effacer des wipeout (nettoyer en fr).. mais comme je ne cnnais pas grand chose en lisp je ne vois pas quoi changer dans ton LISP...

Merci d'avance

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Charge ca dans un lisp:

 

(defun c:sel(/ blo sel)

(sssetfirst nil)

(setq blo(car(entsel)))

(if(=(cdr(assoc 0(entget blo)))"INSERT")

(sssetfirst (setq sel(ssget "X"(list(cons 0 "INSERT") (assoc 2(entget blo))))) sel)))

 

 

Tape SEL, clique sur un bloc, et tous les blocs qui portent ce nom seront selectionner.

Merci à Tramber pour cette commande.

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é