excalibur Posté(e) le 18 novembre 2010 Posté(e) le 18 novembre 2010 Bonjour à tous. Je désire remplacer un bloc par un autre.Après une recherche, j'ai trouvé la fonction BLOCKREPLACE.L'inconvénient est que ce sont tous les blocs du dessin qui sont remplacés.Y a-t-il une astuce pour remplacer que ceux sélectionnés ? Merci d'avance pour vos réponses. Excalibur
LUDWIG Posté(e) le 18 novembre 2010 Posté(e) le 18 novembre 2010 Essayes çaJe ne l'ai pas utiliser depuis longtemps, ni retester ;********************************************************************************************************************************************************** ;REMPLACER DES BLOCS PAR UN AUTRE BLOC ;********************************************************************************************************************************************************** ;Remplace une définition de bloc par une autre à l'échelle 1 dans une zone donnée (defun c:rep2 () (setq OSMOLD (getvar "Osmode")) (command "-accrobj" "auc") (command "scu" "Général") (while (/= "INSERT" (cdr (assoc 0 (entget (setq nouveau (car (entsel "\nSélectionnez le bloc de remplacement... \n\n" ) ;_ Fin de entsel ) ;_ Fin de car ) ;_ Fin de setq ) ;_ Fin de entget ) ;_ Fin de assoc ) ;_ Fin de cdr ) ;_ Fin de /= ) ;_ Fin de while (setq nom_nouveau (cdr (assoc 2 (entget nouveau)))) (while (/= "INSERT" (cdr (assoc 0 (entget (setq ancien (car (entsel "\nSélectionnez une défintion de bloc à remplacer... \n\n" ) ;_ Fin de entsel ) ;_ Fin de car ) ;_ Fin de setq ) ;_ Fin de entget ) ;_ Fin de assoc ) ;_ Fin de cdr ) ;_ Fin de /= ) ;_ Fin de while (setq nom_ancien (cdr (assoc 2 (entget ancien)))) ;(setq nom_nouveau (cdr (assoc 2 (entget (car (entsel "\nSélectionnez le bloc de remplacement... \n\n")))))) ;(setq ancien (entget (car (entsel "\nSélectionnez une défintion de bloc à remplacer... \n\n")))) ;(setq nom_ancien (cdr (assoc 2 ancien))) (princ "Sélectionnez la zone de remplacement") (setq jeu (ssget (list (cons 2 nom_ancien)))) (setq n 0) (repeat (sslength jeu) (setq nom (ssname jeu n)) (setq prop (entget nom)) (setq X_nouveau (cdr (assoc 41 (entget nouveau)))) (setq Y_nouveau (cdr (assoc 42 (entget nouveau)))) (setq Z_nouveau (cdr (assoc 43 (entget nouveau)))) (setq X_ancien (cdr (assoc 41 (entget nom)))) (setq Y_ancien (cdr (assoc 42 (entget nom)))) (setq Z_ancien (cdr (assoc 43 (entget nom)))) (if (> 0 X_ancien) (setq X_nouveau (* -1 X_nouveau)) ) ;_ Fin de if (if (> 0 Y_ancien) (setq Y_nouveau (* -1 Y_nouveau)) ) ;_ Fin de if (if (> 0 Z_ancien) (setq Z_nouveau (* -1 Z_nouveau)) ) ;_ Fin de if (setq prop (subst (cons 2 nom_nouveau) (assoc 2 prop) prop)) (setq prop (subst (cons 41 X_nouveau) (assoc 41 prop) prop)) (setq prop (subst (cons 42 Y_nouveau) (assoc 42 prop) prop)) (setq prop (subst (cons 43 Z_nouveau) (assoc 43 prop) prop)) (entmod prop) (setq n (+ 1 n)) ) ;_ Fin de repeat ) ;_ Fin de defun Autocad 2021 - Revit 2022 - Windows 10
excalibur Posté(e) le 22 novembre 2010 Auteur Posté(e) le 22 novembre 2010 Salut Ludwig, C'est exactement ce que je recherchais. :D Merci beaucoup. Excalibur
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