Kilian336 Posté(e) le 24 juin 2022 Posté(e) le 24 juin 2022 Bonjour, J'ai recherché sans succès une solution à mon problème que voici : J'aimerais pouvoir supprimer d'un coup toutes les occurrences d'un bloc d'un dessin. Dans mon cas, j'ai un bloc flèche nord qui est inséré dans mon espace objet ainsi que dans de multiple présentations, et j'aimerais tous les supprimer pour pouvoir purger ce bloc afin d’insérer une nouvelle version de ce bloc (qui porte exactement le même nom bien sûr) Je pourrais contourner le problème en renommant ma définition de bloc actuelle par une bidon, puis d'inserer le nouveau, et ensuite remplacer les anciens par les nouveaux mais j'aimerais trouver un moyen plus simple. Avez-vous connaissance d'un Lisp qui pourrait faire l'affaire ? Merci d'avance 🙂
MamyTina Posté(e) le 24 juin 2022 Posté(e) le 24 juin 2022 Bonjour, Tu trouveras ton bonheur dans le menu express tools. Express->Blocks->Remplace block with another block Amicalement AutoCad MAP 2023 - Covadis + Autopiste 18.3b www.colas-mayotte.fr
bonuscad Posté(e) le 24 juin 2022 Posté(e) le 24 juin 2022 il y a 21 minutes, Kilian336 a dit : insérer une nouvelle version de ce bloc (qui porte exactement le même nom bien sûr) Avec la commande INSERER tout simplement. Dans la boite de dialogue, tu clique sur "Parcourir" et tu vas chercher ton bloc (dwg) dans un dossier. S'il a exactement le même nom, AutoCAD va te proposer de le redéfinir dans ton dessin pour toutes les instances qui existent. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 24 juin 2022 Posté(e) le 24 juin 2022 Hello Si tu desires supprimer TOUTES les occurences d UN Bloc dans ton DWG, le Lisp ci-apres devrait faire le boulot !? La Sante, Bye, lecrabe ;; ;; http://forums.augi.com/showthread.php?36146-Remove-Delete-Block-from-multiple-Layouts-at-the-same-time ;; Erase A Block from the drawing : Erase into Model Space and into ALL Layouts and then PURGE the drawing ;; ;; (defun C:DELETEBLOCK (/ SS BNAME FILTER SSLEN ENT) (defun C:DEL_BLOCK (/ SS BNAME FILTER SSLEN ENT) (while (/= (type BNAME) 'STR) (cond ((= BNAME NIL) (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ((= (length BNAME) 2) (setq BNAME (entget (car BNAME))) ) ((= (cdr (assoc 0 BNAME)) "INSERT") (setq BNAME (cdr (assoc 2 BNAME))) ) ((/= (cdr (assoc 0 BNAME)) "INSERT") (prompt "\nEntity selected is not a block.") (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ) ) (setq FILTER (list (cons 0 "INSERT") (cons 2 BNAME) ) SS (ssget "_X" FILTER) ) (if SS (progn (vl-load-com) (repeat (setq SSLEN (sslength SS)) (vlax-invoke-method (vlax-ename->vla-object (ssname ss (setq SSLEN (1- SSLEN)))) 'Delete) ) ) ) (command "_purge" "_b" bname "_N") ) Autodesk Expert Elite Team
didier Posté(e) le 24 juin 2022 Posté(e) le 24 juin 2022 Bonjour @Kilian336 C'est le principe même du BLOC... Pouvoir l'insérer à de multiples endroits et le redéfinir ensuite. Attention toutefois au point d'insertion, et dans le cas d'une flèche nord à la rotation, c'est tellement automatique que des erreurs d'orientation peuvent subvenir. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Kilian336 Posté(e) le 27 juin 2022 Auteur Posté(e) le 27 juin 2022 Le 24/06/2022 à 10:23, Ra_Mamt a dit : Bonjour, Tu trouveras ton bonheur dans le menu express tools. Express->Blocks->Remplace block with another block Amicalement Je suis sur AutoCAD 14 sans Express Tools, mais merci quand même 🙂 Le 24/06/2022 à 10:29, bonuscad a dit : Avec la commande INSERER tout simplement. Dans la boite de dialogue, tu clique sur "Parcourir" et tu vas chercher ton bloc (dwg) dans un dossier. S'il a exactement le même nom, AutoCAD va te proposer de le redéfinir dans ton dessin pour toutes les instances qui existent. Eh oui je suis bête moi ! Ça me parait évident maintenant 🙂 Le 24/06/2022 à 10:33, lecrabe a dit : Hello Si tu desires supprimer TOUTES les occurences d UN Bloc dans ton DWG, le Lisp ci-apres devrait faire le boulot !? La Sante, Bye, lecrabe ;; ;; http://forums.augi.com/showthread.php?36146-Remove-Delete-Block-from-multiple-Layouts-at-the-same-time ;; Erase A Block from the drawing : Erase into Model Space and into ALL Layouts and then PURGE the drawing ;; ;; (defun C:DELETEBLOCK (/ SS BNAME FILTER SSLEN ENT) (defun C:DEL_BLOCK (/ SS BNAME FILTER SSLEN ENT) (while (/= (type BNAME) 'STR) (cond ((= BNAME NIL) (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ((= (length BNAME) 2) (setq BNAME (entget (car BNAME))) ) ((= (cdr (assoc 0 BNAME)) "INSERT") (setq BNAME (cdr (assoc 2 BNAME))) ) ((/= (cdr (assoc 0 BNAME)) "INSERT") (prompt "\nEntity selected is not a block.") (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ) ) (setq FILTER (list (cons 0 "INSERT") (cons 2 BNAME) ) SS (ssget "_X" FILTER) ) (if SS (progn (vl-load-com) (repeat (setq SSLEN (sslength SS)) (vlax-invoke-method (vlax-ename->vla-object (ssname ss (setq SSLEN (1- SSLEN)))) 'Delete) ) ) ) (command "_purge" "_b" bname "_N") ) Cool le lisp, ca me resservira pour plus autre chose ! Il faut que je le test, merci ! Le 24/06/2022 à 11:42, didier a dit : Bonjour @Kilian336 C'est le principe même du BLOC... Pouvoir l'insérer à de multiples endroits et le redéfinir ensuite. Attention toutefois au point d'insertion, et dans le cas d'une flèche nord à la rotation, c'est tellement automatique que des erreurs d'orientation peuvent subvenir. Amicalement Oui effectivement, c'est vrai que j'oublie complétement la fonction de redéfinition d'un bloc. Pourquoi faire simple quand on peut faire compliqué 😁 Merci à tous pour vos réponses !
JPhil Posté(e) le 27 juin 2022 Posté(e) le 27 juin 2022 il y a 54 minutes, Kilian336 a dit : Je suis sur AutoCAD 14 sans Express Tools, mais merci quand même 🙂 AutoCAD R14 ou AutoCAD 2014 ?
Kilian336 Posté(e) le 27 juin 2022 Auteur Posté(e) le 27 juin 2022 Il y a 3 heures, JPhil a dit : AutoCAD R14 ou AutoCAD 2014 ? Je ne connais pas la différence, j'ai un AutoCAD MAP 3D exactement.
lecrabe Posté(e) le 27 juin 2022 Posté(e) le 27 juin 2022 Hello @Kilian336 As tu tout simplement un AutoCAD MAP 2014 ?? Ou un tres vieux AutoCAD R14 ?? Merci, Bye, lecrabe Autodesk Expert Elite Team
Kilian336 Posté(e) le 27 juin 2022 Auteur Posté(e) le 27 juin 2022 il y a 31 minutes, lecrabe a dit : Hello @Kilian336 As tu tout simplement un AutoCAD MAP 2014 ?? Ou un tres vieux AutoCAD R14 ?? Merci, Bye, lecrabe un AutoCAD MAP 3D 2014 🙂
Erased Posté(e) le 28 juin 2022 Posté(e) le 28 juin 2022 Salut, pour supprimer toutes les occurrences d'un bloc, la commande "Filtre" permet de lister "Bloc" et son" Nom", l'appliquer à l'ensemble du dessin pour supprimer ce bloc et purger le dessin. Erased "Le risque de prendre une mauvaise décision n'est rien comparé à la terreur de l'indécision"Maimonide.
sylarr Posté(e) le 1 août 2022 Posté(e) le 1 août 2022 Le 24/06/2022 à 10:33, lecrabe a dit : Hello Si tu desires supprimer TOUTES les occurences d UN Bloc dans ton DWG, le Lisp ci-apres devrait faire le boulot !? La Sante, Bye, lecrabe ;; ;; http://forums.augi.com/showthread.php?36146-Remove-Delete-Block-from-multiple-Layouts-at-the-same-time ;; Erase A Block from the drawing : Erase into Model Space and into ALL Layouts and then PURGE the drawing ;; ;; (defun C:DELETEBLOCK (/ SS BNAME FILTER SSLEN ENT) (defun C:DEL_BLOCK (/ SS BNAME FILTER SSLEN ENT) (while (/= (type BNAME) 'STR) (cond ((= BNAME NIL) (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ((= (length BNAME) 2) (setq BNAME (entget (car BNAME))) ) ((= (cdr (assoc 0 BNAME)) "INSERT") (setq BNAME (cdr (assoc 2 BNAME))) ) ((/= (cdr (assoc 0 BNAME)) "INSERT") (prompt "\nEntity selected is not a block.") (setq BNAME (entsel "\nSelect block to remove from the drawing: ")) ) ) ) (setq FILTER (list (cons 0 "INSERT") (cons 2 BNAME) ) SS (ssget "_X" FILTER) ) (if SS (progn (vl-load-com) (repeat (setq SSLEN (sslength SS)) (vlax-invoke-method (vlax-ename->vla-object (ssname ss (setq SSLEN (1- SSLEN)))) 'Delete) ) ) ) (command "_purge" "_b" bname "_N") ) Salut lecrabe, Je n'arrive pas à charger ton lisp (AutoCAD 2020), impossible de le charger. Tu saurais pourquoi ? Merci de ton aide si tu peux, sylarr
didier Posté(e) le 1 août 2022 Posté(e) le 1 août 2022 Bonjour @sylarr Avant de répondre, j'ai vérifié ce que je voulais répondre et mon propos prévu s'est avéré. Le fichier proposé par notre très cher @lecrabe, actuellement en vacances sans AutoCAD sous la main, fonctionne parfaitement. Donc, comment faire ? Copier-coller le texte du premier point-virgule à la dernière parenthèse fermante Ouvrir Notepad et coller le presse-papier Enregistrer sous n'importe quel nom qui va bien, mais surtout avec l'extension .LSP Ouvrir l'Explorer sur le dossier qui contient ce fichier Glisser-déposer ce fichier depuis l'Explorer dans l'interface graphique AutoCAD Une case de dialogue devrait s'ouvrir en proposant de charger, répondre "toujours charger". Depuis la ligne de commande AutoCAD taper DEL_BLOCK Choisir le bloc qui doit être supprimé à l'écran et appuyer sur Enter. C'est fini Attention c'est du violent, que le bloc soit inséré sur un calque gelé ou qu'il soit dans l'espace papier, il va disparaître ! En souhaitant avoir été utile Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
sylarr Posté(e) le 2 août 2022 Posté(e) le 2 août 2022 (modifié) J'ai du oublier un point virgule du début la dernière fois je ne sais pas. Ca fonctionne en tout cas, merci beaucoup @didier 😄 Si tu fais "Charger une fois", cela marche quand même ? J'en profite pour demander si tu aurais une solution pour le GEF de Patrick_35 : J'ai bien vérifié ta solution, j'ai un message d'erreur qui me dit "Don't find GEF_EN.DCL". sylarr Modifié le 2 août 2022 par sylarr Formulation
(gile) Posté(e) le 2 août 2022 Posté(e) le 2 août 2022 il y a 39 minutes, sylarr a dit : j'ai un message d'erreur qui me dit "Don't find GEF_EN.DCL". Les fichiers .dcl doivent être enregistrés dans un dossier des chemins de support. 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sylarr Posté(e) le 2 août 2022 Posté(e) le 2 août 2022 Il y a 2 heures, (gile) a dit : Les fichiers .dcl doivent être enregistrés dans un dossier des chemins de support. J'ai ajouté le dossier du lisp dans les chemins de recherche en cours d'utilisation (vu sur un autre topic similaire répondu par tes soins : ). A+ sylarr
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