Aller au contenu

Remplacement d\'un bloc par un autre dans une sélection


excalibur

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

Essayes ça

Je 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

Lien vers le commentaire
Partager sur d’autres sites

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é